HTTP-Request mit PUT-Methode an Gateway senden

Begonnen von IPWF, 29 Juni 2023, 19:01:12

Vorheriges Thema - Nächstes Thema

IPWF

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 ?
FHEM auf Hardkernel ODROID-N2+ mit Ubuntu 22.04.5 LTS
Funkschnittstelle EnOcean

IPWF

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.
FHEM auf Hardkernel ODROID-N2+ mit Ubuntu 22.04.5 LTS
Funkschnittstelle EnOcean

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

IPWF

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.
FHEM auf Hardkernel ODROID-N2+ mit Ubuntu 22.04.5 LTS
Funkschnittstelle EnOcean

Beta-User

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?!?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

IPWF

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.
FHEM auf Hardkernel ODROID-N2+ mit Ubuntu 22.04.5 LTS
Funkschnittstelle EnOcean

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files