Hallo,
ich möchte meinen Shelly RGBW2 Controller mit MQTT steuern.
In MQTT.fx funktioniert das z.B. so
shellies/shellyrgbw2-5A3992/color/0/set
{"ison":true,"mode":"color","red":255,"green":255,"blue":255,"white":0,"gain":100,"effect":0,"power":55.90,"overpower":false}
Wie bekomme ich das in PublishSet_.*? Mit Kommagetrennt wird das abgeschnitten.
Endziel soll sein, den Wert von Gain aus einem Reading zu holen.
Normaler PublishSet für on/off funktioniert:
on off shellies/shellyrgbw2-5A3992/color/0/command
Gruß
TWART016
Hat jemand eine Idee?
Hier https://forum.fhem.de/index.php/topic,93999.msg866821.html#msg866821 (https://forum.fhem.de/index.php/topic,93999.msg866821.html#msg866821) wird - wenn ich Dein Problem richtig verstanden habe - ein ähnlicher Fall behandelt ...
Wenn ich das richtig sehr wird da escapt.
Problem ist, dass bei mir alles nach einem Komma in eine neue Zeile geschrieben wird. Wie kann ich ein Komma escapen?
Manuell über die Kommandline geht es:
set Shelly_Wohnzimmer_test test {"ison":true,"mode":"color","red":255,"green":255,"blue":255,"white":255,"gain":0,"effect":0,"power":41.05,"overpower":false}
Bei Set wird nur nach Kommagetrennt ein neuer Eintrag erstellt.
Niemand eine Idee?
Moin.
Vor langem hatte ich das Problem auch mal (vor dem Umstieg auf MQTT2). Damals hatte ich das mit toJSON() gelöst. Reste des alten Codes sind hier zu finden (allerdings schon transferiert in die MQTT2-Welt): https://forum.fhem.de/index.php/topic,86932.msg832336.html#msg832336
Generell geht escapen eigentlich meistens mit dem backslash.
Hoffe, das hilft.
setlist gibt es bei MQTT_Device leider nicht.
Backslash mit Escape habe ich bereits probiert, funktioniert nur bei dem Komma nicht.
Dass es keine setList bei MQTT_DEVICE gibt, ist schon klar, aber toJSON() solltest du verwenden können ;) .
Wie müsste ich das in das Reading publishSet_test eintragen?
toJSON({'gain'=>'0'})}
gibt mir in set
"mode":"color"
zurück
Hmm, an sich klingt das doch schon mal nicht schlecht, wenn eine Antwort kommt, oder?
Dann solltest du mal versuchen, den ganzen toJSON zu bauen, also
toJSON({'gain'=>'0',"ison" => "true" , ... })
Auch damit wird durch ein Komma ein Zeilenumbruch.
attr Shelly_Wohnzimmer_test publishSet_test toJSON({"ison":true,"mode":"color","red":255,"green":255,"blue":255,"white":255,"gain":0,"effect":0,"power":41.05,"overpower":false}) shellies/shellyrgbw2-5A3992/color/0/set
Das gleiche mit \
Hmm,
dann gehen mir ziemlich die Ideen aus. Du könntest noch die Funktion mal testweise in {} packen und/oder die Kommata verdoppeln (so wie man das mit ;; sonst auch machen muß.
Ansonsten würde ich dazu raten, einfach MQTT2_DEVICE dafür einzusetzen. Damit geht sowas problemlos...