Skripte funktionieren nach einiger Zeit nicht mehr(sie laufen noch, aber sie führen den Code nicht mehr aus)

  • Hallo in die Runde,

    ich habe einige Shelly pro/ plus-Geräte im Einsatz auf denen verschieden Skripte laufen. Diese fragen den Shelly auf dem sie laufen in regelmäßigen Zeitabständen über
    Shelly.call nach dem Status und die gesammelten Werte werden dann nach Tago.io gesendet. Damit mir die Skripte nicht abstürzen, wenn mal keine Wifi-Verbindung steht

    habe ich sicherheitshalber eine Abfrage davor gebastelt.

    Shelly.call("WiFi.GetStatus", null, function (WifiStatus)

    {

    if (WifiStatus.status === "got ip")...

    ...und noch zur Sicherheit - falls das Skript aus einem mir unbekannten Fall abschmiert - ein zweites Skript, was alle zwanzig Minuten schaut, ob das erste Skript noch läuft.

    Soweit so gut :) . Die ganze Sache funzt eigentlich ganz gut, bis mir irgendwann auffällt, dass keine aktuellen Werte mehr bei Tago.io ankommen. :/

    Ich gehe also auf die Weboberfläche des entsprechenden Shelly und schaue, ob die Skripte noch laufen. Das tuen sie dann auch, aber sie arbeiten den Code nicht mehr ab!!

    Im log sieht das dann so aus:

    shelly_notification:163 Status change of switch:0: {"id":0,"aenergy":{"by_minute":[0.000,0.000,0.000],"minute_ts":1701427199,"total":624.311}}

    11:40:00

    shelly_ejs_rpc.cpp:41 Shelly.call WiFi.GetStatus null

    Wenn man das Skript anhält und wieder neu startet ändert sich auch nichts. Der Shelly tut so, als ob er das Skript abarbeitet. Ich glaube in der Vergangenheit stand auch manchmal

    soetwas wie -> 'to many shelly.calls' open oder so ähnlich.

    Führe ich dann einen Reboot durch, funktioniert wieder alles wie es soll.

    shelly_notification:163 Status change of switch:0: {"id":0,"voltage":115.7}

    11:45:29

    shelly_http_client.:606 0x3ffe2abc: Finished; bytes 342, code 202, redir 0/3, auth 0, status OK

    Hat jemand ähnliche Erfahrungen gemacht? Woran kann das liegen?

    Ich habe die aktuellste Firmware auf allen installiert.

    Danke und Grüße.

    Kay

  • Hallo Kay,

    wahrscheinlich hast du nen Fehler im Code, da du deinen Code nicht geteilt hast kann ich jedoch nicht mehr dazu sagen.

    In der Vergangenheit hatte ich schon häufig die Erfahrung gemacht, dass nicht jeder Shelly Fehler vorhersehbar ist. Deshalb packe ich nun jede Funktions Ebene in einem Try Catch Block. Seitdem laufen meine Scripts dauerhaft und problemlos, auch ohne Backup-Sicherungen. Außerdem gibt die Shelly-API zwar an, dass 5 aktive Calls möglich sind, aber das Limit liegt in Wahrheit bei 4. Mit 5 Calls kommt es immer wieder zufällig zu Fehlern.

    Ich empfehle dir also, alles in Try Catch Blöcke zu packen. Außerdem kannst du gerne meine Call Funktion aus meiner Toolbox ausprobieren. Diese ist eine verbesserte Version der Shelly.Call Funktion mit einem besseren Call Error Handler, einer Call Warteschlange und einem Call Debug Output.

    Hier ist der aktuelle Stand meiner Toolbox, die sich jedoch noch im Alpha Stadium befindet und stark Komprimiert ist um Speicher zu sparen.

    Die Toolbox auf den Call() Teil reduziert, mit einem Call Anwendungsbeispiel:


    Und hier die komplette Toolbox mit Call Belastungstest:

    6 Mal editiert, zuletzt von _[Deleted]_ (2. Dezember 2023 um 02:15)

  • Hallo De kat,

    danke für die rasche Antwort :S . So viele calls habe ich garnicht oder sind damit alle calls aus allen Skripten gemeint? :/

    Das mit den try/ catch hatte ich bisher noch garnicht auf dem Schirm, danke. :thumbup: Meinen Code hatte ich nicht hineinkopiert, da das Skript ja auch nach dem

    starten nicht mehr funktioniert, sondern erst wieder nach einem Reboot des Shelly. Der Code wird doch zur Laufzeit kompiliert-oder ist das bei der Javamischung

    von Shelly anders?

    Vielen dank für den Einblick in deine Toolbox und dein Angebot nehme ich gerne war, dass du mal über den Code schaust, vielleicht entdeckst du ja etwas. :)

    Einen schönen Abend noch.

    Kay

    Einmal editiert, zuletzt von mrsample (2. Dezember 2023 um 19:12)

  • Versuch das mal.

    Einmal editiert, zuletzt von _[Deleted]_ (2. Dezember 2023 um 19:38)

  • Dieses Thema enthält 30 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.