Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Astro-/Zeitvergleich, Sonnenuntergang != Sonnenuntergang

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    816

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Astro-/Zeitvergleich, Sonnenuntergang != Sonnenuntergang

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
21 Beiträge 4 Kommentatoren 1.3k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • B BuryJones

    @paul53 Vielen Dank für deine schnelle Antwort. Das war lange Zeit meine Ursprungsversion bzgl. des Zeitvergleichs. Genau diesen Block meinte ich mit meiner Aussage "... ob die aktuelle Zeit zwischen Sonnenuntergang und Mitternacht ist". Gestern habe ich den Block gelöscht und auf den Vergleich wie er jetzt ist umgestellt - und mich heute dann entschieden, um Hilfe zu fragen.

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #4

    @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

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    B 2 Antworten Letzte Antwort
    0
    • paul53P 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 Offline
      B Offline
      BuryJones
      schrieb am zuletzt editiert von
      #5

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

      1 Antwort Letzte Antwort
      0
      • paul53P 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 Offline
        B Offline
        BuryJones
        schrieb am zuletzt editiert von BuryJones
        #6

        @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.

        paul53P 1 Antwort Letzte Antwort
        0
        • B 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.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #7

          @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.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          B 1 Antwort Letzte Antwort
          0
          • paul53P 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 Offline
            B Offline
            BuryJones
            schrieb am zuletzt editiert von
            #8

            @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.

            paul53P 1 Antwort Letzte Antwort
            0
            • B BuryJones

              @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.

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #9

              @buryjones sagte: Hier die Ausgaben:

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

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              B 1 Antwort Letzte Antwort
              0
              • B BuryJones

                Hallo,

                ich habe ein merkwürdiges Problem mit dem Astro-Trigger auf Sonnenuntergang und einem anschließenden Zeitvergleich. Vorab: ja, ich habe über mehrere Tage (an verschiedenen Wochenenden) die Suche bemüht, etliches versucht und komme aber tatsächlich nicht weiter. Eins noch: Ich bin Programmierer, komme also mit Javascript gut zurecht, jedoch nutze ich der Bequemlichkeit halber fast ausschließlich Blockly.

                Vorab: Ich weiß nicht, ob es am Astro-Trigger oder am Zeitvergleich liegt.

                Ich habe folgende Situation mit zwei Merkwürdigkeiten:

                1. 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. Wenn ja, schalte ich die Außenbeleuchtung an. Das Prüfungsergebnis ist jedoch, dass es nicht zwischen Sonnenuntergang und Mitternacht ist. Auch eine Prüfung "Aktuelle Zeit ist gleich oder größer als Sonnenuntergang" ist false. Ein späterer Test (später als 5 Minuten (manchmal aber auch 3 oder 7)) wird dann true.

                2. Ein anderes Blockly triggert auch bei Sonnenuntergang und schaltet am Balkon einen LED-Streifen an. Dieser Trigger triggert nicht gleichzeitig mit dem Außenbeleuchtungs-Trigger. Der Versatz kommt nicht von mir. Er triggert einfach später, aber zu der Zeit, die auch unter der Instanz "javascript.0.astro.sunset" als Zeit steht.

                Beide Trigger haben das gleiche Blockly-/Javascript-Funktion und sehen wie folgt aus:

                Dieser Trigger wird zeitlich Minuten vor dem "Balkon-Trigger" ausgeführt und stimmt auch zeitlich nicht mit javascript.0.astro.sunset überein.

                /**
                checkAutoLight ist ein benutzerdefinierter Datenpunkt, der bei Sonnenuntergang oder
                manuellem Tastendruck oder reboot auf true gesetzt wird. Auf checkAutoLight reagieren
                die Räume/Lichter und prüfen, ob die vss. für die automatische Beleuchtung vorliegen.
                */
                schedule({ astro: 'sunset', shift: 0 }, async () => {
                  console.info(('Sonnenuntergang-Trigger um: ' + String(formatDate(new Date(), 'hh:mm:ss.sss'))));
                  setState('alias.0.packages.autoLight.checkAutoLight.SET' /* CheckAutoLight */, true);
                });
                

                Diese Prüfung schlägt zunächst mit false fehl, obwohl ja gerade Sonnenuntergang getriggered wurde / stattfand.

                /**
                Wenn checkAutoLight getriggered wurde, prüfe, ob autoLight für den Raum xy aktiv 
                ist und falls ja, ob der Zeitrahmen (zw. Sonnenuntergang und Mitternacht) vorliegt. 
                Wenn ja, schalte das Licht an, etc...
                */
                on({ id: [].concat(['alias.0.packages.autoLight.checkAutoLight.SET']), change: 'any' }, async (obj) => {
                  let value = obj.state.val;
                  let oldValue = obj.oldState.val;
                  console.info('Vordach: Beginne autoLightCheck');
                  if ((getState('0_userdata.0.config.packages.autoLight.autoLightEnabled').val == true) && (getState('0_userdata.0.rooms.vorgarten.packageConfig.autoLight.enableAutoLightVorgarten').val == true)) {
                    console.info('autoLightVordach ist aktiv. Prüfe Zeitrahmen (Sonnenuntergang bis Mitternacht)');
                    console.info(('CheckAutoLight sagt: ' + String(formatDate(new Date(), 'hh:mm:ss.sss'))));
                    if (compareTime(getAstroDate('sunset', undefined, 0), null, '>=', null) && compareTime('23:59', null, '<', null)) {
                      console.info('Innerhalb des Zeitrahmens. Schalte Lichter an.');
                      setState('0_userdata.0.packages.autoLight.doAutoLightVorgarten' /* doAutoLightVorgarten */, true);
                    } else {
                      console.info('Außerhalb des Zeitrahmens. Schalte Lichter aus.');
                      setState('0_userdata.0.packages.autoLight.doAutoLightVorgarten' /* doAutoLightVorgarten */, false);
                    }
                  } else {
                    console.info('autoLightVordach ist deaktiviert.');
                  }
                  console.info('Vordach: Ende autoLightCheck');
                });
                

                Dieser Trigger wird zum Zeitpunkt von "sunset" ausgeführt. Und nach diesem Zeitpunkt wird ein weiteres Ausführen von "checkAutoLight" auch zum korrekten Zeitvergleich führen, mit dem Ergebnis, dass dann auch die Außenbeleuchtung anschaltet.

                /**
                Bei Sonnenuntergang wird - zunächst ohne jede weitere Prüfung – die LED angeschaltet.
                */
                schedule({astro: "sunset", shift: 0}, async function () {
                  console.log('Triggered: Sunset autoLight balcony');
                  if (getState("0_userdata.0.rooms.balkon.packageConfig.autoLight.autoLightBalkon").val == true) {
                    console.log('autoLight is enabled.');
                    setState("hm-rpc.0.PEQ1604113.1.LEVEL"/*LED Balkon:1.LEVEL*/, 50);
                  }
                });
                

                Wie man sieht, sind beide Astro-Trigger identisch. Beide mit Blockly erstellt. Das "Balkon-Blockly" ist deutlich älter und verwendet doppelte Anführungszeichen, während das "checkAutoLight"-Blocky lediglich einfache Anführungszeichen verwendet und neuer ist.

                Hier mal mein "Debug-Log" vom Sonnenuntergang vom 05.12. (da haben Balkon und Außenbeleuchtung gleichzeitig getriggered, aber der Zeitvergleich passte angeblich nicht).

                2024-12-04 16:23:47.932  - info: javascript.0 (208) script.js.packages.autoLight.seitenlicht: Seitenlicht: Beginne autoLightCheck
                2024-12-04 16:23:47.933  - info: javascript.0 (208) script.js.packages.autoLight.seitenlicht: autoLightSeitenlicht ist aktiv. Prüfe Zeitrahmen (Sonnenuntergang bis Mitternacht)
                2024-12-04 16:23:47.935  - info: javascript.0 (208) script.js.packages.autoLight.seitenlicht: Außerhalb des Zeitrahmens. Schalte Lichter aus.
                2024-12-04 16:23:47.936  - info: javascript.0 (208) script.js.packages.autoLight.seitenlicht: Seitenlicht: Ende autoLightCheck
                2024-12-04 16:23:47.938  - info: javascript.0 (208) script.js.packages.autoLight.vordach: Vordach: Beginne autoLightCheck
                2024-12-04 16:23:47.939  - info: javascript.0 (208) script.js.packages.autoLight.vordach: autoLightVordach ist aktiv. Prüfe Zeitrahmen (Sonnenuntergang bis Mitternacht)
                2024-12-04 16:23:47.943  - info: javascript.0 (208) script.js.packages.autoLight.vordach: CheckAutoLight sagt: 16:23:47.941
                2024-12-04 16:23:47.944  - info: javascript.0 (208) script.js.packages.autoLight.vordach: Außerhalb des Zeitrahmens. Schalte Lichter aus.
                2024-12-04 16:23:47.945  - info: javascript.0 (208) script.js.packages.autoLight.vordach: Vordach: Ende autoLightCheck
                

                Mein Setup ist, dass ich einen Raspberry laufen habe (64 bit bookworm). iobroker ist im Docker-Container (Image von buanet). Ich habe als Volume auch localtime eingebunden:

                volumes:
                    - /etc/localtime:/etc/localtime:ro
                

                timedatectl auf dem raspberry (host, nicht im container) ergibt:

                pi@smarthome:~ $ timedatectl
                               Local time: Sat 2024-12-07 10:13:28 CET
                           Universal time: Sat 2024-12-07 09:13:28 UTC
                                 RTC time: n/a
                                Time zone: Europe/Berlin (CET, +0100)
                System clock synchronized: yes
                              NTP service: active
                          RTC in local TZ: no
                

                In den Systemeinstellungen sind die Koordination meines Standortes gesetzt (Land, Stadt, Breiten-/Längengrad)

                In der Javascript-Instanz unter "Astro" ist "Systemeinstellungen verwenden" angehakt.

                iob info
                Platform       : docker
                os             : linux
                Architecture   : arm64
                CPUs           : 4
                Speed          : 1800 MHz
                Model          : Cortex-A72
                RAM            : 7.6 GB
                System uptime  : 2d. 21:17:48
                Node.js        : v20.18.1
                time           : 1733564471644
                timeOffset     : -60
                NPM            : 10.8.2
                adapters count : 639
                dockerInformation: [object Object]
                Disk size      : 109.8 GiB
                Disk free      : 72.8 GiB
                

                Hier noch meine Blocky als Bilder und die Einstellungen von der Javascript-instanz (wobei die Werte ja nur für "isDay" oder so zuständig sein soll).

                Sonnenuntergang => checkAutoLight = true
                Bildschirmfoto 2024-12-07 um 10.33.16.png

                Wenn checkAutoLight, prüfe das Vordach (Außenbeleuchtung)
                Bildschirmfoto 2024-12-07 um 10.32.35.png

                Balkon (er ist derzeit von "checkAutoLight" unabhängig)
                Bildschirmfoto 2024-12-07 um 10.34.04.png

                JS-Einstellungen
                Bildschirmfoto 2024-12-07 um 10.35.22.png

                Ich hoffe, ihr könnt mir helfen. Es ist halt auch mühselig, immer auf den nächsten Sonnenuntergang zu warten. Eine "Verzögerung" von +- 1 Minute habe ich schon versucht. Es müsste aber mehr sein und zudem ist dies noch variabel. Deswegen halte ich dies nicht für eine gute Lösung.

                Vielen Dank im Voraus.

                CodierknechtC Online
                CodierknechtC Online
                Codierknecht
                Developer Most Active
                schrieb am zuletzt editiert von
                #10

                @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.

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                B 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @buryjones sagte: Hier die Ausgaben:

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

                  B Offline
                  B Offline
                  BuryJones
                  schrieb am zuletzt editiert von
                  #11

                  @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.

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • CodierknechtC Codierknecht

                    @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 Offline
                    B Offline
                    BuryJones
                    schrieb am zuletzt editiert von
                    #12

                    @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.

                    CodierknechtC 1 Antwort Letzte Antwort
                    0
                    • B BuryJones

                      @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.

                      CodierknechtC Online
                      CodierknechtC Online
                      Codierknecht
                      Developer Most Active
                      schrieb am zuletzt editiert von Codierknecht
                      #13

                      @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.

                      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                      HmIP|ZigBee|Tasmota|Unifi
                      Zabbix Certified Specialist
                      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                      B 1 Antwort Letzte Antwort
                      0
                      • CodierknechtC 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 Offline
                        B Offline
                        BuryJones
                        schrieb am zuletzt editiert von
                        #14

                        @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 Antwort Letzte Antwort
                        0
                        • B BuryJones

                          @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.

                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #15

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

                          Ändere mal deine Logs von:

                          Blockly_temp.JPG

                          in:

                          Blockly_temp.JPG

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          1 Antwort Letzte Antwort
                          0
                          • CodierknechtC Online
                            CodierknechtC Online
                            Codierknecht
                            Developer Most Active
                            schrieb am zuletzt editiert von Codierknecht
                            #16

                            @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.

                            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                            HmIP|ZigBee|Tasmota|Unifi
                            Zabbix Certified Specialist
                            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                            B 1 Antwort Letzte Antwort
                            0
                            • CodierknechtC 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 Offline
                              B Offline
                              BuryJones
                              schrieb am zuletzt editiert von BuryJones
                              #17

                              @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 Antwort Letzte Antwort
                              0
                              • B Offline
                                B Offline
                                BuryJones
                                schrieb am zuletzt editiert von BuryJones
                                #18

                                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?

                                paul53P 2 Antworten Letzte Antwort
                                0
                                • B 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?

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von paul53
                                  #19

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

                                  Dann würden auch die Logs keine ms zeigen.

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  1 Antwort Letzte Antwort
                                  0
                                  • B 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?

                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb am zuletzt editiert von paul53
                                    #20

                                    @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.

                                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                    B 1 Antwort Letzte Antwort
                                    0
                                    • paul53P 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 Offline
                                      B Offline
                                      BuryJones
                                      schrieb am zuletzt editiert von
                                      #21

                                      @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 Antwort Letzte Antwort
                                      0
                                      Antworten
                                      • In einem neuen Thema antworten
                                      Anmelden zum Antworten
                                      • Älteste zuerst
                                      • Neuste zuerst
                                      • Meiste Stimmen


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      659

                                      Online

                                      32.6k

                                      Benutzer

                                      82.0k

                                      Themen

                                      1.3m

                                      Beiträge
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Anmelden

                                      • Du hast noch kein Konto? Registrieren

                                      • Anmelden oder registrieren, um zu suchen
                                      • Erster Beitrag
                                        Letzter Beitrag
                                      0
                                      • Home
                                      • Aktuell
                                      • Tags
                                      • Ungelesen 0
                                      • Kategorien
                                      • Unreplied
                                      • Beliebt
                                      • GitHub
                                      • Docu
                                      • Hilfe