SendHttpGetRequest Fehlermeldung

Hier bitte alles rein was Off-topic ist.

Moderatoren: Cyrelian, seppy

Antworten
MountainHarry
Beiträge: 4
Registriert: 20. Okt 2023 17:23
Answers: 0

SendHttpGetRequest Fehlermeldung

Beitrag von MountainHarry »

Hallo,
kämpfe schon eine ganze Weile mit der Steuerung eines OSPI (Open Sprinkler) auf Basis eines ESP32. Dabei mußte ich für die Steuerung eines Wasserlevelsensors die API erweitern => OSPI binding geht nicht. HTTP- binding macht auch Probleme, wenn ich channels mit Lesen/Schreiben versuche. Lesen allein klappt problemlos. Jetzt hatte ich die Idee, das Setzen von Parametern in OSPI einfach :lol: in einer rule mit Java Script zu erledigen.

var output = actions.HTTP.sendHttpGetRequest("http://192.168.188.91/co?pw=xxxx&ciscl= ... 140",10000);

ciscl und ciswl sind meine Erweiterungen zur OSPI-API. Über den Browser: kein Problem, aber über das script:

2026-01-29 18:56:16.470 [ERROR] [enhab.core.model.script.actions.HTTP] - Fatal transport error: java.util.concurrent.ExecutionException: java.io.EOFException: @d4ae73::SocketChannelEndPoint@2dcd20{l=/192.168.188.68:35194,r=/192.168.188.91:80,ISHUT,fill=-,flush=-,to=73/0}{io=0/0,kio=0,kro=1}->@d4ae73(l:/192.168.188.68:35194 <-> r:/192.168.188.91:80,closed=false)=>@383596(exchange=HttpExchange@721046{req=HttpRequest[GET /jo HTTP/1.1]@1d0928d[TERMINATED/null] res=HttpResponse[null 0 null]@1e2085a[PENDING/null]})[send=HttpSenderOverHTTP@af04b5(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@53d206{s=START}],recv=CustomHttpReceiverOverHTTP@10a6b3b(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]

Leider habe ich nicht wirklich Ahnung von HTTP ... Ich vermute, es könnte irgendwie mit einem "Zertifikat" zusammenhängen, aber ich habe keinen Plan. Wäre super, ihr hättet eine Idee, wie es gehen könnte.

Harka
Beiträge: 576
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: SendHttpGetRequest Fehlermeldung

Beitrag von Harka »

Moin,
Versuch mal

Code: Alles auswählen

var output =actions.HTTP.sendHttpGetRequest('http://192.168.188.91:80/co?' + encodeParams({'pw': 'xxxx', 'ciscl': '1', 'ciswl': '140'}), 10000);
Mein Suchergebnis - Ahnung habe ich auch nicht.
Open Sprinkler kann doch auch MQTT. Ist das keine Option für Dich?

MountainHarry
Beiträge: 4
Registriert: 20. Okt 2023 17:23
Answers: 0

Re: SendHttpGetRequest Fehlermeldung

Beitrag von MountainHarry »

Danke für die schnelle Antwort. Leider: EncodeParams not definied.
MQTT wäre noch eine neue, mir unbekannte Baustelle.

Harka
Beiträge: 576
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: SendHttpGetRequest Fehlermeldung

Beitrag von Harka »

Sorry, Lösung war mit Hilfe von Blockly entstanden und ich habe die folgende Funktion übersehen.

Code: Alles auswählen

 function encodeParams(params) {
    if ((typeof params === 'string') || (params instanceof String)) return params;
    const encodedParams = Object.entries(params).map(([key, value]) => [key, encodeURIComponent(value)]);
    return encodedParams.map(p => p.join('=')).join('&');
}

oh73
Beiträge: 312
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: SendHttpGetRequest Fehlermeldung

Beitrag von oh73 »

ich mache viel mit sendHttpGetRequest, allerdings ohne actions.HTTP. davor.

Hilfsreich, funktioniert besser wenn ich den Befehl vorher in eine Variable schreibe.

ein Beispiel von mir ,

Code: Alles auswählen

	
	var tempwz1senden = "http://192.168.178.23/command?XC_FNC=SendSC&type=HM&data=43D5210111"+sollhexWz1
	sendHttpGetRequest (tempwz1senden,newHashMap("Authorization" -> "Basic", "Content-Type" -> "text/html", "ignoreSSLErrors" -> "true" , "WWW-Authenticate"-> "Basic"),11000)
was mir bei deinem Befehl aufgefallen ist, du gibst ein Passwort an aber keinen Benutzer! ist das richtig?
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

MountainHarry
Beiträge: 4
Registriert: 20. Okt 2023 17:23
Answers: 0

Re: SendHttpGetRequest Fehlermeldung

Beitrag von MountainHarry »

Dachte schon gelöst: :P
Habe den cache gelöscht (installierte bindings nicht mehr angezeigt), restart ...
Und dann ging es so:

Code: Alles auswählen

var result = actions.HTTP.sendHttpGetRequest("http://192.168.188.91/jo?pw=a6d82bced638de3def1e9bbb4983225c");
Manchmal alles ok: result={"result":1, "item":""}

aber leider oft:
2026-01-30 12:51:12.490 [ERROR] [enhab.core.model.script.actions.HTTP] - Fatal transport error: java.util.concurrent.ExecutionException: java.io.EOFException: @dc345a::SocketChannelEndPoint@12d1c45{l=/192.168.188.68:33272,r=/192.168.188.91:80,ISHUT,fill=-,flush=-,to=252/0}{io=0/0,kio=0,kro=1}->@dc345a(l:/192.168.188.68:33272 <-> r:/192.168.188.91:80,closed=false)=>@14d0407(exchange=HttpExchange@551e5b{req=HttpRequest[GET /co HTTP/1.1]@150946f[TERMINATED/null] res=HttpResponse[null 0 null]@3270f4[PENDING/null]})[send=HttpSenderOverHTTP@1282b89(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@1a34eb1{s=START}],recv=CustomHttpReceiverOverHTTP@2b5006(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]

Habe noch nicht rausbekommen, wann, weshalb, ...

MountainHarry
Beiträge: 4
Registriert: 20. Okt 2023 17:23
Answers: 0

Re: SendHttpGetRequest Fehlermeldung

Beitrag von MountainHarry »

Jetzt gelöst: :lol:
Problem war die gleichzeitige Nutzung des opensprinkler-bindings. Weg damit und keine Probleme mehr.
HTTP-Binding gleichzeitg für regelmäßige Abfrage von Status kein Problem. Ich mache die Kommunikation mit opensprinkler jetzt alles direkt ohne binding.
Vielen Dank für die Unterstützung.

Antworten