VoxCommando
Deutsche Support => allgemein => Topic started by: heiserfeger77 on March 26, 2020, 11:50:06 AM
-
Hallo,
habe eine Steuerung meiner Heimautomatisation über openhab2 gelöst. Funktioniert auch so weit (mit Smartphone-App)
Einfaches Beispiele wäre z.B eine Lampe ein oder ausschalten
openhab2 bietet eine REST API Docu an und schreibt mir für meine Konfiguration folgende Daten bei item.get aus:
[
{
"link": "http://raspberrypi:8080/rest/items/lampe",
"state": "OFF",
"editable": false,
"type": "Switch",
"name": "lampe",
"label": "Switch",
"tags": [],
"groupNames": []
},
]
Generiere ich jetzt über die API den Befehl Lampe einschalten liefert mir openhab2 folgenden CURL-Befehl zurück:
Curl:
curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "ON" "http://raspberrypi:8080/rest/items/lampe"
Request URL
curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "ON" "http://raspberrypi:8080/rest/items/lampe"
Response Body
no content
Response Code
200
Response Headers
{
"content-length": "0",
"content-type": "text/plain",
"server": "Jetty(9.4.20.v20190813)"
}
Wie gebe ich die Befehle nun in den LCB ein, damit Scrape.Post den Befehl richtig absetzt.
Scrape.Post bietet ja 8 Eingabefelder. Der erste für die URL. Aber was muss ich für die anderen Felder eingeben, damit er die Lampe anschaltet.
Danke im voraus.
-
Hallo heiserfeger77,
kannst Du es mit einem "simple scrape" versuchen
http://openhab-ip-address/CMD?Switch_Name=New_State
http://192.168.X.X/CMD?Meine_Lampe=1
kenne mich leider nicht mit openhab2 aus
-
Funktioniert leider nicht. Habe jedoch jetzt einen Work-A-Round gefunden.
Da Windows 10 mittlerweile auch curl als Kommandozeilentool anbietet, funktioniert es auch mit Launch.cmd wenn ich die curl Zeile übergebe.
Zwar lassen sich damit verschiedene Zustände schalten, aber als Rückkanal taugt das natürlich nicht.
Werde leider nicht aus der kurzen Beschreibung zu Scrape.Post schlau ( Wo muss ich da was eintragen)
https://voxcommando.com/mediawiki/index.php?title=Actions#Post
Jemand anders eine Idee der vielleicht auch noch openhab2 kennt oder sich allgemein mit den Füttern und Abfragen von REST API's auskennt, da diese viele Hersteller anbieten.
-
Ich verwende unter anderem Domoticz, hier lassen sich sehr einfach Steuerungsbefehle senden und dachte so etwas gibt es auch in openHab.
Für Domoticz sieht ein HTTP command so aus:
http//domoticz_IP:Port/json.htm?type=command¶m=switchlight&idx=99&switchcmd=On
[/size]
Dieser request lässt sich einfach über "scrape" in VC senden.
-
Vielleicht verstehen wir uns falsch. Ich will keine Befehle an Voxcommando senden, sondern umgekehrt.
Ich sag etwas und möchte per Scrape.Post den Befehl an die openhab2 REST API senden (z.B. um die Lampe ein oder auszuschalten)
Wenn ich mir die Wiki von Voxcommando zu Scrape.Post anschaue
Scrape.Post
Similar to Scrape, but performs an HTTP "POST" request instead of an HTTP "GET" request.
See http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods.
Parameters: 6+
URL : URL [string]
DataString : data to post [string]
Username : [string]
Password : [string]
ContentType : examples: application/json OR text/xml; charset="utf-8" [string]
Header : eg: Key: "Value" [string]
Header : eg: SOAPAction: "urn:Belkin:service:basicevent:1#SetBinaryState" [string]
Header : [string]
frage ich mich an welcher Position ich was eintragen soll.
Um aufs Beispiel auf Post #1 zurückzukommen. Ich möchte von der Lampe die Variable state von ON auf OFF und andersrum ändern.
-
Jaja, das ist mir schon klar - bei Domoticz und Zwave (Vera) werden die Befehle mit einem Get request gesendet und als Antwort bekommt man eine Variable.
Das geht von VC oder jeder anderen Software die URL‘s senden kann.
Openhab habe ich leider nicht, aber auf deine Frage was bei scrape.post an Parameter eingetragen werden muss kann dir bestimmt James oder Nime5ter helfen - du musst dich ein paar Tage gedulden.
Gruß,
Kalle
-
You have all the information that you need in the CURL. You just need to fill in the parameters for the Scrape.Post action.
Here is the CURL you posted:
curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "ON" "http://raspberrypi:8080/rest/items/lampe"
From this you can see
- the URL is: http://raspberrypi:8080/rest/items/lampe
- the data is: ON
- there is one header required: Accept: application/json
There is also another header: Content-Type: text/plain
But in my tests this one is optional. There is a parameter in the Scrape.Post action for content type. So you could put text/plain in that parameter but it is not really needed because I think this is the default content type.
You might find it easier to enter the parameters if you open the "parameter helper (https://voxcommando.com/mediawiki/index.php?title=Parameter_Helper)" in the LCB
-
Thats was it.
Many Thanks.
Thats was my Mistake :bonk
The whole time i write only the application/json and forgot the Accept: in front of.
:bonk :bonk :bonk
Thank you very much @jitterjames