Ankündigung

Einklappen
Keine Ankündigung bisher.

Error parsing crontab: 0 8 * 0,1,2,3,4 < sunrise

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

    Error parsing crontab: 0 8 * 0,1,2,3,4 < sunrise

    wieso geht das nicht.
    ich möchte erreichen dass wochentags diese Logik ausgeführt wird bei Sonnenaufgang aber nicht vor 8 Uhr.
    ohne die Angabe "< sunrise" ist alles O.K.

    #2
    Weil die Software das nicht unterstützt.

    Kommentar


      #3
      aber: crontab = 8 < sunrise geht doch.
      wie kann ich denn meine Anforderung lösen ?

      Kommentar


        #4
        Uzsu...?

        Kommentar


          #5
          Zitat von whe Beitrag anzeigen
          aber: crontab = 8 < sunrise geht doch.
          Hi,

          wenn das geht, hast Du glück! In der Anleitung ist beschrieben, dass
          Code:
          crontab = 8:00 < sunrise
          funktioniert, also eine Uhrzeit kleiner als eine andere! Bei einer einfachen 8 ist nicht klar, ob es sich um Stunden oder Minuten handelt. Insofern ist das was Du oben geschrieben hast nicht definiert, genau so wie Deine Ursprungsfrage.

          Dein Problem kannst Du lösen, indem Du eine Logik per crontab triggerst und in der Logik mit einem if auf sunrise prüfst.

          Gruß, Waldemar

          Kommentar


            #6
            Hi,

            ich würde nach Tag prüfen und nicht Sunrise.

            Bis bald

            Marcus

            Kommentar


              #7
              Hi Marcus,

              hast recht, ich hab nicht genau hingeschaut und dachte, es wären die ersten 4 Minuten nach 8, die er triggern wollte und nicht die Werktage um 8.
              Auf Tag prüfen ist viel besser und einfacher.

              Gruß, Waldemar (und bis morgen).

              Kommentar


                #8
                Hallo Waldemar.

                sorry mein Beispiel war aus der Doku abgeleitet muss natürlich korrekt wie in #5 spezifiziert werden.
                aber Dein Vorschlag mit dem IF ist gut. dann muss ich allerdings entweder einen time.sleep() einbauen oder die Logik mehrfach selbst aufrufen, sonst bleiben um 8 die Rollos unten und nichts weiter; sie sollen natürlich dann beim Sonnenaufgang hochgehen, wenn der nach 8 ist, wie jetzt im Winter.

                Gruß Wil

                PS: ich kann ja dann meine Logik hier posten, wenn sie funktioniert.

                Kommentar


                  #9
                  Neee, mach es so wie Marcus es vorschlug: crontab = 8:00 < sunrise, und dann in der Logik auf den Tag prüfen. Gruß Waldemar

                  Kommentar


                    #10
                    ich habe das in meiner logics.conf jetzt so spezifiziert und mir einen abgebrochen die Abfragen in der Logic hinzukriegen.

                    Code:
                    [Wochentags]
                        filename = Morgens.py
                    #    crontab = 0 8 * 0,1,2,3,4
                        crontab = 8:00 < sunrise
                    
                    [Wochenende]
                        filename = Morgens.py
                    #    crontab = 0 9 * 5,6
                        crontab = 9:00
                    bekomme aber weiterhin diese pars error.

                    Code:
                    Init SmartHome.py 1.0-45-g02cf972+
                    2016-01-16 20:13:01 INFO Main Start SmartHome.py 1.0-45-g02cf972+
                    2016-01-16 20:13:01 INFO Main Init Scheduler
                    2016-01-16 20:13:01 INFO Main Init Plugins
                    2016-01-16 20:13:05 INFO Main Init Items
                    2016-01-16 20:13:07 INFO Main Start Plugins
                    2016-01-16 20:13:07 INFO Main Start Logics
                    2016-01-16 20:13:08 ERROR Main Error parsing crontab: 9:00
                    2016-01-16 20:13:08 ERROR Main Error parsing crontab: 8:00 < sunrise

                    Kommentar


                      #11
                      Schon mal ohne Leerzeichen beim crontab versucht? Also "crontab = 8:00<sunrise" bzw. hier in der vorgegebenen Schreibweise "crontab = 00 09 * *"?

                      Kommentar


                        #12
                        danke,

                        so geht's ( sch... Syntax )

                        in der Logik habe ich jetzt Folgendes implementiert:

                        Code:
                         # put the blinds up 
                          logger.info("Logik: Morgens")
                          import time
                          now = time.localtime()
                          if (now.tm_wday > 4 and now.tm_hour == 9) or (now.tm_hour < 9 and now.tm_wday < 5):
                              logger.info("Rollladen hoch")
                            ....
                        geht das nicht einfacher ?

                        Gruß Wil

                        Kommentar


                          #13
                          wenn man die Leerzeichen weglässt kommt auch eine vernünftige Fehlermeldung:

                          Code:
                           Wrong syntax: 0 9 * 5,6<sunrise. Should be [H:M<](sunrise|sunset)[+|-][offset][<H:M]
                          danke für die freundliche Hilfe: alles funktioniert jetzt, wie geplant.

                          Kommentar


                            #14
                            Habe das mittlerweile um Feiertage erweitert. In den beiden Logiken ist jetzt folgende Abfragen:
                            Code:
                            logger.info("Logik: Morgens")
                            import time
                            now = time.localtime()
                            if (now.tm_hour == 9 and ( shtime.is_holiday(shtime.today()) or now.tm_wday > 4) ) or (now.tm_hour < 9 and now.tm_wday < 5 and not(shtime.is_holiday(shtime.today())) ):
                            Zuletzt geändert von bmx; 22.05.2021, 08:28. Grund: html codes durch < und > ersetzt

                            Kommentar

                            Lädt...
                            X