genmad / shellyAPIGen2AndAboveScripts

Scripts for the shelly API Gen2+
4 stars 0 forks source link

Make HTTP.GET calls resilient #11

Open gitisgreat2023 opened 2 weeks ago

gitisgreat2023 commented 2 weeks ago

@genmad Hilfe!! :-( Es läuft nichts mehr bei mir!

Die Kombination Shelly Firmware 1.4.4 mit OpenDTU-oB 2024.10.22 bringt alle Skripte ständig zum abstürzen...

Es liegt daran dass mal einen HTTP.GET hängen bleibt. Wenn ich aber anschließend es händisch mache, geht es. Also in der gleiche Shelly Umgebung wo ich dann ein anderes dummy Skript starte, dann kann man "live" Code eingeben. Also es funktioniert alles in Prinzip, vielleicht geht die Anfrage im WLAN verloren..

Eine Lösung wäre es im Code mehrfach zu probieren before es einen kill gibt und das ganze Skript aussteigt. Allerdings verstehe ich nicht wie ich das umsetzen kann. Eigentlich brauche ich die Daten die an dem callback übergeben werden. Dann kann ich den Error Code prüfen und zB den http get 10x wiederholen (mit größeren Zeitabständen).

Also eigentlich möchte ich alle Ergebnisse die an dem callback function übergeben werden als Return von Shelly.call bekommen. Damit dort auf der Ebene ggf der call wiederholt wird. Verstehst du was ich meine?

Oder wie löse ich das sonst elegant?

Ist es das Thema "Retry same function on error callback"? Müsste eigentlich ein übliches Problem bei callbacks oder?

gitisgreat2023 commented 6 days ago

@genmad die Sonne scheint eh kaum... also wirklich dringlich ist es nicht... aber ich würde es gerne lösen.

Statt nach einem fehlgeschlagen http get direkt es zu killen, würde ich gerne es mehrfach probieren. Mir ist es aber nicht klar wie ich das erreichen kann. Coden kann ich selber versuchen.

Bei dem system call wird ja an dem call back die relevante output übergeben. Eigentlich brauche ich dass in eine Ebene drüber, damit ich es noch mal neu probieren kann. Das hört sich irgendwie rekursiv an, was ich ungerne mache, lieber was iteratives.