Uhrzeit auslesen funktioniert nicht

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.

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.

  • Hallo,

    ich habe mich gefragt warum eine Abfrage nicht richtig funktioniert, bis ich mal ein paar Debugs eingebaut habe.
    Dort ist mir aufgefallen das die Uhrzeit nicht aktualisiert wird, genauer gesagt die Stunden.

    Das Script habe ich um 11 Uhr gestartet. Es soll mir zyklisch ein paar Informationen anzeigen. Nun ist es schon 12 Uhr und mir wird immer noch 11 Uhr angezeigt.
    Die Minuten passen..
    Ist das ein Bug der Funktion oder mache ich etwas falsch?


    // Konfiguration
    let CHECK_INTERVAL = 10; // Sekunden
    let LOW_TEMP_TRIGGER = 23.0; // °C
    let HIGH_TEMP_THRESHOLD = 25.0; // °C (Wird genutzt, um "heiß" zu markieren)
    let wasHot = false;
    let actionDone = false;
    let temp = 0.0;

    const HOUR_TO_SHUT_DOWN = 21;
    const MINUTE_TO_SHUT_DOWN = 20;

    const DateDetection = new Date();
    let DayOfLastHotDetection = DateDetection.getDay();

    const CoverURL= [
    "http://192.168.178.181/rpc/Cover.GoToPosition?id=0&pos=50", //Badezimmer
    "http://192.168.178.184/rpc/Cover.GoToPosition?id=0&pos=50", // Schlafzimmer
    "http://192.168.178.182/rpc/Cover.GoToPosition?id=0&pos=50", // Wohnzimmer - großes Fenster
    "http://192.168.178.180/rpc/Cover.GoToPosition?id=0&pos=50"
    ]; // Wohnzimmer - kleines Fenster];



    // Rollladensteuerung (HTTP-Request an anderes Gerät)
    function rolladenRunter() {

    print("→ Rolllaeden werden heruntergefahren.");

    for( let i = 0; i < CoverURL.length; i++ )
    {
    let msg = "Ausgefuehrt: ";
    msg += CoverURL[i];
    console.log(msg);
       
    Shelly.call("http.get", { url: CoverURL[i] }, function (response){
    });
    }

    actionDone = true;
    }

    // Temperatur prüfen Funktion
    function checkTemp()
    {
    Shelly.call(
    "HTTP.GET",
    { url: "http://192.168.178.107/rpc/Temperature.GetStatus?id=100"}, // Call to other Shelly
    function(result, error_code, error_message) {
    if (error_code !== 0) {
    print("Fehler beim auswerten der Temperatur");
    }
    else {
    let jsonData = JSON.parse(result.body);
    let tempHome = jsonData.tC;
    temp = tempHome;
    }
    });

    let Hour = DateDetection.getHours();
    let Minute = DateDetection.getMinutes();
       
    if(DayOfLastHotDetection != DateDetection.getDay()){
    DayOfLastHotDetection = 0;
    console.log("Datum der letzten Erkennung eines heißen Tages wurde zurückgesetzt..");
    }

    // Prüfen ob es vorher heiß genug war
    if (temp >= HIGH_TEMP_THRESHOLD) {
    wasHot = true;
    print("Temperatur war heiß genug – Zustand gemerkt.");

    if(DayOfLastHotDetection != DateDetection.getDay()){
    DayOfLastHotDetection = DateDetection.getDay();
    actionDone = false;
    print("Datum der letzten Erkennung eines heißen Tages wurde aktualisiert..");
    }
         
    }
       
    // Prüfen ob der Trigger aktiviert werden soll
    if (wasHot && temp <= LOW_TEMP_TRIGGER && !actionDone && Hour >= HOUR_TO_SHUT_DOWN && Minute >= MINUTE_TO_SHUT_DOWN ) {
    print("Temperatur ist gefallen – Trigger wird ausgelöst.");
    //rolladenRunter();
    wasHot = false; // Nachdem die Rollaeden heruntergefahren sind, sollen sie erst bei erneueten erreichen der HIGH_TEMP_THRESHOLD wieder mit dem Script verfahren
    }

    // Optional: Hinweis, falls schon ausgelöst oder Bedingungen nicht erfüllt sind
    if (temp <= LOW_TEMP_TRIGGER && actionDone) {
    print("Temperatur unter Schwellwert und Aktion bereits ausgeführt.");
    }
       
    let msg = "aktuelle Temperatur: ";
    msg += temp;
    console.log(msg)
           
    msg = "letzter Tag an dem die Temperatur über HIGH_TEMP_THRESHOLD lag, war am ";
    msg += DayOfLastHotDetection;
    msg += " Tag der Woche..";
    print( msg);
       
    msg = "aktuelle Systemzeit ist ";
    msg += DateDetection.toString();
    print(msg);

    msg = "actionDone ->";
    msg += actionDone;
    console.log(msg);
       
    msg = "wasHot ->";
    msg += wasHot;
    console.log(msg);

    msg = "Hour >= HOUR_TO_SHUT_DOWN ->";
    msg += Hour >= HOUR_TO_SHUT_DOWN;
    print(msg);
       
    msg = "Minute >= MINUTE_TO_SHUT_DOWN ->";
    msg += Minute >= MINUTE_TO_SHUT_DOWN;
    print(msg);


    print(DateDetection.getHours())
    }

    // Timer starten
    Timer.set(CHECK_INTERVAL * 1000, true, checkTemp);

    // Initiale Prüfung
    checkTemp();

  • Bitte zur besseren Lesbarkeit Skripte in einen Code-Block einfügen:

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    BugSimpson

    Überwiegend PRO 3EM im Einsatz zur Haus und PV Überwachung