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. Blockly
  5. Präsenzmelder nach Tageszeit mit bestimmter Helligkeit

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Präsenzmelder nach Tageszeit mit bestimmter Helligkeit

Geplant Angeheftet Gesperrt Verschoben Blockly
52 Beiträge 5 Kommentatoren 4.4k Aufrufe 3 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.
  • H Offline
    H Offline
    hinsen2k
    schrieb am zuletzt editiert von
    #1

    Moin zusammen,

    ich bin gerade dabei die smarte Planung für unseren Neubau zu testen und auszutüfteln und habe mir dazu einen Präsenzmelder von Homematic IP gekauft.

    Ich habe ihn im Badezimmer unter die Decke gebastelt, wo er entsprechend auch für die Auslösung passend platziert ist. In dem ersten Blockly frage ich jede Minute ab, ob nun der ZeitPUNKT für Start der Nacht, Morgendämmerung, Ende des Sonnenaufgangs oder Start des Sonnenuntergangs ist. Dann wird eine entsprechende Zahl in einen Datenpunkt geschrieben. Jubel, Trubel, Heiterkeit: Das funktioniert ohne Probleme. Möglicherweise gibt es auch noch eine Variante um das anders oder schlanker zu lösen, aber da lege ich gerade noch nicht den Fokus drauf.

    beleuchtung2.png

    Nun zum eigentlichen Problem:

    Mit dem zweiten Skript soll nun bei einer erkannten Bewegung des Präsenzmelders das Licht in entsprechender Helligkeit in Abhängigkeit von der Tageszeit (dem Wert des Datenpunktes aus dem ersten Blockly) angehen und nach 4 Minuten wieder ausgehen - natürlich 4 Minuten nachdem keine Bewegung mehr erkannt wurde.

    beleuchtung1.png

    Aber irgendwie ist da der Wurm drin. Ich habe hier im Forum die ein oder andere Herangehensweise gefunden und für mich übernommen - aber irgendwas scheint nicht zu stimmen. Nur was? Meine Logik sagt, dass das eigentlich klappen müsste. Aber entweder geht das Licht gar nicht erst an oder aber es geht an (in der richtigen Helligkeit) aber wieder aus, wann es Lust hat - anders kann ich es nicht beschreiben. In ganz seltenen Fällen hat es tagsüber auch geklappt, dass es mal funktioniert hat. Eine Logik sehe ich da nicht. Aber eins ist wohl klar: Im Blockly ist ein Fehler! :angry: :confounded:

    Ich möchte am liebsten auch für die spätere VIS einen Timer anzeigen, wie lange das Licht schon angeschaltet ist - das wäre sicher auch jetzt zur Kontrolle ganz interessant. Ich habe es über ein Intervall-Timeout probiert, das mit Präsenz=true gestartet ist und bei Licht aus gestoppt wurde. Dafür wurde dann eine Variable jede Sekunde hochgezählt...ich hab mir per Debug die Ergebnisse anzeigen lassen....obwohl das Licht noch an war, gab es nach 43 Sekunden schon eine Meldung, dass es gestoppt hat. Ist das Intervall hier nicht richtig? Wie löse ich es sonst?

    Was ich auch noch grundsätzlich nicht rausgefunden habe: Sind die Datenpunkte im iobroker eigentlich komplett losgelöst von den Einstellungen in der CCU3? Dort sind ja auch entsprechende Einstellungen bei der Verknüpfung des Präsenzmelders mit der CCU3 hinterlegt. Gerade auch die 4 Minuten Schaltdauer, die ich als Wert für mein Blockly übernommen habe. Oder sind die Datenpunkte im iobroker das Maß aller Dinge?

    Ich hoffe, es ist nicht zu ausführlich beschrieben oder zu lang, dass es unübersichtlich und unklar wurde. Ich würde mich riesig freuen, wenn ihr Experten hier Licht ins Dunkel bringen könntet.

    Danke!!

    Sven

    CinimodC 1 Antwort Letzte Antwort
    0
    • H hinsen2k

      Moin zusammen,

      ich bin gerade dabei die smarte Planung für unseren Neubau zu testen und auszutüfteln und habe mir dazu einen Präsenzmelder von Homematic IP gekauft.

      Ich habe ihn im Badezimmer unter die Decke gebastelt, wo er entsprechend auch für die Auslösung passend platziert ist. In dem ersten Blockly frage ich jede Minute ab, ob nun der ZeitPUNKT für Start der Nacht, Morgendämmerung, Ende des Sonnenaufgangs oder Start des Sonnenuntergangs ist. Dann wird eine entsprechende Zahl in einen Datenpunkt geschrieben. Jubel, Trubel, Heiterkeit: Das funktioniert ohne Probleme. Möglicherweise gibt es auch noch eine Variante um das anders oder schlanker zu lösen, aber da lege ich gerade noch nicht den Fokus drauf.

      beleuchtung2.png

      Nun zum eigentlichen Problem:

      Mit dem zweiten Skript soll nun bei einer erkannten Bewegung des Präsenzmelders das Licht in entsprechender Helligkeit in Abhängigkeit von der Tageszeit (dem Wert des Datenpunktes aus dem ersten Blockly) angehen und nach 4 Minuten wieder ausgehen - natürlich 4 Minuten nachdem keine Bewegung mehr erkannt wurde.

      beleuchtung1.png

      Aber irgendwie ist da der Wurm drin. Ich habe hier im Forum die ein oder andere Herangehensweise gefunden und für mich übernommen - aber irgendwas scheint nicht zu stimmen. Nur was? Meine Logik sagt, dass das eigentlich klappen müsste. Aber entweder geht das Licht gar nicht erst an oder aber es geht an (in der richtigen Helligkeit) aber wieder aus, wann es Lust hat - anders kann ich es nicht beschreiben. In ganz seltenen Fällen hat es tagsüber auch geklappt, dass es mal funktioniert hat. Eine Logik sehe ich da nicht. Aber eins ist wohl klar: Im Blockly ist ein Fehler! :angry: :confounded:

      Ich möchte am liebsten auch für die spätere VIS einen Timer anzeigen, wie lange das Licht schon angeschaltet ist - das wäre sicher auch jetzt zur Kontrolle ganz interessant. Ich habe es über ein Intervall-Timeout probiert, das mit Präsenz=true gestartet ist und bei Licht aus gestoppt wurde. Dafür wurde dann eine Variable jede Sekunde hochgezählt...ich hab mir per Debug die Ergebnisse anzeigen lassen....obwohl das Licht noch an war, gab es nach 43 Sekunden schon eine Meldung, dass es gestoppt hat. Ist das Intervall hier nicht richtig? Wie löse ich es sonst?

      Was ich auch noch grundsätzlich nicht rausgefunden habe: Sind die Datenpunkte im iobroker eigentlich komplett losgelöst von den Einstellungen in der CCU3? Dort sind ja auch entsprechende Einstellungen bei der Verknüpfung des Präsenzmelders mit der CCU3 hinterlegt. Gerade auch die 4 Minuten Schaltdauer, die ich als Wert für mein Blockly übernommen habe. Oder sind die Datenpunkte im iobroker das Maß aller Dinge?

      Ich hoffe, es ist nicht zu ausführlich beschrieben oder zu lang, dass es unübersichtlich und unklar wurde. Ich würde mich riesig freuen, wenn ihr Experten hier Licht ins Dunkel bringen könntet.

      Danke!!

      Sven

      CinimodC Offline
      CinimodC Offline
      Cinimod
      Most Active
      schrieb am zuletzt editiert von Cinimod
      #2

      @hinsen2k setzt mal den trigger auf geändert, sonst triggert er bei jeder Aktualisierung, und wenn trigger wert dann wahr ist, der bri aber nicht 0 steuert er den "sonst" Part an

      optional kannst du auch unten statt "sonst", der "sonst falls" nutzen und dann falls "nicht-wert", ist aber quatsch, weil unnötiges getrigger

      Bildschirmfoto 2021-09-18 um 20.27.26.png

      Synology DS918+, Fritzbox 6690 Cable, #Docker #Blockly #Vis2 #Deconz #Tasmota

      H 1 Antwort Letzte Antwort
      0
      • CinimodC Cinimod

        @hinsen2k setzt mal den trigger auf geändert, sonst triggert er bei jeder Aktualisierung, und wenn trigger wert dann wahr ist, der bri aber nicht 0 steuert er den "sonst" Part an

        optional kannst du auch unten statt "sonst", der "sonst falls" nutzen und dann falls "nicht-wert", ist aber quatsch, weil unnötiges getrigger

        Bildschirmfoto 2021-09-18 um 20.27.26.png

        H Offline
        H Offline
        hinsen2k
        schrieb am zuletzt editiert von
        #3

        @dom-sch hab ich korrigiert. Danke! Mal schauen, ob es was bewirkt.
        Tageszeit 1 und 3 könnte ich tatsächlich zusammenfassen. Stimmt. Hab es jetzt nur wegen der Übersichtlichkeit so gemacht.

        Hast Du noch eine Idee für den beschriebenen Timer?

        CinimodC 1 Antwort Letzte Antwort
        0
        • H hinsen2k

          @dom-sch hab ich korrigiert. Danke! Mal schauen, ob es was bewirkt.
          Tageszeit 1 und 3 könnte ich tatsächlich zusammenfassen. Stimmt. Hab es jetzt nur wegen der Übersichtlichkeit so gemacht.

          Hast Du noch eine Idee für den beschriebenen Timer?

          CinimodC Offline
          CinimodC Offline
          Cinimod
          Most Active
          schrieb am zuletzt editiert von Cinimod
          #4

          @hinsen2k ich kenne dieses homematic teil nicht, aber es klingt so als ob es nach 4 minuten ohne presenz erst selbst auf false umstellt, demnach kannst du vermutlich dort die zeit verändern,

          ist das denn direkt mit dem licht gekoppelt oder hast du es nur als Melder im iobroker, das währe erstmal eine ganz wichtige frage

          dann solltest du mal schauen ob der melder sofort auf false geht wenn keine presenz mehr ist oder die zeit im melder selbst erst abläuft bevor er auf false geht, dann ist das script nämlich so wie es ist quatsch ...

          hat das homematic teil noch mehr datenpunkte die du verändern kannst, wenn dem so ist muss sich ja die zeit irgendwo einstellen lassen ... via app vielleicht

          nach dem timer können wir anschließend schauen

          Synology DS918+, Fritzbox 6690 Cable, #Docker #Blockly #Vis2 #Deconz #Tasmota

          dslraserD H 2 Antworten Letzte Antwort
          0
          • HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #5

            wenn du auch einen HmIP Dimmer nutzst, geht fast alles out of the box.
            du machst eine Direktverknüpfung zwischen Präsenzmelder und Dimmer, die erst ab einer bestimmten Helligkeit schaltet.

            dann machst du ein programm das über den zweiten Virtuellen Kanal die tageszeitbedingte Helligkeit einstellt.

            bei mir sind das nur zwei Stufen mit jeweils langen Rampen um nachts nicht die Netzhaut zu verbrennen

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            1 Antwort Letzte Antwort
            0
            • CinimodC Cinimod

              @hinsen2k ich kenne dieses homematic teil nicht, aber es klingt so als ob es nach 4 minuten ohne presenz erst selbst auf false umstellt, demnach kannst du vermutlich dort die zeit verändern,

              ist das denn direkt mit dem licht gekoppelt oder hast du es nur als Melder im iobroker, das währe erstmal eine ganz wichtige frage

              dann solltest du mal schauen ob der melder sofort auf false geht wenn keine presenz mehr ist oder die zeit im melder selbst erst abläuft bevor er auf false geht, dann ist das script nämlich so wie es ist quatsch ...

              hat das homematic teil noch mehr datenpunkte die du verändern kannst, wenn dem so ist muss sich ja die zeit irgendwo einstellen lassen ... via app vielleicht

              nach dem timer können wir anschließend schauen

              dslraserD Offline
              dslraserD Offline
              dslraser
              Forum Testing Most Active
              schrieb am zuletzt editiert von dslraser
              #6

              @dom-sch sagte in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:

              dann solltest du mal schauen ob der melder sofort auf false geht wenn keine presenz mehr ist

              Nein, das macht der nicht

              oder die zeit im melder selbst erst abläuft bevor er auf false geht,

              So macht der das
              (man braucht keine zusätzlichen timeout im Blockly)

              1 Antwort Letzte Antwort
              0
              • CinimodC Cinimod

                @hinsen2k ich kenne dieses homematic teil nicht, aber es klingt so als ob es nach 4 minuten ohne presenz erst selbst auf false umstellt, demnach kannst du vermutlich dort die zeit verändern,

                ist das denn direkt mit dem licht gekoppelt oder hast du es nur als Melder im iobroker, das währe erstmal eine ganz wichtige frage

                dann solltest du mal schauen ob der melder sofort auf false geht wenn keine presenz mehr ist oder die zeit im melder selbst erst abläuft bevor er auf false geht, dann ist das script nämlich so wie es ist quatsch ...

                hat das homematic teil noch mehr datenpunkte die du verändern kannst, wenn dem so ist muss sich ja die zeit irgendwo einstellen lassen ... via app vielleicht

                nach dem timer können wir anschließend schauen

                H Offline
                H Offline
                hinsen2k
                schrieb am zuletzt editiert von
                #7

                @dom-sch
                So wie ich es bisher sehe, scheint er nach 4 Minuten (scheinbar gem. den Einstellungen in der CCU3) wieder auf false zu gehen.
                Als Licht nutze ich Philips hue, die ebenso im iobroker steuerbar sind. Daher auch die Verknüpfung zu bri...dem Helligkeits-Datenpunkt dieser hue-Leuchte.
                Nach deinen Anpassungs-Tipps scheint es schon besser zu klappen - bisher hat es funktioniert wie es soll. Aber ich will den Tag nicht vor dem Abend loben - ich werde den morgigen Tag nochmal abwarten. :joy:

                @Homoran
                Mein Experiment sollte sein, im Neubau ohne (oder zumindest mit ganz wenigen) Schaltern bzw. Tastern auszukommen. Ich möchte am liebsten so viel wie möglich über die Präsenzmelder steuern - von daher nutze ich auch keinen HMIP Dimmer.
                Ich hatte es ganz am Anfang schon in der CCU über ein Programm versucht (hue kann ich ja auch dort einbinden), bin aber an den extrem geringen Möglichkeiten im dortigen Blockly gescheitert. Daher war mein Plan, das in iobroker zu mache, da ich denke, dass ich hier um längen mehr Möglichkeiten habe, Dinge noch finezutunen und auch mit anderen Komponenten zu verknüpfen. Von der unkomfortablen Bedienweise der CCU3 mal ganz zu schweigen. Ach...ich weiteren Schritt soll später noch Musik mit angehen usw....daher denke ich, dass die CCU3 daher nicht geeignet sein wird.

                Hormoran, hast Du eine Idee für den Timer?

                HomoranH 1 Antwort Letzte Antwort
                0
                • H hinsen2k

                  @dom-sch
                  So wie ich es bisher sehe, scheint er nach 4 Minuten (scheinbar gem. den Einstellungen in der CCU3) wieder auf false zu gehen.
                  Als Licht nutze ich Philips hue, die ebenso im iobroker steuerbar sind. Daher auch die Verknüpfung zu bri...dem Helligkeits-Datenpunkt dieser hue-Leuchte.
                  Nach deinen Anpassungs-Tipps scheint es schon besser zu klappen - bisher hat es funktioniert wie es soll. Aber ich will den Tag nicht vor dem Abend loben - ich werde den morgigen Tag nochmal abwarten. :joy:

                  @Homoran
                  Mein Experiment sollte sein, im Neubau ohne (oder zumindest mit ganz wenigen) Schaltern bzw. Tastern auszukommen. Ich möchte am liebsten so viel wie möglich über die Präsenzmelder steuern - von daher nutze ich auch keinen HMIP Dimmer.
                  Ich hatte es ganz am Anfang schon in der CCU über ein Programm versucht (hue kann ich ja auch dort einbinden), bin aber an den extrem geringen Möglichkeiten im dortigen Blockly gescheitert. Daher war mein Plan, das in iobroker zu mache, da ich denke, dass ich hier um längen mehr Möglichkeiten habe, Dinge noch finezutunen und auch mit anderen Komponenten zu verknüpfen. Von der unkomfortablen Bedienweise der CCU3 mal ganz zu schweigen. Ach...ich weiteren Schritt soll später noch Musik mit angehen usw....daher denke ich, dass die CCU3 daher nicht geeignet sein wird.

                  Hormoran, hast Du eine Idee für den Timer?

                  HomoranH Nicht stören
                  HomoranH Nicht stören
                  Homoran
                  Global Moderator Administrators
                  schrieb am zuletzt editiert von
                  #8

                  @hinsen2k sagte in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:

                  von daher nutze ich auch keinen HMIP Dimmer.

                  aber irgendwas muss das licht dimmen, warum nichts von HmIP?

                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  H 1 Antwort Letzte Antwort
                  0
                  • HomoranH Homoran

                    @hinsen2k sagte in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:

                    von daher nutze ich auch keinen HMIP Dimmer.

                    aber irgendwas muss das licht dimmen, warum nichts von HmIP?

                    H Offline
                    H Offline
                    hinsen2k
                    schrieb am zuletzt editiert von hinsen2k
                    #9

                    @homoran
                    Das möchte ich abhängig von den Astrozeiten machen - eben automatisch, ohne Tastendrücke von Schaltern. Rein in den Raum - Tageszeit abhängiges Licht - Raus aus dem Raum - Licht geht automatisch aus.

                    Wenn Du mir sagen kannst, wie man das in der CCU3 löst, schaue ich mir das da gerne nochmal an.

                    HomoranH dslraserD 2 Antworten Letzte Antwort
                    0
                    • H hinsen2k

                      @homoran
                      Das möchte ich abhängig von den Astrozeiten machen - eben automatisch, ohne Tastendrücke von Schaltern. Rein in den Raum - Tageszeit abhängiges Licht - Raus aus dem Raum - Licht geht automatisch aus.

                      Wenn Du mir sagen kannst, wie man das in der CCU3 löst, schaue ich mir das da gerne nochmal an.

                      HomoranH Nicht stören
                      HomoranH Nicht stören
                      Homoran
                      Global Moderator Administrators
                      schrieb am zuletzt editiert von Homoran
                      #10

                      @hinsen2k sagte in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:

                      @homoran
                      Das möchte ich abhängig von den Astrozeiten machen - eben automatisch, ohne Tastendrücke von Schaltern. Rein in den Raum - Tageszeit abhängiges Licht - Raus aus dem Raum - Licht geht automatisch aus.

                      was anderes hab ich auch nicht gesagt.
                      bei mir ist der Dimmer zwar mit Taste, weil hier noch haptische Schalter gewünscht sind, geht aber auch mit Unterputzdimmern

                      und wenn du unbedingt willst kannst du sogar die Steuerung des 2. virtuellen Kanals entsprechend der Astrozeiten sogar über iobroker ausführen.
                      und zwar mit einem Programm zeitgleich für alle (interessanten) dimmer

                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                      1 Antwort Letzte Antwort
                      0
                      • H hinsen2k

                        @homoran
                        Das möchte ich abhängig von den Astrozeiten machen - eben automatisch, ohne Tastendrücke von Schaltern. Rein in den Raum - Tageszeit abhängiges Licht - Raus aus dem Raum - Licht geht automatisch aus.

                        Wenn Du mir sagen kannst, wie man das in der CCU3 löst, schaue ich mir das da gerne nochmal an.

                        dslraserD Offline
                        dslraserD Offline
                        dslraser
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von dslraser
                        #11

                        @hinsen2k
                        hier mal ein kleines Beispiel wie ich das bei mir habe...(allerdings zwei Melder und einen eigenen Helligkeitsgrenzwert der mit der Helligkeit eines anderen Bewegungsmelders, der draussen ist, verglichen wird. Den Genzwert nutze ich z.B. im Flur, da brauche ich am Tage bzw. wenn es hell genug ist kein Licht. Im Bad nutze ich den Grenzwert nicht, da soll die Spiegelbeleuchtung immer an gehen, auch wenn es hell ist.)
                        Ich habe Szenen in der HUE App abgespeichert (dafür kannst Du ja auch Deinen bri Wert nehmen). Ich habe hell und gedimmt an zwei verschiedenen Zeiten. Und wenn Du HUE hast, dann kannst Du das Licht z.B. auch über den Datenpunkt command mit Deinen definierten Werten langsam (also in der Geschwindigkeit/Helligkeit/Farbe usw., wie Du es willst) angehen lassen. (transitiontime) Ich lasse es nur langsam aus gehen.

                        Bildschirmfoto 2021-09-18 um 23.01.04.png

                        Ein timeout brauchst Du im Blockly nicht, das stellst Du im BWM selbst ein. (sonst käme das timeout in Blockly noch on top dazu)

                        Beispiel in dem das Licht nach 1 Minute ohne Bewegung aus geht

                        Bildschirmfoto 2021-09-18 um 23.11.02.png

                        Hier noch kurz ein Beispiel für den command Datenpunkt in den HUE Objekten. Die Transitontime kannst Du anpassen. größer gleich langsamer, kleiner gleich schneller. Kopiere das mal und trage das mal bei command bei Deiner Lampe ein und drücke enter.

                        {"on":true,"bri":254,"transitiontime":100}
                        

                        Bildschirmfoto 2021-09-18 um 23.19.14.png

                        Musik schalte ich im Bad ebenfalls dazu.

                        H 1 Antwort Letzte Antwort
                        0
                        • dslraserD dslraser

                          @hinsen2k
                          hier mal ein kleines Beispiel wie ich das bei mir habe...(allerdings zwei Melder und einen eigenen Helligkeitsgrenzwert der mit der Helligkeit eines anderen Bewegungsmelders, der draussen ist, verglichen wird. Den Genzwert nutze ich z.B. im Flur, da brauche ich am Tage bzw. wenn es hell genug ist kein Licht. Im Bad nutze ich den Grenzwert nicht, da soll die Spiegelbeleuchtung immer an gehen, auch wenn es hell ist.)
                          Ich habe Szenen in der HUE App abgespeichert (dafür kannst Du ja auch Deinen bri Wert nehmen). Ich habe hell und gedimmt an zwei verschiedenen Zeiten. Und wenn Du HUE hast, dann kannst Du das Licht z.B. auch über den Datenpunkt command mit Deinen definierten Werten langsam (also in der Geschwindigkeit/Helligkeit/Farbe usw., wie Du es willst) angehen lassen. (transitiontime) Ich lasse es nur langsam aus gehen.

                          Bildschirmfoto 2021-09-18 um 23.01.04.png

                          Ein timeout brauchst Du im Blockly nicht, das stellst Du im BWM selbst ein. (sonst käme das timeout in Blockly noch on top dazu)

                          Beispiel in dem das Licht nach 1 Minute ohne Bewegung aus geht

                          Bildschirmfoto 2021-09-18 um 23.11.02.png

                          Hier noch kurz ein Beispiel für den command Datenpunkt in den HUE Objekten. Die Transitontime kannst Du anpassen. größer gleich langsamer, kleiner gleich schneller. Kopiere das mal und trage das mal bei command bei Deiner Lampe ein und drücke enter.

                          {"on":true,"bri":254,"transitiontime":100}
                          

                          Bildschirmfoto 2021-09-18 um 23.19.14.png

                          Musik schalte ich im Bad ebenfalls dazu.

                          H Offline
                          H Offline
                          hinsen2k
                          schrieb am zuletzt editiert von
                          #12

                          @dslraser said in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:

                          {"on":true,"bri":254,"transitiontime":100}

                          sehr coole idee mit der transitiontime. Das habe ich gleich mal übernommen. ;-)

                          Ich habe auch den Timeout im Blockly rausgenommen, aber das Verhalten ist nun echt schräg.
                          In der CCU3 habe ich beide Zeiten in den Geräteeinstellungen zu Testzwecken auf 30 Sekunden gesetzt.
                          Ich habe danach den Präsenzmelder ausgelöst, Licht ging an und ich bin aus dem Erkennungsbereich wieder raus und hab mich mit ner Stopuhr vor die Tür gestellt. :-D Nach meinem Verständnis hätte nach 30 Sekunden ohne Bewegung das Licht ausgehen müssen (so wie Du schreibst, zählen die Zeiten in der CCU).
                          Ist es aber nicht. :-( Über die Web Oberfläche habe ich dann geschaut, wann sich der Präsenzstatus wieder ändert (Als Status stand da immer noch "Präsenz erkannt"). An diesem Status hat sich erst was geändert, wenn ich wieder in die Geräteeinstellungen gegangen bin. Irgendwie ist da der Wurm drin.

                          dslraserD 1 Antwort Letzte Antwort
                          0
                          • H hinsen2k

                            @dslraser said in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:

                            {"on":true,"bri":254,"transitiontime":100}

                            sehr coole idee mit der transitiontime. Das habe ich gleich mal übernommen. ;-)

                            Ich habe auch den Timeout im Blockly rausgenommen, aber das Verhalten ist nun echt schräg.
                            In der CCU3 habe ich beide Zeiten in den Geräteeinstellungen zu Testzwecken auf 30 Sekunden gesetzt.
                            Ich habe danach den Präsenzmelder ausgelöst, Licht ging an und ich bin aus dem Erkennungsbereich wieder raus und hab mich mit ner Stopuhr vor die Tür gestellt. :-D Nach meinem Verständnis hätte nach 30 Sekunden ohne Bewegung das Licht ausgehen müssen (so wie Du schreibst, zählen die Zeiten in der CCU).
                            Ist es aber nicht. :-( Über die Web Oberfläche habe ich dann geschaut, wann sich der Präsenzstatus wieder ändert (Als Status stand da immer noch "Präsenz erkannt"). An diesem Status hat sich erst was geändert, wenn ich wieder in die Geräteeinstellungen gegangen bin. Irgendwie ist da der Wurm drin.

                            dslraserD Offline
                            dslraserD Offline
                            dslraser
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #13

                            @hinsen2k
                            Wie sieht denn aktuell Dein Blockly aus ?

                            H 1 Antwort Letzte Antwort
                            0
                            • dslraserD dslraser

                              @hinsen2k
                              Wie sieht denn aktuell Dein Blockly aus ?

                              H Offline
                              H Offline
                              hinsen2k
                              schrieb am zuletzt editiert von hinsen2k
                              #14

                              @dslraser
                              a76d2706-4fb0-4e31-afcb-77f87e4d0abc-image.png

                              Wobei...ich sehe gerade....heute morgen funktioniert es!!?!? Häh?!?! Braucht ide CCU3 ein paar Stunden, bis sie Einstellungen neu verarbeitet?!!? Ich bin jetzt völlig verwirrt. Ich traue dem Ganzen aber noch nicht und beobachte das.

                              Ich werde mich mal einen Timer machen, um zu sehen, wie lange das Licht denn immer so angeschaltet ist. Hast Du da zufällig noch eine Idee für die Umsetzung? Bisher hat das bei mir noch nicht so geklappt.

                              dslraserD 2 Antworten Letzte Antwort
                              0
                              • H hinsen2k

                                @dslraser
                                a76d2706-4fb0-4e31-afcb-77f87e4d0abc-image.png

                                Wobei...ich sehe gerade....heute morgen funktioniert es!!?!? Häh?!?! Braucht ide CCU3 ein paar Stunden, bis sie Einstellungen neu verarbeitet?!!? Ich bin jetzt völlig verwirrt. Ich traue dem Ganzen aber noch nicht und beobachte das.

                                Ich werde mich mal einen Timer machen, um zu sehen, wie lange das Licht denn immer so angeschaltet ist. Hast Du da zufällig noch eine Idee für die Umsetzung? Bisher hat das bei mir noch nicht so geklappt.

                                dslraserD Offline
                                dslraserD Offline
                                dslraser
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von
                                #15

                                @hinsen2k sagte in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:

                                Ich werde mich mal einen Timer machen, um zu sehen, wie lange das Licht denn immer so angeschaltet ist. Hast Du da zufällig noch eine Idee für die Umsetzung? Bisher hat das bei mir noch nicht so geklappt.

                                Um das zu sehen sollten debug Bausteine reichen, dann siehst Du es im Log.

                                1 Antwort Letzte Antwort
                                0
                                • H hinsen2k

                                  @dslraser
                                  a76d2706-4fb0-4e31-afcb-77f87e4d0abc-image.png

                                  Wobei...ich sehe gerade....heute morgen funktioniert es!!?!? Häh?!?! Braucht ide CCU3 ein paar Stunden, bis sie Einstellungen neu verarbeitet?!!? Ich bin jetzt völlig verwirrt. Ich traue dem Ganzen aber noch nicht und beobachte das.

                                  Ich werde mich mal einen Timer machen, um zu sehen, wie lange das Licht denn immer so angeschaltet ist. Hast Du da zufällig noch eine Idee für die Umsetzung? Bisher hat das bei mir noch nicht so geklappt.

                                  dslraserD Offline
                                  dslraserD Offline
                                  dslraser
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von
                                  #16

                                  @hinsen2k
                                  Mal was anderes, Dein Blockly für die Astro Zeiten...die Zeiten stimmen aber, ja ? Ich nutze dieses Script dafür.

                                  https://forum.iobroker.net/post/673736

                                  Bildschirmfoto 2021-09-19 um 09.53.23.png

                                  H 1 Antwort Letzte Antwort
                                  0
                                  • dslraserD dslraser

                                    @hinsen2k
                                    Mal was anderes, Dein Blockly für die Astro Zeiten...die Zeiten stimmen aber, ja ? Ich nutze dieses Script dafür.

                                    https://forum.iobroker.net/post/673736

                                    Bildschirmfoto 2021-09-19 um 09.53.23.png

                                    H Offline
                                    H Offline
                                    hinsen2k
                                    schrieb am zuletzt editiert von
                                    #17

                                    @dslraser
                                    ja, ich habe dazu auch ein Script hier aus dem Forum. Funktioniert auch einwandfrei.

                                    dslraserD 1 Antwort Letzte Antwort
                                    0
                                    • H hinsen2k

                                      @dslraser
                                      ja, ich habe dazu auch ein Script hier aus dem Forum. Funktioniert auch einwandfrei.

                                      dslraserD Offline
                                      dslraserD Offline
                                      dslraser
                                      Forum Testing Most Active
                                      schrieb am zuletzt editiert von dslraser
                                      #18

                                      @hinsen2k sagte in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:

                                      @dslraser
                                      ja, ich habe dazu auch ein Script hier aus dem Forum. Funktioniert auch einwandfrei.

                                      poste das mal, dann kann ich das mal importieren und was ausprobieren.

                                      EDIT: Poste mal Deine beiden Blocklys als Export

                                      H 1 Antwort Letzte Antwort
                                      0
                                      • dslraserD dslraser

                                        @hinsen2k sagte in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:

                                        @dslraser
                                        ja, ich habe dazu auch ein Script hier aus dem Forum. Funktioniert auch einwandfrei.

                                        poste das mal, dann kann ich das mal importieren und was ausprobieren.

                                        EDIT: Poste mal Deine beiden Blocklys als Export

                                        H Offline
                                        H Offline
                                        hinsen2k
                                        schrieb am zuletzt editiert von hinsen2k
                                        #19

                                        @dslraser

                                        /*
                                         * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
                                         *
                                         * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
                                         *
                                         * Dieses Skript dient zur freien Verwendung in ioBroker zur Verbrauchserfassung der Shelly Geräte.
                                         * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung
                                         * und Performance entwickelt.
                                         * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind.
                                         *
                                         * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf
                                         * https://www.kreyenborg.koeln
                                         * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der,
                                         * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht!
                                         *
                                         * Ansprüche gegenüber Dritten bestehen nicht.
                                         *
                                         * Skript Name:     Astro-Zeiten
                                         * Skript Version:  1.21
                                         * Erstell-Datum:   13. Mai 2021
                                         *
                                         */
                                         
                                        // Datenpunkte neu erstellen
                                        var ueberschreiben = false;
                                         
                                        // Hauptdatenpunkt unterhalb javascript
                                        var datenpunkt = "Astro.";
                                         
                                        // Lesbare Zeiten
                                        const lesbare_zeiten = ["Früher Morgen", "Frühe Dämmerung", "Morgendämmerung", "Sonnenaufgang", "Vormittag", "später Vormittag", "Mittag",
                                            "früher Abend", "Abend", "Sonnenuntergang", "Abenddämmerung", "später Abend", "Nacht", "Mitternacht"];
                                         
                                        // Objekte der Astro Zeiten
                                        const objekt = ["nightEnd", "nauticalDawn", "dawn", "sunrise", "sunriseEnd", "goldenHourEnd", "solarNoon", "goldenHour",
                                            "sunsetStart", "sunset", "dusk", "nauticalDusk", "night", "nadir", "tageszeitAstro", "naechsteTageszeitAstro",
                                            "tageszeitLesbar", "naechsteTageszeitLesbar", "aktuelleAstroZeit", "Tag", "sunriseUnix", "sunsetUnix"];
                                         
                                        // Zustände der Astro-Zeiten
                                        const beschreibung = ["00 - Ende der Nacht", "01 - nautische Morgendämmerung", "02 - Morgendämmerung", "03 - Sonnenaufgang",
                                            "04 - Ende des Sonnenaufgangs", "05 - Ende der goldenen Stunde VM", "06 - Mittag", "07 - goldene Abendstunde",
                                            "08 - Start des Sonnenuntergangs", "09 - Sonnenuntergang", "10 - Dämmerung Abends", "11 - nautische Dämmerung abends",
                                            "12 - Start der Nacht", "13 - Mitternacht", "Aktuelle Tageszeit (Astro)", "Nächste Tageszeit (Astro)",
                                            "Aktuelle Tageszeit (lesbar)", "Nächste Tageszeit (lesbar)", "aktuelle Astrozeit", "Solange die Sonne scheint, ist Tag", "Sunrise Unix Zeitstempel", "Sunset Unix Zeitstempel"];
                                         
                                        // Erstelle die benötigten Datenpunkte
                                        function datenpunkte_erstellen() {
                                            for (var i = 0; i < objekt.length; i++) {
                                                createState(datenpunkt + objekt[i], "", ueberschreiben, {
                                                    name: beschreibung[i],
                                                    desc: beschreibung[i],
                                                    type: "string",
                                                    role: "value",
                                                    unit: ""
                                                });
                                            }
                                            log("Astro: Datenpunkte erstellt!");
                                        }
                                         
                                        // Datenpunkte mit erstem Inhalt füllen
                                        function datenpunkte_fuellen() {
                                            for (var i = 0; i < objekt.length - 8; i++) {
                                                var datum = new Date();
                                                try {
                                                    var astro_zeit = zeit_formatieren(getAstroDate(objekt[i], datum));
                                                } catch (e) {
                                                     // Fehler Kontrolle
                                                }
                                                if (astro_zeit == "Invalid Date") {
                                                    astro_zeit = "00:00";
                                                }
                                                setState(datenpunkt + objekt[i], astro_zeit);
                                            }
                                            log("Astro: Erste Datenpunkte gefüllt!");
                                        }
                                         
                                        // Haupt-Skript
                                        function update_astro_zeiten() {
                                            var datum = new Date();
                                            var uhrzeit = zeit_formatieren(datum);
                                         
                                            // Zustand der Daten
                                            var aktuell = 0;
                                            var aktualisiert = 0;
                                            var keine_aktualisierung = 0;
                                            var astro_index = 0;
                                         
                                            // Aktuellen Tagesabschnitt bestimmen
                                            var ergebnis = -1;
                                            var naechste_element = false;
                                         
                                            // Aktuelle & kommende Tageszeit
                                            var aktuelle_tageszeit = 0;
                                            var kommende_tageszeit = 0;
                                         
                                            // Tag
                                            var astroTag = "Nacht";
                                         
                                            for (var i = 0; i < objekt.length - 8; i++) {
                                                // Temporäre Zahl
                                                var tmp_ergebnis = 0;
                                         
                                                // Hole Uhrzeit aus aktuellem Datenpunkt
                                                var dp_zeit = getState(datenpunkt + objekt[i]).val;
                                         
                                                // Hole Index aktuelle Tageszeit
                                                var tmp_time_uhr = Date.parse('1970-01-01 ' + uhrzeit + ':00');
                                                var tmp_time_dp = Date.parse('1970-01-01 ' + dp_zeit + ':00');
                                         
                                                // Aktuelle Zeit ist kleiner als DP
                                                if (tmp_time_uhr < tmp_time_dp) {
                                                    tmp_ergebnis = tmp_time_dp - tmp_time_uhr;
                                                    if (tmp_ergebnis <= ergebnis || ergebnis == -1) {
                                                        ergebnis = tmp_ergebnis;
                                                        astro_index = i;
                                                        naechste_element = true;
                                                    }
                                                    // Aktuelle Zeit ist größer als DP
                                                } else {
                                                    tmp_ergebnis = tmp_time_uhr - tmp_time_dp;
                                                    if (tmp_ergebnis <= ergebnis || ergebnis == -1) {
                                                        ergebnis = tmp_ergebnis;
                                                        astro_index = i;
                                                        naechste_element = false;
                                                    }
                                                }
                                                // Datenpunkt ist kleiner als aktuelle Uhrzeit. Update!
                                                if (dp_zeit < uhrzeit) {
                                                    // Neue Astro-Zeit für den nächsten Tag generieren
                                                    let morgen = new Date();
                                                    morgen.setDate(morgen.getDate() + 1);
                                                    try {
                                                        var astro_zeit = zeit_formatieren(getAstroDate(objekt[i], morgen));
                                                    } catch (e) {
                                                        // Fehler Kontrolle
                                                    }
                                                    // Datenpunkt und Astro Zeit sind gleich. Kein Update!
                                                    if (dp_zeit == astro_zeit) {
                                                        keine_aktualisierung++;
                                                    } else {
                                                        if (astro_zeit == "Invalid Date") {
                                                            astro_zeit = "00:00";
                                                        }
                                                        setState(datenpunkt + objekt[i], astro_zeit);
                                                        aktualisiert++;
                                                    }
                                                } else {
                                                    // Zeit kommt noch! Kein Update!
                                                    aktuell++;
                                                }
                                            }
                                            // Wenn wahr, ist der Abstand zum nächsten Zeitpunkt kleiner. Also -1 um aktuellen Index zu erhalten.
                                            if (naechste_element) {
                                                astro_index--;
                                            }
                                         
                                            // Navigiere zum richtigen Index
                                            if (astro_index > 12) {
                                                aktuelle_tageszeit = 13;
                                                kommende_tageszeit = 0;
                                            } else if (astro_index < 0) {
                                                aktuelle_tageszeit = 0;
                                                kommende_tageszeit = 1;
                                            } else {
                                                aktuelle_tageszeit = astro_index;
                                                kommende_tageszeit = astro_index + 1;
                                            }
                                         
                                            // Prüfe, ob aktuelle Uhrzeit zwischen Sonnenauf- und untergang liegt
                                            if (astro_index > 2 && astro_index < 10) {
                                                astroTag = "Tag";
                                            }
                                         
                                            // Update aktuelle Tageszeit Astro (Text)
                                            setState(datenpunkt + objekt[14], text_formatieren(beschreibung[aktuelle_tageszeit]));
                                         
                                            // Update kommende Tageszeit Astro (Text)
                                            setState(datenpunkt + objekt[15], text_formatieren(beschreibung[kommende_tageszeit]));
                                         
                                            // Update aktuelle Tageszeit lesbar (Text)
                                            setState(datenpunkt + objekt[16], lesbare_zeiten[aktuelle_tageszeit]);
                                         
                                            // Update kommende Tageszeit lesbar (Text)
                                            setState(datenpunkt + objekt[17], lesbare_zeiten[kommende_tageszeit]);
                                         
                                            // Update aktuelle AstroZeit
                                            setState(datenpunkt + objekt[18], objekt[aktuelle_tageszeit]);
                                         
                                            // Setze die Variable "Tag" auf "Tag", wenn Uhrzeit zwischen Sonnenauf- und untergang
                                            setState(datenpunkt + objekt[19], astroTag);
                                         
                                            // Setze die Variable Sunrise Unix
                                            let tmp_morgen = new Date();
                                            tmp_morgen.setDate(tmp_morgen.getDate() + 1);
                                            let unix_sunrise = getAstroDate("sunrise", tmp_morgen).getTime() * 1000;
                                            setState(datenpunkt + objekt[20], unix_sunrise.toString());
                                         
                                            // Setze die Variable Sunset Unix
                                            let unix_sunset = getAstroDate("sunset", tmp_morgen).getTime() * 1000;
                                            setState(datenpunkt + objekt[21], unix_sunset.toString());
                                         
                                            var ausgabe = "Astro: Gültige Zeiten: [aktueller Tag: " + aktuell + "] | [nächster Tag: " + keine_aktualisierung + "] | [Aktualisiert: " + aktualisiert +
                                                "] | Aktuelle Tageszeit: " + lesbare_zeiten[aktuelle_tageszeit] + " | Kommende Tageszeit: " + lesbare_zeiten[kommende_tageszeit];
                                            log(ausgabe);
                                        }
                                         
                                        // Funktion, um die Zeit in HH:MM zu formatieren
                                        function zeit_formatieren(zeit) {
                                            return zeit.toLocaleTimeString('de-DE', { hour12: false, hour: '2-digit', minute: '2-digit' });
                                        }
                                         
                                        // Funktion, um den Text zu formatieren. "Mittag" statt "6 - Mittag"
                                        function text_formatieren(text) {
                                            text = text.split("-")[1];
                                            text = text.substr(1, text.length);
                                            return text;
                                        }
                                         
                                        // Erster Start des Skripts und anlegen der Datenpunkte
                                        function update_astro_zeiten_erster_start() {
                                            log("Astro: Erster Start des Skriptes!")
                                            // Datenpunkte werden erstellt
                                            datenpunkte_erstellen();
                                         
                                            // erstes Füllen der Datenpunkte um 3 Sek. verzögert
                                            setTimeout(datenpunkte_fuellen, 3000);
                                         
                                            // Das Update der Zeiten ist um 5 Sek. verzögert
                                            setTimeout(update_astro_zeiten, 5000);
                                        }
                                         
                                        // Erster Start und Initialisierung
                                        update_astro_zeiten_erster_start();
                                         
                                        // Alle 60 Minunten das Hauptskript ausführen
                                        schedule('*/30 * * * *', update_astro_zeiten);
                                        

                                        Hier das Blockly für die Tageszeit:

                                        <xml xmlns="https://developers.google.com/blockly/xml">
                                          <block type="schedule" id="HO}_tUx1x5P:u/vEA_5=" x="-388" y="-987">
                                            <field name="SCHEDULE">* * * * *</field>
                                            <statement name="STATEMENT">
                                              <block type="controls_if" id="36`CLBkPw=gI06~5?w$P">
                                                <value name="IF0">
                                                  <block type="time_compare_ex" id="5iTB)~59m4Q8ZGsm@C.K">
                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
                                                    <field name="USE_ACTUAL_TIME">TRUE</field>
                                                    <field name="OPTION">==</field>
                                                    <value name="START_TIME">
                                                      <shadow type="text" id="G7%Y8jbICT/]6g9V(20Q">
                                                        <field name="TEXT">12:00</field>
                                                      </shadow>
                                                      <block type="get_value" id="}g3y-BP:zzvsMb^z;P^k">
                                                        <field name="ATTR">val</field>
                                                        <field name="OID">javascript.0.Astro.night</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                                <statement name="DO0">
                                                  <block type="control" id="dlv_pWrCj0L)ZP_6`;cP">
                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                    <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                    <field name="WITH_DELAY">FALSE</field>
                                                    <value name="VALUE">
                                                      <block type="math_number" id="|UqlZ+1?U0x![Je`q=Ik">
                                                        <field name="NUM">0</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </statement>
                                                <next>
                                                  <block type="controls_if" id="]I5~#^oY^oc|Wr=41-vU">
                                                    <value name="IF0">
                                                      <block type="time_compare_ex" id="E[FonN_mpak/rEUXD[q{">
                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
                                                        <field name="USE_ACTUAL_TIME">TRUE</field>
                                                        <field name="OPTION">==</field>
                                                        <value name="START_TIME">
                                                          <shadow type="text" id="h#bi#I-u~?oMK:K*[*Hw">
                                                            <field name="TEXT">12:00</field>
                                                          </shadow>
                                                          <block type="get_value" id="t`|O?0=xj:TL3cnaZTvI">
                                                            <field name="ATTR">val</field>
                                                            <field name="OID">javascript.0.Astro.dawn</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO0">
                                                      <block type="control" id="{^CND^PpK4B#BSRs*T7q">
                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                        <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                        <field name="WITH_DELAY">FALSE</field>
                                                        <value name="VALUE">
                                                          <block type="math_number" id="-u+T#TvggPN`gd4Dil]a">
                                                            <field name="NUM">1</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </statement>
                                                    <next>
                                                      <block type="controls_if" id="o~/0e]i)@{ovoRyw8:u/">
                                                        <value name="IF0">
                                                          <block type="time_compare_ex" id="Q}[Jd%%)5=-8{!,{VJNY">
                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
                                                            <field name="USE_ACTUAL_TIME">TRUE</field>
                                                            <field name="OPTION">==</field>
                                                            <value name="START_TIME">
                                                              <shadow type="text" id="9#P-9Dna`WIQp3RRn+x+">
                                                                <field name="TEXT">12:00</field>
                                                              </shadow>
                                                              <block type="get_value" id="Y2rB;%+8A[9Ro{2}D+}j">
                                                                <field name="ATTR">val</field>
                                                                <field name="OID">javascript.0.Astro.sunriseEnd</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </value>
                                                        <statement name="DO0">
                                                          <block type="control" id="~;6MirFP9Rhx#mVX$Uwk">
                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                            <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                            <field name="WITH_DELAY">FALSE</field>
                                                            <value name="VALUE">
                                                              <block type="math_number" id="/nu*_Qt7.iM?ufxP7h6)">
                                                                <field name="NUM">2</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </statement>
                                                        <next>
                                                          <block type="controls_if" id="~3gB+Tx2jw^2NY#L:81i">
                                                            <value name="IF0">
                                                              <block type="time_compare_ex" id="kiJ[:|lK|qhw)j~dJDU%">
                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
                                                                <field name="USE_ACTUAL_TIME">TRUE</field>
                                                                <field name="OPTION">==</field>
                                                                <value name="START_TIME">
                                                                  <shadow type="text" id="OfW64`w]CT!N2g6:xXS?">
                                                                    <field name="TEXT">12:00</field>
                                                                  </shadow>
                                                                  <block type="get_value" id="]tIy1SUy8GAXNL#n`gRD">
                                                                    <field name="ATTR">val</field>
                                                                    <field name="OID">javascript.0.Astro.sunsetStart</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </value>
                                                            <statement name="DO0">
                                                              <block type="control" id="xsEH-mIipVT7TO5CLe0r">
                                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                                <field name="WITH_DELAY">FALSE</field>
                                                                <value name="VALUE">
                                                                  <block type="math_number" id="h9#.*=zLN3RlcykKZo%F">
                                                                    <field name="NUM">3</field>
                                                                  </block>
                                                                </value>
                                                              </block>
                                                            </statement>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </next>
                                              </block>
                                            </statement>
                                          </block>
                                        </xml>
                                        

                                        Und hier die Lichtschaltung:

                                        <xml xmlns="https://developers.google.com/blockly/xml">
                                          <variables>
                                            <variable type="interval" id="Intervall">Intervall</variable>
                                            <variable id="{OcV;9JI[AK?VB^,6ay*">ZählerSchleife</variable>
                                          </variables>
                                          <block type="on_ext" id="[%=J4qpQ(I$}t`g633vf" x="-388" y="-662">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                            <field name="CONDITION">ne</field>
                                            <field name="ACK_CONDITION"></field>
                                            <value name="OID0">
                                              <shadow type="field_oid" id="p;`jg|4T8P_Ct8]CuqMM">
                                                <field name="oid">hm-rpc.0.000000000.1.PRESENCE_DETECTION_STATE</field>
                                              </shadow>
                                            </value>
                                            <statement name="STATEMENT">
                                              <block type="controls_if" id="iPeJKS0Q#L$P/1=W$X44">
                                                <mutation else="1"></mutation>
                                                <value name="IF0">
                                                  <block type="logic_operation" id=";dWn;`_10rkZ.5sAn@Fg">
                                                    <field name="OP">AND</field>
                                                    <value name="A">
                                                      <block type="on_source" id="s7lL,Q1ie;sKAi;gB4@#">
                                                        <field name="ATTR">state.val</field>
                                                      </block>
                                                    </value>
                                                    <value name="B">
                                                      <block type="logic_compare" id="JpXh=-;R#x26Ij{|(/3!">
                                                        <field name="OP">EQ</field>
                                                        <value name="A">
                                                          <block type="get_value" id="0jnnR}4f@PqIfEax//AY">
                                                            <field name="ATTR">val</field>
                                                            <field name="OID">hue.1.Raum_Badezimmer.bri</field>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="math_number" id="eGXc7}vR/ScLIh9)KDk%">
                                                            <field name="NUM">0</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                                <statement name="DO0">
                                                  <block type="controls_if" id="WpBEaYZB0n9:9u)er:pI">
                                                    <mutation elseif="2"></mutation>
                                                    <value name="IF0">
                                                      <block type="logic_compare" id="WT]MBkj}s9,-W+mfsx(T">
                                                        <field name="OP">EQ</field>
                                                        <value name="A">
                                                          <block type="get_value" id="a%IO]Z@Udu7GKmsN3L~Y">
                                                            <field name="ATTR">val</field>
                                                            <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="math_number" id="mwtw0WSN28`T(Zv$#g)^">
                                                            <field name="NUM">0</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO0">
                                                      <block type="control" id="=^[~qp(:U80dl4]:C8y2">
                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                        <field name="OID">hue.1.Raum_Badezimmer.command</field>
                                                        <field name="WITH_DELAY">FALSE</field>
                                                        <value name="VALUE">
                                                          <block type="text" id="y:iaYWblm_59,Nobf_c/">
                                                            <field name="TEXT">{"on":true,"bri":10,"transitiontime":50}</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </statement>
                                                    <value name="IF1">
                                                      <block type="logic_operation" id="SwHNkU2UBTU]pxi8l%wx" inline="false">
                                                        <field name="OP">OR</field>
                                                        <value name="A">
                                                          <block type="logic_compare" id="Ol!~MbZZaNF^{4(GT;0t" inline="false">
                                                            <field name="OP">EQ</field>
                                                            <value name="A">
                                                              <block type="get_value" id="DPdE;co$s-n@=^kSRCwa">
                                                                <field name="ATTR">val</field>
                                                                <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                              </block>
                                                            </value>
                                                            <value name="B">
                                                              <block type="math_number" id="{AGNw]{XqnMHh7jPTUdk">
                                                                <field name="NUM">1</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="logic_compare" id="OxJy=Qr9$fv]t:_a3bN3" inline="false">
                                                            <field name="OP">EQ</field>
                                                            <value name="A">
                                                              <block type="get_value" id="pZ]6O_0riOmP+k/mn.*G">
                                                                <field name="ATTR">val</field>
                                                                <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                              </block>
                                                            </value>
                                                            <value name="B">
                                                              <block type="math_number" id="Op._VH#:#x)k%M@ts.V3">
                                                                <field name="NUM">3</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO1">
                                                      <block type="control" id="k#!n8.9GFCHUL@e](975">
                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                        <field name="OID">hue.1.Raum_Badezimmer.command</field>
                                                        <field name="WITH_DELAY">FALSE</field>
                                                        <value name="VALUE">
                                                          <block type="text" id=":Bq4%$WlKw^`3I3_1f3C">
                                                            <field name="TEXT">{"on":true,"bri":120,"transitiontime":100}</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </statement>
                                                    <value name="IF2">
                                                      <block type="logic_compare" id="n27r$V8V3oe2k@sIS-HV">
                                                        <field name="OP">EQ</field>
                                                        <value name="A">
                                                          <block type="get_value" id="B1dW.|5bN[z^p;(]4~f2">
                                                            <field name="ATTR">val</field>
                                                            <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="math_number" id="1d0S-1G)0+Gz8Zsztpm$">
                                                            <field name="NUM">2</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO2">
                                                      <block type="control" id="*R87]Zq^%OS07@]SstfI">
                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                        <field name="OID">hue.1.Raum_Badezimmer.command</field>
                                                        <field name="WITH_DELAY">FALSE</field>
                                                        <value name="VALUE">
                                                          <block type="text" id="cw-5+0#NKZ.560!^0S#T">
                                                            <field name="TEXT">{"on":true,"bri":254,"transitiontime":100}</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </statement>
                                                  </block>
                                                </statement>
                                                <statement name="ELSE">
                                                  <block type="control" id="l@OT!K]pPfA~d;)$]c)~">
                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                    <field name="OID">hue.1.Raum_Badezimmer.command</field>
                                                    <field name="WITH_DELAY">FALSE</field>
                                                    <value name="VALUE">
                                                      <block type="text" id="u]f0h8eQt,h]Q(~-HL%X">
                                                        <field name="TEXT">{"on":false,"transitiontime":100}</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </statement>
                                              </block>
                                            </statement>
                                          </block>
                                          <block type="timeouts_setinterval" id="+J$GLv^iHlp!.DB%,M|L" disabled="true" x="812" y="-587">
                                            <field name="NAME">Intervall</field>
                                            <field name="INTERVAL">1</field>
                                            <field name="UNIT">sec</field>
                                            <statement name="STATEMENT">
                                              <block type="math_change" id="~[4:nL2EN-uO+GTBmIHQ">
                                                <field name="VAR" id="{OcV;9JI[AK?VB^,6ay*">ZählerSchleife</field>
                                                <value name="DELTA">
                                                  <shadow type="math_number" id="*zbc@w*XLME=Ix;?Gz1K">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                </value>
                                              </block>
                                            </statement>
                                            <next>
                                              <block type="timeouts_clearinterval" id="Zi?2!1Br7B,v]oh$OrW3" disabled="true">
                                                <field name="NAME">Intervall</field>
                                                <next>
                                                  <block type="debug" id="nh,Xx1?=!t:#JoV%B::2" disabled="true">
                                                    <field name="Severity">warn</field>
                                                    <value name="TEXT">
                                                      <shadow type="text" id="{Rl67zi--b,(Yz@S!oyF">
                                                        <field name="TEXT">test</field>
                                                      </shadow>
                                                      <block type="text_join" id="k4x.edDy}{;RQpPzHbQN">
                                                        <mutation items="3"></mutation>
                                                        <value name="ADD0">
                                                          <block type="text" id="c!P)8O-NkHwj0[1W%qC=">
                                                            <field name="TEXT">Das Licht im Bad war für </field>
                                                          </block>
                                                        </value>
                                                        <value name="ADD1">
                                                          <block type="variables_get" id="-)pM(ICZ)tX};F[w8Wc:">
                                                            <field name="VAR" id="{OcV;9JI[AK?VB^,6ay*">ZählerSchleife</field>
                                                          </block>
                                                        </value>
                                                        <value name="ADD2">
                                                          <block type="text" id="dv^LPCY6qzZ3*,IIHCL`">
                                                            <field name="TEXT"> Sekunden eingeschaltet.</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </xml>
                                        
                                        dslraserD 1 Antwort Letzte Antwort
                                        0
                                        • H hinsen2k

                                          @dslraser

                                          /*
                                           * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
                                           *
                                           * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
                                           *
                                           * Dieses Skript dient zur freien Verwendung in ioBroker zur Verbrauchserfassung der Shelly Geräte.
                                           * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung
                                           * und Performance entwickelt.
                                           * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind.
                                           *
                                           * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf
                                           * https://www.kreyenborg.koeln
                                           * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der,
                                           * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht!
                                           *
                                           * Ansprüche gegenüber Dritten bestehen nicht.
                                           *
                                           * Skript Name:     Astro-Zeiten
                                           * Skript Version:  1.21
                                           * Erstell-Datum:   13. Mai 2021
                                           *
                                           */
                                           
                                          // Datenpunkte neu erstellen
                                          var ueberschreiben = false;
                                           
                                          // Hauptdatenpunkt unterhalb javascript
                                          var datenpunkt = "Astro.";
                                           
                                          // Lesbare Zeiten
                                          const lesbare_zeiten = ["Früher Morgen", "Frühe Dämmerung", "Morgendämmerung", "Sonnenaufgang", "Vormittag", "später Vormittag", "Mittag",
                                              "früher Abend", "Abend", "Sonnenuntergang", "Abenddämmerung", "später Abend", "Nacht", "Mitternacht"];
                                           
                                          // Objekte der Astro Zeiten
                                          const objekt = ["nightEnd", "nauticalDawn", "dawn", "sunrise", "sunriseEnd", "goldenHourEnd", "solarNoon", "goldenHour",
                                              "sunsetStart", "sunset", "dusk", "nauticalDusk", "night", "nadir", "tageszeitAstro", "naechsteTageszeitAstro",
                                              "tageszeitLesbar", "naechsteTageszeitLesbar", "aktuelleAstroZeit", "Tag", "sunriseUnix", "sunsetUnix"];
                                           
                                          // Zustände der Astro-Zeiten
                                          const beschreibung = ["00 - Ende der Nacht", "01 - nautische Morgendämmerung", "02 - Morgendämmerung", "03 - Sonnenaufgang",
                                              "04 - Ende des Sonnenaufgangs", "05 - Ende der goldenen Stunde VM", "06 - Mittag", "07 - goldene Abendstunde",
                                              "08 - Start des Sonnenuntergangs", "09 - Sonnenuntergang", "10 - Dämmerung Abends", "11 - nautische Dämmerung abends",
                                              "12 - Start der Nacht", "13 - Mitternacht", "Aktuelle Tageszeit (Astro)", "Nächste Tageszeit (Astro)",
                                              "Aktuelle Tageszeit (lesbar)", "Nächste Tageszeit (lesbar)", "aktuelle Astrozeit", "Solange die Sonne scheint, ist Tag", "Sunrise Unix Zeitstempel", "Sunset Unix Zeitstempel"];
                                           
                                          // Erstelle die benötigten Datenpunkte
                                          function datenpunkte_erstellen() {
                                              for (var i = 0; i < objekt.length; i++) {
                                                  createState(datenpunkt + objekt[i], "", ueberschreiben, {
                                                      name: beschreibung[i],
                                                      desc: beschreibung[i],
                                                      type: "string",
                                                      role: "value",
                                                      unit: ""
                                                  });
                                              }
                                              log("Astro: Datenpunkte erstellt!");
                                          }
                                           
                                          // Datenpunkte mit erstem Inhalt füllen
                                          function datenpunkte_fuellen() {
                                              for (var i = 0; i < objekt.length - 8; i++) {
                                                  var datum = new Date();
                                                  try {
                                                      var astro_zeit = zeit_formatieren(getAstroDate(objekt[i], datum));
                                                  } catch (e) {
                                                       // Fehler Kontrolle
                                                  }
                                                  if (astro_zeit == "Invalid Date") {
                                                      astro_zeit = "00:00";
                                                  }
                                                  setState(datenpunkt + objekt[i], astro_zeit);
                                              }
                                              log("Astro: Erste Datenpunkte gefüllt!");
                                          }
                                           
                                          // Haupt-Skript
                                          function update_astro_zeiten() {
                                              var datum = new Date();
                                              var uhrzeit = zeit_formatieren(datum);
                                           
                                              // Zustand der Daten
                                              var aktuell = 0;
                                              var aktualisiert = 0;
                                              var keine_aktualisierung = 0;
                                              var astro_index = 0;
                                           
                                              // Aktuellen Tagesabschnitt bestimmen
                                              var ergebnis = -1;
                                              var naechste_element = false;
                                           
                                              // Aktuelle & kommende Tageszeit
                                              var aktuelle_tageszeit = 0;
                                              var kommende_tageszeit = 0;
                                           
                                              // Tag
                                              var astroTag = "Nacht";
                                           
                                              for (var i = 0; i < objekt.length - 8; i++) {
                                                  // Temporäre Zahl
                                                  var tmp_ergebnis = 0;
                                           
                                                  // Hole Uhrzeit aus aktuellem Datenpunkt
                                                  var dp_zeit = getState(datenpunkt + objekt[i]).val;
                                           
                                                  // Hole Index aktuelle Tageszeit
                                                  var tmp_time_uhr = Date.parse('1970-01-01 ' + uhrzeit + ':00');
                                                  var tmp_time_dp = Date.parse('1970-01-01 ' + dp_zeit + ':00');
                                           
                                                  // Aktuelle Zeit ist kleiner als DP
                                                  if (tmp_time_uhr < tmp_time_dp) {
                                                      tmp_ergebnis = tmp_time_dp - tmp_time_uhr;
                                                      if (tmp_ergebnis <= ergebnis || ergebnis == -1) {
                                                          ergebnis = tmp_ergebnis;
                                                          astro_index = i;
                                                          naechste_element = true;
                                                      }
                                                      // Aktuelle Zeit ist größer als DP
                                                  } else {
                                                      tmp_ergebnis = tmp_time_uhr - tmp_time_dp;
                                                      if (tmp_ergebnis <= ergebnis || ergebnis == -1) {
                                                          ergebnis = tmp_ergebnis;
                                                          astro_index = i;
                                                          naechste_element = false;
                                                      }
                                                  }
                                                  // Datenpunkt ist kleiner als aktuelle Uhrzeit. Update!
                                                  if (dp_zeit < uhrzeit) {
                                                      // Neue Astro-Zeit für den nächsten Tag generieren
                                                      let morgen = new Date();
                                                      morgen.setDate(morgen.getDate() + 1);
                                                      try {
                                                          var astro_zeit = zeit_formatieren(getAstroDate(objekt[i], morgen));
                                                      } catch (e) {
                                                          // Fehler Kontrolle
                                                      }
                                                      // Datenpunkt und Astro Zeit sind gleich. Kein Update!
                                                      if (dp_zeit == astro_zeit) {
                                                          keine_aktualisierung++;
                                                      } else {
                                                          if (astro_zeit == "Invalid Date") {
                                                              astro_zeit = "00:00";
                                                          }
                                                          setState(datenpunkt + objekt[i], astro_zeit);
                                                          aktualisiert++;
                                                      }
                                                  } else {
                                                      // Zeit kommt noch! Kein Update!
                                                      aktuell++;
                                                  }
                                              }
                                              // Wenn wahr, ist der Abstand zum nächsten Zeitpunkt kleiner. Also -1 um aktuellen Index zu erhalten.
                                              if (naechste_element) {
                                                  astro_index--;
                                              }
                                           
                                              // Navigiere zum richtigen Index
                                              if (astro_index > 12) {
                                                  aktuelle_tageszeit = 13;
                                                  kommende_tageszeit = 0;
                                              } else if (astro_index < 0) {
                                                  aktuelle_tageszeit = 0;
                                                  kommende_tageszeit = 1;
                                              } else {
                                                  aktuelle_tageszeit = astro_index;
                                                  kommende_tageszeit = astro_index + 1;
                                              }
                                           
                                              // Prüfe, ob aktuelle Uhrzeit zwischen Sonnenauf- und untergang liegt
                                              if (astro_index > 2 && astro_index < 10) {
                                                  astroTag = "Tag";
                                              }
                                           
                                              // Update aktuelle Tageszeit Astro (Text)
                                              setState(datenpunkt + objekt[14], text_formatieren(beschreibung[aktuelle_tageszeit]));
                                           
                                              // Update kommende Tageszeit Astro (Text)
                                              setState(datenpunkt + objekt[15], text_formatieren(beschreibung[kommende_tageszeit]));
                                           
                                              // Update aktuelle Tageszeit lesbar (Text)
                                              setState(datenpunkt + objekt[16], lesbare_zeiten[aktuelle_tageszeit]);
                                           
                                              // Update kommende Tageszeit lesbar (Text)
                                              setState(datenpunkt + objekt[17], lesbare_zeiten[kommende_tageszeit]);
                                           
                                              // Update aktuelle AstroZeit
                                              setState(datenpunkt + objekt[18], objekt[aktuelle_tageszeit]);
                                           
                                              // Setze die Variable "Tag" auf "Tag", wenn Uhrzeit zwischen Sonnenauf- und untergang
                                              setState(datenpunkt + objekt[19], astroTag);
                                           
                                              // Setze die Variable Sunrise Unix
                                              let tmp_morgen = new Date();
                                              tmp_morgen.setDate(tmp_morgen.getDate() + 1);
                                              let unix_sunrise = getAstroDate("sunrise", tmp_morgen).getTime() * 1000;
                                              setState(datenpunkt + objekt[20], unix_sunrise.toString());
                                           
                                              // Setze die Variable Sunset Unix
                                              let unix_sunset = getAstroDate("sunset", tmp_morgen).getTime() * 1000;
                                              setState(datenpunkt + objekt[21], unix_sunset.toString());
                                           
                                              var ausgabe = "Astro: Gültige Zeiten: [aktueller Tag: " + aktuell + "] | [nächster Tag: " + keine_aktualisierung + "] | [Aktualisiert: " + aktualisiert +
                                                  "] | Aktuelle Tageszeit: " + lesbare_zeiten[aktuelle_tageszeit] + " | Kommende Tageszeit: " + lesbare_zeiten[kommende_tageszeit];
                                              log(ausgabe);
                                          }
                                           
                                          // Funktion, um die Zeit in HH:MM zu formatieren
                                          function zeit_formatieren(zeit) {
                                              return zeit.toLocaleTimeString('de-DE', { hour12: false, hour: '2-digit', minute: '2-digit' });
                                          }
                                           
                                          // Funktion, um den Text zu formatieren. "Mittag" statt "6 - Mittag"
                                          function text_formatieren(text) {
                                              text = text.split("-")[1];
                                              text = text.substr(1, text.length);
                                              return text;
                                          }
                                           
                                          // Erster Start des Skripts und anlegen der Datenpunkte
                                          function update_astro_zeiten_erster_start() {
                                              log("Astro: Erster Start des Skriptes!")
                                              // Datenpunkte werden erstellt
                                              datenpunkte_erstellen();
                                           
                                              // erstes Füllen der Datenpunkte um 3 Sek. verzögert
                                              setTimeout(datenpunkte_fuellen, 3000);
                                           
                                              // Das Update der Zeiten ist um 5 Sek. verzögert
                                              setTimeout(update_astro_zeiten, 5000);
                                          }
                                           
                                          // Erster Start und Initialisierung
                                          update_astro_zeiten_erster_start();
                                           
                                          // Alle 60 Minunten das Hauptskript ausführen
                                          schedule('*/30 * * * *', update_astro_zeiten);
                                          

                                          Hier das Blockly für die Tageszeit:

                                          <xml xmlns="https://developers.google.com/blockly/xml">
                                            <block type="schedule" id="HO}_tUx1x5P:u/vEA_5=" x="-388" y="-987">
                                              <field name="SCHEDULE">* * * * *</field>
                                              <statement name="STATEMENT">
                                                <block type="controls_if" id="36`CLBkPw=gI06~5?w$P">
                                                  <value name="IF0">
                                                    <block type="time_compare_ex" id="5iTB)~59m4Q8ZGsm@C.K">
                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
                                                      <field name="USE_ACTUAL_TIME">TRUE</field>
                                                      <field name="OPTION">==</field>
                                                      <value name="START_TIME">
                                                        <shadow type="text" id="G7%Y8jbICT/]6g9V(20Q">
                                                          <field name="TEXT">12:00</field>
                                                        </shadow>
                                                        <block type="get_value" id="}g3y-BP:zzvsMb^z;P^k">
                                                          <field name="ATTR">val</field>
                                                          <field name="OID">javascript.0.Astro.night</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <statement name="DO0">
                                                    <block type="control" id="dlv_pWrCj0L)ZP_6`;cP">
                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                      <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                      <field name="WITH_DELAY">FALSE</field>
                                                      <value name="VALUE">
                                                        <block type="math_number" id="|UqlZ+1?U0x![Je`q=Ik">
                                                          <field name="NUM">0</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </statement>
                                                  <next>
                                                    <block type="controls_if" id="]I5~#^oY^oc|Wr=41-vU">
                                                      <value name="IF0">
                                                        <block type="time_compare_ex" id="E[FonN_mpak/rEUXD[q{">
                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
                                                          <field name="USE_ACTUAL_TIME">TRUE</field>
                                                          <field name="OPTION">==</field>
                                                          <value name="START_TIME">
                                                            <shadow type="text" id="h#bi#I-u~?oMK:K*[*Hw">
                                                              <field name="TEXT">12:00</field>
                                                            </shadow>
                                                            <block type="get_value" id="t`|O?0=xj:TL3cnaZTvI">
                                                              <field name="ATTR">val</field>
                                                              <field name="OID">javascript.0.Astro.dawn</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                      <statement name="DO0">
                                                        <block type="control" id="{^CND^PpK4B#BSRs*T7q">
                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                          <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                          <field name="WITH_DELAY">FALSE</field>
                                                          <value name="VALUE">
                                                            <block type="math_number" id="-u+T#TvggPN`gd4Dil]a">
                                                              <field name="NUM">1</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </statement>
                                                      <next>
                                                        <block type="controls_if" id="o~/0e]i)@{ovoRyw8:u/">
                                                          <value name="IF0">
                                                            <block type="time_compare_ex" id="Q}[Jd%%)5=-8{!,{VJNY">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
                                                              <field name="USE_ACTUAL_TIME">TRUE</field>
                                                              <field name="OPTION">==</field>
                                                              <value name="START_TIME">
                                                                <shadow type="text" id="9#P-9Dna`WIQp3RRn+x+">
                                                                  <field name="TEXT">12:00</field>
                                                                </shadow>
                                                                <block type="get_value" id="Y2rB;%+8A[9Ro{2}D+}j">
                                                                  <field name="ATTR">val</field>
                                                                  <field name="OID">javascript.0.Astro.sunriseEnd</field>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <statement name="DO0">
                                                            <block type="control" id="~;6MirFP9Rhx#mVX$Uwk">
                                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                              <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                              <field name="WITH_DELAY">FALSE</field>
                                                              <value name="VALUE">
                                                                <block type="math_number" id="/nu*_Qt7.iM?ufxP7h6)">
                                                                  <field name="NUM">2</field>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </statement>
                                                          <next>
                                                            <block type="controls_if" id="~3gB+Tx2jw^2NY#L:81i">
                                                              <value name="IF0">
                                                                <block type="time_compare_ex" id="kiJ[:|lK|qhw)j~dJDU%">
                                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
                                                                  <field name="USE_ACTUAL_TIME">TRUE</field>
                                                                  <field name="OPTION">==</field>
                                                                  <value name="START_TIME">
                                                                    <shadow type="text" id="OfW64`w]CT!N2g6:xXS?">
                                                                      <field name="TEXT">12:00</field>
                                                                    </shadow>
                                                                    <block type="get_value" id="]tIy1SUy8GAXNL#n`gRD">
                                                                      <field name="ATTR">val</field>
                                                                      <field name="OID">javascript.0.Astro.sunsetStart</field>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </value>
                                                              <statement name="DO0">
                                                                <block type="control" id="xsEH-mIipVT7TO5CLe0r">
                                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                  <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                                  <field name="WITH_DELAY">FALSE</field>
                                                                  <value name="VALUE">
                                                                    <block type="math_number" id="h9#.*=zLN3RlcykKZo%F">
                                                                      <field name="NUM">3</field>
                                                                    </block>
                                                                  </value>
                                                                </block>
                                                              </statement>
                                                            </block>
                                                          </next>
                                                        </block>
                                                      </next>
                                                    </block>
                                                  </next>
                                                </block>
                                              </statement>
                                            </block>
                                          </xml>
                                          

                                          Und hier die Lichtschaltung:

                                          <xml xmlns="https://developers.google.com/blockly/xml">
                                            <variables>
                                              <variable type="interval" id="Intervall">Intervall</variable>
                                              <variable id="{OcV;9JI[AK?VB^,6ay*">ZählerSchleife</variable>
                                            </variables>
                                            <block type="on_ext" id="[%=J4qpQ(I$}t`g633vf" x="-388" y="-662">
                                              <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                              <field name="CONDITION">ne</field>
                                              <field name="ACK_CONDITION"></field>
                                              <value name="OID0">
                                                <shadow type="field_oid" id="p;`jg|4T8P_Ct8]CuqMM">
                                                  <field name="oid">hm-rpc.0.000000000.1.PRESENCE_DETECTION_STATE</field>
                                                </shadow>
                                              </value>
                                              <statement name="STATEMENT">
                                                <block type="controls_if" id="iPeJKS0Q#L$P/1=W$X44">
                                                  <mutation else="1"></mutation>
                                                  <value name="IF0">
                                                    <block type="logic_operation" id=";dWn;`_10rkZ.5sAn@Fg">
                                                      <field name="OP">AND</field>
                                                      <value name="A">
                                                        <block type="on_source" id="s7lL,Q1ie;sKAi;gB4@#">
                                                          <field name="ATTR">state.val</field>
                                                        </block>
                                                      </value>
                                                      <value name="B">
                                                        <block type="logic_compare" id="JpXh=-;R#x26Ij{|(/3!">
                                                          <field name="OP">EQ</field>
                                                          <value name="A">
                                                            <block type="get_value" id="0jnnR}4f@PqIfEax//AY">
                                                              <field name="ATTR">val</field>
                                                              <field name="OID">hue.1.Raum_Badezimmer.bri</field>
                                                            </block>
                                                          </value>
                                                          <value name="B">
                                                            <block type="math_number" id="eGXc7}vR/ScLIh9)KDk%">
                                                              <field name="NUM">0</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                  <statement name="DO0">
                                                    <block type="controls_if" id="WpBEaYZB0n9:9u)er:pI">
                                                      <mutation elseif="2"></mutation>
                                                      <value name="IF0">
                                                        <block type="logic_compare" id="WT]MBkj}s9,-W+mfsx(T">
                                                          <field name="OP">EQ</field>
                                                          <value name="A">
                                                            <block type="get_value" id="a%IO]Z@Udu7GKmsN3L~Y">
                                                              <field name="ATTR">val</field>
                                                              <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                            </block>
                                                          </value>
                                                          <value name="B">
                                                            <block type="math_number" id="mwtw0WSN28`T(Zv$#g)^">
                                                              <field name="NUM">0</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                      <statement name="DO0">
                                                        <block type="control" id="=^[~qp(:U80dl4]:C8y2">
                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                          <field name="OID">hue.1.Raum_Badezimmer.command</field>
                                                          <field name="WITH_DELAY">FALSE</field>
                                                          <value name="VALUE">
                                                            <block type="text" id="y:iaYWblm_59,Nobf_c/">
                                                              <field name="TEXT">{"on":true,"bri":10,"transitiontime":50}</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </statement>
                                                      <value name="IF1">
                                                        <block type="logic_operation" id="SwHNkU2UBTU]pxi8l%wx" inline="false">
                                                          <field name="OP">OR</field>
                                                          <value name="A">
                                                            <block type="logic_compare" id="Ol!~MbZZaNF^{4(GT;0t" inline="false">
                                                              <field name="OP">EQ</field>
                                                              <value name="A">
                                                                <block type="get_value" id="DPdE;co$s-n@=^kSRCwa">
                                                                  <field name="ATTR">val</field>
                                                                  <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                                </block>
                                                              </value>
                                                              <value name="B">
                                                                <block type="math_number" id="{AGNw]{XqnMHh7jPTUdk">
                                                                  <field name="NUM">1</field>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                          <value name="B">
                                                            <block type="logic_compare" id="OxJy=Qr9$fv]t:_a3bN3" inline="false">
                                                              <field name="OP">EQ</field>
                                                              <value name="A">
                                                                <block type="get_value" id="pZ]6O_0riOmP+k/mn.*G">
                                                                  <field name="ATTR">val</field>
                                                                  <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                                </block>
                                                              </value>
                                                              <value name="B">
                                                                <block type="math_number" id="Op._VH#:#x)k%M@ts.V3">
                                                                  <field name="NUM">3</field>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                      <statement name="DO1">
                                                        <block type="control" id="k#!n8.9GFCHUL@e](975">
                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                          <field name="OID">hue.1.Raum_Badezimmer.command</field>
                                                          <field name="WITH_DELAY">FALSE</field>
                                                          <value name="VALUE">
                                                            <block type="text" id=":Bq4%$WlKw^`3I3_1f3C">
                                                              <field name="TEXT">{"on":true,"bri":120,"transitiontime":100}</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </statement>
                                                      <value name="IF2">
                                                        <block type="logic_compare" id="n27r$V8V3oe2k@sIS-HV">
                                                          <field name="OP">EQ</field>
                                                          <value name="A">
                                                            <block type="get_value" id="B1dW.|5bN[z^p;(]4~f2">
                                                              <field name="ATTR">val</field>
                                                              <field name="OID">0_userdata.0.Wetter.Tageszeit</field>
                                                            </block>
                                                          </value>
                                                          <value name="B">
                                                            <block type="math_number" id="1d0S-1G)0+Gz8Zsztpm$">
                                                              <field name="NUM">2</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                      <statement name="DO2">
                                                        <block type="control" id="*R87]Zq^%OS07@]SstfI">
                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                          <field name="OID">hue.1.Raum_Badezimmer.command</field>
                                                          <field name="WITH_DELAY">FALSE</field>
                                                          <value name="VALUE">
                                                            <block type="text" id="cw-5+0#NKZ.560!^0S#T">
                                                              <field name="TEXT">{"on":true,"bri":254,"transitiontime":100}</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </statement>
                                                    </block>
                                                  </statement>
                                                  <statement name="ELSE">
                                                    <block type="control" id="l@OT!K]pPfA~d;)$]c)~">
                                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                      <field name="OID">hue.1.Raum_Badezimmer.command</field>
                                                      <field name="WITH_DELAY">FALSE</field>
                                                      <value name="VALUE">
                                                        <block type="text" id="u]f0h8eQt,h]Q(~-HL%X">
                                                          <field name="TEXT">{"on":false,"transitiontime":100}</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </statement>
                                                </block>
                                              </statement>
                                            </block>
                                            <block type="timeouts_setinterval" id="+J$GLv^iHlp!.DB%,M|L" disabled="true" x="812" y="-587">
                                              <field name="NAME">Intervall</field>
                                              <field name="INTERVAL">1</field>
                                              <field name="UNIT">sec</field>
                                              <statement name="STATEMENT">
                                                <block type="math_change" id="~[4:nL2EN-uO+GTBmIHQ">
                                                  <field name="VAR" id="{OcV;9JI[AK?VB^,6ay*">ZählerSchleife</field>
                                                  <value name="DELTA">
                                                    <shadow type="math_number" id="*zbc@w*XLME=Ix;?Gz1K">
                                                      <field name="NUM">1</field>
                                                    </shadow>
                                                  </value>
                                                </block>
                                              </statement>
                                              <next>
                                                <block type="timeouts_clearinterval" id="Zi?2!1Br7B,v]oh$OrW3" disabled="true">
                                                  <field name="NAME">Intervall</field>
                                                  <next>
                                                    <block type="debug" id="nh,Xx1?=!t:#JoV%B::2" disabled="true">
                                                      <field name="Severity">warn</field>
                                                      <value name="TEXT">
                                                        <shadow type="text" id="{Rl67zi--b,(Yz@S!oyF">
                                                          <field name="TEXT">test</field>
                                                        </shadow>
                                                        <block type="text_join" id="k4x.edDy}{;RQpPzHbQN">
                                                          <mutation items="3"></mutation>
                                                          <value name="ADD0">
                                                            <block type="text" id="c!P)8O-NkHwj0[1W%qC=">
                                                              <field name="TEXT">Das Licht im Bad war für </field>
                                                            </block>
                                                          </value>
                                                          <value name="ADD1">
                                                            <block type="variables_get" id="-)pM(ICZ)tX};F[w8Wc:">
                                                              <field name="VAR" id="{OcV;9JI[AK?VB^,6ay*">ZählerSchleife</field>
                                                            </block>
                                                          </value>
                                                          <value name="ADD2">
                                                            <block type="text" id="dv^LPCY6qzZ3*,IIHCL`">
                                                              <field name="TEXT"> Sekunden eingeschaltet.</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </next>
                                                </block>
                                              </next>
                                            </block>
                                          </xml>
                                          
                                          dslraserD Offline
                                          dslraserD Offline
                                          dslraser
                                          Forum Testing Most Active
                                          schrieb am zuletzt editiert von
                                          #20

                                          @hinsen2k

                                          ist dieser Datenpunkt als Zahl erstellt ?

                                          0_userdata.0.Wetter.Tageszeit
                                          
                                          H 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

                                          796

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          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