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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    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

      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
                                        • Mappy
                                          Mappy last edited by Mappy

                                          Bringt es was vielleicht den Iobroker updazudaten ? Hat der vielleicht irgendwo nen Bug, oder muss man den nicht manuell updaten ? Bzw. falls ja wie macht man das unter Synology ohne die ganze Konfiguration zu verlieren ?

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

                                            Also. Habe Iobroker aktualisiert und siehe da es geht. Muss jetzt leider nur die Adapter neu aufsetzen und einstellen und die ganzen Daten neu manuell übernehmen. Nello etc. Das bedeutet nen bissel Arbeit. Aber der Fehler scheint damit gefunden.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            539
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

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