Seite 1 von 2
HTTP Request per RULE oder direkt per Item ?
Verfasst: 3. Mai 2023 08:46
von TorstenE
Hallo Mitstreiter,
externe Geräte bieten ja die Möglichkeit, per REST-Api gesteuert zu werden.
z.B.:
http://MeineIP:MeinPort?command=ON
http://MeineIP:MeinPort?command=OFF
Ist es jetzt besser solche HTTP Request direkt über das Item aufzurufen
oder besser in einer Rule? Welche Vor-/Nachteile hat die eine oder
andere Variante ?
Danke
Torsten
Re: HTTP Request per RULE oder direkt per Item ?
Verfasst: 3. Mai 2023 09:29
von PeterA
Hi Torsten,
wie immer "Es kommt darauf an":)
Direkt übers Item bzw. den Channel verbraucht weniger Ressourcen und geht halt direkt.
Hier habe ich die Bedienung vom SAT Receiver so realisiert. Da brauche ich für die Steuerbefehle keine Rule.
Wenn Du hingegen gewisse Automatismen haben möchtest dann brauchts eben eine Rule.
Gruß Peter
Re: HTTP Request per RULE oder direkt per Item ?
Verfasst: 3. Mai 2023 09:38
von TorstenE
PeterA hat geschrieben: ↑3. Mai 2023 09:29
...
Direkt übers Item bzw. den Channel verbraucht weniger Ressourcen und geht halt direkt.
...
Was passiert, wenn der REQUEST fehl schlägt ? z.B. Dein Receiver ist überhaupt nicht eingeschaltet.
Wie verhält sich da OH ?
Grüße
Torsten
Re: HTTP Request per RULE oder direkt per Item ?
Verfasst: 3. Mai 2023 10:08
von PeterA
Dann gibts ne Fehlermeldung im Log.... aber nur bei nem Request glaube ich.
Im übrigen habe ich wenn ich nicht am System Arbeite das Loglevel auf "WARN" runter gedreht das schon die SD Karte.
Re: HTTP Request per RULE oder direkt per Item ?
Verfasst: 3. Mai 2023 10:20
von TorstenE
D.h. aber, Dein "Item" schaltet, aber der REQUEST ist wird eventuell ausgeführt.
Dann müsste man das doch eigentlich eber über eine Rule abwickeln.
- REQUEST ausführen.
- ein paar Millisekunden warten
- Status nochmals abfragen und Item wenn notwendig korrigieren
Re: HTTP Request per RULE oder direkt per Item ?
Verfasst: 3. Mai 2023 10:40
von PeterA
Das braucht es m. E. nicht. Also nicht in meiner Anwendung.
Hier das Item für meinen Sat Receiver:
Code: Alles auswählen
String Coolstream {http=">[*:POST:http://192.168.2.116/control/rcem?%2$s]"}
Das Mapping der Befehle erfolgt direkt in der Sitemap:
Code: Alles auswählen
Switch item=Coolstream icon="receiver" mappings=[KEY_SETUP="MENÜ",KEY_POWER="STANDBY",KEY_MUTE="MUTE"] visibility=[CoolstreamTime!=offline]
Switch item=Coolstream icon="receiver" mappings=[KEY_EXIT="EXIT",KEY_HOME="HOME",KEY_OK="OK",KEY_EPG="EPG"] visibility=[CoolstreamTime!=offline]
Switch item=Coolstream icon="receiver" mappings=[KEY_INFO="INFO",KEY_UP="⬆️",KEY_DOWN="⬇️"] visibility=[CoolstreamTime!=offline]
Switch item=Coolstream icon="receiver" mappings=[KEY_1="⏪",KEY_3="⏩",KEY_LEFT="⬅️",KEY_RIGHT="➡️"] visibility=[CoolstreamTime!=offline]
Switch item=Coolstream icon="receiver" mappings=[KEY_PAGEUP="Page Up",KEY_PAGEDOWN="Page Down"] visibility=[CoolstreamTime!=offline]
Switch item=Coolstream icon="receiver" mappings=[KEY_RED="RED",KEY_GREEN="GREEN",KEY_YELLOW="YELLOW",KEY_BLUE="BLUE"] visibility=[CoolstreamTime!=offline]
Switch item=Coolstream icon="receiver" mappings=[KEY_PLAY="▶️",KEY_PAUSE="⏸",KEY_RECORD="⏺",KEY_STOP="⏹"] visibility=[CoolstreamTime!=offline]
Die Befehle hab ich aus der API meines Receivers.
Das funktioniert alles ohne Verzögerung!
Wie gesagt für DIESE Anwendung ist das völlig Ok.
Bei einer anderen Anwendung ist eine Rückmeldung vllt. notwendig und das müsste man dann in einer Rule erledigen.
Habe ich gerade in einem anderem Thread mit Udo geklärt. Hier sendet eine Rule über ein Item einen Befehl (via ModBus) an meine Lüftung.
Und in einem bestimmen Fall möchte ich wissen ob die Lüftung auch diesen Befehl übernommen hat. Falls nicht bekomme ich eine Meldung.
Wenn dann z.B. auch ein Thing ins Spiel kommt könnte man vorher auch den Status des Thing auswerten. Online oder Offline.
Das läuft bei meinem AVR von Denon so. Der braucht nach dem Einschalten erst mal einen Moment bis "sein" Thing in OpenHab Online wird.
Erst danach erlaube ich Befehle und Aktionen auszuführen weil das ansonsten auch einen Fehler wirft.
Gruß
Peter
Re: HTTP Request per RULE oder direkt per Item ?
Verfasst: 3. Mai 2023 11:38
von TorstenE
An welcher Stelle im Item ist der HTTP-Request hinterlegt ?
Re: HTTP Request per RULE oder direkt per Item ?
Verfasst: 3. Mai 2023 11:40
von PeterA
Garnicht!
Das passiert in diesem Fall direkt über das "Mapping" in der Sitemap.
Re: HTTP Request per RULE oder direkt per Item ?
Verfasst: 3. Mai 2023 11:47
von TorstenE
Dann ist das ein Thing und kein Item ?
Code: Alles auswählen
String Coolstream {http=">[*:POST:http://192.168.2.116/control/rcem?%2$s]"}
Re: HTTP Request per RULE oder direkt per Item ?
Verfasst: 3. Mai 2023 11:53
von PeterA
Nein in diesem Fall braucht es kein Thing!
Aber das HTTP Binding muss Installiert sein!
Die Übergabe erfolgt wenn ich mich recht erinnere mit
am Ende der Url