FHEM Forum

FHEM => Automatisierung => Thema gestartet von: IPWF am 29 Juni 2023, 19:01:12

Titel: HTTP-Request mit PUT-Methode an Gateway senden
Beitrag von: IPWF am 29 Juni 2023, 19:01:12
Hallo,

um Geräte anzusteuern, die ich noch nicht mit FHEM direkt ansprechen kann, verwende ich als Übergangslösung ein OPUS SmartHome-Gateway (DC-GW/EO-IP). Das ist ein EnOcean-IP-Gateway, welches die Kommunikation mit den eingelernten EnOcean-Geräten eigenständig durchführt. Die Kommunikation zwischen dem Gateway und dem Client (z.B. PC, FHEM) erfolgt im Heimnetz über HTTP-Requests, wobei JSON-Objekte übergeben werden.
Um einen Set-Befehl an das Gateway (bzw. über dieses an ein Gerät) zu senden, muß man einen HTTP-Request mit der Methode PUT an die REST-API des Gateways senden:
PUT http://<Gateway-IP>:<Port>/devices/<Geräte-ID>/stateDas zu übergebene JSON-Objekt sieht folgendermaßen aus:
{
  "state" : {
    "functions" : [
    {
      "key" : "unlock",
      "value" : "allowed"
    }
   ]
  }
}
Dabei muß auch noch Benutzername und Passwort angegeben werden.

Meine Frage lautet nun:
Wie kann ich einen solchen Request von FHEM aus an mein Gateway senden ?

Da ich das Gateway nur als Übergangslösung nutzen möchte, interessiert mich nur das Senden eines PUT-Requests in der oben beschriebenen Form. Das Gateway bietet noch weitere Request-Möglichkeiten und sendet auch jeweils eine Antwort, aber das ist für mich hier uninteressant und wird auch nicht ausgewertet.

Übrigens gibt es für das Gateway auch eine Node-Palette für Node-RED; damit habe ich die Kommunikation bereits hinbekommen. Aber ich möchte keinen NR-Server neben meiem FHEM-System laufen lassen, sondern die Befehle direkt aus FHEM heraus an das Gateway senden.

Vielleicht könnt Ihr mir da weiterhelfen ?
Titel: Aw: HTTP-Request mit PUT-Methode an Gateway senden
Beitrag von: IPWF am 03 Februar 2025, 03:43:33
Anm.: Dieses Thema hatte ich in [Anfängerfragen] eröffnet, dort blieb es jedoch ohne Reaktion. Ich hoffe jetzt hier auf Reonanz, denn das Problem ist für mich nach wie vor aktuell.
Titel: Aw: HTTP-Request mit PUT-Methode an Gateway senden
Beitrag von: Beta-User am 03 Februar 2025, 07:12:42
Hmmm, vielleicht hilft https://forum.fhem.de/index.php?topic=84979.0 weiter?
Titel: Aw: HTTP-Request mit PUT-Methode an Gateway senden
Beitrag von: IPWF am 04 Februar 2025, 14:51:59
Hallo Beta-User,
danke für den Tip. Das sieht so aus, als ob es mir evtl. weiterhelfen könnte. Ich versuche mal, das Beispiel zu verstehen und auf mein Problem zu adaptieren. Vielleicht gelingt es mir ja, sonst frage ich nochmal nach.
Titel: Aw: HTTP-Request mit PUT-Methode an Gateway senden
Beitrag von: Beta-User am 04 Februar 2025, 15:08:38
Gerne, wobei ich nicht der Experte in Sachen HTTPMOD bin (und ziemlich froh, dass das MiLight-Zeug sehr viel "einfacher" über MQTT zu steuern (und empfangen) geht).

Apropos MQTT: das GW scheint auch eine (seltsame! *) MQTT-Implementierung zu bieten - https://support.myopus.eu/changelogs/changelog-smart-home-gateway/. Vor allem, wenn du irgendwas "indirekt" machen willst (Tastererkennung, z.B.), ist MQTT vermutlich der schnellere Weg.

* wegen diesem Beispiel hier: https://community.simon42.com/t/integration-per-mqtt-von-opus-jaeger-direkt-geraeten/43321: Was ist das für eine besch... Antwort?!?
Titel: Aw: HTTP-Request mit PUT-Methode an Gateway senden
Beitrag von: IPWF am 04 Februar 2025, 15:45:34
Nochmal vielen Dank, auch interessant !
Ob das OPUS-GW tatsächlich einen MQTT-Server enthält, werde ich mal testen. War mir bisher nicht bekannt.
Die "besch... Antwort" kenne ich von der REST-API. Sie bestätigt lediglich, dass der PUT-Request angenommen wurde. Wenn man den Status abfragen will, muss man einen GET-Request senden.
Titel: Aw: HTTP-Request mit PUT-Methode an Gateway senden
Beitrag von: Beta-User am 04 Februar 2025, 15:58:19
Zitat von: IPWF am 04 Februar 2025, 15:45:34einen MQTT-Server enthält,
Eher einfach eine MQTT-Client-Implementierung...

Im Zweifel mal den MQTT2_SERVER in FHEM aktivieren und den da versuchsweise angeben, dann siehst du schnell, ob da was sinnvolles rauskommt. Da dann (in der Regel) die JSON-Blobs gleich ausgepackt werden (und das Ergebnis ggf. umbenannt werden kann), dürfte das einfacher sein, das in einzelne Devices (= entsprechend der vielen dahinterstehenden Hardware-Stüce) zu sortieren.