Ankündigung

Einklappen
Keine Ankündigung bisher.

Crontab Angaben an unterschiedlichen Tagen

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

    Crontab Angaben an unterschiedlichen Tagen

    Hi!
    Ich nutze aktuell smarthome.py für die Steuerung der Rollläden und der Außenbeleuchtung. Wenn man sich einmal damit beschäftigt hat, dann funktioniert das prächtig. Echt super Arbeit!

    Nun hab ich aber doch noch eine Frage. Und zwar sieht die Konfiguration der Logik für die Rollläden so aus:

    Code:
    [aussen_rolllaeden_sunrise]
        filename = aussen_rolllaeden_sunrise.py
        crontab = 6:00<sunrise+15m
    Also: Rolläden hoch 15 Minuten nach Sonnenaufgang, aber nur, wenn Sonnenaufgang nach 6 Uhr morgens. Funktioniert gut.

    Nun würde ich das ganze aber nur von Dienstag bei Freitag ausführen wollen, Samstag bis Montag sollte es ne Stunde später passieren.

    Ich könnte in der Zeile "crontab" ja auch eine andere Konfiguration einstellen, indem ich das nur auf die entsprechenden Wochentage beziehe. Jedoch hab ich keine Vorstellung, wie ich das mit dem Sonnenaufgang kombinieren soll. Habt ihr einen Vorschlag, wie ich das unterbringen kann?
    Oder ist das noch das Thema, das im Beitrag "Umfrage: Zeitschaltuhr (UZSU) gewünscht?" bereits diskutiert wurde/wird?

    Bye
    Rhaegar

    #2
    Hallo Raik,

    freut mich das es Dir gefällt.
    Ich bin mir nicht sicher ob Niko das mit dem 'Feature, dessen Abkürzung total bescheuert ist' erschlagen wird. Ich glaube aber nicht, das ist komplizierter als es aussieht.

    Ich würde es über eine separate Logik machen, die einmal in der Nacht läuft und die die Crontabeinträge der Logik 'aussen_rolllaeden_sunrise' modifiziert.
    Dann kannst Du auch noch z.B. Sonderfälle, wie z.B. Urlaub, berücksichtigen.

    Bis bald

    Marcus

    Kommentar


      #3
      Zitat von mknx Beitrag anzeigen
      Ich würde es über eine separate Logik machen, die einmal in der Nacht läuft und die die Crontabeinträge der Logik 'aussen_rolllaeden_sunrise' modifiziert.
      Dann kannst Du auch noch z.B. Sonderfälle, wie z.B. Urlaub, berücksichtigen.
      Danke für den Hinweis. Leider wüsste ich jetzt nicht, wie ich das umsetzen soll.
      Kannst mir nen Tipp geben?

      Bye
      Raik

      Kommentar


        #4
        Hi Raik,

        von SmartHome.py - Logic Configuration

        sh.scheduler.change()

        This method changes some runtime options of the logics. sh.scheduler.change('alarmclock', active=False) disables the logic 'alarmclock'. Besides the active flag, it is possible to change: cron and cycle.
        Code:
        sh.scheduler.change('meinelogik', cron='6:00<sunrise+15m')
        Bis bald

        Marcus

        Kommentar


          #5
          Zitat von mknx Beitrag anzeigen
          Ich bin mir nicht sicher ob Niko das mit dem 'Feature, dessen Abkürzung total bescheuert ist' erschlagen wird. Ich glaube aber nicht, das ist komplizierter als es aussieht.
          Prinzipiell schon, doch beruhen meine Überlegungen darauf, dass crontab das kann. Sprich, am Ende wäre es notwendig, dass crontab das kann sonst kann es auch das 'Feature, dessen Abkürzung total bescheuert ist' nicht.
          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 Marcus,

            zu dieser Problematik hätte ich auch noch einmal eine Frage an Dich ( Euch ).
            Ich würde auch gerne eine Logic zm Wochenende zu einer anderen Zeit abfeuern. Ich habe mir Deinen Vorschlag zu Herzen genommen und dieses versucht mit dem change zu realisieren. Jedoch bekomme ich immer eine Fehlermeldung wenn er den change durchführen möchte.


            Code:
            2013-10-04 14:54:09,772 sh.gc        DEBUG    Garbage collector: collected 1255 objects. -- smarthome.py:_garbage_collection:345
            2013-10-04 14:54:09,917 Scheduler    DEBUG    sh.gc next time: 2013-10-05 02:04:00+02:00 -- scheduler.py:_next_time:238
            2013-10-04 14:54:13,193 WochenendeSteuerung INFO     WochenendeSteuerung: Das File: setWochenende.py wurde gestartet -- setWochenende.py:<module>:5
            2013-10-04 14:54:13,204 WochenendeSteuerung INFO     WochenendeSteuerung: Setzte den RolladenAufstehen Sheduler auf Wochentag -- setWochenende.py:<module>:8
            2013-10-04 14:54:13,241 sonne        DEBUG    sonne.auf = 07:38 +0200 CEST via Logic None -- item.py:_update:219
            2013-10-04 14:54:13,251 WochenendeSteuerung WARNING  Logic: WochenendeSteuerung, File: /usr/smarthome/lib/scheduler.py, Line: 234, Method: _next_time, Exception: list indices must be 
            integers, not str -- scheduler.py:_task:281
            2013-10-04 14:54:13,271 sonne        DEBUG    sonne.ab = 19:02 +0200 CEST via Logic None -- item.py:_update:219
            2013-10-04 14:54:13,293 sonne        INFO     2013-10-05 05:38:29.575824+00:00 -- sonne.py:<module>:6
            2013-10-04 14:54:13,308 sonne        INFO     2013-10-04 17:02:29.379752+00:00 -- sonne.py:<module>:7
            2013-10-04 14:54:13,389 Scheduler    DEBUG    WochenendeSteuerung next time: 2013-10-05 01:00:00+02:00 -- scheduler.py:_next_time:238
            2013-10-04 14:54:13,409 Scheduler    DEBUG    sonne next time: 2013-10-05 03:00:00+02:00 -- scheduler.py:_next_time:238
            2013-10-04 14:54:19,129 System       DEBUG    smarthome.runtime = 0h 0m via Logic None -- item.py:_update:219
            Die Logic.conf ist so aufgebaut:
            Code:
            # Diese Logic wird noch von setWochenende manipuliert.
            # sun* Funktionen können nicht auf Tage beschraenkt werden. 
            [RollosAufstehen]
                filename = rollosAufstehen.py
                crontab  = sunrise
            
            [WochenendeSteuerung]
                filename = setWochenende.py
                crontab  = init | 00 01 * *
            und das setWochenende.py sieht so aus....
            Code:
            #!/usr/bin/env python
            #
            # Crontab kann den Sunrise nicht auf bestimmte Tage beschränken. Deshalb müssen wir hier dieses erledigen
            
            logger.info("WochenendeSteuerung: Das File: setWochenende.py wurde gestartet")
            
            if sh.now().weekday() in [0,1,2,3,4]:
                    logger.info("WochenendeSteuerung: Setzte den RolladenAufstehen Sheduler auf Wochentag")
                    sh.scheduler.change('RollosAufstehen', cron='sunrise+15m')
            else:
                    logger.info("WochenendeSteuerung: Setzte den RolladenAufstehen Sheduler auf Wochenden")
                    sh.scheduler.change('RollosAufstehen', 'cron=00 10 * 5,6')
            Kannst Du mir hierbei auch noch mal auf die Sprünge helfen?

            Gruß
            Dirk

            Kommentar


              #7
              Nach nochmaligem Suchen habe ich in einem anderen Thread die Lösung gefunden:


              https://knx-user-forum.de/smarthome-py/27231-sh-scheduler-change-fuer-cron.html


              Damit kann ich erst einmal leben....

              Gruß
              Dirk

              Kommentar

              Lädt...
              X