Beiträge von nurmaso

VPN/Proxy erkannt

Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.

    Ich hab einen (den?) Fehler gefunden!

    Im Fehlerfall hatte ich im script immer console.error stehen. Das kennt der shelly wohl nicht. Ich hab das auf console.log korrigiert. Damit wurde die Funktion im Fehlerfall mit Fehlermeldung abgearbeitet und das script lief weiter.

    Ich habe trotzdem noch alle 3 Funktionen, die http.get verwenden, mit timeout und try…catch versehen.

    Bin gespannt, wie lange das jetzt läuft!

    Aber das ist hier doch gegeben? Script sollte im Fehlerfall weiterlaufen, oder nicht?


    Mit den http endpoints hab ich verstanden und erfolgreich getestet.

    Zu den Beschränkungen gehört aber auch, nur 3 scripts können gleichzeitig laufen. Dann wär der i4 voll. Ich hab in dem Raum noch RGBWs mit denen ich das gleiche machen will und was mit dimmen wollte ich auch noch versuchen.

    Also würde ich das gerne in einem script belassen. Was ich weiß: Wenn ich checklampstatus und somit auch setlampcolortemp nicht aufrufe, läuft das script durch. Ich hab den http.get in setlampcolortemp als Verursacher in Verdacht. Kann ich da irgendwie den Fehler fangen, um ihn später auszulesen?

    Danke für die Anregungen. Die Seiten kannte ich tatsächlich nicht. Zu deinen Punkten noch ein paar Nachfragen:

    Welchen Vorteil hätten denn getcomponentstatus.time und .unixtime gegenüber meinem Abruf? Man muss zwar nicht parsen, da das Ergebnis in hh:mm ausgegeben wird. Aber da die Sonnenuntergangszeit in UTC ist, müsste ich beide Zeiten abrufen, und die GMT Differenz errechnen, damit das in Sommer- und Winterzeit funktioniert. Ich glaube, das würde nicht viel kürzer werden.

    Wenn du konkrete Stellen oder Ansätze hast, wo ich das script noch vereinfachen kann, gerne her damit.

    Auf mehrere scripts aufteilen kann ich machen. Ich dachte die Belastung für den Shelly wäre höher, wenn mehrer scripts parallel laufen. Wieviele dürfen das parallel sein?

    Und Variablen übergeben würde ich dann wohl mit kvs.set und get (?)

    ostfriese und natürlich gern auch alle anderen, hier mein aktuelles script.

    Kurze Erläuterung: ich realisiere hiermit HCL, genauer gesagt den abendlichen Wechsel von Kaltweiß zu Warmweiß für 3 Duo Leuchten auf einem i4, beeinflussbar durch ein paar User Parameter.

    Dafür müssen natürlich ein paar Sachen abgerufen und berechnet werden. Der Hauptablauf ist einmal die Funktion initscript, die beim Start und dann einmal täglich die nötigen Funktionen aufruft, und die Funktion gradientcycle, die zyklisch (zum Test alle 60s) die entsprechenden Aufrufe macht. Mittels den Verschachtelungen habe ich es erreicht, dass die Funktion einzeln erst abgearbeitet werden, und erst danach (plus Wartezeit) die nächste Funktion aufgerufen wird. Das ist somit meine am stabilsten laufende Version des scripts, aber auch das hält gerne nach ein paar Stunden an.

    Hier das script, bei Unklarheiten bitte fragen:

    (zum Testen einfach oben in den Variablen 3 echte ip Adressen von Lampen eintragen, sollte so überall laufen)

    Für allgemeine Vorschläge zur Vereinfachung bin ich ebenso offen 😃

    Waren das nicht 5 Timer pro script?

    Ich habe das jetzt, bzw. bin noch dabei in Gruppenarbeit mit Chat GPT 😃 das zu erarbeiten und hab das script fast fertig stabil am laufen.

    Callbacks auch für asynchrone funktion wie http.get ist das Stichwort.

    Kann ich gerne hier posten, wenn es stabil läuft. Bis dahin melde ich mich, falls ich auf unüberwindbare Probleme stoße.

    Hallo,

    Wie kann ich das zyklische Ausführen von Funktionen am Besten ausführen?

    Ich kenn mich nicht gut aus mit JavaScript, und versuche mir das Stück für Stück zu erarbeiten, aber hier komme ich nicht weiter.

    Ich möchte:

    1. Funktion A aufrufen. Da ich hier eine url abfrage und parse, dauert es ein paar Sekunden, bis die Funktion abgearbeitet ist; deshalb

    2. Funktion B aufrufen mit einem Delay, da sie Variablenwerte braucht, die in Funktion A beschrieben wurden.

    3. Funktion A dann alle 24h ausführen,

    4. Funktion B alle 60s ausführen.

    Es scheitert bei mir schon beim Delay. Das einzige, was ich mit Zeitverzögerung hinbekommen habe, war über Timer.Set.

    Hier ist es aber so, dass das Script entweder stehen bleibt ohne Fehler, oder abbricht mit der Meldung To Many Timers, wenn ich 2, 3 und 4 mit Timern aufbaue.

    Einzeln laufen beide Funktionen. Noch zu 2., logischer wäre es eigentlich, wenn der Aufruf kommt, wenn A abgearbeitet ist. Aber das hab ich erstrecht nicht hinbekommen.

    Wie würde man so etwas aufbauen?

    Hier noch Beispielhaft, was ich versucht habe, ist bei mir ganz am Ende des Scripts:

    Code
    // Aufrufe
        FunktionA();
        Timer.set(24 * 60 * 60 * 1000, true, FunktionA);
        Timer.set(10 * 1000, 0, FunktionB);
        Timer.set(60 * 1000, true, FunktionB);

    Ich habe die Duos gar nicht in die Cloud eingebunden. Von dort kann der Fehler also nicht kommen.

    Evt. kommt das bei mir aus einer fehlgeleiteten funktion in einem script, an dem ich gerade bastele. Obwohl das eigentlich nicht sein kann, einen turnon befehl habe ich gar nicht drin. Nur setzten von Farbtemperatur, wenn eingeschaltet . Aber wer weiß . Ich werde das weiter beobachten.

    Wenn ich so darüber nachdenke, eigentlich braucht es dafür kein Script da reicht ja ein einfacher URL Befehl aus, du kannst die KVS Werte direkt mit RPC HTTP Befehlen auf dem Shelly speichern ohne Script.

    Beispiel URL: http://192.168.10.23/rpc/KVS.Set?key=testK1&value=test222

    An was bastelst du denn? Wirklich trauen würde ich nem Shelly trotzdem nicht, ein Shellys ist bei mir schon über Nacht verstorben und somit auch alles was auf ihm hinterlegt war.

    Muss ich auf dem Zielshelly dann eine var oder let=testK1 anlegen? Oder wie rufe ich den value auf dem Zielshelly ab?