Hauptmenü

Werte per MQTT senden

Begonnen von rodnic, 29 März 2020, 20:34:40

Vorheriges Thema - Nächstes Thema

Mucki

Hallo Spezialisten,

ich habe diesen Beitrag ausgegraben, weil er genau auf mein Problem zutrifft.

Ich möchte ein Display (ILI9341), das an einem ESPEasy Device per MQTT an FHEM angebunden ist, steuern.
Das funktioniert auch prima, aber ich kann nicht mehrere publish Befehle mit nur einem fhem ("set ....") in Perl versenden. Der zweite Befehl wird stets als Text an den ersten Befehl angehängt. Das passiert sowohl bei einem notify als auch dann, wenn ich eine sub in der 99-MyUtil.pm aufrufe.

ABER, wenn ich den gleichen Code über die Kommandozeile abschicke, funktioniert es einwandfrei und es werden zwei publish-Befehle versendet.

Vielleicht hat jemand einen Vorschlag, wie das Problem zu lösen ist. Der Vorschlag war ja:


Zitat von: Beta-User am 30 März 2020, 13:25:55
Das sollte auch funktionieren:
OUT.Aktie:Dow:.* {
fhem("
  set Mosquitto publish cmd/HAB-Display-01/lednr $min;;
  set Mosquitto publish cmd/HAB-Display-01/ledfarbe1 2;;
  set Mosquitto publish cmd/HAB-Display-01/ledfarbe2 0;;
  set Mosquitto publish cmd/HAB-Display-01/ledfarbe3 0;;
");
}


(@Otto: schneller edit... Aber es fehlt vermutlich je ein ";").

Bei folgender Eingabe in der Kommandozeile

{fhem("set MQTT publish ESP-79-LCD/cmd tftcmd,clear,yellow;;set MQTT publish ESP-79-LCD/cmd tft,txtfull,7,33,2,black,white,a1");;}


kommen beim ESP wie gewünscht zwei Befehle an:

28264158: Command: tftcmd
28264159: tftcmd,clear,yellow
28264159: Par1: 1073421600 Par2: 1073421600 Par3: 0 Par4: 0 Par5: 0
28264245: Command: tft
28264246: tft,txtfull,7,33,2,black,white,a1
28264246: Par1: 1073421600 Par2: 7 Par3: 33 Par4: 2 Par5: 2




Bei einem Aufruf in einem notify oder über die 99_myUtils.pm

defmod testmqtt_notify_1 notify testmqtt:.* {fhem("set MQTT publish ESP-79-LCD/cmd tftcmd,clear,yellow;;;;set MQTT publish ESP-79-LCD/cmd tft,txtfull,7,33,2,black,white,a1");;;;}


wird alles in einem Befehl versendet.

28296161: Command: tftcmd
28296161: tftcmd,clear,yellow;set MQTT publish ESP-79-LCD/cmd tft,txtfull,7,33,2,black,white,a1
28296161: Par1: 1073421600 Par2: 1073421600 Par3: 1073421600 Par4: 1073421600 Par5: 1073421600


Das liegt vermutlich nicht am Empfänger, denn in einem MQTT Explorer wird das auch so angezeigt.
Trotz Recherche ist es mir nicht gelungen, den Fehler zu finden. Vielleicht ist es wichtig: mein MQTT ist ein MQTT2_SERVER.

TomLee

Hallo,

vermutlich darf es nur ein Semikolon zum trennen der set-Befehle in dem notify sein, reine Vermutung nicht getestet.
Benötigst du denn das notify wirklich ?
Man könnte im MQTT2_DEVICE auch einen "setter" in setList hinterlegen, der mehrere set-Befehle ausführt.

Otto123

Bei einem defmod, also für die Kommandozeile sollte das so aussehen:
defmod testmqtt_notify_1 notify testmqtt:.* {fhem("set MQTT publish ESP-79-LCD/cmd tftcmd,clear,yellow;;set MQTT publish ESP-79-LCD/cmd tft,txtfull,7,33,2,black,white,a1")}

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

Mucki

Ihr seid super, da darf nur ein Semikolon stehen. Nun funktioniert es. Besten Dank Euch beiden.  :)

Zitat von: TomLee am 15 Dezember 2021, 19:17:00
Benötigst du denn das notify wirklich ?
Das notify war nur ein Versuch und wird wieder gelöscht. Das Display will ich durch Aufrufe der 99_myUtils.pm steuern. Dazu benötige ich mehrere publish Kommandos direkt hintereinander.
Nochmals vielen Dank!