Http Request zum Shelly Plus Plug S senden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Boby123
Beiträge: 4
Registriert: 8. Mai 2019 17:12
Answers: 0

Http Request zum Shelly Plus Plug S senden

Beitrag von Boby123 »

Guten Abend zusammen,

ich möchte gerne an meinem Shelly Plus Plug s die Farbe des Farbrings wechseln. In der Doku habe ich folgenden Http - Befehl gefunden welcher im Browser funktioniert:

Code: Alles auswählen

http://192.140.2.175/rpc/PLUGS_UI.SetConfig?config={%22leds%22:{%22mode%22:%22switch%22,%22colors%22:{%22switch:0%22:{%22on%22:{%22rgb%22:[100,0,0],%22brightness%22:100},%22off%22:{%22rgb%22:[100,100,0],%22brightness%22:100}},%22power%22:{%22brightness%22:100}},%22night_mode%22:{%22enable%22:true,%22brightness%22:10,%22active_between%22:[%2222:00%22,%2206:00%22]}},%22controls%22:{%22switch:0%22:{%22in_mode%22:%22detached%22}}}
wenn ich diesen Befehl nun in meiner Rule aufrufe erhalte ich den Fehler das illegale Zeichen verwendet werden.

Code: Alles auswählen

rule "Meldung Gelb"
when
    Item Testen111 received update
then
sendHttpGetRequest("http://192.140.2.175/rpc/PLUGS_UI.SetConfig?config={%22leds%22:{%22mode%22:%22switch%22,%22colors%22:{%22switch:0%22:{%22on%22:{%22rgb%22:[100,0,0],%22brightness%22:100},%22off%22:{%22rgb%22:[100,100,0],%22brightness%22:100}},%22power%22:{%22brightness%22:100}},%22night_mode%22:{%22enable%22:true,%22brightness%22:10,%22active_between%22:[%2222:00%22,%2206:00%22]}},%22controls%22:{%22switch:0%22:{%22in_mode%22:%22detached%22}}}")
end
dieses sind die geschweiften Klammern.

Wie muss ich meine Anfrage ändern?

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

Re: Http Request zum Shelly Plus Plug S senden

Beitrag von udo1toni »

Nein, die geschweiften Klammern sind ganz sicher keine illegalen Zeichen in einem httpGetRequest.
Mein dringender Ratschlag wäre, die Kommunikationsart zu wechseln. Nutze besser mqtt (Shelly bietet das Protokoll direkt an). Der entsprechende Aufruf wäre im Prinzip der gleiche, nur dass Du das JSON ordentlich senden kannst. Lesefreundlich:

Code: Alles auswählen

{
    "leds": {
        "mode": "switch",
        "colors": {
            "switch:0" : {
                "on": {
                    "rgb": [100,0,0],
                    "brightness": 100
                },
                "off": {
                    "rgb": [100,100,0],
                    "brightness": 100
                }
            },
            "power": {
                "brightness": 100
            }
        },
        "night_mode": {
            "enable": true,
            "brightness": 10,
            "active_between": ["22:00","06:00"]
        }
    },
    "controls": {
        "switch:0" : {
            "in_mode": "detached"
        }
    }
}
Zeilenumbrüche und Leerzeichen können entfallen, da der übergebene String allerdings Anführungszeichen enthält, muss der String selbst in einfachen Anführungszeichen übergeben werden, statt in doppelten, also z.B. so:

Code: Alles auswählen

val json='{"leds":{"mode":"switch","colors":{"switch:0":{"on":{"rgb":[100,0,0],"brightness":100},"off":{"rgb":[100,100,0],"brightness":100}},"power":{"brightness":100}},"night_mode":{"enable":true,"brightness":10,"active_between":["22:00","06:00"]}},"controls":{"switch:0":{"in_mode":"detached"}}}'
Anschließend kannst Du dann die Variable json an die mqtt-Publish-Action übergeben. Aber im Gegensatz zum httpGetRequest kannst Du die Anführungszeichen auch als solche hinschreiben.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten