Ja, Du musst nur bedenken, dass in MQTT keine Datentypen kennt, sondern dass generell nur eine Folge von Bytes übermittelt wird. Damit Absender und Empfänger sich verstehen, müssen sie sich einig sein, wie die Payload des MQTT Telegramms zu interpretieren ist.
Um über json artige Strukturen zu kommunizieren, muss die json Struktur in einen String gewandelt werden, der dann als Payload übertragen wird. Dein Item muss als Wert also den kompletten Json String enthalten.
Nachtrag: Der Unterschied ist, dass Du im Moment über SmartHomeNG versuchst eine Python Datenstruktur zu versenden, während MQTT.fx einen String sendet. Das siehst Du auch an der Fehlermeldung die Du gepostet hast: Dort versucht java.io.StringReader einen String zu lesen und als Json zu interpretieren. Da kein String gesendet wurde, geht das natürlich daneben.
Eine Möglichkeit für Dich ist, gleich einen String in der Logik zu definierten, oder über json.dumps() die Json Struktur in einen String zu wandeln.
sollte funktionieren, wenn Du das Item als type: str definierst.
Um über json artige Strukturen zu kommunizieren, muss die json Struktur in einen String gewandelt werden, der dann als Payload übertragen wird. Dein Item muss als Wert also den kompletten Json String enthalten.
Nachtrag: Der Unterschied ist, dass Du im Moment über SmartHomeNG versuchst eine Python Datenstruktur zu versenden, während MQTT.fx einen String sendet. Das siehst Du auch an der Fehlermeldung die Du gepostet hast: Dort versucht java.io.StringReader einen String zu lesen und als Json zu interpretieren. Da kein String gesendet wurde, geht das natürlich daneben.
Eine Möglichkeit für Dich ist, gleich einen String in der Logik zu definierten, oder über json.dumps() die Json Struktur in einen String zu wandeln.
Code:
# rockrobo_ini.py sh.Rockrobo( '{"command": "zoned_cleanup", "zone_ids": ["Bad"]}' )
Kommentar