Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. HUE Zeitsteuerung ( Skript )

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    HUE Zeitsteuerung ( Skript )

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

      <size size="150">Aktuelle Version</size>

      http://forum.iobroker.net/viewtopic.php … 374#p92911

      Hallo zusammen,

      ich möchte gerne meine Hue Routinen von der Bridge auf ioBroker umziehen damit ich alles darüber abbilden kann und nicht immer hin und her wechseln muss.

      Wie stelle ich das am Besten an? Kann mir jemand einen Blocky Beispiel Screenshot zeigen für z.B. folgende Steuerung.

      Wenn Sonnenuntergang Anfang
      2418_sonuntergang.png ( was auch immer das für ein Parameter ist in Blocky ) dann schalte Licht im Wohnzimmer mit Farbe Weiss und Helligkeit 0% an und blende in 10 Minuten auf 75%.

      Ich kann zwar C# programmieren aber das ist dann doch etwas anderes.

      Viele Grüße

      Michael

      1 Reply Last reply Reply Quote 0
      • C
        CyberMicha last edited by

        Niemand? Schade 😕

        1 Reply Last reply Reply Quote 0
        • arteck
          arteck Developer Most Active last edited by

          dann bilde es doch in JavaScript ab.. wenn du scho mal C# gemacht hast

          1 Reply Last reply Reply Quote 0
          • S
            schneidy76 last edited by

            schau mal hier: http://forum.iobroker.net/viewtopic.php?f=21&t=7876

            Musst nur noch den Trigger ändern.

            Das ganze ist im Szenen Adapter geschrieben, die Command sollte jedoch auch im Blockly gehen

            1 Reply Last reply Reply Quote 0
            • C
              CyberMicha last edited by

              Ich bleib bei HUE.. Gerade einfach mal versucht wenn Lampe an, dann setze level auf 1 und nix passiert.

              2418_simple.png

              :oops: 😢

              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                @CyberMicha:

                Ich bleib bei HUE.. Gerade einfach mal versucht wenn Lampe an, dann setze level auf 1 und nix passiert.

                filename="simple.PNG" index="0">~~

                :oops: 😢 `

                Nicht so schnell aufgegeben 🙂

                Habe selber kein Hue, reicht den setzen des Wertes oder ist noch irgendwo ein on/Off.

                Hast du es Mal mit einem"normalen" Text Block probiert anstatt Mathe für die Zahl

                –-----------------------

                Send from mobile device

                1 Reply Last reply Reply Quote 0
                • S
                  schneidy76 last edited by

                  Du brauchst die Command zeile der hue, sonst tut sich nichts…

                  Den Beitrag gelesen?

                  1 Reply Last reply Reply Quote 0
                  • C
                    CyberMicha last edited by

                    @schneidy76:

                    Du brauchst die Command zeile der hue, sonst tut sich nichts…

                    Den Beitrag gelesen? `

                    Gelesen ja, verstanden eher nicht. Also was ich genau mit der command anfangen muss 😕

                    Hier sehe ich auch nicht wirklich etwas mit "command" hmmmm

                    http://forum.iobroker.net/viewtopic.php … &hilit=hue

                    oder muss ich auf meiner ccu2 noch irgendwas nachinstallieren? steuerung der lampen per vis funktioniert ohne probleme.

                    Per Vis:
                    > hue.0 2017-10-27 12:18:32.979 info final lightState for Philips_hue.Wohnzimmer:{"bri":254,"on":true,"level":100}

                    1 Reply Last reply Reply Quote 0
                    • C
                      CyberMicha last edited by

                      Ok ich gehe doch über das normale Skript 🙂

                      Wie sage ich dem iobroker denn jetzt, dass er es ausführen soll? Es muss ja dauerhaft geprüft werden ob z.B. der Sonnenuntergang ist.

                      Per Cron alle 30 Sekunden oder wie macht man das?

                      schedule("*/30 * * * * *", function () // alle 15 Sekunden

                      { ….

                      und noch eine frage:

                      wie kann ich lampen jetzt nach und nach dimmen? z.b. schalte um 30minuten vor sonnenuntergang an und erhöhe den level von 0 auf 80 bis sonnenuntergang erreicht.

                      Die Zeit zu berechnen ist ja nicht weiter schwer.

                      LG Michael

                      1 Reply Last reply Reply Quote 0
                      • Dutchman
                        Dutchman Developer Most Active Administrators last edited by

                        @CyberMicha:

                        Ok ich gehe doch über das normale Skript 🙂

                        Wie sage ich dem iobroker denn jetzt, dass er es ausführen soll? Es muss ja dauerhaft geprüft werden ob z.B. der Sonnenuntergang ist.

                        Per Cron alle 30 Sekunden oder wie macht man das?

                        schedule("*/30 * * * * *", function () // alle 15 Sekunden

                        { ….

                        und noch eine frage:

                        wie kann ich lampen jetzt nach und nach dimmen? z.b. schalte um 30minuten vor sonnenuntergang an und erhöhe den level von 0 auf 80 bis sonnenuntergang erreicht.

                        Die Zeit zu berechnen ist ja nicht weiter schwer.

                        LG Michael `

                        Du kannst einen cron benutzen mir Astro um das zu überprüfen oder auch mir Astro function Triggeren

                        Un die Lampen schrittweise zu dimmen kannst du time outs nemen und alle x Minuten + was du willst

                        –-----------------------

                        Send from mobile device

                        1 Reply Last reply Reply Quote 0
                        • S
                          schneidy76 last edited by

                          du nimmst als Object die Command Zeile
                          2631_hue_command.png
                          und sagst ihr zum Beispiel:
                          2631_hue_scene.png
                          Auf deutsch:

                          on = ja

                          Helligkeit auf 6 (von max 254)

                          Dimmzeit 15000 ms

                          jetzt klar? damit kannst du der Lampe alles sagen was du willst

                          Den Status kannst du auch abfragen - das sind die Sachen die bei mir nicht aktiv sind

                          1 Reply Last reply Reply Quote 0
                          • S
                            schneidy76 last edited by

                            das ist die ganze Scene:
                            2631_hue_scene_komplett.png
                            den Trigger dafür:
                            2631_trigger.png
                            ganz oben bei "scene_Nachtlicht_an" eintragen, da kannst du auch einen cron definieren

                            oder wenn du Astro brauchst, dann erstelle beim JavaScript Adapter ein Object "Dämmerung"

                            und erstelle ein Blockly Script mit Astro
                            2631_sonnenuntergang.png
                            ObjectID wird durch das Object Dämmerung ersetzt

                            1 Reply Last reply Reply Quote 0
                            • C
                              CyberMicha last edited by

                              So fange ich erst mal an. Erstmal an Javascript gewöhnen 🙂

                              mit````
                              setState("hue.0.Philips_hue.Teich.level"/Philips_hue.Teich.level/,10)

                              
                              

                              var DebugCounter = 1;

                              schedule("*/15 * * * * *", function ()
                              {
                              log("=====================");
                              log("Astro Werte für heute");
                              log("=====================");
                              var nightEnd = getAstroDate("nightEnd");
                              log(" (0) nightEnd (Ende der Nacht)........................: " + nightEnd.toLocaleTimeString());
                              var nauticalDawn = getAstroDate("nauticalDawn");
                              log(" (1) nauticalDawn (naut. Dämmerung Morgens)...........: " + nauticalDawn.toLocaleTimeString());
                              var dawn = getAstroDate("dawn");
                              log(" (2) dawn (Dämmerung Morgens).........................: " + dawn.toLocaleTimeString());
                              var sunrise = getAstroDate("sunrise");
                              log(" (3) sunrise (Sonnenaufgang)..........................: " + sunrise.toLocaleTimeString());
                              var sunriseEnd = getAstroDate("sunriseEnd");
                              log(" (4) sunriseEnd (Ende des Sonnenaufgangs).............: " + sunriseEnd.toLocaleTimeString());
                              var goldenHourEnd = getAstroDate("goldenHourEnd");
                              log(" (5) goldenHourEnd (Ende der Golden Hour VM)..........: " + goldenHourEnd.toLocaleTimeString());
                              var solarNoon = getAstroDate("solarNoon");
                              log(" (6) solarNoon (Mittag)...............................: " + solarNoon.toLocaleTimeString());
                              var goldenHour = getAstroDate("goldenHour");
                              log(" (7) goldenHour (Start der Golden Hour NM)............: " + goldenHour.toLocaleTimeString());
                              var sunsetStart = getAstroDate("sunsetStart");
                              log(" (8) sunsetStart (Start des Sonnenuntergangs).........: " + sunsetStart.toLocaleTimeString());
                              var sunset = getAstroDate("sunset");
                              log(" (9) sunset (Sonnenuntergang).........................: " + sunset.toLocaleTimeString());
                              var dusk = getAstroDate("dusk");
                              log("(10) dusk (Dämmerung Abends)..........................: " + dusk.toLocaleTimeString());
                              var nauticalDusk = getAstroDate("nauticalDusk");
                              log("(11) nauticalDusk (naut. Dämmerung Abends)...........: " + nauticalDusk.toLocaleTimeString());
                              var night = getAstroDate("night");
                              log("(12) night (astron. Dämmerung Abends).................: " + night.toLocaleTimeString());
                              var nadir = getAstroDate("nadir");
                              log("(13) nadir (Dunkelster Moment der Nacht)..............: " + nadir.toLocaleTimeString());
                              log("=====================");

                              var today = new Date();
                              var differenz = ((sunsetStart.getTime() - today.getTime()) /1000 /60);
                              
                              log( "Noch " + differenz + " Minuten bis Sonnenuntergang" );
                              log("Anzahl Ausführungen " + DebugCounter);
                              
                              DebugCounter = DebugCounter + 1;
                              

                              });

                              1 Reply Last reply Reply Quote 0
                              • S
                                schneidy76 last edited by

                                Okay, es sollte auch in Blockly gehen. Die geschweiften Klammern nicht vergessen.

                                Oder in JavaScripts steuere objectID mit String und dann die Zeichenfolge.

                                In Java bin ich leider nicht so fit, aber dafür gibt's ja Blockly…

                                1 Reply Last reply Reply Quote 0
                                • C
                                  CyberMicha last edited by

                                  Bei mir ist es halt genau anders rum 🙂 also aus Quellcode kann ich meinst mehr deuten als aus Blöcken 🙂

                                  LG

                                  1 Reply Last reply Reply Quote 0
                                  • C
                                    CyberMicha last edited by

                                    So, das funktioniert schon mal. Nun alles zusammen bastelt und statt der 200 die differenz zum sonnenuntergang irgendwie eintragen.

                                    function fadein(transTime){
                                        var fadeTime = transTime;
                                        setState("hue.0.Philips_hue.Wohnzimmer.command"/*Philips_hue.Wohnzimmer.command*/,"{}");
                                        setState("hue.0.Philips_hue.Wohnzimmer.on"/*Philips_hue.Wohnzimmer.on*/,true);
                                        setState("hue.0.Philips_hue.Wohnzimmer.level"/*Philips_hue.Wohnzimmer.level*/,10);
                                        setTimeout(function() {
                                            var level = "{\"on\":true,\"level\":80,\"transitiontime\":" + fadeTime + "}";
                                            setState("hue.0.Philips_hue.Wohnzimmer.command"/*Philips_hue.Wohnzimmer.command*/,level);
                                        },5000);
                                    }
                                    

                                    LG Micha

                                    1 Reply Last reply Reply Quote 0
                                    • C
                                      CyberMicha last edited by

                                      Was haltet ihr davon? Gibt es einen eleganteren Weg?

                                      • 2017-10-31

                                      • Lampen als Array

                                      • Neue Funktion CheckStatus(TimeToSunset,light) pro Lampe

                                      • Funktion fadeIN(transTime,level_min,level_max) erweitert. Parameter Level_min und Level_max definieren Start- und Endhelligkeit der Lampen.

                                      // ==========Einstellungen Start==========
                                      
                                      // Lampen
                                      var lights = [
                                          "hue.0.Philips_hue.Wohnzimmer", 
                                          "hue.0.Philips_hue.Teich",
                                          ];
                                      // Start und Endhelligkeit
                                      var level_min = 10;
                                      var level_max = 80;
                                      // ToDo
                                      var color = 0;
                                      
                                      // ==========Einstellungen Ende==========
                                      
                                      // Timer jede Minute
                                      schedule("* * * * *", function ()
                                      {
                                      log("==========Skript Start: Sunset_Light==========");
                                          log("==========AstroDaten abfragen==========");
                                      //    var nightEnd = getAstroDate("nightEnd");
                                      //    log(" (0) nightEnd (Ende der Nacht)........................:        " + nightEnd.toLocaleTimeString());       
                                      //    var nauticalDawn = getAstroDate("nauticalDawn");
                                      //    log(" (1) nauticalDawn (naut. Dämmerung Morgens)...........:       " + nauticalDawn.toLocaleTimeString());  
                                      //    var dawn = getAstroDate("dawn");
                                      //    log(" (2) dawn (Dämmerung Morgens).........................:       " + dawn.toLocaleTimeString());           
                                      //    var sunrise = getAstroDate("sunrise");
                                      //    log(" (3) sunrise (Sonnenaufgang)..........................:       " + sunrise.toLocaleTimeString());        
                                      //    var sunriseEnd = getAstroDate("sunriseEnd");
                                      //    log(" (4) sunriseEnd (Ende des Sonnenaufgangs).............:       " + sunriseEnd.toLocaleTimeString());     
                                      //    var goldenHourEnd = getAstroDate("goldenHourEnd");
                                      //    log(" (5) goldenHourEnd (Ende der Golden Hour VM)..........:       " + goldenHourEnd.toLocaleTimeString());  
                                      //    var solarNoon = getAstroDate("solarNoon");
                                      //    log(" (6) solarNoon (Mittag)...............................:       " + solarNoon.toLocaleTimeString());      
                                      //    var goldenHour = getAstroDate("goldenHour");
                                      //    log(" (7) goldenHour (Start der Golden Hour NM)............:       " + goldenHour.toLocaleTimeString());     
                                          var sunsetStart = getAstroDate("sunsetStart");
                                          log(" (8) sunsetStart (Start des Sonnenuntergangs).........:       " + sunsetStart.toLocaleTimeString());    
                                          var sunset = getAstroDate("sunset");
                                      //    log(" (9) sunset (Sonnenuntergang).........................:       " + sunset.toLocaleTimeString());        
                                          var dusk = getAstroDate("dusk");
                                          log("(10) dusk (Dämmerung Abends)..........................:       " + dusk.toLocaleTimeString());           
                                      //    var nauticalDusk = getAstroDate("nauticalDusk");
                                      //    log("(11) nauticalDusk (naut. Dämmerung Abends)...........:       " + nauticalDusk.toLocaleTimeString());   
                                      //    var night = getAstroDate("night");
                                      //    log("(12) night (astron. Dämmerung Abends).................:       " + night.toLocaleTimeString());          
                                      //    var nadir = getAstroDate("nadir");
                                      //    log("(13) nadir (Dunkelster Moment der Nacht)..............:       " + nadir.toLocaleTimeString());          
                                      
                                          log("==========Funktionen ausführen==========");
                                      
                                          // Zeit zwischen 2 Zeiten berechnen
                                          // Übergabe: Zeit 1 und Zeit 2
                                          var Time1_2 = TimeBetween(sunsetStart, dusk);
                                          // Zeit bis Start Sonnenuntergang berechnen
                                          // Übergabe: Start des Sonnenuntergangs. getAstroDate("sunsetStart");
                                          var sunsetrest = TimeToSunset(sunsetStart);
                                          // Prüfen pro Lampe ob bereits an und ob Sonnenuntergang begonnen hat.
                                          // Wenn true, dann anschalten
                                          lights.forEach(function(element) {
                                              if (Boolean(CheckStatus(sunsetrest,element))){
                                                  FadeIN(Time1_2,level_min,level_max);
                                              }
                                          });
                                      
                                      log("==========Skript Ende: Sunset_Light==========");
                                      });
                                      
                                      // Funktionen ***************************************************************************************************
                                      
                                      // Licht mit level_min einschalten und auf level_max mit transTime blenden
                                      // Übergebene Parameter: Zeit für das Einblenden in Minuten, start und end level
                                      function FadeIN(transTime,level_min,level_max){
                                          log("Funktion: fadeIN() mit transTime: " + transTime + " , level_min " + level_min + " , level_max " + level_max);
                                          // transTime kommt mit Minuten, also transTime *60 / 0.1 = fadeTime
                                          // da es zu schnell dunkel wird nur die halbe Zeit nehmen
                                          var fadeTime = transTime * 60 / 0.1 / 2;
                                          lights.forEach(function(element) {
                                              // Command leeren
                                             setState(element +".command","{}");
                                             // Lampen anschalten ( command greift sonst nicht )
                                             setState(element +".on",true);
                                             // Initial level auf level_min setzen
                                             setState(element+".level",level_min);
                                             // 3 Sekunden warten, dann command ausfühen ( klappt nicht direkt nach einschalten )
                                             setTimeout(function() {
                                             var com = "{\"on\":true,\"level\":" + level_max + ",\"transitiontime\":" + fadeTime + "}";
                                             setState(element+".command",com);
                                             },3000);
                                          });
                                      }
                                      
                                      // Berechnungen der restlichen Minnuten bis endTime basierend auf der aktuellen Uhrzeit
                                      // Übergebene Parameter: Zeit auf die berechnet werden soll
                                      // Return liefert Zeit in Minuten
                                      function TimeToSunset(endTime){
                                          log("Funktion: timeToSunset()");
                                          var today = new Date();
                                          var rest = 0;
                                          rest = ((endTime.getTime() - today.getTime()) /1000 /60);
                                          rest = Math.round(rest);
                                          return rest;
                                      }
                                      
                                      // Berechnungen der Zeit zwischen 2 Zeiten
                                      // Übergebene Parameter: Zeit1 und Zeit2 auf die berechnet werden soll
                                      // Return liefert Zeit in Minuten
                                      function TimeBetween(time1, time2){
                                          log("Funktion: TimeBetween()");
                                          var diff = 0;
                                          diff = ((time2.getTime() - time1.getTime()) /1000 /60);
                                          diff = Math.round(diff);
                                          return diff;
                                      }
                                      
                                      // Status der Lampen prüfen und schauen ob Sonnenuntergang bald beginnt
                                      // Übergebene Parameter: Zeit bis Sonnenuntergang in Minuten, Lampe
                                      // Return liefert true oder false
                                      function CheckStatus(TimeToSunset,light){
                                            log("Funktion: CheckStatus() mit TimeToSunset: " + TimeToSunset + " und Lampe " + light);
                                            // Wenn Lampe aus
                                            if (getState(light+".on").val === false ){
                                                // Wenn restl. Zeit bis Sonneuntergang ( zwischen 2 und 0 Minuten )
                                                if(TimeToSunset <= 2 && TimeToSunset >=0){
                                                    return true;
                                                // sonst tue nichts.
                                                } else {
                                                  return false;
                                                }
                                            }
                                            // sonst tue nichts.
                                            else {
                                              return false;
                                            }
                                      }
                                      
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      793
                                      Online

                                      31.7k
                                      Users

                                      79.8k
                                      Topics

                                      1.3m
                                      Posts

                                      4
                                      17
                                      2792
                                      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