[gelöst] MQTT2 Device: setList mit mehreren MQTT Kommandos ?

Begonnen von Uef, 23 Januar 2021, 18:42:28

Vorheriges Thema - Nächstes Thema

Uef

Hallo zusammen,
ich habe eine V-Tac 5113 RGBWW WIFI Leuchte im Einsatz, auf die ich Tasmota geflashed habe und die Ansteuerung über MQTT funktioniert auch grundsätzlich.

Die Leuchte bietet neben den 3 Farben auch 2 Weiß-Töne (Kalt- und Warm-Weiß) und für maximale Helligkeit würde ich gerne beide einschalten.
Die Tasmota-Firmware (aktuelle Version 9.2) versendet zwar Information als JSON, kann aber bei den Kommandos (cmnd im Topic) kein JSON verarbeiten (zumindest habe ich es nicht hinbekommen und auch im Netz nichts dazu gefunden), sondern akzeptiert nur das RAW-Format.
D.h. zum Einschalten der beiden Weißtöne muss ich also 2 Befehle absetzen :

Etage1/Flur/vtac5113/cmnd/POWER5:r ON
Etage1/Flur/vtac5113/cmnd/POWER4:r ON


Einen der beiden Kanäle mit setList ein- und auszuschalten, kriege ich auch problemlos hin:

off:noArg Etage1/Flur/vtac5113/cmnd/POWER5:r OFF
on:noArg Etage1/Flur/vtac5113/cmnd/POWER5:r ON


Aber wie kriege ich es hin, direkt 2 MQTT-Befehle abzusetzen ?
Die Perl-Variante hilft da nach meinem Verständnis ja auch nicht weiter und JSON geht nicht.
Und im Forum habe ich kein passendes Beispiel gefunden.

Vielleicht sehe ich nach stundenlangem Testen schon den Wald vor lauter Bäumen nicht mehr, aber aktuell fällt mir einfach nichts mehr ein :-(

Der Vollständigkeit halber hier noch das aktuelle List, das für einen der POWER-Kanäle funktioniert:

Internals:
   CFGFN     
   DEVICETOPIC LampeFlurEtage1
   FUUID      600c460d-f33f-b72c-53fa-605fe9f1710684fc
   IODev      MQTT2_Gateway
   NAME       LampeFlurEtage1
   NR         5463
   STATE      off
   TYPE       MQTT2_DEVICE
   READINGS:
     2021-01-23 18:12:38   state           off
Attributes:
   IODev      MQTT2_Gateway
   model      V-TAC 5113
   room       Etage1,MQTT
   setList    off:noArg Etage1/Flur/vtac5113/cmnd/POWER5:r OFF
on:noArg Etage1/Flur/vtac5113/cmnd/POWER5:r ON\


Gruß aus Aachen
Uwe
fhem auf Raspberry2 mit MAX! (via CUL f. Raumthermostat, Fensterkontakte und Heizungen) und HM (via LanAdapter für Raumthermostat, 6-fach Taster, 4-fach Hutschiene, Statusanzeige, Stecker m. Leistungsmessung); In Entwicklung: Heizungsüberwachung via Adapter & MQTT; Stromverbrauchsüberwachung (1wire)

Otto123

Hallo Uwe,

so ganz generisch kann man folgendes machen:
Beide Befehle als separate setList definieren, dann eine dritte machen und dort beide per FHEM Befehl absetzen:
Ich habe sowas in der Art schon erfolgreich gemacht, das hier ist erstmal nur zusammengeschrieben:
P5:on,off Etage1/Flur/vtac5113/cmnd/POWER5:r $EVTPART1
P4:on,off Etage1/Flur/vtac5113/cmnd/POWER4:r $EVTPART1
P6:on,off {fhem("set $NAME P5 $EVTPART1; set $NAME P4 $EVTPART1")}


Gruß Otto
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

Beta-User

Es sollte auch gehen, den ersten Teil als publish an das IO zu geben und dann den 2. als "regulären topic/payload-String zurückzugeben....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Uef

Hallo Otto,

perfekt !
Das war genau, was ich gesucht habe.
Ich hatte in der Zwischenzeit schon mit separaten setLists für die Kanäle rumprobiert, aber das war halt nur ein Teil der Lösung.

Und das mit den DropDown-Listen kannte ich noch gar nicht (habe allerdings mit dem Webcmd und den ganzen Möglichkeiten noch fast nichts gemacht; FTUI läuft für die täglichen Aufgaben).

@Beta-User: deine Antwort habe ich leider nicht verstanden bzw. habe keine Ahnung, was ich da umsetzen müsste. Anscheinend weiß ich noch weniger von FHEM, als ich schon befürchtet habe    :-\ ;D

Jedenfalls vielen lieben Dank an Euch für die schnellen Antworten - Ihr habt meinen Abend gerettet  :)

LG
Uwe
fhem auf Raspberry2 mit MAX! (via CUL f. Raumthermostat, Fensterkontakte und Heizungen) und HM (via LanAdapter für Raumthermostat, 6-fach Taster, 4-fach Hutschiene, Statusanzeige, Stecker m. Leistungsmessung); In Entwicklung: Heizungsüberwachung via Adapter & MQTT; Stromverbrauchsüberwachung (1wire)

Otto123

#4
Ich glaube ich habe Beta-Users Ansatz verstanden, auch wenn ich es mal anders hinschreibe :)
P5:on,off Etage1/Flur/vtac5113/cmnd/POWER5:r $EVTPART1
P6:on,off {fhem("set $NAME P5 $EVTPART1");qq(Etage1/Flur/vtac5113/cmnd/POWER4:r $EVTPART1)}


Erklärung: In meiner ersten Variante wird bei P6 quasi der eigentliche Zweck missbraucht oder "getrickst". Man führt Perlcode aus der gar nichts mit dem Device zu tun hat (haben muss). Die Rückgabe aus dem {Perlabschnitt} muss in dem Fall undef sein! sonst gibt es einen Fehler.
In der letzten Variante wird im ersten Teil einfach was ausgeführt und im zweiten Teil der eigentlich Inhalt der setList als String zurück gegeben und das Device führt ihn aus.

Ist halt die Frage, ob man nur zwei Schaltvarianten oder alle drei braucht :)
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

Uef

Ok, vielen Dank für die Erläuterung, Otto.

Die zweite Variante ist vielleicht etwas eleganter, aber deine erste ist für mich deutlich bessser nachzuvollziehen.
(abgesehen davon musste ich qq erstmal nachschlagen; Perl ist echt nicht so mein Ding).

Ich habe mir jetzt mehrere Varianten ins Device gebaut; so habe ich verschiedene Lösungen parat und kann sowohl alles zusammen steuern oder auch jeden Weiß-Kanal einzeln.
Wieder viel gelernt !

Jetzt kann ich mich drum kümmern, Lampe in die eigentliche Lösung zu integrieren.

Danke nochmals.

Hier noch das List zum aktuellen Stand (vielleicht hilft es mal jemandem):

Internals:
   CFGFN     
   DEVICETOPIC LampeFlurEtage1
   FUUID      600c460d-f33f-b72c-53fa-605fe9f1710684fc
   IODev      MQTT2_Gateway
   NAME       LampeFlurEtage1
   NR         5463
   STATE      CWoff
   TYPE       MQTT2_DEVICE
   READINGS:
     2021-01-23 22:33:46   state           CWoff
Attributes:
   IODev      MQTT2_Gateway
   model      V-TAC 5113
   room       Etage1,MQTT
   setList    WWon:noArg Etage1/Flur/vtac5113/cmnd/POWER5:r ON
CWon:noArg Etage1/Flur/vtac5113/cmnd/POWER4:r ON
CWoff:noArg Etage1/Flur/vtac5113/cmnd/POWER4:r OFF
WWoff:noArg Etage1/Flur/vtac5113/cmnd/POWER5:r OFF
Ein:noArg {fhem("set LampeFlurEtage1 WWon; set LampeFlurEtage1 CWon")}
Aus:noArg {fhem("set LampeFlurEtage1 WWoff; set LampeFlurEtage1 CWoff")}
P5:on,off Etage1/Flur/vtac5113/cmnd/POWER5:r $EVTPART1
P4:on,off Etage1/Flur/vtac5113/cmnd/POWER4:r $EVTPART1

   webCmd     Ein:Aus:P4:P5
   webCmdLabel ::Kaltweiß:Warmweiß


Allen noch ein schönes Rest-Wochenende
fhem auf Raspberry2 mit MAX! (via CUL f. Raumthermostat, Fensterkontakte und Heizungen) und HM (via LanAdapter für Raumthermostat, 6-fach Taster, 4-fach Hutschiene, Statusanzeige, Stecker m. Leistungsmessung); In Entwicklung: Heizungsüberwachung via Adapter & MQTT; Stromverbrauchsüberwachung (1wire)

Otto123

q -> 'einzelne Hochkommas'
qq -> "doppelte Hochkommas"

Versuch mal in der Kommandozeile:
{"String"}
{qq("String")}
{my $s='willi';;"$s"}
{my $s='willi';;'$s'}

Mit qq() oder q() brauchst Du Dir keine Sorgen machen ob weitere Hochkommas im String sind. Aber spiel mal ruhig alle möglichen (auch weitere) Kombinationen durch. In den doppelten werden Variablen aufgelöst und den einfachen nicht.
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

Beta-User

Hatte an eine publish-Anweisung gedacht, aber so geht es auch :) .

Weitere Variante (da Tasmota): backlog - da kann man mehrere Kommandos auf einmal reinschreiben.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files