Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Astro-/Zeitvergleich, Sonnenuntergang != Sonnenuntergang

    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

    Astro-/Zeitvergleich, Sonnenuntergang != Sonnenuntergang

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

      @buryjones
      Prüfe mal, ob evtl. die Zeiten nicht passen:

      Blockly_temp.JPG

      Links im Log steht der Trigger-Zeitpunkt, rechts die Zeit der Abfrage von SU, die kleiner oder gleich dem Trigger-Zeitpunkt sein muss.

      EDIT: Um nicht bis SU warten zu müssen:

      Blockly_temp.JPG

      B 2 Replies Last reply Reply Quote 0
      • B
        BuryJones @paul53 last edited by

        @paul53 Gute Idee, danke. Habe ich umgesetzt, melde mich dann zurück

        1 Reply Last reply Reply Quote 0
        • B
          BuryJones @paul53 last edited by BuryJones

          @paul53 Guten Abend. Alle beide Astro-Trigger deines Vorschlages triggern zur richtigen Zeit. Ich habe nun dann auch zusätzlich noch den dusk/Abenddämmerung (17:00 Uhr) ausgetestet. Auch dieser triggert zur richtigen Zeit.

          Jedoch besteht das Vergleichsproblem, sowohl bei Sonnenuntergang als auch bei Abenddämmerung (eben im Test). Die Vordach-Lampen wurden nicht angeschaltet, weil beim Auslösen des Triggers es (angeblich) nicht Sonnenuntergang oder Abenddämmerung war. Etwas später hat es dann - wie eingangs beschrieben - funktioniert.

          Natürlich könnte man versuchen, alles in utc umzurechnen oder mit timestamps zu arbeiten, aber das wäre unnötig kompliziert. Zumal in Blockly ja die entsprechenden Vergleichsmethoden und Astrofunktionen bereitstehen.

          Hier der Log von dusk (17:00)

          2024-12-07 17:00:56.168  - info: javascript.0 (606) script.js.tests.astro: 17:00:56.165
          2024-12-07 17:00:56.185  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Vordach: Beginne autoLightCheck
          2024-12-07 17:00:56.185  - info: javascript.0 (606) script.js.packages.autoLight.vordach: autoLightVordach ist aktiv. Prüfe Zeitrahmen (Sonnenuntergang bis Mitternacht)
          2024-12-07 17:00:56.186  - info: javascript.0 (606) script.js.packages.autoLight.vordach: CheckAutoLight sagt: 17:00:56.186
          2024-12-07 17:00:56.187  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Außerhalb des Zeitrahmens. Schalte Lichter aus.
          2024-12-07 17:00:56.188  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Vordach: Ende autoLightCheck
          

          Danke weiterhin.

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @BuryJones last edited by paul53

            @buryjones sagte:

            2024-12-07 17:00:56.168  - info: javascript.0 (606) script.js.tests.astro: 17:00:56.165
            

            17:00:56.165 ist vor dem Trigger-Zeitpunkt 17:00:56.168. Also muss die Prüfung funktionieren.

            B 1 Reply Last reply Reply Quote 0
            • B
              BuryJones @paul53 last edited by

              @paul53 Hier die Ausgaben:

              2024-12-07 15:25:43.532  - info: javascript.0 (606) script.js.tests.astro: 15:25:43.530
              
              2024-12-07 16:22:43.982  - info: javascript.0 (606) script.js.tests.astro: 16:22:43.905
              

              Und von "Dusk" steht es in meiner vorherigen (editierten) Antwort (erste Zeile), dann folgen die Licht-Logs.

              Danke.

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @BuryJones last edited by

                @buryjones sagte: Hier die Ausgaben:

                Die Trigger erfolgen in allen 3 Fällen wenige ms nach dem Vergleichswert.

                B 1 Reply Last reply Reply Quote 0
                • Codierknecht
                  Codierknecht Developer Most Active @BuryJones last edited by

                  @buryjones sagte in Astro-/Zeitvergleich, Sonnenuntergang != Sonnenuntergang:

                  Innerhalb dieses Triggers prüfe ich, ob die aktuelle Zeit zwischen Sonnenuntergang und Mitternacht ist

                  Wozu das?
                  Wenn der Trigger feuert, ist Sonnenuntergang. Da muss ich doch nicht noch prüfen, ob das auch stimmt.

                  Ich persönlich würde dafür auch nicht zwei Trigger verwenden, sondern alles in einen packen.

                  B 1 Reply Last reply Reply Quote 0
                  • B
                    BuryJones @paul53 last edited by

                    @paul53 Genau, deswegen schrieb ich dann vorhin oben: "auch dieser triggert zur richtigen Zeit". Ggf funktionieren die Trigger zur richtigen Zeit nun aufgrund meiner ganzen Updates oder den reboots. Keine Ahnung.

                    Die Frage ist dann nur noch, warum der Vergleich nicht funktioniert. Wenn der Trigger sagt, es sei Sonnenuntergang und danach gefragt wird: "ist es zwischen (/bzw. gleich oder größer gleich) Sonnenuntergang)", warum dann eine gewisse Zeit ein falsches Ergebnis geliefert wird.

                    paul53 1 Reply Last reply Reply Quote 0
                    • B
                      BuryJones @Codierknecht last edited by

                      @codierknecht said in Astro-/Zeitvergleich, Sonnenuntergang != Sonnenuntergang:

                      Wozu das?

                      Das liegt daran, dass es sich als äußerst schlecht erwiesen hat, nur auf dieses Ereignis zu setzen. Wenn der iobroker zu der Zeit nicht an ist (defekt o.ä.) oder aus einem anderen Grund der Sonnenuntergang verpasst wird, sind die Lampen nicht an. Deswegen habe ich die Geschichte mit "checkAutoLight" eingebaut, sodass man via Tastendruck, Astro-Ereignis, Sprachkommando etc. jederzeit diese Prüfung triggern kann. Deshalb auch innerhalb dessen nochmal die Zeitprüfung.

                      Codierknecht 1 Reply Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @BuryJones last edited by Codierknecht

                        @buryjones sagte in Astro-/Zeitvergleich, Sonnenuntergang != Sonnenuntergang:

                        Das liegt daran, dass es sich als äußerst schlecht erwiesen hat, nur auf dieses Ereignis zu setzen. Wenn der iobroker zu der Zeit nicht an ist (defekt o.ä.) oder aus einem anderen Grund der Sonnenuntergang verpasst wird

                        Kann ich nicht nachvollziehen.
                        Bei mir läuft der Kram seit Jahren superstabil. Für irgendwelche Sonderlocken sehe ich daher keine Notwendigkeit.

                        B 1 Reply Last reply Reply Quote 0
                        • B
                          BuryJones @Codierknecht last edited by

                          @codierknecht Ja klar läuft der iobroker stabil. Das ist ja auch keine Frage. Bei uns zuhause gibt es aber Anwendungsfälle - abseits und extern vom iobroker-ökosystem - bei denen wir manuell in die Beleuchtung eingreifen müssen/wollen. Ein "defekt" war auch nur auf Wartung/reboot/Änderung am pi gemünzt und kein Absturz vom iobroker. Keine Angst.

                          Auch ist es oft so, dass wir draußen grillen und die Beleuchtung auf manuell schalten. In diesem Fall dann bunt etc. Dann wollen wir später wieder in den auto-modus zurückkehren. So setzen wir dann per Tastendruck "checkAutoLight" auf true und alles sollte wieder automatisch laufen - wie zum Zeitpunkt des Sonnenuntergangs.

                          Also, das hat nichts mit "Sonderlocken" wegen Instabilität etc.pp. zu tun. Das hat die Bedienung und das "gelebte Leben" mitsich gebracht.

                          1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @BuryJones last edited by

                            @buryjones sagte: warum dann eine gewisse Zeit ein falsches Ergebnis geliefert wird.

                            Ändere mal deine Logs von:

                            Blockly_temp.JPG

                            in:

                            Blockly_temp.JPG

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

                              @BuryJones

                              Ich meine mit den zwei Triggern auch eher diese Aussage:

                              Ein Blockly hat einen Astro-Trigger auf "Sonnenuntergang" mit Verzögerung 0. Dieser Trigger wird zuverlässig ausgeführt. Innerhalb dieses Triggers prüfe ich, ob die aktuelle Zeit zwischen Sonnenuntergang und Mitternacht ist.

                              Ein anderes Blockly triggert auch bei Sonnenuntergang

                              Das würde ich in einen eizigen Trigger packen.

                              Und innerhalb eines Triggers auf "Sonnenuntergang" macht es wenig Sinn zu prüfen, ob auch wirklich Sonnenuntergang ist.

                              B 1 Reply Last reply Reply Quote 0
                              • B
                                BuryJones @Codierknecht last edited by BuryJones

                                @codierknecht Achso. Da gebe ich dir Recht. Hier mal die Struktur, damit es verständlicher wird.

                                Ich habe für jeden Raum / Bereich ein "autoLight"-Skript. Es reagiert dann, wenn "checkAutoLight" true wird (bei Aktualisierung). Derzeit habe ich da "Vordach", "Seitenlicht", "Garage" drin.

                                Der Trigger (den ich hier gepostet habe) führt zur Reaktion der drei Bereiche. Der andere Bereich "Balkon" ist noch von damals, den habe ich noch nicht auf die neue Struktur umgestellt. Damals hatte jeder seinen eigenen Sonnenuntergangs-Trigger. Davon wollte ich ja weg, damit ich diesen Check auch per Tastendruck etc. manuell triggern kann. AutoLight soll also nicht nur vom Sonnenuntergang, sondern auch von allen anderen möglichen Szenarien triggerbar sein. Deswegen auch die "innere Prüfung" auf die Zeit zwischen Sonnenuntergang und Mitternacht.

                                Beim Vordach ist es nämlich so, dass bei Sonnenuntergang das Licht warmweiß und 10% ist. Bei Bewegung (Bewegungsmelder) dann zu 100%. Nach Mitternacht ist das Licht am Vordach komplett aus, bei Bewegung zu 100% an und nach Bewegung auf 0%.

                                EDIT: Und alle Bereiche können einzeln per Variable deaktiviert, festgestellt oder eben aktiviert werden.

                                Den neuen Logvorschlag werde ich morgen früh implementieren und das Ergebnis sobald möglich posten.

                                Danke.

                                1 Reply Last reply Reply Quote 0
                                • B
                                  BuryJones last edited by BuryJones

                                  Guten Tag und einen frohen zweiten Advent!

                                  Ich habe den Trigger mal auf SolarNoon (Sonnenmittag) gesetzt, um eine weitere Möglichkeit zum Testen zu nutzen. Dies war eben um 12:17 Uhr und es trat gleiches Fehlerbild auf. Die Prüfung war unverändert auf "aktuelle Zeit größer als oder gleich solarnoon". Erst außerhalb des Zeitrahmens, dann beim manuellen re-triggern von "checkAutoLight" etwas später true. Hier beide Logs.

                                  Astro-Trigger (hat checkAutoLight auf true gesetzt und Vordach hat reagiert).

                                  2024-12-08 12:17:03.885  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Vordach: Beginne autoLightCheck
                                  2024-12-08 12:17:03.887  - info: javascript.0 (606) script.js.packages.autoLight.vordach: solarNoon: 12:17:03.846
                                  2024-12-08 12:17:03.888  - info: javascript.0 (606) script.js.packages.autoLight.vordach: CheckAutoLight sagt: 12:17:03.887
                                  2024-12-08 12:17:03.888  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Außerhalb des Zeitrahmens. Schalte Lichter aus.
                                  2024-12-08 12:17:03.889  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Vordach: Ende autoLightCheck
                                  

                                  Manueller Trigger (hat checkAutoLight auf true gesetzt und Vordach hat reagiert).

                                  2024-12-08 12:18:03.124  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Vordach: Beginne autoLightCheck
                                  2024-12-08 12:18:03.126  - info: javascript.0 (606) script.js.packages.autoLight.vordach: solarNoon: 12:17:03.846
                                  2024-12-08 12:18:03.132  - info: javascript.0 (606) script.js.packages.autoLight.vordach: CheckAutoLight sagt: 12:18:03.131
                                  2024-12-08 12:18:03.132  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Innerhalb des Zeitrahmens. Schalte Lichter an.
                                  2024-12-08 12:18:03.139  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Vordach: Ende autoLightCheck
                                  2024-12-08 12:18:03.219  - info: javascript.0 (606) script.js.packages.autoLight.vordach: xmas mood. xmas lights!
                                  

                                  EDIT: Hier noch das Foto vom Blockly
                                  Bildschirmfoto 2024-12-08 um 12.36.55.png

                                  Könnte es mit den Millisekunden zu tun haben? Oder das "aktuelle Zeit" keine Millisekunden im Vergleichsformat hat und die Astrozeiten aber schon bzw. umgekehrt?

                                  paul53 2 Replies Last reply Reply Quote 0
                                  • paul53
                                    paul53 @BuryJones last edited by paul53

                                    @buryjones sagte: Könnte es mit den Millisekunden zu tun haben?

                                    Dann würden auch die Logs keine ms zeigen.

                                    1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @BuryJones last edited by paul53

                                      @buryjones sagte: "aktuelle Zeit" keine Millisekunden im Vergleichsformat hat und die Astrozeiten aber schon

                                      Du könntest richtig liegen. Im Javascript-Code von compareTime(startTime, endTime, operation, time) taucht das auf:

                                                  } else if (!time) {
                                                      time = new Date();
                                                      time.setMilliseconds(0);
                                                  }
                                      

                                      Dann sollte es mit einem Offset von -1 Minute im Vergleich funktionieren.

                                      EDIT: Gerade mit Abenddämmerung und Offset -1 Minute im Vergleich erfolgreich getestet.

                                      B 1 Reply Last reply Reply Quote 0
                                      • B
                                        BuryJones @paul53 last edited by

                                        @paul53 Guten Abend, wir hatten eben eine kleine Adventfeier. Daher die Verzögerung.

                                        Ja genau das habe ich zur "Goldenen Stunde" ausprobiert und das ist - mit deiner Quelltext-Fund passend - des Rätsels Lösung. Der Trigger triggert auf das Astro-Ereignis und in dem Vergleich wird -1 Minute gerechnet, dann funktioniert es perfekt.

                                        Astro "Golden Hour" - Vordach funktioniert, Seitenlich mit Absicht noch nicht umgestellt.

                                        2024-12-08 15:25:17.481  - info: javascript.0 (606) script.js.packages.autoLight.autoLightTrigger: Sonnenuntergang-Trigger um: 15:25:17.480
                                        2024-12-08 15:25:17.500  - info: javascript.0 (606) script.js.packages.autoLight.seitenlicht: Seitenlicht: Beginne autoLightCheck
                                        2024-12-08 15:25:17.501  - info: javascript.0 (606) script.js.packages.autoLight.seitenlicht: autoLightSeitenlicht ist aktiv. Prüfe Zeitrahmen (Sonnenuntergang bis Mitternacht)
                                        2024-12-08 15:25:17.502  - info: javascript.0 (606) script.js.packages.autoLight.seitenlicht: Außerhalb des Zeitrahmens. Schalte Lichter aus.
                                        2024-12-08 15:25:17.502  - info: javascript.0 (606) script.js.packages.autoLight.seitenlicht: Seitenlicht: Ende autoLightCheck
                                        2024-12-08 15:25:17.503  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Vordach: Beginne autoLightCheck
                                        2024-12-08 15:25:17.504  - info: javascript.0 (606) script.js.packages.autoLight.vordach: solarNoon: 15:24:17.478
                                        2024-12-08 15:25:17.505  - info: javascript.0 (606) script.js.packages.autoLight.vordach: CheckAutoLight sagt: 15:25:17.505
                                        2024-12-08 15:25:17.505  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Innerhalb des Zeitrahmens. Schalte Lichter an.
                                        2024-12-08 15:25:17.506  - info: javascript.0 (606) script.js.packages.autoLight.vordach: Vordach: Ende autoLightCheck
                                        

                                        Ein weiterer Test bzw. die Umstellung auf "Sonnenuntergang" hat auch korrekt funktioniert. Trigger und Ausführung mit Vergleich -1 Minute hat geklappt.

                                        Die Frage ist nun, wie man weiter damit umgeht (Nutzer (wie ich) und Entwickler (wie ihr)). Man könnte es als Bug bezeichnen. Man könnte den Quelltext an der Stelle ändern - was das für Auswirkungen haben könnte, habe ich nicht geprüft. Ich wäre auch fein damit, eben eine Zeitspanne zu subtrahieren (Minute, Sekunde etc...).

                                        Wäre toll, wenn jemand noch etwas dazu sagen würde.

                                        Ich bedanke mich jedenfalls jetzt schon mal für die ausführliche, tolle Hilfe. Können aber gerne weiter über dieses Thema reden.

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        920
                                        Online

                                        31.9k
                                        Users

                                        80.1k
                                        Topics

                                        1.3m
                                        Posts

                                        4
                                        21
                                        679
                                        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