NEWS
Hilfe bei Skripte von request auf httpGet umbauen
-
@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
-
@liv-in-sky sagte in Hilfe bei Skripte von request auf httpGet umbauen:
bei tasmota mit dem httpget baustein bekomme ich öfters bei 2000ms einen fehler
ist bei mir auch so, aber erst gekommen mit dem neuen Get Baustein. Bei Request deprecated
war auch noch Ruhe im Log. Das scheint aber nicht an Tasmota zu liegen da ich die Json auch von
Esp zu Esp abhole und da läuft alles sauber.
Es sollte der Wert auf 0 gesetzt werden können für Aus. -
@rushmed der Sonoff-Adapter hat keine Funktion um beliebige Befehle zu senden, oder?
Ich nutze Tasmota nativ mit einem MQTT-Broker, da würde ich einfach unter dem Topic/cmd/gerätename/Restart
eine1
senden ... Da gibt es dann auch keine Timeoutprobleme weil der Tasmota das abonniert hat und vom Broker benachrichtigt wird