PublishSet bei MQTT_DEVICE

Begonnen von TWART016, 09 April 2019, 22:04:24

Vorheriges Thema - Nächstes Thema

TWART016

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

TWART016


OdfFhem

Hier https://forum.fhem.de/index.php/topic,93999.msg866821.html#msg866821 wird - wenn ich Dein Problem richtig verstanden habe - ein ähnlicher Fall behandelt ...

TWART016

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.

TWART016


Beta-User

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.
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

TWART016

setlist gibt es bei MQTT_Device leider nicht.

Backslash mit Escape habe ich bereits probiert, funktioniert nur bei dem Komma nicht.

Beta-User

Dass es keine setList bei MQTT_DEVICE gibt, ist schon klar, aber toJSON() solltest du verwenden können ;) .
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

TWART016

Wie müsste ich das in das Reading publishSet_test eintragen?
toJSON({'gain'=>'0'})}
gibt mir in set
"mode":"color"
zurück

Beta-User

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" , ... })
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

TWART016

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 \

Beta-User

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...
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