Ankündigung

Einklappen
Keine Ankündigung bisher.

crontab Erklärungsbedarf

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

    crontab Erklärungsbedarf

    Moin,
    ich habe so meine Probleme mit dem crontab zum Triggern der Aufgaben.
    Die Anleitung unter
    Configuration ? SmartHome.py 1.0 documentation
    bringt mich leider auch nicht weiter. Welche Möglichkeiten gibt es alles zum Triggern und wie kann ich diese Verknüpfen? Kann man auch & - Verknüpfungen verwenden?
    Warum ich das Frage ist folgendes Problem:
    Ich möchte meine Rollos von Montag bis Freitag um 6:10 Uhr hochfahren lassen, aber nur, wenn es schon hell ist (sunrise). Sollte es noch dunkel sein um 6:10 Uhr, dann halt bei sunrise.
    Am Wochenende soll sich das Ganze erst ab 8:00 Uhr gestartet werden.
    Ich habe schon einiges Probiert, komme aber auf kein Ergebnis.
    Beispiel: mit crontab = (10 06 * 0,1,2,3,4)<sunrise = 4
    komme ich auf eine nächste Schaltzeit am 14.08.2024 um 21:40:07+0200.

    Hat jemand einen Tipp?

    Gruß
    ElektroRudi
    Gruß
    ElektroRudi

    ............kann,.muß aber net....

    #2
    Hallo Rudi,

    das kann crontab nicht. Entweder Zeit & Sonnenaufgang oder Zeit & Tag.

    Das musst Du über eine kleine Logik lösen.

    Bis bald

    Marcus

    Kommentar


      #3
      Danke für die Antwort Marcus.

      Das mit der Logik ist kein Problem.
      Ich habe mich für die Variante entschieden, dass ich über sunrise und Zeit triggere und den Wochentag dann in der Logik auswerte.
      Meine Automatikfunktionen habe ich in einer Datei auto.py zusammengefasst, der ich einen entsprechenden Parameter übergebe.

      Nun habe ich aber gleich noch zwei Fragen:
      Wenn ich meine Logik über die Konsole testen will, wie kann ich dann einen Parameter übergeben.
      Der tr – Befehl lässt nur den Namen der Logik ohne weitere Parameter zu, oder ?
      Und wenn ich etwas an der logic.conf oder meiner auto.py ändere, muss ich dann zwangsläufig smarthome stoppen und neu starten?

      Gruß
      Rudi
      Gruß
      ElektroRudi

      ............kann,.muß aber net....

      Kommentar


        #4
        Nun hab ich doch ein Problem:
        Warum wird auto.py nur um 6:10 Uhr angesprungen?
        Code:
        [testSunrise]
            filename = auto.py
            crontab = 06:10<sunrise-15m = 4 | 08:00<sunrise-15m = 4
        Auch ohne Leerzeichen und ohne Wertübergabe funktioniert es nicht. Laut Anleitung soll es aber funktionieren!?!
        Hab es erst mal aufgeteilt, ist ja auch erst in der Testphase:
        Code:
        [testSunriseWerktag]
            filename = auto.py
            crontab = 06:10<sunrise-15m = 4
        [testSunriseWochenend]
            filename = auto.py
            crontab = 08:00<sunrise-15m = 4
        Gruß
        Rudi
        Gruß
        ElektroRudi

        ............kann,.muß aber net....

        Kommentar


          #5
          Alternativ, falls du den develop Zweig nutzt, könntest du das auch über das UZSU Plugin lösen
          Mit freundlichen Grüßen
          Niko Will

          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

          Kommentar


            #6
            Hallo Rudi,

            bei dem CLI kann man keine Werte übergeben.

            rr lädt und triggert eine Logik neu.

            Das mit dem doppelten sunrise ist ein Bug, den ich bei Gelegenheit fixen werde. Dein Workaround passt.

            @Niko: gegen den Bug hat das Plugin glaube ich wenig Chancen.

            Bis bald

            Marcus

            Kommentar


              #7
              Zitat von mknx Beitrag anzeigen
              Das mit dem doppelten sunrise ist ein Bug, den ich bei Gelegenheit fixen werde.
              ich habe einen Fix in develop eingecheckt. Nach positivem Feedback würde ich es auch in master integrieren. Ich habe aber erst mal keine Zeit zum austesten. Bei mir hat es simuliert geklappt.

              Bis bald

              Marcus

              Kommentar


                #8
                Hi,
                nachdem ich die sheduler.py aus dem develop eingebunden habe geht gar nichts mehr:
                Code:
                [testSunset]
                    filename = auto.py
                    crontab = 21:00<sunset+30m = 3
                
                [testSunrise]
                    filename = auto.py
                    crontab = 06:05<sunrise-15m = 4 | 08:05<sunrise-15m = 4
                
                [testSunriseWerktag]
                    filename = auto.py
                    crontab = 06:10<sunrise-15m = 4
                
                [testSunriseWochenend]
                    filename = auto.py
                    crontab = 08:00<sunrise-15m = 4
                Im Log steht:
                Code:
                2014-08-19 11:17:49 ERROR    Main         Wrong syntax: 08:00<sunrise-15m. Should be [H:M<](sunrise|sunset)[+|-][offset][<H:M]
                2014-08-19 11:17:49 ERROR    Main         Wrong syntax: 21:00<sunset+30m. Should be [H:M<](sunrise|sunset)[+|-][offset][<H:M]
                2014-08-19 11:17:49 ERROR    Main         Wrong syntax: 06:10<sunrise-15m. Should be [H:M<](sunrise|sunset)[+|-][offset][<H:M]
                2014-08-19 11:17:49 ERROR    Main         Wrong syntax: 06:05<sunrise-15m. Should be [H:M<](sunrise|sunset)[+|-][offset][<H:M]
                2014-08-19 11:17:50 ERROR    Main         Wrong syntax: 08:05<sunrise-15m. Should be [H:M<](sunrise|sunset)[+|-][offset][<H:M]
                Ich vermute mal, das es an der Wert-Übergabe liegt?
                Als nächste Startzeiten bekomme ich die 10 Jahre in der Zukunft, die in der sheduler.py eingetragen werden, wenn die Zuordnung nicht geklappt hat.

                Gruß
                ElektroRudi
                Gruß
                ElektroRudi

                ............kann,.muß aber net....

                Kommentar


                  #9
                  Zitat von mknx Beitrag anzeigen
                  @Niko: gegen den Bug hat das Plugin glaube ich wenig Chancen.
                  Hi Marcus,

                  welchen Bug? Doppeltes sunrise? Das ist doch hier nur notwendig, um zwischen Werktag und Wochenende zu unterscheiden. Mit dem UZSU Plugin ist das ja nicht mehr notwendig. Eine Schaltzeit für Werktage definieren mit sunrise und eine fürs Wochenende.
                  Mit freundlichen Grüßen
                  Niko Will

                  Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                  - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                  Kommentar


                    #10
                    Hi Niko,
                    will den Thread hier nicht kapern, aber bist Du Dir sicher dass das klappt via UZSU? Bei mir klappt mit der UZSU sonst alles supi, aber bei der Verwendung bspw. von 6:00<sunrise<8:00 an allen Tagen passiert gar nichts. Debug hat da leider auch nicht weitergeholfen. Via Crontab klappt es bei mir, aber da gebe ich ja auch keine Tage an. Kann auch gerne hierzu einen neuen Thread aufmachen, hat aber ganz gut hier reingepasst.
                    Cheers,
                    Oliver

                    Kommentar


                      #11
                      Hallo Oliver,

                      in meinen Tests damals hat das funktioniert, möchte aber da jetzt auch nicht mehr meine Hand dafür ins Feuer legen

                      In der Theorie sollte es auch gehen, sonst ist noch irgendwo ein Bug in meinem Plugin.
                      Mit freundlichen Grüßen
                      Niko Will

                      Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                      - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                      Kommentar


                        #12
                        Hi Niko,

                        war nicht als Kritik gedacht sondern eher als Bitte ob Du mal einen Dummy-Test auf ein Item bei Dir fahren könntest.

                        Von den Einträgen im DICT sieht alles so aus wie es in Deiner Beschreibung steht, sprich Syntax ok. Da das Plugin im Moment für mich noch Magic ist kann ich nicht ganz nachvollziehen was das Plugin exakt macht, aber ich gehe davon aus, dass es die Werte dann in entsprechende Crontab-jobs "umwandelt". ... und dann habe ich von Marcus weiter oben den Satz im Hinterkopf das entweder das eine oder das andere geht (Tag oder Bedingung).

                        "Leider" stelle ich mich auf meinem PI-Image gerade zu blöd an um an das Crontab-Spoolfile zu kommen.

                        Cheers,
                        Oliver

                        Kommentar


                          #13
                          Hallo,

                          Zitat von Sandman60 Beitrag anzeigen
                          "Leider" stelle ich mich auf meinem PI-Image gerade zu blöd an um an das Crontab-Spoolfile zu kommen.
                          das liegt daran das es kein Spoolfile dafür gibt. Die Magie findet in lib/scheduler.py statt.

                          Bis bald

                          Marcus

                          Kommentar


                            #14
                            Hallo Marcus,

                            ich habe gestern Abend die sheduler.py aus develop eingespielt und heut morgen blieb es erstmal dunkel. ;-)

                            Habe gerade mal im Log geschaut und festgestellt, dass meine Logik nicht mehr getriggert wurde.

                            Das mache ich folgendermaßen:

                            Code:
                            [rollo_automatik_auf]
                                filename = rollo.automatik.auf.py
                                crontab = 06:00<sunrise<08:00
                             
                            [rollo_automatik_ab]
                                filename = rollo.automatik.ab.py
                                crontab = 17:00<sunset<22:00
                            Innerhalb der Logik mache ich dann die Auswertung der Wochentage etc.

                            Die nächste Ausführung wird wohl erst in 10 Jahren stattfinden:

                            Code:
                            rollo_automatik_auf (scheduled for 2024-08-19 18:25:26+0000)
                            rollo_automatik_ab (scheduled for 2024-08-19 18:25:25+0000)
                            Zusätzlich kommen jetzt auch alle 10 Sek. die folgenden Meldungen im Debug Log

                            Code:
                             2014-08-19 01:16:49,967 DEBUG    Scheduler    series next time: 2014-08-19 01:16:59+02:00 -- scheduler.py:_next_time:303
                            2014-08-19 01:16:59,568 DEBUG    Scheduler    series next time: 2014-08-19 01:17:09+02:00 -- scheduler.py:_next_time:303
                            2014-08-19 01:17:09,680 DEBUG    Scheduler    series next time: 2014-08-19 01:17:19+02:00 -- scheduler.py:_next_time:303
                            2014-08-19 01:17:19,797 DEBUG    Scheduler    series next time: 2014-08-19 01:17:29+02:00 -- scheduler.py:_next_time:303
                            2014-08-19 01:17:29,902 DEBUG    Scheduler    series next time: 2014-08-19 01:17:39+02:00 -- scheduler.py:_next_time:303
                            2014-08-19 01:17:40,007 DEBUG    Scheduler    series next time: 2014-08-19 01:17:50+02:00 -- scheduler.py:_next_time:303
                            Habe das ganze nochmal mit der master sheduler.py getestet.
                            Fazit: keine Meldungen und korrekte Ausführungszeit:

                            Code:
                            rollo_automatik_auf (scheduled for 2014-08-20 04:11:50+0000)
                            rollo_automatik_ab (scheduled for 2014-08-19 18:32:20+0000)
                            Schöne Grüße,

                            Mark

                            Kommentar


                              #15
                              Hallo,

                              ich habe den 'Fix' in develop zurück genommen.

                              Das muss ich noch mal in Ruhe implementieren und dann testen. Leider lässt sich das nicht so einfach nachstellen.

                              Bis bald

                              Marcus

                              Kommentar

                              Lädt...
                              X