Problem mit Shelly.call("HTTP.GET",

Hinweis zur Nutzung von Skripten (für Nutzer)

Die Verwendung von Skripten erfolgt ausdrücklich auf eigene Gefahr. Weder Shelly noch die jeweiligen Autoren oder Entwickler der Skripte übernehmen irgendeine Form der Haftung für mögliche Schäden, Fehlfunktionen, Datenverluste oder anderweitige Beeinträchtigungen, die durch die Nutzung dieser Skripte entstehen könnten. Bitte stellen Sie vor dem Einsatz sicher, dass Sie den Quellcode verstehen und sich der möglichen Auswirkungen bewusst sind. Die Skripte werden ohne Gewähr bereitgestellt und unterliegen keiner regelmäßigen Wartung oder offiziellen Unterstützung.


Hinweis für Entwickler

Wenn Sie eigene Skripte bereitstellen, achten Sie bitte darauf, eine klare Beschreibung, eventuelle Einschränkungen und Sicherheitsaspekte zu dokumentieren. Beachten Sie zudem, dass Nutzer Ihre Skripte grundsätzlich auf eigenes Risiko verwenden. Eine Haftung für Schäden ist ausgeschlossen, sofern diese nicht vorsätzlich oder grob fahrlässig verursacht wurden oder gesetzlich anderweitig geregelt ist.

  • Hallo,

    ich habe eine Frage zu einem "Test"-Script welches per Shelly.call("HTTP.GET" .. einen Schedule auf dem selben Gerät erstellen, wo das Script auch läuft.
    Es ist ein Shelly 2PM Gen3 im Cover mode.

    Das folgende Test-Script führt dazu, dass der ganze Shelly instabil wird. Und zwar nachhaltig instabil. Also auch noch instabil nach Power-On Reset. - Mittlerweile kann ich per Shelly App wieder wie gewohnt darauf zugreifen (nach einiger Zeit funktionierte es wieder(?)), aber per Web-Interface (Browser) kann ich nicht mehr auf den Shelly zugreifen: permanent "Connecting to Shelly".
    Hier das Script. - Hat jemand eine Idee was an dem Script so zerstörerisch ist?

  • Ach und nochwas: Wenn ich per App auf die Scripte gehe, dann werden die Scripte nicht angezeigt. Fehlermeldung "Websocket is closed to ... Error code 1006. => Also das ist wahrscheinlich das Problem, dass keine reguläre Verbindung mehr aufgebaut werden kann.
    Aber das führt zu den Fragen:
    - Websocket closed selbst nach Power-On Reset?
    - Was ist an dem Script so schlimm, dass dies die Websockets schließt?

  • Es kann passieren, dass ein Script die Shelly-CPU derartig auslastet, dass sie nicht mehr antworten kann. Das könnte z. B. durch eine Endlosschleife im Script ausgelöst werden (die hier offensichtlich nicht vorliegt). Und wenn das Script auf Autostart steht, geht es nach einem Reboot sofort wieder los.

    Keine Ahnung warum der Shelly bei diesem Script so rumzickt, aber um ihn wieder ansprechbar zu machen könntest du versuchen, das Script mittels RPC zu stoppen.

    Dazu müsstest du den RPC http://192.168.1.126/rpc/Script.Stop?id=1 (unter der Annahme, dass das Script die ID 1 hat) via Browser/curl/iwr so oft aufrufen, bis er durchkommt - das kann durchaus ein paar Versuche benötigen...

    Um einen Schedule auf demselben Gerät anzulegen, würde ich übrigens nicht über HTTP.GET gehen, sondern den RPC direkt aufrufen - das würde dann so aussehen:

    JavaScript
    Shelly.call("Schedule.Create", {
     enable: true,
     timespec: "0 16 3 * * 0",
     calls: [{ method: "Cover.Open", params: { id: 0 } }],
    });
  • Danke towiat! - Das Script ist definitiv nicht mehr am laufen. Das wird auch durch Deinen Script.Stop RPC bestätigt (was_running: false). - Vermutlich muss ich den Shelly auf Werkszustand rücksetzen, wobei ich wegen der Meldung "Websocket closed" auch überlege, ob da mein FRITZ!Box Router irgendwie im Spiel ist.

    Shelly.call("Schedule.Create" .. ist natürlich naheliegend. Das hatte ich vorher auch probiert, und das hat auch funktioniert. - Über HTTP wollte ich es deshalb versuchen, weil ich ein kleines Projekt im Sinn habe, per Script einen Schedule auf einem anderen Shelly zu erstellen.

  • Dieses Thema enthält einen weiteren Beitrag, der nur für registrierte Benutzer sichtbar ist.