Gerät per Rest API über http Befehl schalten (Rainmachine Bewässerung) - Syntax für Body?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
troggy
Beiträge: 2
Registriert: 12. Sep 2020 10:45
Answers: 0

Gerät per Rest API über http Befehl schalten (Rainmachine Bewässerung) - Syntax für Body?

Beitrag von troggy »

Hallo zusammen,

ich kämpfe gerade daran, meinen Bewässerungscomputer (Rainmachine) über Openhab 2.5 mittels REST Befehl schaltbar zu machen, bin mir aber Anfänger bzgl. REST und nach Suche im http Binding über die Syntax nicht klar. Evtl. hat wer eine Idee, wie das konfiguriert werden muss.

Mit cURL funktioniert das ganze so:

Code: Alles auswählen

curl -X POST -k --data "{\"time\": 60 }" https://192.168.1.120:8080/api/4/zone/6/start?access_token=9bf31ad551e732b4bdc807debbf78fdfd59b1d6e716a38728a750b94
Wie kann ich den Body --data "{\"time\": 60 }" im http Befehl mitgeben? Der item Befehl müsste ja grundsätzlich in etwa so aussehen (ohne time):

Code: Alles auswählen

Switch Gartenwasser { http=">[ON:POST:https://192.168.1.120:8080/api/4/zone/6/start?access_token=nnnnn] >[OFF:POST:https://192.168.1.120:8080/api/4/zone/6/stop?access_token=nnnnn]" }

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

Re: Gerät per Rest API über http Befehl schalten (Rainmachine Bewässerung) - Syntax für Body?

Beitrag von udo1toni »

Ohne das selbst zu nutzen lese ich das in der Doku so:

Code: Alles auswählen

Switch Gartenwasser { http=">[ON:POST:https://192.168.1.120:8080/api/4/zone/6/start?access_token=nnnnn:\"{\\\"time\\\": 60 }\"] >[OFF:POST:https://192.168.1.120:8080/api/4/zone/6/stop?access_token=nnnnn]" }
Das Fiese sind die massigen Backslashes, da der Post-Teil vermutlich in Anführungszeichen übergeben werden muss. Die dürfen jedoch nicht verwendet werden, da Bestandteil der Channel-Markierung, also müssen sie escaped werden. Innerhalb des Strings befinden sich nun ebenfalls Basckslahes, da der String selbst Anführungszeichen enthält, die dann natürlich zusätzlich escaped werden müssen.
Es kann auch sein, dass man vier Backslahes verwenden muss, also jeweils \\\\" es kann aber auch sein, dass die Schreibweise noch anders ist ;) da ist etwas Experimentierfreude angesagt. Tipp: Du kannst das Logging für das http-Addon in den Debug-Modus versetzen (in der Karaf Konsole log:set DEBUG org.openhab.binding.http) um in openhab.log die exakten Messages zu sehen, die openHAB sendet. Es empfiehlt sich, den Rasenmäher vorher komplett abzuschalten oder alternativ die Adresse absichtlich zu verfälschen, damit der Rasenmäher am Ende nicht ausrastet...
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

troggy
Beiträge: 2
Registriert: 12. Sep 2020 10:45
Answers: 0

Re: Gerät per Rest API über http Befehl schalten (Rainmachine Bewässerung) - Syntax für Body?

Beitrag von troggy »

Hi @udo1toni

danke für die diversen Hinweise, nach etwas probieren funktioniert es:

Code: Alles auswählen

Switch gw_test { http=">[*:POST:http://192.168.1.152:8081/api/4/zone/6/start?access_token=nnnnn{\"time\": \"60\" }]"  }
Was ich noch angepasst habe (es gab schon früher mal suchanfragen zu rainmaschine)
1. https hat nicht funktioniert, sondern der http über 8081
2. Die umklammernden " in der api doku braucht es nicht und damit werden die /// deutlich übersichtlicher :D
3. karaf console debug ist eine tolle Idee :o

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

Re: Gerät per Rest API über http Befehl schalten (Rainmachine Bewässerung) - Syntax für Body?

Beitrag von udo1toni »

troggy hat geschrieben: 14. Sep 2020 16:39 3. karaf console debug ist eine tolle Idee :o
Gell? :)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten