News:

If you have an Android device, check out VoxWav!

Main Menu

Anwendung von Scrape.Post zum Lampen schalten über openhab2 Rest API

Started by heiserfeger77, March 26, 2020, 11:50:06 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

heiserfeger77

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.

Kalle

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
***********  get excited and make things  **********

heiserfeger77

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.

Kalle

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&param=switchlight&idx=99&switchcmd=On
[/size]
Dieser request lässt sich einfach über "scrape" in VC senden.
***********  get excited and make things  **********

heiserfeger77

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

Quote
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.

Kalle

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
***********  get excited and make things  **********

jitterjames

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" in the LCB

heiserfeger77

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