*Gelöst* MQTT device einbinden (SmartPusher)

Begonnen von Tueftler1983, 26 Oktober 2022, 21:22:17

Vorheriges Thema - Nächstes Thema

Beta-User

Zitat von: Otto123 am 27 Oktober 2022, 10:01:24
Insgesamt ist es jetzt ein spezielles mqtt Thema, was Du eventuell in diesen Forenbereich verschieben solltest. Da lesen ein paar andere Leute mit.
Falls du jemand spezielles meinst...

Ich kann Äußerungen wie die nicht wirklich nachvollziehen und halte mich daher zurück:
Zitat von: Tueftler1983 am 26 Oktober 2022, 23:01:44
Ich Frage Grade über Discord, aber FHEM ist da oldscool und es nützt keiner mehr.
Auch wenn es vielleicht "moderner" erscheinen mag, irgendwie eine Art persönlicher Betreuung zu bekommen (oder was auch immer erwartet wird?), es ist doch einfacher, wenn man solche Fragen durchsuchbar in aller Öffentlichkeit diskutiert.

Meine 2ct:
Es gibt eine große Nähe der Fragen hier zu https://forum.fhem.de/index.php/topic,129896.0.html.
Und "Schritt für Schritt" im Wiki wäre vielleicht auch einen Blick wert.

Nachtrag: Es würde m.E. Sinn machen, die Button-Events pro Button zusammenzufassen. Also "wildcard"-readingList mit topic-Auswertung und "freihändigem Zusammenbau" des Rückgabe-Hashes.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Tueftler1983

Also das gerät in Fhem wurde erst angelegt als ich im SmartPuscher das Präfix von SmartPusher zu smartpuscher geändert habe.
Das Setlist sieht so aus:
1off smartpusher/button1/state 0
1on smartpusher/button1/state 1
1fade smartpusher/button1/state 2
2off smartpusher/button2/state 0
2on smartpusher/button2/state 1
2fade smartpusher/button2/state 2
3off smartpusher/button3/state 0
3on smartpusher/button3/state 1
3fade smartpusher/button3/state 2
4off smartpusher/button4/state 0
4on smartpusher/button4/state 1
4fade smartpusher/button4/state 2
5off smartpusher/button5/state 0
5on smartpusher/button5/state 1
5fade smartpusher/button5/state 2
6off smartpusher/button6/state 0
6on smartpusher/button6/state 1
6fade smartpusher/button6/state 2
7off smartpusher/button7/state 0
7on smartpusher/button7/state 1
7fade smartpusher/button7/state 2
8off smartpusher/button8/state 0
8on smartpusher/button8/state 1
8fade smartpusher/button8/state 2

Tueftler1983

Zitat von: Beta-User am 27 Oktober 2022, 10:40:13

Ich kann Äußerungen wie die nicht wirklich nachvollziehen und halte mich daher zurück:Auch wenn es vielleicht "moderner" erscheinen mag, irgendwie eine Art persönlicher Betreuung zu bekommen (oder was auch immer erwartet wird?), es ist doch einfacher, wenn man solche Fragen durchsuchbar in aller Öffentlichkeit diskutiert.

Du hast ja Recht ich habe den Ersteller des SmartPushers nur gefragt ob er ne Idee hat warum ich in Fhem keine Tropics bekomme.


Zitat von: Beta-User am 27 Oktober 2022, 10:40:13
Es würde m.E. Sinn machen, die Button-Events pro Button zusammenzufassen. Also "wildcard"-readingList mit topic-Auswertung und "freihändigem Zusammenbau" des Rückgabe-Hashes.

Sorry bin froh daß ich es soweit bis jetzt am laufen habe also teilweise,:

Beta-User

Zitat von: Tueftler1983 am 27 Oktober 2022, 12:06:13
ich habe den Ersteller des SmartPushers nur gefragt ob er ne Idee hat warum ich in Fhem keine Tropics bekomme.
Ach so herum war das gemeint gewesen.

Zitat
Sorry bin froh daß ich es soweit bis jetzt am laufen habe also teilweise,:
Na ja, dann hier mal der ungetestete Versuch einer readingList-Zeile, die alle button-Topics erschlagen sollte:
smartpusher/button./.+:.* { $TOPIC =~ m,smartpusher/button(.)/(.+),; my $onoff = $EVENT eq 'true' ? 'on' : 'off'; my $ret->{button_$1} = "$2 $onoff"; return $ret}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Otto123

Zitat von: Tueftler1983 am 27 Oktober 2022, 11:08:26
Also das gerät in Fhem wurde erst angelegt als ich im SmartPuscher das Präfix von SmartPusher zu smartpuscher geändert habe.
Das Setlist sieht so aus:
Das muss an etwas anderem gelegen haben, aber egal: funktioniert denn mein setList Vorschlag?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Tueftler1983

Zitat von: Otto123 am 27 Oktober 2022, 12:52:36
Das muss an etwas anderem gelegen haben, aber egal: funktioniert denn mein setList Vorschlag?
Ja set funktioniert soweit, mit dem dimmen nur die Text Ausgabe könnte ich noch nicht testen das OLED Display das ich hier habe ist defekt.


Zitat von: Beta-User am 27 Oktober 2022, 12:35:19
Na ja, dann hier mal der ungetestete Versuch einer readingList-Zeile, die alle button-Topics erschlagen sollte:
smartpusher/button./.+:.* { $TOPIC =~ m,smartpusher/button(.)/(.+),; my $onoff = $EVENT eq 'true' ? 'on' : 'off'; my $ret->{button_$1} = "$2 $onoff"; return $ret}

Leider keine Reaktion im device, egal welchen Knopf ich drücke

Beta-User

Zitat von: Tueftler1983 am 27 Oktober 2022, 12:55:47
Leider keine Reaktion im device, egal welchen Knopf ich drücke
Im Log wäre ein Ansatz zu finden gewesen. Das hier klappt hoffentlich auch bei dir:
smartpusher/button./.*:.* { $TOPIC =~ m,smartpusher/button(.)/(.+),; my $onoff = $EVENT eq 'true' ? 'on' : 'off'; my $ret->{"button_$1"} = "$2 $onoff"; return $ret}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Otto123

noch ein erster Ansatz zur Verkürzung der setList:
off:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 0
on:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 1
fade:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 2
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Tueftler1983

Zitat von: Beta-User am 27 Oktober 2022, 13:20:15
Im Log wäre ein Ansatz zu finden gewesen. Das hier klappt hoffentlich auch bei dir:
smartpusher/button./.*:.* { $TOPIC =~ m,smartpusher/button(.)/(.+),; my $onoff = $EVENT eq 'true' ? 'on' : 'off'; my $ret->{"button_$1"} = "$2 $onoff"; return $ret}

Leider auch da nicht das gewünschte Ergebnis, es wird ein neues Reading button_ angelegt das beim drücken egal welches Tasters zwischen on und off wechselt. Auch Doppel click oder langes drücken hat nur die selbe Ausgabe.
Dazu das Log
2022.10.27 13:35:42 1: PERL WARNING: Use of uninitialized value $2 in concatenation (.) or string at (eval 28467) line 1.
2022.10.27 13:35:42 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{ $TOPIC =~ m,smartpusher:smartpusher/button(.)/(.+),;; my $onoff = $EVENT eq 'true' ? 'on' : 'off';; my $ret->{"button_$1"} = "$2 $onoff";; return $ret}
2022.10.27 13:35:42 1: PERL WARNING: Use of uninitialized value $1 in concatenation (.) or string at (eval 28468) line 1.
2022.10.27 13:35:42 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{ $TOPIC =~ m,smartpusher:smartpusher/button(.)/(.+),;; my $onoff = $EVENT eq 'true' ? 'on' : 'off';; my $ret->{"button_$1"} = "$2 $onoff";; return $ret}
2022.10.27 13:35:42 1: PERL WARNING: Use of uninitialized value $2 in concatenation (.) or string at (eval 28468) line 1.
2022.10.27 13:35:42 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{ $TOPIC =~ m,smartpusher:smartpusher/button(.)/(.+),;; my $onoff = $EVENT eq 'true' ? 'on' : 'off';; my $ret->{"button_$1"} = "$2 $onoff";; return $ret}
2022.10.27 13:35:48 1: PERL WARNING: Use of uninitialized value $1 in concatenation (.) or string at (eval 28469) line 1.
2022.10.27 13:35:48 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{ $TOPIC =~ m,smartpusher:smartpusher/button(.)/(.+),;; my $onoff = $EVENT eq 'true' ? 'on' : 'off';; my $ret->{"button_$1"} = "$2 $onoff";; return $ret}

Tueftler1983

Zitat von: Otto123 am 27 Oktober 2022, 13:23:02
noch ein erster Ansatz zur Verkürzung der setList:
off:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 0
on:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 1
fade:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 2

Das funktioniert so

Beta-User

#25
Zitat von: Tueftler1983 am 27 Oktober 2022, 13:41:19
Leider auch da nicht das gewünschte Ergebnis, es wird ein neues Reading button_ angelegt das beim drücken egal welches Tasters zwischen on und off wechselt. Auch Doppel click oder langes drücken hat nur die selbe Ausgabe.
Dazu das Log
2022.10.27 13:35:42 1: PERL WARNING: Use of uninitialized value $2 in concatenation (.) or string at (eval 28467) line 1.
2022.10.27 13:35:42 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{ $TOPIC =~ m,smartpusher:smartpusher/button(.)/(.+),;; my $onoff = $EVENT eq 'true' ? 'on' : 'off';; my $ret->{"button_$1"} = "$2 $onoff";; return $ret}
2022.10.27 13:35:42 1: PERL WARNING: Use of uninitialized value $1 in concatenation (.) or string at (eval 28468) line 1.
2022.10.27 13:35:42 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{ $TOPIC =~ m,smartpusher:smartpusher/button(.)/(.+),;; my $onoff = $EVENT eq 'true' ? 'on' : 'off';; my $ret->{"button_$1"} = "$2 $onoff";; return $ret}
2022.10.27 13:35:42 1: PERL WARNING: Use of uninitialized value $2 in concatenation (.) or string at (eval 28468) line 1.
2022.10.27 13:35:42 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{ $TOPIC =~ m,smartpusher:smartpusher/button(.)/(.+),;; my $onoff = $EVENT eq 'true' ? 'on' : 'off';; my $ret->{"button_$1"} = "$2 $onoff";; return $ret}
2022.10.27 13:35:48 1: PERL WARNING: Use of uninitialized value $1 in concatenation (.) or string at (eval 28469) line 1.
2022.10.27 13:35:48 3: eval: my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{ $TOPIC =~ m,smartpusher:smartpusher/button(.)/(.+),;; my $onoff = $EVENT eq 'true' ? 'on' : 'off';; my $ret->{"button_$1"} = "$2 $onoff";; return $ret}

Wirf bitte die CID aus der readingList! (das vor dem Doppelpunkt einschl. Doppelpunkt). Das war nicht mein Vorschlag, das drin zu lassen!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Tueftler1983

Zitat von: Beta-User am 27 Oktober 2022, 13:50:24
Wirf bitte die CID aus der readingList! (das vor dem Doppelpunkt einschl. Doppelpunkt). Das war nicht mein Vorschlag, das drin zu lassen!

Sorry hatte es drin weil es nicht funktionierte und ich das Mal getestet hatte, aber Fehler war ein anderer, Strom war aus...

Jetzt läuft es und sieht besser aus...
Vielen lieben dank

Kann man daraus nicht ein Template machen falls nochmal jemand einen Smartpuscher einbinden will? Finde das Teil nicht schlecht

Beta-User

Dann warte ich mal auf einen attrTemplate-Vorschlag von deiner Seite, dann checke ich das gerne ein...
(Vielleicht noch etwas zuwarten, bis etwas mehr Erfahrung da ist, auch mit der Frage, wie man das wann ansteuert bzw. die Infos nutzt?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Tueftler1983

Hehe, template muss ich .ich Mal einlesen, bin Grade dabei für jeden Taster ein Dev state icon zu machen und in der Reihe darunter für jede Led den Zustand. Das ist aber auch eine Baustelle die f8mich nicht zu unterschätzen ist.
Da 8 Taster mit jeweils 3 zuständen genau genommen 6 aber denke 3 reichen da aus.
Und 8 LED mit jeweils 3 zuständen.

Tueftler1983

#29
Hey zusammen,
Dank euch bin ich ja schon ein ganzes stück weiter...

ich habe nun für jeden Taster nen DevStateIcon der mir anzeigt ob click, double_click oder long_click sowohl on als auch off, wobei on eig überflüssig ist da der immer nur kurz on hat.

aber wie kann ich jetzt die statis der 8 led anzeigen? dafür habe ich ja kein reading auf das ich zurück greifen kann. gibts da ne möglichkeit??
Z.b bei Setlist mit dem Set für MQTT noch ein setreading setzen, sodass ich auch jeweils ein Reading für jede LED habe so in etwa
off:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 0;setreading MQTT2_smartpusher led$EVTPART1/state 0


wie ich das dann in ne zweite reihe als DevStateVicon bekomme weiß ich.

hoffe ihr versteht was ich vor habe.

hier noch ein list von Device und ein screenshot
Internals:
   CFGFN     
   CID        smartpusher
   DEF        smartpusher
   FUUID      635a1eb7-f33f-b458-a072-0248cfc8556921c9
   Fhem_MQTT2_Server_CONN Fhem_MQTT2_Server_192.168.2.160_50199
   Fhem_MQTT2_Server_MSGCNT 1482
   Fhem_MQTT2_Server_TIME 2022-10-29 17:05:58
   IODev      Fhem_MQTT2_Server
   LASTInputDev Fhem_MQTT2_Server
   MSGCNT     1482
   NAME       MQTT2_smartpusher
   NR         4523
   STATE      1:double_click off
2:long_click off
3:click off
4:double_click off
5:long_click off
6:click off
7:double_click off
8:long_click off
   TYPE       MQTT2_DEVICE
   eventCount 1497
   OLDREADINGS:
   READINGS:
     2022-10-29 17:05:22   button_1        double_click off
     2022-10-29 17:05:24   button_2        long_click off
     2022-10-29 17:03:15   button_3        click off
     2022-10-29 17:05:33   button_4        double_click off
     2022-10-29 17:05:29   button_5        long_click off
     2022-10-29 17:05:53   button_6        click off
     2022-10-29 17:05:55   button_7        double_click off
     2022-10-29 17:05:58   button_8        long_click off
     2022-10-29 17:30:55   state           on
Attributes:
   devStateIcon 1.click.on:tradfri_dimmerswitch@green 1.click.off:tradfri_dimmerswitch@red
1.double_click.on:control_standby@green
1.double_click.off:control_standby@red
1.long_click.on:clock@green
1.long_click.off:clock@red

2.click.on:tradfri_dimmerswitch@green 2.click.off:tradfri_dimmerswitch@red
2.double_click.on:control_standby@green
2.double_click.off:control_standby@red
2.long_click.on:clock@green
2.long_click.off:clock@red

3.click.on:tradfri_dimmerswitch@green 3.click.off:tradfri_dimmerswitch@red
3.double_click.on:control_standby@green
3.double_click.off:control_standby@red
3.long_click.on:clock@green
3.long_click.off:clock@red

4.click.on:tradfri_dimmerswitch@green 4.click.off:tradfri_dimmerswitch@red
4.double_click.on:control_standby@green
4.double_click.off:control_standby@red
4.long_click.on:clock@green
4.long_click.off:clock@red

5.click.on:tradfri_dimmerswitch@green 5.click.off:tradfri_dimmerswitch@red
5.double_click.on:control_standby@green
5.double_click.off:control_standby@red
5.long_click.on:clock@green
5.long_click.off:clock@red

6.click.on:tradfri_dimmerswitch@green 6.click.off:tradfri_dimmerswitch@red
6.double_click.on:control_standby@green
6.double_click.off:control_standby@red
6.long_click.on:clock@green
6.long_click.off:clock@red

7.click.on:tradfri_dimmerswitch@green7.click.off:tradfri_dimmerswitch@red
7.double_click.on:control_standby@green
7.double_click.off:control_standby@red
7.long_click.on:clock@green
7.long_click.off:clock@red

8.click.on:tradfri_dimmerswitch@green 8.click.off:tradfri_dimmerswitch@red
8.double_click.on:control_standby@green
8.double_click.off:control_standby@red
8.long_click.on:clock@green
8.long_click.off:clock@red


   readingList smartpusher/button./.*:.* { $TOPIC =~ m,smartpusher/button(.)/(.+),; my $onoff = $EVENT eq 'true' ? 'on' : 'off'; my $ret->{"button_$1"} = "$2 $onoff"; return $ret}
   room       MQTT2_DEVICE
   setList    off:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 0
on:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 1
fade:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 2

dim:slider,0,10,255 smartpusher/brightness $EVTPART1

sendText:textField smartpusher/message $EVTPART1

sendImage:textField smartpusher/image $EVTPART1





   stateFormat 1:button_1
2:button_2
3:button_3
4:button_4
5:button_5
6:button_6
7:button_7
8:button_8


edit: DevStateIcon anklickbar entfernt