Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Java Script: Sanftes Aufstehen mit Zigbee

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Java Script: Sanftes Aufstehen mit Zigbee

    This topic has been deleted. Only users with topic management privileges can see it.
    • Lucifor1976
      Lucifor1976 last edited by Lucifor1976

      Hallo Gemeinde.

      Ich bin nicht der Coder und nicht der Scripter, ich habe aber ein Script geschrieben das vielleicht dem ein oder anderen Nutzer helfen mag. Vielleicht kennt Ihr die Funktion "Sanftes Ausfstehen" aus der Hue Welt.
      Ich mag das sehr, habe aber kürzlich meinen Nachttisch auf Zigbee umgestellt.
      Auf die Funktion verzichten wollte ich nicht und daher hab ich mal ein wenig rumgespielt.

      Herausgekommen ist folgendes Script, nutze es wer es mag und brauchen kann. 🙂

      *** EDIT: Script wurde akuallisiert, siehe weiter unten im Thread Post 5

      Falls Ihr es mögt, bitte ein Thrumps up, dangööö

      P 1 Reply Last reply Reply Quote 0
      • P
        peterfido @Lucifor1976 last edited by

        @lucifor1976
        Danke fürs Teilen.

        Früher habe ich Wecker selbst gebaut. Eines Karfreitags habe ich ihm aus gegebenem Anlasse dann noch die Feiertage beigebracht. 😁

        Lucifor1976 1 Reply Last reply Reply Quote 0
        • Lucifor1976
          Lucifor1976 @peterfido last edited by Lucifor1976

          @peterfido

          Du Meinst du so?
          Jetzt wird allerdings (Falls man die Feiertagsfunktion nutzen möchte) der Adapater Feiertage D/A/CH benötigt.

          *** EDIT: Script wurde akuallisiert, siehe weiter unten im Thread

          P 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators last edited by Homoran

            Sowas ähnliches hab ich mal vor gefühlten Jahrzehnten mit dem IKEA Tradfri Adapter gemacht.

            Screenshot_20250615-102946_Firefox.jpg

            Damals hatte ich mich für Tradfri, und nicht für Zigbee allgemein, entschieden, weil ich die Kopplung nur direkt (5cm) an der Fernbedienung als zusätzliche Sicherheit haben wollte

            Lucifor1976 1 Reply Last reply Reply Quote 0
            • P
              peterfido @Lucifor1976 last edited by

              @lucifor1976 Wenn das so funktioniert, ja 👍 Habe es jetzt nicht getestet. Ich hatte damals die Osterberechnungsformel aus Wikipedia für den Mikrocontroller nachprogrammiert. Heutzutage ist das ja Luxus mit dem Feiertage-Adapter 😀

              Homoran 1 Reply Last reply Reply Quote 0
              • Lucifor1976
                Lucifor1976 @Homoran last edited by Lucifor1976

                Lucifor einmal im Ideenwahn:

                V0.3 mit Feiertagsprüfung am nächsten Tag und Alexa Ansage WENN ein Feiertag folgt und der Tag ein Werkstag ist.
                Ist am Folgetag ein Feiertag, wird die "Nachttischlampe" nicht eingeschaltet.
                (Fubktion abschaltbar, für die jenigen die auch an Feiertagen arbeiten müssen)
                Der Zeitpunkt der Ansage ist einstellbar.
                Die Ansage ist definierbar.

                AKTUELLES SCRIPT:

                //Sanftes Auftehen fuer ZigBee dimmbare Lampen by Lucifor V0.3
                
                // === KONFIGURATION ===
                const lampeBrightness = 'zigbee.1.403059fffef3f001.brightness'; // Helligkeits-State deiner Lampe
                const lampeState      = 'zigbee.1.403059fffef3f001.state'; // Einschaltpunkt der Lampe
                
                // Zeiten
                const startZeit     = "03:45"; // Zeitpunkt zum Einschalten (Format: "HH:MM")
                const endZeit       = "04:00"; // Zeitpunkt, bis auf 100% hochgedimmt wird
                const abschaltZeit  = "04:10"; // Zeitpunkt zum Ausschalten der Lampe um ggf. weitere Personen im Bett nicht zu stören
                
                // Werte
                const startBrightness = 5; //Anfängliche Helligkeit
                const endBrightness   = 100; //Endgültige Helligkeit
                
                // Optionen
                const wochenendeAktiv = false; // true = auch Sa/So, false = nur Mo-Fr
                const feiertageAktiv  = true; //Feiertagscheck an = Keine aktivität an Feiertagen
                
                // Feiertagsdatenpunkt vom ical-Adapter
                const feiertagState   = 'feiertage.0.heute.boolean';
                
                // === ALEXA-ANSAGE-KONFIGURATION ===
                const alexaAnsageAktiv = true;
                const alexaAnsageZeit  = "21:00";
                const alexaDevice      = 'alexa2.0.Echo-Devices.3ab65f72f1964fd58c68590cba81cb3f';
                const feiertagMorgen   = 'feiertage.0.morgen.boolean';
                
                // === HILFSFUNKTIONEN ===
                function zeitInMinuten(zeitStr) {
                   const [h, m] = zeitStr.split(':').map(Number);
                   return h * 60 + m;
                }
                
                function istWerktagOderFreigeschaltet(callback) {
                   const heute = new Date().getDay(); // 0 = So, 6 = Sa
                
                   if (!wochenendeAktiv && (heute === 0 || heute === 6)) {
                       return callback(false);
                   }
                
                   if (feiertageAktiv) {
                       getState(feiertagState, (err, state) => {
                           if (err || !state) {
                               console.warn("Feiertagsprüfung fehlgeschlagen oder Datenpunkt fehlt. Fallback: Aktiv.");
                               return callback(true);
                           }
                           return callback(!state.val);
                       });
                   } else {
                       callback(true);
                   }
                }
                
                // === DIMMFUNKTION ===
                function starteDimmen(startMin, endMin) {
                   let aktuelleStufe = 0;
                   const fadeMinuten = endMin - startMin;
                   const schrittweite = (endBrightness - startBrightness) / fadeMinuten;
                
                   fadeTimer = setInterval(() => {
                       aktuelleStufe++;
                       const neueHelligkeit = Math.round(startBrightness + schrittweite * aktuelleStufe);
                       setState(lampeBrightness, neueHelligkeit);
                       console.log(`Dimme auf ${neueHelligkeit}%`);
                       if (aktuelleStufe >= fadeMinuten) {
                           clearInterval(fadeTimer);
                       }
                   }, 60 * 1000);
                }
                
                // === HAUPTSCHEDULER ===
                let fadeTimer = null;
                
                schedule('* * * * *', () => {
                   const now = new Date();
                   const aktuelleMinuten = now.getHours() * 60 + now.getMinutes();
                   const startMin = zeitInMinuten(startZeit);
                   const endMin = zeitInMinuten(endZeit);
                   const stopMin = zeitInMinuten(abschaltZeit);
                
                   istWerktagOderFreigeschaltet((aktiv) => {
                       if (!aktiv) return;
                
                       if (aktuelleMinuten === startMin) {
                           setState(lampeState, true, true);
                           console.log("Lampe eingeschaltet (Zustand auf true gesetzt)");
                
                           setTimeout(() => {
                               setState(lampeBrightness, startBrightness, true);
                               console.log(`Lampe auf ${startBrightness}% gesetzt`);
                               starteDimmen(startMin, endMin);
                           }, 100);
                       }
                
                       if (aktuelleMinuten === stopMin) {
                           setState(lampeBrightness, 0);
                           console.log("Lampe ausgeschaltet");
                           clearInterval(fadeTimer);
                       }
                   });
                });
                
                // === ALEXA-ANSAGE-DYNAMISCH NACH UHRZEIT-VARIABLE ===
                schedule('* * * * *', () => {
                   if (!alexaAnsageAktiv) return;
                
                   const jetzt = new Date();
                   const [ansageStunde, ansageMinute] = alexaAnsageZeit.split(':').map(Number);
                
                   if (jetzt.getHours() === ansageStunde && jetzt.getMinutes() === ansageMinute) {
                       getState(feiertagMorgen, (err, state) => {
                           if (err || !state) {
                               console.warn("Feiertagsprüfung (morgen) fehlgeschlagen.");
                               return;
                           }
                
                           if (state.val === true) {
                               const text = 'Achtung, morgen ist ein Feiertag. Sanftes Aufstehen ist deaktiviert.';
                               setState(`${alexaDevice}.Commands.announcement`, text);
                               console.log(`Alexa-Ansage um ${alexaAnsageZeit} wurde gesendet.`);
                           } else {
                               console.log("Morgen ist kein Feiertag – keine Alexa-Ansage.");
                           }
                       });
                   }
                });
                
                

                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @peterfido last edited by

                  @peterfido sagte in Java Script: Sanftes Aufstehen mit Zigbee:

                  Ich hatte damals die Osterberechnungsformel

                  darauf baut ja der Feiertage-Adapter ja auch auf.

                  @peterfido sagte in Java Script: Sanftes Aufstehen mit Zigbee:

                  Heutzutage ist das ja Luxus mit dem Feiertage-Adapter

                  der ist von 2016!
                  Screenshot_20250615-104818_Firefox.jpg

                  Lucifor1976 1 Reply Last reply Reply Quote 0
                  • Lucifor1976
                    Lucifor1976 @Homoran last edited by

                    @homoran sagte in Java Script: Sanftes Aufstehen mit Zigbee:

                    @peterfido sagte in Java Script: Sanftes Aufstehen mit Zigbee:

                    Ich hatte damals die Osterberechnungsformel

                    darauf baut ja der Feiertage-Adapter ja auch auf.

                    @peterfido sagte in Java Script: Sanftes Aufstehen mit Zigbee:

                    Heutzutage ist das ja Luxus mit dem Feiertage-Adapter

                    der ist von 2016!
                    Screenshot_20250615-104818_Firefox.jpg

                    Öh.. den also besser nicht benutzen?

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @Lucifor1976 last edited by

                      @lucifor1976 sagte in Java Script: Sanftes Aufstehen mit Zigbee:

                      Öh.. den also besser nicht benutzen?

                      warum nicht?
                      Der läuft super

                      Lucifor1976 1 Reply Last reply Reply Quote 0
                      • Lucifor1976
                        Lucifor1976 @Homoran last edited by

                        @homoran

                        OK, alles gut, ich dachte der bringt Werte aus 2016, du hast mich verwirrt...

                        Homoran 1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @Lucifor1976 last edited by

                          @lucifor1976 sagte in Java Script: Sanftes Aufstehen mit Zigbee:

                          ich dachte der bringt Werte aus 2016,

                          nein, den gibt es bereits seit 2016.

                          war auf

                          @peterfido sagte in Java Script: Sanftes Aufstehen mit Zigbee:

                          Heutzutage ist das ja Luxus

                          bezogen

                          1 Reply Last reply Reply Quote 1
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          814
                          Online

                          31.7k
                          Users

                          79.9k
                          Topics

                          1.3m
                          Posts

                          3
                          11
                          120
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo