Problem ein HTTP-Request aus Script abzuschicken

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Jensemann_P
Beiträge: 162
Registriert: 26. Jul 2021 20:14
Answers: 0

Problem ein HTTP-Request aus Script abzuschicken

Beitrag von Jensemann_P »

Hi Leute,

ich möchte aus Scripten http-Requests abschicken (Einfacheres absenden reicht zunächst mal, Rückgabe wird also nicht weiter verarbeitet).

Der schienbar ältere Weg wäre der hier:

Code: Alles auswählen

sendHttpGetRequest("192.168.178.20/reboot", 2000)
Scheint aber aktuell nicht mehr in den Standard-Funktionen enthalten zu sein.
"sendHttpGetRequest" is not defined in <eval> at line number 1
Anderen Code gefunden, der wohl bei einigen läuft, bei mir aber nicht:

Code: Alles auswählen

var HttpUtil        = Java.type("org.openhab.core.io.net.http.HttpUtil")
HttpUtil.executeUrl("GET", "192.168.178.20/reboot", 2000);
Ergebnis im LOG:
2022-07-10 13:09:41.103 [WARN ] [e.automation.internal.RuleEngineImpl] - Fail to execute action: 3
java.lang.IllegalArgumentException: Invalid URI host: null (authority: null)
Tja, und ne steh ich mal wieder wie der Ochs vorm Berg :?:

tomtom97
Beiträge: 20
Registriert: 25. Dez 2020 18:24
Answers: 1

Re: Problem ein HTTP-Request aus Script abzuschicken

Beitrag von tomtom97 »

Hallo,

gemäß der Doku von https://www.openhab.org/javadoc/latest/ ... p/httputil erwartet die Funktion executeUrl drei Parameter:

public static String executeUrl​(String httpMethod, String url, int timeout) throws IOException

Also die HTTP-Methode, eine URL und einen Integer-Wert als Timeout.
In Deinem Fall ist "192.168.178.20/reboot" keine gültige URL, was Dir auch mit "Invalid URI host: null" versucht wird, zu sagen.

URLs beginnen immer mit dem zu verwendenden Protokoll, also versuche mal, ein "http://" davorzusetzen ;)

Gruß
Thomas

Jensemann_P
Beiträge: 162
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: Problem ein HTTP-Request aus Script abzuschicken

Beitrag von Jensemann_P »

Oha, URI und URL verwechselt. Bin einfach davon ausgegangen, dass httputil schon von http als Protokoll ausgeht.

Was ich aus der Doku jetzt nicht rausfinde: Wie bekomme ich das ganze mit Basic Credentials ausgeführt?

"http://user:password@192.168.178.20/reboot" mag er nicht. Evtl wegen Sonderzeichen im Passwort.
Hatte noch folgende Notation gefunden:
http://192.168.178.20/reboot{Authorization=Basic XXXXXXXXYYYYYYYY}

Hier stört sich der interpreter von OH an der geschweiften Klammer als reserviertes Zeichen.

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Problem ein HTTP-Request aus Script abzuschicken

Beitrag von udo1toni »

Die http Actions sind nach wie vor Teil des Core, siehe hier: https://www.openhab.org/docs/configurat ... tp-actions

Was das voranzustellende http:// betrifft: sowohl die http Actions als auch httputil können genauso gut auch mit https umgehen, welches im Übrigen inzwischen vermutlich weiter verbreitet ist als http, lediglich im eigenen Netz wird man vielleicht den Aufwand scheuen, Zertifikate usw. an den Start zu bringen. Es ist also nur logisch, dass man das Protokoll mit angeben muss.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Jensemann_P
Beiträge: 162
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: Problem ein HTTP-Request aus Script abzuschicken

Beitrag von Jensemann_P »

Wenn ich es mit

Code: Alles auswählen

sendHttpGetRequest("http://192.168.0.20/reboot")
versuche, bekomme ich:

Code: Alles auswählen

"sendHttpGetRequest" is not defined in <eval> at line number 1
Fehlen da irgendwelche includes oder Verweise auf namespaces?

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Problem ein HTTP-Request aus Script abzuschicken

Beitrag von udo1toni »

Kann es sein, dass Du ECMA verwendest? Die Actions stehen auf diesem Weg nur in der DSL zur Verfügung.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Jensemann_P
Beiträge: 162
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: Problem ein HTTP-Request aus Script abzuschicken

Beitrag von Jensemann_P »

Genau, ich mach das in ECMA.

Jensemann_P
Beiträge: 162
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: Problem ein HTTP-Request aus Script abzuschicken

Beitrag von Jensemann_P »

Da es nur drum ging einigen Devices mal schnell was zu schciken ohne groß Rückantwort o.ä. hab ich das jetzt mit einem Rule DSL script gemacht und es läuft.

Danke
Jens

Antworten