Ankündigung

Einklappen
Keine Ankündigung bisher.

Uhrzeit Vergleich (Wecker) mit Formel aus Alexa Control

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Uhrzeit Vergleich (Wecker) mit Formel aus Alexa Control

    Hi,

    ThorstenGehrig hat netterweise seine Formel zur Berechnung der Weckzeit im Thread zur Alexa Control geteilt.
    Da es nichts mit Alexa Control zutun hat nun ein eigen Thread dazu.


    Zitat von ThorstenGehrig Beitrag anzeigen
    Hi
    @Trollmar: ich hab mir mal was gebastelt das dich vielleicht Interessieren könnte.
    "skalierbare" Logik die die erste Weckzeit heraussucht.
    Eingang: iKO1...5 für die verschiedenen (aktiven) Weckzeiten.
    Vorgehensweiße: Baustein 15000000 (Logikberechnung).
    Formel an E1: date("H:i:s Y-m-d ", ((($a<$b)*strtotime($a))+(($a>=$b)*strtotime($b))) ) ;
    Diese Formel gibt an A1 die frühere Zeit aus. Eingänge sind E4 ($a) und E5 ($b)
    Im ersten Baustein gibt man iKO Weckzeit 1 und iKO Weckzeit 2.
    Im zweiten Baustein an E4 das Ergebniss vom Vorherigen Baustein, E5 mit Weckzeit 3
    Im dritten Baustein an E4 das Ergebniss vom Vorherigen Baustein, E5 mit Weckzeit 4 usw.

    Hört sich komlizierter an als es ist... - aber ein Bild sagt mehr als tausend Worte.
    Diese Logik liefert als Ergebniss die früheste Weckzeit aus 5 Weckern:
    weckzeit.png

    Ich hoffe es hilft jemanden :-)

    Gruß
    Thorsten

    @ThorstenGering

    Hast du mal bei dir getestet wenn ein Wecker ein früheres Datum hat?

    Also z.B "$a=21:51:00 2020-01-16" und "$b=07:24:00 2020-01-17"

    Da kommt bei mir "07:24:00 2020-01-17" als frühester Wecker raus.

    Hast du ne Idee?







    P.S Full quotes mussten jetzt hier aber mal sein ;-)
    Zuletzt geändert von trollmar; 16.01.2020, 21:44.
    Jean-Luc Picard: "Things are only impossible until they are not."

    #2
    Zitat von trollmar Beitrag anzeigen
    P.S Full quotes mussten jetzt hier aber mal sein ;-)
    ;-)

    Probier mal die formel so:
    date("H:i:s Y-m-d ", (((strtotime($a)<strtotime($b))*strtotime($a))+((s trtotime($a)>=strtotime($b))*strtotime($b))));
    Damit müsste es passen...


    Kommentar


      #3
      Läuft ..thx!
      Jetzt nur noch Jonofes update und wir können uns mit der Löschung von Wecker JSON's beschäftigen ;-)

      LG

      Ps
      Leerzeichen muss noch aus der formel raus für alle diejenigen die das CopyPaste verwenden.
      Jean-Luc Picard: "Things are only impossible until they are not."

      Kommentar


        #4
        Hi,

        Zitat von panzaeron Beitrag anzeigen
        Ich habe mir einen kleinen LBS gebastelt, um die Weckzeit auszuwerten und ggf. mit einem Offset zu versehen. Da ich diesen LBS nur wenig getestet habe und ich nicht sicher bin ob dieser in allen Situationen funktioniert, erstmal nur hier als Download hier...
        ich mach mal hier weiter. Da der andere thread sich ja um die primär Funktion des LBS handelt.
        Oder du machst einen eigenen Thread auf. Is ja dein LBS

        Danke fürs teilen.
        Bei mir geht er erstmal nicht wie erwartet.

        Hier der JSON (anonymisiert was die ID angeht)
        Code:
        [{"id":"A3S5BH2HU6VAYF-G090LF1072360AQL-148aeb54-0e4f-abcd-efgh-948bde7e70dd","new":0,"device":"Wohnzimmer Echo","createTime":"22:42:09","createDate":"01.18.20","alarmTime":"22:47:00","alarmDate":"2020-01-19","type":"Alarm","reminderLabel":null,"status":"ON","recurringPattern":"XXXX-WE","snoozedToTime":null},{"id":"A3S5BH2HU6VAYF-G090L9107335160P-9715e007-39fd-abcd-efgh-5663b01af9b7","new":0,"device":"K\u00fcche Echo","createTime":"22:32:58","createDate":"01.18.20","alarmTime":"22:45:00","alarmDate":"2020-01-18","type":"Alarm","reminderLabel":null,"status":"OFF","recurringPattern":null,"snoozedToTime":null},{"id":"A1RABVCI4QCIKC-G0911M0692860AD4-2074744a-abcd-efgh-87f4-214bfc8bbbbb","new":0,"device":"G\u00e4stezimmer Echo","createTime":"10:45:39","createDate":"01.19.20","alarmTime":"14:50:00","alarmDate":"2020-01-19","type":"Alarm","reminderLabel":null,"status":"ON","recurringPattern":null,"snoozedToTime":null},{"id":"A1RABVCI4QCIKC-G0911M0692860AD4-35925a16-abcd-efgh-bead-614be60ad6f1","new":0,"device":"G\u00e4stezimmer Echo","createTime":"10:31:58","createDate":"01.19.20","alarmTime":"10:34:00","alarmDate":"2020-01-19","type":"Alarm","reminderLabel":null,"status":"ON","recurringPattern":"P1D","snoozedToTime":null}]


        1.jpg

        Der um 10:34 ist der früheste.
        Hätte erwartet das der Wecker 14:15 der nächste Wecker ist.

        Is das so gedacht?


        Und ATimestamp ist nicht 10:04 ..sollte aber oder?

        LG
        Zuletzt geändert von trollmar; 20.01.2020, 08:49.
        Jean-Luc Picard: "Things are only impossible until they are not."

        Kommentar


          #5
          trollmar
          Danke, in diesem Thread passt es besser.
          Ich stelle gerade das Dilemma fest, welches der LBS hat, nämlich dann wenn es mehrere Weckzeiten am Tag gibt.
          Gedacht habe ich an meinem Tagesablauf, morgens klingelt der Wecker um 05:30 Uhr und am Wochenende oder im Urlaub später...

          Dieser LBS geht jetzt bei und sucht den nächsten Alarm raus (was bei mir immer morgens ist) und gibt dann je nach Differenz ein 1 Signal an den Diff Ausgängen aus. Alle Diffs beziehen sich auf den nächsten Alarm, z. B. ist folgendes möglich:
          • Diff 1: -1800 (30 Minuten vor der eingestellten Weckzeit wird die Zirkulationspumpe aktiviert)
          • Diff 2: -600 (10 Minuten vor dem Alarm wird der Rollladen hochgefahren)
          • Diff 3: -300 (5 Minuten vor dem Wecken wird die Szene Sonnenaufgang gestartet)
          • Diff 4: 0 (Mit dem Wecken wird das Radio eingeschaltet)
          • Diff 5: 60 (1 Minuten nach dem Wecken wird die Kaffeemaschine eingeschaltet)
          Problem ist jetzt wenn der nächste Wecker um 14 Uhr ist, dann wird auch zu dieser Zeit das ganze Programm abgespult. Wenn ich aber z. B. Schichtarbeite und morgens soll was anderes passieren als Mittags, dann lässt sich das nicht abbilden. Da fehlt mir gerade die zündende Idee...



          Kommentar


            #6
            aaah jetzt verstehe ich auch Diff 1 .. etc.

            Ja so verschieden ist das. Der LBS würde bei mir zu 90 % der Tage auch funktionieren.
            Nur wenn wir verschieden aufstehen müssen oder es gar Gäste isn Gästezimmer verschlagen hat (und die mit Alexa kein Proböem haben ..also if if if ;-) )
            ..dann geht der LBS halt nicht.

            Abgesehn von der limitierung des LBS.
            Warum werden bei mir keine Diff Zeiten für die Zeit 10:34 ausgegeben?

            Das Thema Wecker ist komplexer als man denkt .. könnte ähnlich komplex sein wie Rolladensteuerung
            Jean-Luc Picard: "Things are only impossible until they are not."

            Kommentar


              #7
              Welcher Alarm wird denn ausgegeben bzw. was gibt A4 und A5 aus (dein Screenshot wird bei mir nicht angezeigt)?

              Damit der LBS eine neue Alarmzeit verwendet, muss das JSON aktualisiert werden, daher triggere ich E40 vom Control LBS alle halbe Stunde. Man könnte auch ein Diff verwenden um nach einem Alarm automatisch neue Werte zu holen.

              Alexa Alarm.png

              Kommentar


                #8
                Hi,

                hab den Screenshot nochmal eingefügt.

                Aber Diff geht jetzt auch bei mir. Hatte damit gerechnet das da, warum auch immer eine strtotime rauskommt und nicht eine 1 bei erreichen.

                Benutzt du den reurring alarme? Das ist eigentlich noch das "größte" Probem was ich habe.
                Bin da gerade dran eine Logik zu bauen. Aber die ist jetzt schon riesig ;-)

                LG
                Jean-Luc Picard: "Things are only impossible until they are not."

                Kommentar


                  #9
                  trollmar Recurring nutze ich nicht, bisher "springt" der Alarm immer nach einiger Zeit auf den nächsten Tag, aber dass die Logik groß wird glaube ich sofort
                  Ich lasse dafür alle halbe Stunde die Alarmzeiten aktualisieren und bisher funktioniert es ganz gut (ca. zwei Wochen in Benutzung).

                  Kommentar


                    #10
                    Ok. Ja für das recuring ist ein echtes Ding.
                    Bei mir ist es eigentlich nur weekdays.

                    Bin in php nicht fit genug das direkt in Code zu machen.
                    Aber so wie ich es jetzt für einen "alarm chain" habe ist das nicht elegant genug.

                    Aber bleibe da dran.
                    Poste zur gegebener Zeit hier mal meine Ideen der Umsetzung.
                    Jean-Luc Picard: "Things are only impossible until they are not."

                    Kommentar


                      #11
                      Hmm, bei mir ist es auch nur weekdays und es stand bisher immer das richtige Datum. Sollte es da noch Probleme geben, baue ich das noch ein, ich denke direkt in PHP ist es einfacher als mit Logiken zu realisieren...

                      Kommentar


                        #12
                        Zitat von panzaeron Beitrag anzeigen
                        Hmm, bei mir ist es auch nur weekdays und es stand bisher immer das richtige Datum. Sollte es da noch Probleme geben, baue ich das noch ein, ich denke direkt in PHP ist es einfacher als mit Logiken zu realisieren...
                        Mir öffnets gerade die Augen!

                        https://knx-user-forum.de/forum/proj...54#post1457154
                        Zuletzt geändert von trollmar; 21.01.2020, 19:45.
                        Jean-Luc Picard: "Things are only impossible until they are not."

                        Kommentar

                        Lädt...
                        X