Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. HM Aktor nach Astro einschalten und zu einer definierten Uhrzeit ausschalten

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    925

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

HM Aktor nach Astro einschalten und zu einer definierten Uhrzeit ausschalten

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
1 Beiträge 1 Kommentatoren 1.4k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    dermichael01
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich bin neu hier im Forum und auch in der Homematic und iobroker "Welt". "Blut" geleckt habe ich, mal sehen ob und wann eine Ernüchterung eintritt…

    Ich habe keine spezielle Sektion/Unterforum mit einer Scriptsammlung gefunden, will aber meinen aktuellen Stand meines Scriptes mit Euch teilen, vielleicht hilft es dem einen oder anderen.

    Das Script schaltet Homematic Aktoren in Abhängigkeit der Astro Funktion, also z.B. bei Abenddämmerung, und setzt den ON_TIME Wert des Aktors um den Aktor nach einer definierten Anzahl von Sekunden auszuschalten. Der ON_TIME Wert errechnet sich nach der Differenz der Angabe der Uhrzeit der gewünschten Ausschaltzeit und der Astro Auslösung (z.B. dusk), also z.B. heute Nacht um 01:00:00 Uhr.

    Ich habe das Script so "benutzerfreundlich" wie mir möglich geschrieben, so dass man einfach den Tag und die Uhrzeit der Ausschaltung angeben kann.

    Da ich ja neu in den beiden "Welten" bin, habe ich zur Zeit nur einen Aktor, so dass ich mir ein Array für die Aktoren gespart habe.

    /*
    Mit Hilfe dieses Scriptes wird in Abhängigkeit der Astrofunktion 
    Licht eingeschaltet und eine Ausschaltverzögerung (in Sekunden)
    mitgegeben.
    Sollte der Lichtschalter anschließend manuell geschaltet werden, so
    wird der ON_TIME Wert ignoriert. Hierdurch wird immer Morgens der
    Status des Lichts geprüft und ggf. ausgeschaltet
    
    Aktueller Scriptstand:
    - astro: dusk --> Licht einschalten und Ausschaltverzögerung setzen
    - Nachts um 01:00 Uhr wird das Licht automatisch ausgeschaltet (Ausschaltverzögerung)
    - astro: nightEnd --> ON_TIME Wert auf Default setzen und wenn Licht eingeschaltet dieses ausschalten
    */
    
    // -------------- Start: Hier werden die benutzerfefinierten Parameter angegeben --------------
    
    // Zu schaltende Aktoren in Variablen einlesen
    var idLichtTerrasseState = "hm-rpc.0.NEQXXXXXXX.1.STATE"/*Licht_Terrasse.STATE*/,
        idLichtTerrasseDauer = "hm-rpc.0.NEQXXXXXXX.1.ON_TIME"/*Licht_Terrasse.ON_TIME*/;
    
    // Uhrzeit der Ausschaltung angeben (Format HH:MM:SS)
    var strAusschaltzeit = "01:02:03";
    
    /* Tagesdifferenz der Ausschaltung angeben, indem der angebene Wert in Tagen auf das aktuelle
    Datum addiert wird. Bei Angabe einer 0 ist der Ausschalttag der gleiche Tag wie z.B. das Event astro :dusk.
    Bei Angabe einer 1 ist der Ausschalttag der nächste Tag wie z.B. das Event astro :dusk.
    */
    var intAusschaltzeitTage = 1;
    
    // -------------- Ende: Hier werden die benutzerfefinierten Parameter angegeben --------------
    
    // Funktion um Tage zu einem Datum zu addieren oder substrahieren
    function addDays(theDate, days) {
        return new Date(theDate.getTime() + days*24*60*60*1000);
    }
    
    // Arrays für spätere Verwendung erzeugen
    var arrAusschaltzeit = strAusschaltzeit.split(":");
    
    // Ausführen wenn Abenddämmerung
    schedule({astro: "dusk"}, function () {
    	// Benötigte Variablen definieren und zum Ereigniszeitpunkt, z.B. dusk setzen
    	// Heute bestimmen
    	var today = new Date(),
    		// Morgen bestimmen
    		tomorrow = addDays(new Date(), intAusschaltzeitTage),
    		// Ausschaltzeit für anschließende Verwendung zwischenspeichern
    		offtime = new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate(), parseInt(arrAusschaltzeit[0]), parseInt(arrAusschaltzeit[1]), parseInt(arrAusschaltzeit[2])),
    		// ON_TIME Wert für Homematic Aktor in Sekunden berechnen
    		ontime = parseInt((offtime.getTime() - today.getTime()) / 1000);
    
    	// Licht Terrasse wenn eingeschaltet dann ausschalten, da ansonsten der ON_TIME Wert nicht aktiviert wird
        if (getState(idLichtTerrasseState).val) setState(idLichtTerrasseState,false);
    
        // ON_TIME auf errechneten Sekundenwert setzen
        setState(idLichtTerrasseDauer,ontime);
        log("Ausschaltverzögerung auf " + ontime + " Sekunden gesetzt");
    
        // Licht Terrasse einschalten
        setState(idLichtTerrasseState,true);
        log("Außenlicht eingeschaltet");
    });
    
    // Ausführen wenn Astro Morgendämmerung
    schedule({astro: "dawn"}, function () {
        // Licht Terrasse ON_TIME auf default setzen
        setState(idLichtTerrasseDauer,0);
        // Licht Terrasse einschalten wenn ausgeschaltet
        if (getState(idLichtTerrasseState).val) setState(idLichtTerrasseState,false);
        log("Außenlicht bei Morgendämmerung ausgeschaltet");
    });
    
    

    VG

    Michael

    1 Antwort Letzte Antwort
    0
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate

    799

    Online

    32.6k

    Benutzer

    82.2k

    Themen

    1.3m

    Beiträge
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
    ioBroker Community 2014-2025
    logo
    • Anmelden

    • Du hast noch kein Konto? Registrieren

    • Anmelden oder registrieren, um zu suchen
    • Erster Beitrag
      Letzter Beitrag
    0
    • Home
    • Aktuell
    • Tags
    • Ungelesen 0
    • Kategorien
    • Unreplied
    • Beliebt
    • GitHub
    • Docu
    • Hilfe