[Gelöst] MQTT2_DEVICE: Publish von mehreren Topics mit einem SetList Command?

Begonnen von fhemfreund, 13 März 2021, 14:59:42

Vorheriges Thema - Nächstes Thema

fhemfreund

ich habe einen MQTT2_CLIENT für eine Infrarot Steuerung einer LED Kerze definiert und soweit funktioniert alles wie gewünscht. Allerdings würde ich gerne mehrere MQTT Topics mit einem SetList command publishen. z.B. bei Auswahl einer Farbe sollte zuerst die Kerze eingeschaltet und dann die Farbe ausgewählt werden (ich könnte das mit einem DOIF machen, würde mir aber das gerne sparen)

Beispiel:


...
An:noArg OpenMqttGateway/commands/MQTTtoIR {"hex":"0x7C1","protocol_name":"RC5","repeat":2}
Rot:noArg OpenMqttGateway/commands/MQTTtoIR {"hex":"0x7CE","protocol_name":"RC5","repeat":2}
...


zu



Rot:noArg <'An' + 'Rot'>



Ist soetwas möglich?

Andreas

Beta-User

Klar.

Auf die Schnelle zwei Varianten (für MQTT2_DEVICE):
a) Perl-setList verwenden und dort den ersten publish (direkt über das IO) reinbauen und dann die weitere publish-Anweisung als "topic payload"-Text zurückgeben.
b) zwei getrennte Kommandos reinbauen und dann mit Perl-setList zwei fhem-set-Befehle absetzen und dann am Ende "undef" zurückgeben, damit nichts weiter passiert.
(deletereadings in dem BT-Teil von OpenMQTTGateway geht in die b)-Richtung).
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

Variante c damit der IO nicht extra erwähnt werden muss ;)

raw:textField OpenMqttGateway/commands/MQTTtoIR {(split(' ', $EVENT,2))[1]}
zweiBefehle:noArg {fhem("set $NAME raw Befehl1");;return qq(OpenMqttGateway/commands/MQTTtoIR "hex":"0x7CE","protocol_name":"RC5","repeat":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

fhemfreund

@Beta-User, Otto
danke für euren Input.

Zitat
b) zwei getrennte Kommandos reinbauen und dann mit Perl-setList zwei fhem-set-Befehle absetzen und dann am Ende "undef" zurückgeben, damit nichts weiter passiert.

von Beta-User war die Lösung:


An:noArg OpenMqttGateway/commands/MQTTtoIR {"hex":"0x7C1","protocol_name":"RC5","repeat":2}
Rot:noArg OpenMqttGateway/commands/MQTTtoIR {"hex":"0x7CE","protocol_name":"RC5","repeat":2}


wird zu


An:noArg OpenMqttGateway/commands/MQTTtoIR {"hex":"0x7C1","protocol_name":"RC5","repeat":2}
RotC:noArg OpenMqttGateway/commands/MQTTtoIR {"hex":"0x7CE","protocol_name":"RC5","repeat":2}
Rot:noArg {fhem "set mqtt_OpenMqttGateway_ir_led_kerze1 An; sleep 0.4; set mqtt_OpenMqttGateway_ir_led_kerze1 RotC"}


wobei ich dann 'Rot' im WebCmd stehen habe und 'RotC' der eigentliche Aufruf der Farbänderung ist. Den Sleep brauche ich, da die Kerze zu 'lahm' ist ;-)
Danke nochmal.

Andreas