FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: TWART016 am 09 April 2019, 22:04:24

Titel: PublishSet bei MQTT_DEVICE
Beitrag von: TWART016 am 09 April 2019, 22:04:24
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
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: TWART016 am 14 April 2019, 01:18:35
Hat jemand eine Idee?
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: OdfFhem am 14 April 2019, 05:08:19
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 ...
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: TWART016 am 14 April 2019, 20:47:58
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.
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: TWART016 am 23 April 2019, 21:47:25
Niemand eine Idee?
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: Beta-User am 24 April 2019, 09:19:43
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.
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: TWART016 am 24 April 2019, 21:37:20
setlist gibt es bei MQTT_Device leider nicht.

Backslash mit Escape habe ich bereits probiert, funktioniert nur bei dem Komma nicht.
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: Beta-User am 25 April 2019, 09:10:50
Dass es keine setList bei MQTT_DEVICE gibt, ist schon klar, aber toJSON() solltest du verwenden können ;) .
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: TWART016 am 25 April 2019, 17:12:04
Wie müsste ich das in das Reading publishSet_test eintragen?
toJSON({'gain'=>'0'})}
gibt mir in set
"mode":"color"
zurück
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: Beta-User am 25 April 2019, 17:42:07
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" , ... })
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: TWART016 am 26 April 2019, 08:38:59
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 \
Titel: Antw:PublishSet bei MQTT_DEVICE
Beitrag von: Beta-User am 26 April 2019, 09:11:23
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...