Author Topic: Anwendung von Scrape.Post zum Lampen schalten über openhab2 Rest API  (Read 2427 times)

0 Members and 1 Guest are viewing this topic.

heiserfeger77

  • Jr. Member
  • **
  • Posts: 16
  • Karma: 1
    • View Profile
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:

Code: [Select]
[
  {
    "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:
Code: [Select]
curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "ON" "http://raspberrypi:8080/rest/items/lampe"

Request URL
Code: [Select]
curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "ON" "http://raspberrypi:8080/rest/items/lampe"
Response Body
Code: [Select]
no content

Response Code
Code: [Select]
200
Response Headers
Code: [Select]
{
  "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

  • Moderator
  • Hero Member
  • *****
  • Posts: 2319
  • Karma: 47
    • View Profile
Re: Anwendung von Scrape.Post zum Lampen schalten über openhab2 Rest API
« Reply #1 on: March 26, 2020, 05:01:12 PM »
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
« Last Edit: March 26, 2020, 05:11:35 PM by Kalle »
***********  get excited and make things  **********

heiserfeger77

  • Jr. Member
  • **
  • Posts: 16
  • Karma: 1
    • View Profile
Re: Anwendung von Scrape.Post zum Lampen schalten über openhab2 Rest API
« Reply #2 on: March 26, 2020, 09:20:19 PM »
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

  • Moderator
  • Hero Member
  • *****
  • Posts: 2319
  • Karma: 47
    • View Profile
Re: Anwendung von Scrape.Post zum Lampen schalten über openhab2 Rest API
« Reply #3 on: March 27, 2020, 05:24:57 AM »
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

  • Jr. Member
  • **
  • Posts: 16
  • Karma: 1
    • View Profile
Re: Anwendung von Scrape.Post zum Lampen schalten über openhab2 Rest API
« Reply #4 on: March 27, 2020, 12:47:35 PM »
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

  • Moderator
  • Hero Member
  • *****
  • Posts: 2319
  • Karma: 47
    • View Profile
Re: Anwendung von Scrape.Post zum Lampen schalten über openhab2 Rest API
« Reply #5 on: March 27, 2020, 04:54:22 PM »
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

  • Administrator
  • Hero Member
  • *****
  • Posts: 7715
  • Karma: 116
    • View Profile
    • VoxCommando
Re: Anwendung von Scrape.Post zum Lampen schalten über openhab2 Rest API
« Reply #6 on: March 28, 2020, 10:16:57 AM »
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

  • Jr. Member
  • **
  • Posts: 16
  • Karma: 1
    • View Profile
Re: Anwendung von Scrape.Post zum Lampen schalten über openhab2 Rest API
« Reply #7 on: March 29, 2020, 08:19:21 AM »
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