*Gelöst* MQTT device einbinden (SmartPusher)

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

Vorheriges Thema - Nächstes Thema

Tueftler1983

Mein nächster Versuch sieht so aus, funktioniert aber auch nicht
off:selectnumbers,1,1,8,0,lin smartpusher/button$EVTPART1/state 0 {fhem("setreading MQTT2_smartpusher led$EVTPART1 off")}

Es ist bestimmt wieder nur ne Kleinigkeit, wer kann in die richtige Richtung schubsen?

Beta-User

In Bezug auf deinen ungeduldigen Doppelpost (https://forum.fhem.de/index.php/topic,129983.0.html, der zudem einen seltsamen Titel hat) steht die (etwas verklausulierte) Lösung in https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt#Perl-Kommandos.

Übersetzt sollte das in etwa so passen:
off:selectnumbers,1,1,8,0,lin {fhem("setreading MQTT2_smartpusher led$EVTPART1 off"); return "smartpusher/button$EVTPART1/state 0"}
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

Vielen lieben dank Beta-User,
Ich hatte dieses Wiki tatsächlich schon gefunden und mehrfach gelesen könnte die Infos aber nicht wirklich umsetzen,
Die von mir gezeigten Versuche waren nur ein kleiner Teil von dem was ich probiert hatte.
Vielen lieben dank wenn das Device komplett so ist wie ich es möchte, zeige ich es gerne und Versuche daraus ein Template zu erstellen. Denn eigentlich ist nur der Gerätename smartpusher variabel.

Tueftler1983

Hallo Beta-User,

leider funktioniert dein Ansatz auch nicht, so wird zwar das Reading gesetzt aber smartpusher reagiert nicht.

Leider bekomme ich die Meldung beim ausführen im Traffic vom MQTT2 SERVER
SENT
Unknown
argument smartpusher/button2/state, choose one of off:selectnumbers,1,1,8,0,lin on:selectnumbers,1,1,8,0,lin fade:selectnumbers,1,1,8,0,lin dim:slider,0,10,255 sendText:textField sendImage:textField off-till-overnight on-till toggle intervals on-till-overnight off-for-timer blink on-for-timer off-till attrTemplate:?,General_Info,MQTT2_CLIENT_general_bridge,MQTT2_IO_ignoreRegexp_basic,MQTT2_IO_ignoreRegexp_tasmota,MQTT2_IO_ignoreRegexp_shelly,MQTT2_IO_ignoreRegexp_homeassistant,tasmota_basic,tasmota_basic_state_power1,tasmota_3channel_input_shelly_i3,shelly1,shellyPlus_1,shellyPlus_1pm,shellypro4pm,shellyPlus_i4,ESPurna_single_relay,eBus_daemon_splitter,ebus_update_files_from_svn,ems-esp_heater_device,ems-esp_boiler,ems-esp_thermostat_read-only,ems-esp_thermostat_simple,ems-esp_thermostat_RC35_type,zigbee2mqtt_bridge,sonos2mqtt_bridge,sonos2mqtt_speaker,sonos2mqtt_bridge_comfort,roon,InstarCam,wled_controller,go_eCharger,go_eCharger_old,8channel_ethernet_board_split,8channel_ethernet_board_unified,6channel_ethernet_board_6input_split,6channel_ethernet_board_6input_unified,8channel_relay_board_8di_split,esp_milight_hub_bridge,OpenMQTTGateway_MCU,valetudo,worx_landroid,wallpanel_app,weewx_weather_station,McLighting


Beta-User

Kann grade nicht testen, aber die Meldung passt nicht ganz zu dem, was mein Schnipsel bewirken sollte.
Bitte ein raw zeigen.
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

So es läuft, bei dem aufruf über die perl schiene muss man über das publish vom MQTT Server gehen....

So wird jeweils in das Reading led1-8 der Wert on, off, fade gesetzt und an smartpusher gesendet.

off:selectnumbers,1,1,8,0,lin {fhem("set Fhem_MQTT2_Server publish smartpusher/button$EVTPART1/state 0; setreading MQTT2_smartpusher led$EVTPART1 off")}

on:selectnumbers,1,1,8,0,lin {fhem("set Fhem_MQTT2_Server publish smartpusher/button$EVTPART1/state 1; setreading MQTT2_smartpusher led$EVTPART1 on")}

fade:selectnumbers,1,1,8,0,lin {fhem("set Fhem_MQTT2_Server publish smartpusher/button$EVTPART1/state 2; setreading MQTT2_smartpusher led$EVTPART1 fade")}


vielen dank Beta-User
hilfe kam auch über Facebook Gruppe

Jetzt noch hübsch verpacken und mal gucken wie es mit den Templates geht

Beta-User

Das mit publish via IODev "müssen" ist ein Gerücht!
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 31 Oktober 2022, 09:38:04
Das mit publish via IODev "müssen" ist ein Gerücht!

Okay, aber so funktioniert es jedenfalls

Otto123

Zitat von: Tueftler1983 am 31 Oktober 2022, 09:55:06
Okay, aber so funktioniert es jedenfalls
Das Brett finde ich jetzt dünn :)
Damit Dir klar wird was man in der setList tun muss/kann - musst Du bloß in die Hilfe schauen:
Zitatthe perl expression must return a string containing the topic and the message separated by a space. If it returns "", undef or 0, no MQTT message will be sent.
Du musst in dem Versuch mit Beta-Users Vorschlag einen Schreibfehler gehabt haben. Versuch das bitte nochmal.
So ist es jetzt auf alle Fälle unschön: Dein Perl Code wird nicht definiert, z.B. mit "return undef", beendet.
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 31 Oktober 2022, 11:00:25
Das Brett finde ich jetzt dünn :)
Damit Dir klar wird was man in der setList tun muss/kann - musst Du bloß in die Hilfe schauen:Du musst in dem Versuch mit Beta-Users Vorschlag einen Schreibfehler gehabt haben. Versuch das bitte nochmal.
So ist es jetzt auf alle Fälle unschön: Dein Perl Code wird nicht definiert, z.B. mit "return undef", beendet.

Ja hast recht, war unglücklich ausgedrückt, habe jetzt Beta-Users vorschlag nochmal versucht und jetzt geht es wunderbar und auch was schöner um daraus ein Template zu mchen.

Ich kann euch garnicht genug DANKEN es läuft jetzt alles was ich Testen kann, Leider fehlen mir noch die oled Displays die brauchen sehr lange...

hier noch die Raw definition und ein Screenshot

defmod MQTT2_smartpusher MQTT2_DEVICE smartpusher
attr MQTT2_smartpusher 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@green\
7.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\
\
9.on:FS20.off@green \
9.off:FS20.off@red\
9.fade:clock@green\
\
\
10.on:FS20.off@green \
10.off:FS20.off@red\
10.fade:clock@green \
\
\
11.on:FS20.off@green \
11.off:FS20.off@red\
11.fade:clock@green\
\
\
12.on:FS20.off@green \
12.off:FS20.off@red\
12.fade:clock@green\
\
\
13.on:FS20.off@green\
13.off:FS20.off@red \
13.fade:clock@green\
\
\
14.on:FS20.off@green \
14.off:FS20.off@red\
14.fade:clock@green\
\
\
15.on:FS20.off@green\
15.off:FS20.off@red\
15.fade:clock@green\
\
\
16.on:FS20.off@green \
16.off:FS20.off@red\
16.fade:clock@green\

attr MQTT2_smartpusher readingList smartpusher/button./.*:.* { $TOPIC =~ m,smartpusher/button(.)/(.+),;; my $onoff = $EVENT eq 'true' ? 'on' : 'off';; my $ret->{"button_$1"} = "$2 $onoff";; return $ret}\

attr MQTT2_smartpusher room MQTT2_DEVICE
attr MQTT2_smartpusher setList off:selectnumbers,1,1,8,0,lin {fhem("setreading MQTT2_smartpusher led$EVTPART1 off");; return "smartpusher/button$EVTPART1/state 0"}\
\
on:selectnumbers,1,1,8,0,lin {fhem("setreading MQTT2_smartpusher led$EVTPART1 on");; return "smartpusher/button$EVTPART1/state 1"}\
\
fade:selectnumbers,1,1,8,0,lin {fhem("setreading MQTT2_smartpusher led$EVTPART1 fade");; return "smartpusher/button$EVTPART1/state 2"}\
\
dim:slider,0,10,255 smartpusher/brightness $EVTPART1\
\
sendText:textField smartpusher/message $EVTPART1\
\
sendImage:textField smartpusher/image $EVTPART1\
\
\
\
\

attr MQTT2_smartpusher stateFormat 1: dev1\
2: dev2\
3: dev3\
4: dev4\
5: dev5\
6: dev6\
7: dev7\
8: dev8\
<br>\
1:button_1\
2:button_2\
3:button_3\
4:button_4\
5:button_5\
6:button_6\
7:button_7\
8:button_8\
<br>\
9:led1\
10:led2\
11:led3\
12:led4\
13:led5\
14:led6\
15:led7\
16:led8

setstate MQTT2_smartpusher 1: dev1\
2: dev2\
3: dev3\
4: dev4\
5: dev5\
6: dev6\
7: dev7\
8: dev8\
<br>\
1:long_click off\
2:click off\
3:long_click off\
4:double_click off\
5:click off\
6:double_click off\
7:long_click off\
8:click off\
<br>\
9:on\
10:off\
11:fade\
12:on\
13:off\
14:fade\
15:on\
16:off

Beta-User

...das devStateIcon könnte man mit Hilfe von Wildcards auch etwas verschlanken...
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 02 November 2022, 12:19:20
...das devStateIcon könnte man mit Hilfe von Wildcards auch etwas verschlanken...

Okay, muss ich Mal gucken ob ich das hin bekomme. Vielen Dank für die Unterstützung


Tueftler1983

Hallo @Beta-User

darf ich dich fragen wie ich das dev state icon noch kürzen kann bin ja froh das ich das mit den 3 reihen und 8 spalten hin bekommen habe.

lg
Holger

Beta-User

Zitat von: Tueftler1983 am 03 November 2022, 16:25:22
Hallo @Beta-User

darf ich dich fragen wie ich das dev state icon noch kürzen kann bin ja froh das ich das mit den 3 reihen und 8 spalten hin bekommen habe.
Das mit den Reihen und Spalten kommt aus stateFormat. devStateIcon (in der "einfachen Form") ersetzt nur jede passende Zeile mit einem Icon, wobei das Ganze so organisiert ist, dass der erste Match der Liste genommen wird (deswegen verdrängt das hintere ".*off" nicht "..click.off").

So sollte das Ergebnis genauso aussehen:
attr MQTT2_smartpusher devStateIcon ..click.on:tradfri_dimmerswitch@green \
..click.off:tradfri_dimmerswitch@red\
..double_click.on:control_standby@green\
..double_click.off:control_standby@red\
..long_click.on:clock@green\
..long_click.off:clock@red\
.*on:FS20.off@green \
.*off:FS20.off@red\
.*fade:clock@green
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

Okay das funktioniert super kann ich oben die zwei DropDown Menüs ausblenden weil die eh nur über notify oder doif gesetzt werden.

Aber vielen lieben dank für die unterstützung!!