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.
json POST über HTTP-Binding senden
-
- Beiträge: 7
- Registriert: 22. Nov 2024 10:15
json POST über HTTP-Binding senden
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.
Gehe zur vollständigen AntwortEine 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.

openHAB auf RPi4/8G
- udo1toni
- Beiträge: 15341
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: json POST über HTTP-Binding senden
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.
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.

openHAB5.0.1 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime) (Proxmox 9.0.6, LXC)
-
- Beiträge: 7
- Registriert: 22. Nov 2024 10:15
Re: json POST über HTTP-Binding senden
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.
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