Rollershutter MQTT Thing & Json

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
oilton
Beiträge: 2
Registriert: 11. Feb 2019 22:27
Answers: 0

Rollershutter MQTT Thing & Json

Beitrag von oilton »

Hallo zusammen,

bei mir läuft Openhab 2.4 mit dem MQTT-Binding. Hiermit kann ich meinen Shelly ansteuern.
Jetzt möchte ich noch meine Jalousiesteuerung über MQTT realisieren.

Dafür sollen Befehle im JSON-Format per MQTT gesendet werden:

Code: Alles auswählen

{"CMD":"ITEM_VALUE_SET","PROTOCOL":"0.03","TIMESTAMP":"1549800183","VALUES":[{"NUMBER":21,"STATE":"VALUE_BLINDS","VALUE":0}]}
Ich habe das Thing so konfiguriert

Code: Alles auswählen

    Thing topic blinds_control {
        Channels:
            Type rollershutter: blind [
                stateTopic="blinds/get",
                commandTopic="blinds/send",
                on="on",
                stop="stop",
                off="off"
            ]
    }
Das Item habe ich wie folgt definiert

Code: Alles auswählen

Rollershutter Living_Room_Blind
    "Wohnzimmer"
    ["blinds"]
    {
        channel="mqtt:topic:MQTTBroker:blinds_control:blind"
    }

Wenn ich den Befehl

Code: Alles auswählen

smarthome:send Living_Room_Blind UP
sende kommt am Device nur 0 als Command an. Dies ändert sich auch nicht wenn ich die Werte im Thing verändere.

Was muss ich anpassen um den oben genannten JSON-String senden zu können?

Benutzeravatar
udo1toni
Beiträge: 15246
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Rollershutter MQTT Thing & Json

Beitrag von udo1toni »

Wenn Du einen JSON String senden willst, musst Du im Zweifel auch einen JSON String zusammen bauen. Woher soll openHAB wissen, wie der JSON String aufgebaut sein muss?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

oilton
Beiträge: 2
Registriert: 11. Feb 2019 22:27
Answers: 0

Re: Rollershutter MQTT Thing & Json

Beitrag von oilton »

udo1toni hat geschrieben: 11. Feb 2019 23:59 Wenn Du einen JSON String senden willst, musst Du im Zweifel auch einen JSON String zusammen bauen. Woher soll openHAB wissen, wie der JSON String aufgebaut sein muss?
Genau das frage ich mich. Wie muss die Konfig aussehen, damit nicht die Integer-Werte sondern das gewünschte JSON übergeben wird? Hier einige meine erfolglosen Versuche:

Als Werte im Thing

Code: Alles auswählen

   Thing topic blinds_control {
        Channels:
            Type rollershutter: blind [
                stateTopic="blinds/get",
                commandTopic="blinds/send",
                on='{"CMD":"ITEM_VALUE_SET","PROTOCOL":"0.03","TIMESTAMP":"1549800183","VALUES":[{"NUMBER":21,"STATE":"VALUE_BLINDS","VALUE":0}]}',
                stop='{"CMD":"ITEM_VALUE_SET","PROTOCOL":"0.03","TIMESTAMP":"1549800188","VALUES":[{"STATE":"ON","NUMBER":21}]}',
                off='{"CMD":"ITEM_VALUE_SET","PROTOCOL":"0.03","TIMESTAMP":"1549800183","VALUES":[{"NUMBER":21,"STATE":"VALUE_BLINDS","VALUE":100}]}'
            ]
    }
Als Regel

Code: Alles auswählen

rule "Blind"
when 
    Item Living_Room_Blind received command
then 
    if(receivedCommand == DOWN) 
        publish("MQTTBroker", "blinds/send", '{"CMD":"ITEM_VALUE_SET","PROTOCOL":"0.03","TIMESTAMP":"1549800183","VALUES":[{"NUMBER":21,"STATE":"VALUE_BLINDS","VALUE":100}]}')
    if(receivedCommand == UP) 
        publish("MQTTBroker", "blinds/send", '{"CMD":"ITEM_VALUE_SET","PROTOCOL":"0.03","TIMESTAMP":"1549800183","VALUES":[{"NUMBER":21,"STATE":"VALUE_BLINDS","VALUE":0}]}')
    if(receivedCommand == STOP) 
        publish("MQTTBroker", "blinds/send", '{"CMD":"ITEM_VALUE_SET","PROTOCOL":"0.03","TIMESTAMP":"1549800188","VALUES":[{"STATE":"ON","NUMBER":21}]}')
end

Antworten