Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit sunrise: "Dauertriggerung" bei "sunrise-60m"

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

    Problem mit sunrise: "Dauertriggerung" bei "sunrise-60m"

    Hi!

    Ich wollte die Aussenbeleuchtung jetzt nicht mehr zu einer statische Uhrzeit (ein-)schalten, sondern z.B. "60 Minuten vor Sonnenaufgang, spätestens aber 06:00".

    Daher auch versucht
    Code:
    crontab = sunrise-60m<06:00
    , was dazu führte, dass die Logik (sie war testweise leer) gestern ein paar tausend irgendwo zwischen 05:00 und 06:00 (ungefähr!) ausgeführt wurde. Ok dachte ich, habe ich die Syntax nicht verstanden, also testweise:
    Code:
    crontab = init | sunrise-60m = 'sunrise-60m' | sunset-60m = 'sunset-60m'
    was heute dazu führte, dass zwischen 04:55:36 und 05:55:07 ca. 3x pro Sekunde die Logik getriggert wurde.

    Verstehe ich die Syntax falsch?

    Grüße
    Robert

    #2
    Hallo Robert,

    scheint ein Bug zu sein. Ich habe einen Verdacht. Ich versuche es im laufe des Tages zu fixen.

    Bis bald

    Marcus

    Kommentar


      #3
      Hallo Robert,

      ist ein Bug, ich habe auch das entsprechende Icon gesetzt.

      Ich bin am überlegen ob bzw. wie ich ihn am besten beseitige. Leider ist das nicht so einfach, deshalb überlege ich noch mal. Wenn jemand eine gute Idee/Patch hat, immer her damit!

      Zusammenfassung des Problems:
      Das Problem tritt immer dann auf wenn man sunrise/sunset gepaart einem negativen Offset in Minuten angibt.
      Code:
      # logic.conf
      ...
      crontab = sunset-60m
      Angenommen der Sonnenaufgang ist um 06:00, dann wird die Logik 60 Minuten vorher also um 05:00 aufgerufen. Anschließend wird die Zeit für den nächsten Durchlauf bestimmt. Der nächste Sonnenaufgang ist um 06:00 (am gleichen Tag), davon wird halt wieder die 60 Minuten abgezogen. Der Zeitpunkt liegt damit leicht in der Vergangenheit, damit wird die Logik sofort wieder getriggert. Und das Spiel beginnt von vorn. Das geht solange bis der nächste Sonnenaufgang am nächsten Tag ist.

      Eigentlich müsste ich überprüfen ob der Zeitpunkt in der Vergangenheit ist und dann den Sonnenaufgang vom nächsten Tag anfragen und davon die 60 Minuten abziehen. Leider ist der Code dafür (der in meinem Kopf ist) relativ kompliziert und der ganze Bereich (scheduler) ist sowieso nicht der trivialste.

      Wer hängt an dem Feature? Es scheint ja keiner zu Nutzen.

      Ich persönlich finde den Offset in Grad eh viel besser, den nutze ich selbst.
      Damit kann man einfach die "bürgerliche Dämmerung" verwenden:
      Code:
      # logic.conf
      ...
      crontab = sunset-6
      Bis bald

      Marcus

      Kommentar


        #4
        Hi Marcus,

        ich muss gestehen, dass ich deiner Erklärung aufgrund meiner Unkenntnis des Schedulers nicht hundertprozentig folgen konnte. Aus Interesse aber mal meine Gedanken:

        Initial wird der Wert berechnet, die Logik ausgeführt, ein neuer Aufrufzeitpunkt berechnet. Ok, wenn du jetzt zur Sicherheit bei einem neuen Aufruf sagst, dass auch Logiken die z.B. 5s in der Vergangenheit liegen ausgeführt werden (um eine gewisse Sicherheit zu erhalten), dann sollte die Logik doch bestenfalls ca. 3 mal aufgerufen werden. Nämlich Sunrise-60m (exakt), Sunrise-60m (mit ca. 2s Verspätung), Sunrise-60m (mit ca. 4s Verspätung) - irgendwann sagst du "jetzt ists zu spät, morgen wieder"!?

        Oder genereller: Ob Sunrise-60m, Sunrise-6 oder einfach " 0 8 * * " - alles sind doch exakte Zeitpunkte? Bei " 0 8 * * " sagst du ja nach der Logik auch nicht noch mal "oh, nur 2s später - noch mal!". Da scheint doch auch die "Umschaltung" auf den nächsten Tag zu klappen?

        Liegt es vielleicht eher daran, dass "Sunrise" am nächsten Tag (momentan zu dieser Jahreszeit) minimal später liegt?

        Egal, wie auch immer: Ich hänge nicht an dem Zeitoffset. Zugegebenermaßen hatte ich nicht wirklich darüber nachgedacht, ob Zeit oder Winkel jetzt besser sind, sollte wollte erstmal was ausprobieren um vorab eine Idee davon zu haben wie die cron-Einträge funktionieren. Komme auch perfekt mit dem Winkeloffset klar! - Von mir aus kann das Minutenoffset entfallen - wird dadurch auch weniger verwirrend.

        Grüße
        Robert

        Kommentar


          #5
          Hallo Robert,

          "0 8 * *" ist klar eine feste Zeit.
          sunrise ändert sich von Tag zu Tag.

          Für sunrise-6 wird folgende Operation durchgeführt:
          Code:
          sh.sun.rise(-6)
          Für sunrise-60m dagegen:
          Code:
          sh.sun.rise() - 60m
          Das Problem ist, das mir sun.rise immer nur den nächsten Sonnenaufgang liefert. Ich müsste diesen Zeitoffset in die Funktion sun.rise und sun.set integrieren.

          Darüber möchte ich noch mal schlafen.

          Gute Nacht

          Marcus

          Kommentar


            #6
            Hi Marcus,

            wie gesagt: Ich hänge nicht dran!

            Grüße
            Robert

            Kommentar


              #7
              Problem mit sunrise: &quot;Dauertriggerung&quot; bei &quot;sunrise-60m&quot;

              Hi Robert,

              verstanden, war auch mehr ein Selbstgespräch ;-)
              Es hilft mir über das Problem zu "sprechen" :-)

              Bis bald

              Marcus

              Kommentar


                #8
                Also ich nutze sowas "im Prinzip", will sagen: Ich nutze das, im Augenblick noch in linknx, die Rollläden sind noch nicht nach sh.py migriert. Im Prinzip liesse sich das aber auch mit Winkel lösen. Also von mir: nice-to-have, aber kein Show-Stopper.

                Gruss,

                der Jan
                KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                Kommentar


                  #9
                  Problem mit sunrise: &quot;Dauertriggerung&quot; bei &quot;sunrise-60m&quot;

                  Zitat von mknx Beitrag anzeigen

                  Wer hängt an dem Feature? Es scheint ja keiner zu Nutzen.
                  Also ich nutze das in der Form zur Steuerung meiner Außenbeleuchtung und Raffstores. Ich finde den Offset in Minuten wesentlich intuitiver als in Azimut(?) Grad.

                  Ist aber auch kein Showstopper, wenn es wegen zu großer Komplexität wieder rausfliegt.

                  Greetinx,
                  Udo

                  Kommentar


                    #10
                    Zitat von mknx Beitrag anzeigen
                    Es hilft mir über das Problem zu "sprechen" :-)
                    Es hat so geholfen, dass ein Fix auf github develop ist. :-)))

                    Bis bald

                    Marcus

                    Kommentar

                    Lädt...
                    X