json POST über HTTP-Binding senden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
mschlee
Beiträge: 7
Registriert: 22. Nov 2024 10:15
Answers: 0

json POST über HTTP-Binding senden

Beitrag von mschlee »

Hallo zusammen,

mein ewiger Kampf mit dem http Binding. Ich habe mir ein ESP Webradion zusammengezimmert, das ich über OpenHAB steuern möchte. Im wesentlichen Stationsnummer, Lautstärke und Ein/Aus.

Die dazu erforderlichen Endpunkte kann ich über CURL problemlos ansprechen:
curl http://192.168.31.28/status
Rückgabe:
{"stationNumber":4,"stationName":"SwissGroove.ch","volume":50,"streaming":true}
curl -X POST -H "Content-Type: application/json" -d '{"stationNumber": 3}' http://192.168.31.28/setstation
curl -X POST -H "Content-Type: application/json" -d '{"volume": 50}' http://192.168.31.28/setvolume
und
curl -X POST -H "Content-Type: application/json" -d '{"streaming": true}' http://192.168.31.28/togglestream
(jeweils ohne Rückgabe)
Das Einlesen der Daten über json Transformation bekomme ich hin. Aber wie bekomme ich den richtigen Payload (im korrekten Format) gesendet ?

Ich nutze OH 4.3.5 und konfiguriere die Things über das UI.

Danke für jede Anregung - M.
von udo1toni » 29. Jul 2025 21:09
Ich fürchte, die einfachste Möglichkeit wird es sein, für die Senderichtung eine Rule zu schreiben. Dort kannst Du gezielt mit sendHttpPostRequest() exakt den gewünschten Inhalt senden.
Eine Alternative könnte auch ein Shell Script sein, welches Du dann per exec Binding ansteuern kannst. Dummerweise macht das Exec Binding auch keine gute Figur wenn es um Simplizität geht. :lol:
Gehe zur vollständigen Antwort
openHAB auf RPi4/8G

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

Re: json POST über HTTP-Binding senden

Beitrag von udo1toni »

Ich fürchte, die einfachste Möglichkeit wird es sein, für die Senderichtung eine Rule zu schreiben. Dort kannst Du gezielt mit sendHttpPostRequest() exakt den gewünschten Inhalt senden.
Eine Alternative könnte auch ein Shell Script sein, welches Du dann per exec Binding ansteuern kannst. Dummerweise macht das Exec Binding auch keine gute Figur wenn es um Simplizität geht. :lol:
openHAB5.0.1 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime) (Proxmox 9.0.6, LXC)

mschlee
Beiträge: 7
Registriert: 22. Nov 2024 10:15
Answers: 0

Re: json POST über HTTP-Binding senden

Beitrag von mschlee »

Ja, das war meine Notlösung. Nachteil ist, dass Informationen (z. B. Hostname/IP) an mehreren Stellen auftauchen und so schlecht zu warten sind.

Ich bin jetzt der Sache näher gekommen. Numerische Daten schicke ich über REGEX, z. B. REGEX:s/(\d+)/{"volume": $1}/g, die Switchdaten schicke ich über MAP. Warum REGEX sich mit dem Switch nicht verträgt, habe ich jedoch nicht verstanden. Das http-Binding hat bei Vorhandensein von REGEX beim Switch einfach gar nichts geschickt. :(
openHAB auf RPi4/8G

Antworten