openHAB vom LMAir aus steuern?

Alles was per HTTP gesteuert werden kann
Antworten
oboxx
Beiträge: 3
Registriert: Di 3. Sep 2019, 18:08

Di 3. Sep 2019, 18:48

Hallo allerseits,

nachdem ich jetzt schon einige Zeit als stiller Mitleser in diesem Forum unterwegs war und auch schon oft gute Lösungen für meine Problemchen umsetzen konnte, bin ich nun aber auf ein Problem gestoßen, für das ich bisher eben keine Lösung finden konnte.

Ich habe openHAB2 auf einem Raspberry Pi(3B+) laufen. Zusätzlich habe ich einen Lightmanager Air in Betrieb.

Die Frage ist nun, wie kann ich openHAB vom LMAir aus ansprechen?

Ich habe zunächst mal versucht, über das folgende cURL-Statement im Kommandozeilenfenster eines PCs eine Hue-Lampe per openHAB ein/auszuschalten(hier mal nur der OFF-Befehl).

Code: Alles auswählen

curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "OFF" "http://openhab:8080/rest/items/HueColorLamp1_Farbe"

Das funktioniert wunderbar. Aber was muss ich im LMAir in das Feld "IP oder URL" und in das Feld "Daten" bei der Konfiguration eines LAN-Aktors eingeben, damit der POST-Befehl über die openHAB-REST-API sauber abgesetzt wird?

Übrigens: Die andere Richtung ist kein Problem. Ich kann den LMAir von openHAB aus sauber steuern.

Vielleicht hat ja jemand sowas schon mal gemacht? Ich hoffe, ich konnte das Problem einigermaßen verständlich beschreiben.

Ich bedanke mich jetzt schon mal für eure Unterstützung.

Dietmar
oboxx
Beiträge: 3
Registriert: Di 3. Sep 2019, 18:08

Do 19. Sep 2019, 20:25

Na, dann geb ich mir mal selbst die Antwort. Scheint ja nicht sehr oft vorzukommen, dieses Problem.

Um ehrlich zu sein: ich hab's nicht wirklich hinbekommen. Lediglich durch einen Workaround konnte ich die Aufgabe lösen.

Dazu habe ich mir auf einem Webserver, der auf meinem Synology NAS läuft, ein PHP-Script erstellt. Das macht nichts anderes, als einen empfangenen GET-Request vom LMAir als POST-Request wieder rauszuschicken.

Für alle Interessierten, hier der Code:

Code: Alles auswählen

<?php

$item = $_GET['item'];
$state = $_GET['state'];
echo $item," ",$state, "\n<br/>";

$Comnd = "curl -X POST --header \"Content-Type: text/plain\" --header \"Accept: application/json\" -d " . $state . " " . "\"http://openhab:8080/rest/items/" .$item . "\"";
echo $Comnd, "\n<br/>";
exec($Comnd);
?>
IM LMAir habe ich dann einen LAN-Aktor angelegt, der folgende Befehle ausführt:

Einschalten: 192.168.178.xxx/?item=HueLamp_3_color&state=ON
Ausschalten: 192.168.178.xxx/?item=HueLamp_3_color&state=OFF

Sicher nicht der Weisheit letzter Schluss, aber funktioniert erst mal.
Es gibt immer eine Lösung :D

Und: ja, ich weiß, dass man mit dem LMAir auch direkt die Hue-Lampen steuern kann. War aber nicht mein Problem.
Chriss89
Beiträge: 5
Registriert: Mi 6. Nov 2019, 19:34

Sa 18. Jul 2020, 19:52

Aloha,

ich würde diese Thema gerne noch einmal aufleben lassen.
Grundsätzlich hat das ganze mit einer älteren Version von AirStudio funktioniert. Es war eine Version vor 9.5 in der es je Aktor noch keinen separaten Ein- bzw. Aus- Befehl gab. Das hilft dir und mir zwar aktuell nicht weiter aber vielleicht hilft es ja das Problem zu identifizieren.
Grundsätzlich sollte der Requestbefehl wie folgt aussehen.

Code: Alles auswählen

http://XXX.XXX.XXX.XXX:8080/rest/items/ITMENAME/state
Im Feld Daten musste damals lediglich ON oder OFF stehen.
Seit den neueren Versionen wird das http:// aus der URL entfernt und die Befehle funktionieren nicht mehr so wie früher.

Mit freundlichem Gruß
Christian
oboxx
Beiträge: 3
Registriert: Di 3. Sep 2019, 18:08

So 19. Jul 2020, 11:32

Hallo Chriss89,

Danke für die Mühe. Leider funktioniert der Befehl, wie Du schon geschrieben hast, nicht mehr. Naja, meine Behelfslösung über meinen Synology-Proxy hat sich inzwischen ganz gut bewährt.

Vielleicht hat ja sonst jemand noch eine andere Lösung.

Bis dahin, weiterhin viel Spaß beim SmartHomen,

Dietmar
Antworten