NEWS
Hilfe bei Skripte von request auf httpGet umbauen
-
@wildbill Ok, aber die Antwort von Tasmota:
javascript.0 19:17:46.267 info script.js.Matrix_Displays: {"Restart":"Restarting"}
wird doch empfangen aber scheinbar nicht als Antwort interpretiert.
Hat @haus-automatisierung hier evtl. einen Rat?
-
@rushmed Das stimmt allerdings, wenn man es so sieht. Keine Ahnung, ob da noch danach was „erwartet“ wird, was wegen des Reboots aber nicht kommt.
Gruss, Jürgen
-
@rushmed sagte in Hilfe bei Skripte von request auf httpGet umbauen:
Hat @haus-automatisierung hier evtl. einen Rat?
Tasmota ist hier zumindest immer wieder auffällig. Bitte mal die gleiche URL mit curl aufrufen und verbose aktivieren
-v
damit man alle Header sieht. -
@haus-automatisierung
ich habe:
Ausgeführt und es ist garnichts passiert. Weder wurde der Befehl ausgeführt, noch kam eine Antwort. -
@rushmed Mach das mal direkt per ssh oder auf einem anderen System. Also nicht aus Blockly heraus. Ansonsten müssen natürlich Anführungszeichen um die URL, damit die 1 am Ende noch dazu gehört (oder
%20
dazwischen) -
pi@Smartazamba:~ $ curl -v http://192.168.178.138/cm?cmnd=Restart 1 * Trying 192.168.178.138:80... * Connected to 192.168.178.138 (192.168.178.138) port 80 (#0) > GET /cm?cmnd=Restart HTTP/1.1 > Host: 192.168.178.138 > User-Agent: curl/7.88.1 > Accept: */* > < HTTP/1.1 200 OK < Content-Type: application/json < Server: Tasmota/14.1.0.1 (ESP8266EX) < Cache-Control: no-cache, no-store, must-revalidate < Pragma: no-cache < Expires: -1 < Accept-Ranges: none < Transfer-Encoding: chunked < Connection: close < * Closing connection 0 {"Restart":"1 to restart, 2 to halt"}* Trying 0.0.0.1:80...
Restart ist nicht erfolgt.
-
@rushmed sagte in Hilfe bei Skripte von request auf httpGet umbauen:
Restart ist nicht erfolgt.
Weil Du wieder keine Anführungszeichen um die Url gemacht hast und die
1
am Ende für curl somit nicht zur Url gehört (sieht man auch im verbose) -
@haus-automatisierung Sorry.
pi@Smartazamba:~ $ curl -v "http://192.168.178.138/cm?cmnd=Restart 1" * Closing connection -1 curl: (3) URL using bad/illegal format or missing URL
-
@rushmed
curl -v "http://192.168.178.138/cm?cmnd=Restart%201"
-
@haus-automatisierung sagte in Hilfe bei Skripte von request auf httpGet umbauen:
curl -v "http://192.168.178.138/cm?cmnd=Restart 1"
pi@Smartazamba:~ $ curl -v "http://192.168.178.138/cm?cmnd=Restart%201" * Trying 192.168.178.138:80... * Connected to 192.168.178.138 (192.168.178.138) port 80 (#0) > GET /cm?cmnd=Restart%201 HTTP/1.1 > Host: 192.168.178.138 > User-Agent: curl/7.88.1 > Accept: */* > < HTTP/1.1 200 OK < Content-Type: application/json < Server: Tasmota/14.1.0.1 (ESP8266EX) < Cache-Control: no-cache, no-store, must-revalidate < Pragma: no-cache < Expires: -1 < Accept-Ranges: none < Transfer-Encoding: chunked < Connection: close < * Closing connection 0 {"Restart":"Restarting"}p
Restart wir ausgeführt.
Script sendet wieder:javascript.0 22:20:34.986 error script.js.Matrix_Displays: timeout of 2000ms exceeded
Das passiert ohne Scriptneustart o.ä.. Scheinbar lauscht das Script aber empfängt nichts.
Gesendet hab' ich den Befehl per Putty. -
@rushmed sagte in Hilfe bei Skripte von request auf httpGet umbauen:
Transfer-Encoding: chunked
Könnte sein dass axios denkt dass da noch mehr kommen müsste und deswegen wartet (bis timeout). Muss ich mir mal ein Test-Setup aufbauen. Eventuell auch eine blöde Kombination in Tasmota mit Restart, dass die Verbindung dann nicht richtig geschlossen wird, weil ESP neustartet.
https://nothing-else.blog/blog/axios-timeout-for-chunked-responses
-
@haus-automatisierung Ich hab' noch eine Info:
Bringt nur:javascript.0 22:26:05.158 error script.js.Tasmota: timeout of 2000ms exceeded javascript.0 22:26:05.164 error script.js.Tasmota: timeout of 2000ms exceeded
bei drei angesprochenen Geräten von denen zwei offline sind. Hier kommt die Meldung für das Verfügbare gerät nicht. Das ist schlüssig.
Wo liegt hier der Unterschied? -
@rushmed sagte in Hilfe bei Skripte von request auf httpGet umbauen:
Wo liegt hier der Unterschied?
Andere Tasmota-Version?
-
@haus-automatisierung Oha, da passiert was, ich prüfe kurz.
Edit1:
Tasmota Development Version" Tasmota 14.1.0.1 (display)" bringt den Error.
Tasmota Master Version "Tasmota 14.1.0 (display)" bringt den Error nicht.
Super!
Werde die Devices auf die Tasmota Master umstellen.
Vielen Dank!Edit2:
Hab' mich zu früh gefreut. Der Error kommt wieder.Edit3:
Jetzt sind zwei von drei Geräten angschlossen bei der Ausführung von:
und die Errormeldung kommt nurnoch einmal. Wieder schlüssig. -
@rushmed Probiere mal
/cm?cmnd=Restart%201
Die
%20
maskieren das Leerzeichen (URL-Encoding), vielleicht liegt es daran -
@bananajoe sagte in Hilfe bei Skripte von request auf httpGet umbauen:
%20
Hat leider nicht geholfen. Die Meldung kommt dennoch.
Ich verstehe wiklich nicht warum die Meldung bei:
auftritt, aber bei:
nicht. -
Hier evtl eine zusatzinformation zum Problem
https://github.com/axios/axios/issues/5753Eine Lösung dafür hab ich allerdings nicht gesehen und gesucht
-
@oliverio Danke aber Logindaten sind für den Befehl nicht notwendig.
-
Shit falscher thread
-
bei tasmota mit dem httpget baustein bekomme ich öfters bei 2000ms einen fehler - verhindern kann ich das nur mit 4000ms timeout einstellung
das wurde schon mal diskutiert und keine lösung gefunden - meine vermutung ist eher, das die esp's irgendwie beschäftigt sind, bevor sie eine antwort senden, da 2 sek eine ewigkeit im netztraffik sind und kein thema sein sollte
ich würde auch evtl einen pause block in deine schleife einfügen - wenn man zu schnell mehrere esp' s anspricht, habe ich schon immer probleme gehabt