Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Hilfe zum Alexa Hue Wecker

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Hilfe zum Alexa Hue Wecker

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

      Hi !

      Vielleicht kann mir ja einer helfen mit dem Script. Finde den Fehler nicht.
      Wenn ich einen Wecker bei meiner Alexa programmiere auf 20:00 Uhr dann wird dieser zu 21 Uhr abgerufen und dem HUE Light so mitgeteilt. Praktisch also ist das Problem, dass alles um eine Stunde verschoben ist, also zu spät das Wake-Up Light angeht, was echt schade ist, da ich super gerne mein altes manuelles Wake Up light von Philips einmotten würde.

      https://forum.iobroker.net/topic/18984/hue-lichtwecker-mit-alexa/10

      Hier nochmal das Log bei Wecker-Stellung um 17:30.
      Versteh nicht, warum wenn es in IO broker korrekt angezeigt wird er auf die ausgelesene Uhrzeit für das Wakeup Licht eine Stunde rauf haut.
      Im IObroker zeigt er das alles korrekt an.

      17:11:00.022	info	javascript.0 script.js.common.Bewegungsmeldung.Wakeuplight-Marc: Collecting alarms from alexa2.0.Echo-Devices.G0911B0592750S33
      17:11:00.023	info	javascript.0 script.js.common.Bewegungsmeldung.Wakeuplight-Marc: Adding alarm at Sun Aug 18 2019 18:30:00 GMT+0200 (CEST)
      17:11:00.023	info	javascript.0 script.js.common.Bewegungsmeldung.Wakeuplight-Marc: 0: Sun Aug 18 2019 18:30:00 GMT+0200 (CEST)
      17:11:00.023	info	javascript.0 script.js.common.Bewegungsmeldung.Wakeuplight-Marc: Alarm will be triggered at Sun Aug 18 2019 18:30:00 GMT+0200 (CEST)
      17:11:00.023	info	javascript.0 script.js.common.Bewegungsmeldung.Wakeuplight-Marc: Sunrise starts at Sun Aug 18 2019 18:27:00 GMT+0200 (CEST)
      17:11:00.023	info	javascript.0 script.js.common.Bewegungsmeldung.Wakeuplight-Marc: Current time is Sun Aug 18 2019 17:11:00 GMT+0200 (CEST)
      

      a77bdf81-c876-45cc-9f9e-b31d8bc1eb32-image.png

      dslraser 1 Reply Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @Mappy last edited by dslraser

        @Mappy
        Und wo ist Dein verwendetes Script ?
        Poste das hier, sonst kann wahrscheinlich auch keiner was dazu sagen.

        Edit: ich habe es in Deinem verlinkten Beitrag, welcher nochmal auf GitHub verlinkt ist gefunden.
        Dort hast Du ja auch schon beim Entwickler angefragt.

        1 Reply Last reply Reply Quote 0
        • Mappy
          Mappy last edited by Mappy

          Ja versuche den schon auf mehre Arten zu erreichen. Bisher war alles erfolglos. Habs parallel Jetzt auch nochmal bei Github versucht.

          Habe oben meine var durationInMinutes = 30; auf 3 gesetzt zum testen. (Wegen den Abweichungen)

          var inSunrise = false;
          var alarmTimes = [];
          
          var alexaDevice = '[The id of your alexa device that is used for the wakeup alarm.]';
          var hueDevice = '[The id of the Hue device or group that is used for the sunrise]';
          var durationInMinutes = 30;
          
          schedule("*/5 * * * *", function () {
              collectAlarmTimesFromAlexa(alexaDevice);
              processAlarmTimes(hueDevice, durationInMinutes);
          });
          
          function collectAlarmTimesFromAlexa(deviceId) {
              console.log("Collecting alarms from "+deviceId);
              var currentAlarmTimes = [];
              collectAlarmTimesOfCategoryFromAlexa(deviceId, 'Alarm', currentAlarmTimes);
              collectAlarmTimesOfCategoryFromAlexa(deviceId, 'MusicAlarm', currentAlarmTimes);
              // Synchronize the global alarm times with the current ones:
              synchronizeAlarmLists(currentAlarmTimes, alarmTimes);
          }
          
          function collectAlarmTimesOfCategoryFromAlexa(deviceId, category, currentAlarmTimes) {
              var alarmEntries = $('state[id='+deviceId+'.'+category+'.*]');
          
              var lastAlarmId = '';
              var isEnabled = false;
              var alarmTime = null;
              
              alarmEntries.each(function (id, i) {
                  var alarmId = getId(id);
                  if (alarmId!='Alarm') {
                      if (alarmId!=lastAlarmId) {
                          // Next alarm entry reached - process the current one
                          addAlarmTime(isEnabled, alarmTime, currentAlarmTimes);
                          // Reset current values to process the next alarm entry:
                          isEnabled = false;
                          alarmTime = null;
                          lastAlarmId = alarmId;
                      }
          
                      var state = getState(id);
                      var entryType = getEntryType(id);
                      if (entryType=='enabled') {
                          isEnabled = state.val===true;
                      } else if (entryType=='time') {
                          alarmTime = getAlarmTime(state.val);
                      }
                  }
              });
              // The last entry was not processed, so we have to process it now:
              addAlarmTime(isEnabled, alarmTime, currentAlarmTimes);
          }
          
          function getId(objectId) {
              var stringParts = objectId.split('.');
              return stringParts[stringParts.length-2];
          }
          
          function getEntryType(objectId) {
              var stringParts = objectId.split('.');
              return stringParts[stringParts.length-1];
          }
          
          function getAlarmTime(alarmTimeString) {
              // Alexa only stores the time of the alarm. In order to be able to 
              // process this time we have to add the correct date:
              var alarmTime = new Date('1970-01-01T' + alarmTimeString);
              var currentTime = new Date();
              alarmTime.setMonth(currentTime.getMonth());
              alarmTime.setFullYear(currentTime.getFullYear());
              alarmTime.setDate(currentTime.getDate());
              // If the current time is greater than the alarm time the alarm must be on the next day:
              if (currentTime.getTime()>alarmTime.getTime()) {
                  alarmTime.setDate(currentTime.getDate()+1);
              }
              return alarmTime;
          }
          
          function addAlarmTime(isEnabled, alarmTime, alarmTimes) {
              if (isEnabled && (alarmTime!=null)) {
                  alarmTimes.push(alarmTime);
              }        
          }
          
          function synchronizeAlarmLists(currentAlarmTimes, allAlarmTimes) {
              // Add all new entries to the global alarm entries:
              currentAlarmTimes.forEach(function (alarmTime) {
                  if (!isInList(alarmTime, allAlarmTimes)) {
                      console.log("Adding alarm at "+alarmTime);
                      allAlarmTimes.push(alarmTime);
                  }
              });
              // Remove the global alarm entries that don't exist anymore:
              var i = allAlarmTimes.length;
              while (i--) {
                  var alarmTime = allAlarmTimes[i];
                  console.log(i+': '+alarmTime);
                  if (!isInList(alarmTime, currentAlarmTimes)) {
                      console.log("Removing alarm at "+alarmTime+" because it doesn't exist anymore.");
                      allAlarmTimes.splice(i, 1);
                  }
              }
          }
          
          function isInList(alarmTime, alarmTimes) {
              for (var alarmTimeFromList of alarmTimes) {
                  if (timesAreEqual(alarmTime, alarmTimeFromList)) {
                      return true;
                  }
              }
              return false;
          }
          
          function timesAreEqual(time1, time2) {
              // Alexa only stores the time for the alarm but we need the date as well.
              // So for checking if a time already exists in the list we only compare the time.
               return ((time1.getHours()==time2.getHours()) && (time1.getMinutes()==time2.getMinutes()));
          }
          
          function processAlarmTimes(hueGroupId, durationInMinutes) {
              if (!inSunrise) {
                  alarmTimes.forEach(function(alarmTime) {
                      processAlarmTime(alarmTime, hueGroupId, durationInMinutes);
                  });
              }
          }
          
          function processAlarmTime(alarmTime, hueGroupId, durationInMinutes) {
              console.log('Alarm will be triggered at '+alarmTime);
              var startTime = new Date(alarmTime);
              startTime.setMilliseconds(alarmTime.getMilliseconds()-(durationInMinutes*60000))
              console.log('Sunrise starts at '+startTime);
              var currentTime = new Date();
              console.log('Current time is '+currentTime);
              if (currentTime>=startTime) {
                  doSunrise(hueGroupId, durationInMinutes);
              }
          }
          
          function doSunrise(hueGroupId, durationInMinutes) {
              console.log('Initiating sunrise...');
              inSunrise = true;
              var steps = 10;
              var intervalTime = (durationInMinutes*60000)/steps;
              var brightness = 1;
              var temperature = 2200;
              var tempSpan = (6000-2200); //temperature span of the hue bulb
          
              setState(hueGroupId+'.on', true, false);
              setState(hueGroupId+'.level', brightness, false);
              setState(hueGroupId+'.ct', temperature, false);
          
              var interval = setInterval(function () {
                  brightness = Math.round(brightness+100/steps);
                  temperature = Math.round(temperature+tempSpan/steps);
          
                  if (brightness>101) {
                      clearInterval(interval);
                      inSunrise = false;
                  }
          
                  console.log('Brightness: '+brightness);
                  console.log('Temperature: '+temperature);
          
                  setState(hueGroupId+'.level', brightness, false);
                  setState(hueGroupId+'.ct', temperature, false);
              }, intervalTime);
          }
          
          dslraser 1 Reply Last reply Reply Quote 0
          • dslraser
            dslraser Forum Testing Most Active @Mappy last edited by

            @Mappy sagte in Hilfe zum Alexa Hue Wecker:

            Ja aber leider keine Antwort bekommen

            das ist doch erst Minuten her 😊
            Bildschirmfoto 2019-08-23 um 17.57.55.png

            Mappy 1 Reply Last reply Reply Quote 0
            • Mappy
              Mappy @dslraser last edited by Mappy

              @dslraser said in Hilfe zum Alexa Hue Wecker:

              @Mappy sagte in Hilfe zum Alexa Hue Wecker:

              Ja aber leider keine Antwort bekommen

              das ist doch erst Minuten her 😊
              Bildschirmfoto 2019-08-23 um 17.57.55.png

              Hatte das schon übers Forum vor ein paar Tagen und so versucht. Bei Github jetzt eben parallel. Die Idee kam mir aber auch erst eben.
              Dachte nur vielleicht durchschaut das beim Code das geschulte Auge vom Profi, da ich nur blutiger Anfänger bin.

              dslraser 2 Replies Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active @Mappy last edited by

                @Mappy
                Was soll ich sagen, Script eingestellt, Wecker gestellt und es funktioniert wie es soll. Licht ging auch so allmählich an...

                Hier ein Auszug vom Log, wenn ich denn alles richtig erwischt habe

                2019-08-23 18:08:00.688 - info: javascript.0 Stop script script.js.Heiko.11Test.HUE-Wecker
                2019-08-23 18:08:00.698 - info: javascript.0 Start javascript script.js.Heiko.11Test.HUE-Wecker
                2019-08-23 18:08:00.702 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: registered 0 subscriptions and 1 schedule
                2019-08-23 18:10:00.003 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Collecting alarms from alexa2.0.Echo-Devices.xxx
                2019-08-23 18:15:00.004 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Collecting alarms from alexa2.0.Echo-Devices.xxx
                2019-08-23 18:20:00.004 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Collecting alarms from alexa2.0.Echo-Devices.xxx
                2019-08-23 18:20:00.019 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Adding alarm at Fri Aug 23 2019 18:30:00 GMT+0200 (GMT+02:00)
                2019-08-23 18:20:00.019 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: 0: Fri Aug 23 2019 18:30:00 GMT+0200 (GMT+02:00)
                2019-08-23 18:20:00.020 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Alarm will be triggered at Fri Aug 23 2019 18:30:00 GMT+0200 (GMT+02:00)
                2019-08-23 18:20:00.020 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Sunrise starts at Fri Aug 23 2019 18:00:00 GMT+0200 (GMT+02:00)
                2019-08-23 18:20:00.020 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Current time is Fri Aug 23 2019 18:20:00 GMT+0200 (GMT+02:00)
                2019-08-23 18:20:00.020 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Initiating sunrise...
                2019-08-23 18:23:00.021 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Brightness: 11
                2019-08-23 18:23:00.021 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Temperature: 2580
                2019-08-23 18:25:00.014 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Collecting alarms from alexa2.0.Echo-Devices.xxx
                2019-08-23 18:25:00.040 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: 0: Fri Aug 23 2019 18:30:00 GMT+0200 (GMT+02:00)
                2019-08-23 18:26:00.021 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Brightness: 21
                2019-08-23 18:26:00.022 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Temperature: 2960
                2019-08-23 18:29:00.021 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Brightness: 31
                2019-08-23 18:29:00.022 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Temperature: 3340
                2019-08-23 18:30:00.004 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Collecting alarms from alexa2.0.Echo-Devices.xxx
                2019-08-23 18:30:00.016 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: 0: Fri Aug 23 2019 18:30:00 GMT+0200 (GMT+02:00)
                2019-08-23 18:35:00.005 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Collecting alarms from alexa2.0.Echo-Devices.xxx
                2019-08-23 18:35:00.017 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: 0: Fri Aug 23 2019 18:30:00 GMT+0200 (GMT+02:00)
                2019-08-23 18:35:00.017 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Removing alarm at Fri Aug 23 2019 18:30:00 GMT+0200 (GMT+02:00) because it doesn't exist anymore.
                2019-08-23 18:35:00.021 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Brightness: 51
                2019-08-23 18:35:00.022 - info: javascript.0 script.js.Heiko.11Test.HUE-Wecker: Temperature: 4100
                

                Stimmen die Uhrzeiten in Deinem System und auf den Echos ? ( in der Alxa App mal nachgesehen ? )

                1 Reply Last reply Reply Quote 0
                • dslraser
                  dslraser Forum Testing Most Active @Mappy last edited by

                  @Mappy
                  Welche JS Adapter Version benutzt Du ?

                  1 Reply Last reply Reply Quote 0
                  • Mappy
                    Mappy last edited by Mappy

                    Iobroker läuft auf Docker auf meiner Synology das geht auch soweit gut.
                    Systemzeit Synology Passt. Systemzeit Iobroker passt auch und bei Alexa auch.. auch der Standort von Alexa passt.
                    Kann man im Script nicht was ändern -60min oder so. Dann würde ich das Problem ja einfach umgehen können.

                    Das meine Java Version:

                    d7c17f2f-5e49-4e70-b23c-aeb93535f07a-image.png

                    Lichter schalten etc funktioniert alles komplett korrekt im Iobroker zeitlich

                    1 Reply Last reply Reply Quote 0
                    • Mappy
                      Mappy last edited by

                      Das komische ist. Selbst wenn ich die Zeitzone von meinem Alexa verändere auf zb. Indischen Ozean. Das Ding ne völlig falsche Zeit hat und ich nen Timer setze für 16 Uhr wird er als 17 uhr ausgelesen. Die Zeit des Alexas macht also nicht den Fehler.

                      Current Time Iobroker wird aber auch als richtig angezeigt.
                      Ich habe keine Ahnung woran es liegt. Kann mir nur vorstellen, dass ich es hinbiegen kann, wenn mir jemand nen Tipp gibt wie ich das abändern kann, wenn er hat fälschlicher Weise 17 Uhr ausliest dass man das dann noch -60min durchs Script verändert

                      FredF dslraser 3 Replies Last reply Reply Quote 0
                      • FredF
                        FredF Most Active Forum Testing @Mappy last edited by

                        @Mappy Stimmt die Zeit auf deinem Grundsystem auf dem ioBroker läuft?

                        Mappy 1 Reply Last reply Reply Quote 0
                        • dslraser
                          dslraser Forum Testing Most Active @Mappy last edited by

                          @Mappy
                          Ich nutze auch Docker (für ioBroker) auf der Synology. Hast Du mal da geschaut ?

                          Systemzeit
                          Bildschirmfoto 2019-08-24 um 12.28.16.png

                          Einstellung
                          Bildschirmfoto 2019-08-24 um 12.28.53.png

                          1 Reply Last reply Reply Quote 0
                          • dslraser
                            dslraser Forum Testing Most Active @Mappy last edited by

                            @Mappy
                            und noch zwei Sachen die Du schauen kannst. Stimmen die Koordinaten und Ort Land usw ?
                            auf den Schlüssel klicken
                            Bildschirmfoto 2019-08-24 um 12.38.00.png

                            was ist hier im Javascript Adapter/Astro-Einstellungen eingestellt ?
                            Bildschirmfoto 2019-08-24 um 12.39.35.png

                            ansonsten habe ich noch das hier gefunden
                            https://forum.iobroker.net/topic/13978/gelöst-uhrzeit-falsch

                            Mappy 1 Reply Last reply Reply Quote 0
                            • Mappy
                              Mappy @FredF last edited by

                              @FredF
                              0d3b581b-448e-43e9-950d-258dbb4f0822-image.png

                              Ja die stimmt auch. Hatte ich auch schon im Verdacht.

                              1 Reply Last reply Reply Quote 0
                              • Mappy
                                Mappy @dslraser last edited by Mappy

                                @dslraser

                                Ja das hatte ich auch bereits im Verdacht und nachgesehen. Stimmt aber (leider) auch.
                                Gleiches gilt für den JavaScript Adapter.
                                Versteh es einfach nicht, dass da alle Zeiten stimmen, die korrekten Alarmzeiten unter den Alexa devices auch drin sind im Iobroker und dann beim Auslesen die Zeit + 1 Stunde genommen wird.

                                a2be5977-8806-4902-b21a-fce448271392-image.png

                                c51e5890-9ab6-47b2-95b0-1590543021c0-image.png

                                1 Reply Last reply Reply Quote 0
                                • Mappy
                                  Mappy last edited by Mappy

                                  Habe auch nochmal mit sudo dpkg-reconfigure tzdata meine Zeitzone ausgewählt. Aber im Iobroker log steht ja auch bei Current Time vom Script die richtige aktuelle Uhrzeit.

                                  Auch das Testscript mit:

                                  log(new Date());

                                  Ergibt die richtige Uhrzeit.

                                  1 Reply Last reply Reply Quote 0
                                  • Mappy
                                    Mappy last edited by

                                    6f5962a9-e846-4219-af6c-5eb8f8aafda7-image.png

                                    Das stimmt auch.

                                    1 Reply Last reply Reply Quote 0
                                    • Mappy
                                      Mappy last edited by Mappy

                                      Was mich stutzig macht ist das Log wo er ausliest beim Alexa Wecker:

                                      Adding alarm at Sat Aug 24 2019 22:00:00 GMT+0200 (CEST)

                                      Aber in der Alexa Einstellung steht das hier und die Uhrzeit wird auf meinem Alexa auch korrekt angezeigt:

                                      88bf1f44-1913-464f-8f90-0a7927cff772-image.png

                                      dslraser 1 Reply Last reply Reply Quote 0
                                      • Mappy
                                        Mappy last edited by

                                        ioBroker.admin 3.6.2

                                        Sollte doch passen oder ?

                                        1 Reply Last reply Reply Quote 0
                                        • dslraser
                                          dslraser Forum Testing Most Active @Mappy last edited by dslraser

                                          @Mappy sagte in Hilfe zum Alexa Hue Wecker:

                                          Was mich stutzig macht ist das Log wo er ausliest beim Alexa Wecker:

                                          Adding alarm at Sat Aug 24 2019 22:00:00 GMT+0200 (CEST)

                                          Aber in der Alexa Einstellung steht das hier und die Uhrzeit wird auf meinem Alexa auch korrekt angezeigt:

                                          88bf1f44-1913-464f-8f90-0a7927cff772-image.png

                                          Ich habe gerade mal bei meinen ECHOS reingesehen. Die stehen auf Mitteleuropäsche Sommerzeit Paris
                                          Warum auch immer ??? (war damals, vor langer Zeit, keine andere Auswahl möglich.) Aber das sollte ja nicht der Grund sein, oder ?

                                          Mappy 1 Reply Last reply Reply Quote 0
                                          • Mappy
                                            Mappy @dslraser last edited by

                                            @dslraser

                                            Neee das bringt auch keine Veränderung

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            756
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            25
                                            1374
                                            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