Ankündigung

Einklappen
Keine Ankündigung bisher.

cron rules gehen "nach"

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

    cron rules gehen "nach"

    Ich habe hier ein merkwürdiges Problem, mit dem ich nicht weiter komme.

    Seit der Umstellung auf die Winterzeit gehen meine cron gesteuerten Rules um eine Stunde "nach".


    Es läuft hier ein Openhab 3.2.0 im Docker.

    Eine der Rules, um die es geht:

    Screenshot_20220301_102111.png
    statt um Wochentags um 5:20 löst die Rule um 6:20 aus.

    Erster Verdacht, die Winterzeitumstellung hat nicht stattgefunden. Aber die über das NTP-Binding ermittelte lokale Zeit wird überall korrekt angezeigt.
    Also mal in die events.Log geguckt:
    da findet sich für einen Wochentag um 5:20 (der tatsächliche Auslösezeitpunkt war aber um 6:20)

    Code:
    2022-02-14 05:20:00.575 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'KNXDaliBeleuchtung_SZIndirektesLicht' received command 70
    2022-02-14 05:20:00.576 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'KNXDaliBeleuchtung_SZIndirektesLicht' predicted to become 70
    2022-02-14 05:20:00.605 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'KNXDaliBeleuchtung_SZTischleuchte' received command 95
    2022-02-14 05:20:00.607 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'KNXDaliBeleuchtung_SZIndirektesLicht' changed from 0 to 70
    2022-02-14 05:20:00.608 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'KNXDaliBeleuchtung_SZTischleuchte' predicted to become 95
    2022-02-14 05:20:00.614 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'KNXDaliBeleuchtung_SZTischleuchte' changed from 0 to 95
    2022-02-14 05:20:00.856 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'KNXDaliBeleuchtung_SZIndirektesLicht' changed from 70 to 100
    2022-02-14 05:20:00.896 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'KNXDaliBeleuchtung_SZIndirektesLicht' changed from 100 to 70
    2022-02-14 05:20:00.935 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'KNXDaliBeleuchtung_SZTischleuchte' changed from 95 to 100
    2022-02-14 05:20:00.994 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'KNXDaliBeleuchtung_SZTischleuchte' changed from 100 to 95
    Darauf hin mal geprüft, ob die Systemzeit im Container und auf dem hostenden NAS stimmen: Ja, das tun sie...

    Ich stelle also fest: Die Openhab Systemzeit und die von cron-ausdrücken gesteuerten Rules gehen zur Zeit eine Stunde "nach", Sie werden eine Stunde später ausgelöst.

    Die KNX-Systemzeit, die Systemzeit des Containers und die des hostenden NAS sind korrekt.

    Ich habe mir bei meinem Wecker geholfen, indem ich ihn halt eine Stunde "vorgestellt" habe, aber das kann es ja eigentlich nicht sein...

    Ich habe keine Vorstellung, wo ich weiter suchen soll...

    Danke schon mal im Voraus

    #2
    Was steht denn im Startaufruf von openHAB? Bin mir beim Container nicht zu 100% sicher, wo Du das findest, bei einer normalen Installation steht das in /etc/default/openhab mit drin. es gab mal die Empfehlung, dort beim Start von Java explizit ebenfalls die Zeitzone mit anzugeben.

    Kommentar


      #3
      Wenn die Logs in der "falschen" Zeit sind würde ich mal vermuten dass der Container in der falschen Zeitzone läuft...
      Zitat von Buggyfahrer Beitrag anzeigen
      Darauf hin mal geprüft, ob die Systemzeit im Container und auf dem hostenden NAS stimmen: Ja, das tun sie...
      Was hast Du denn genau geprüft? Wie hast Du die Zeitzone im Container gesetzt?

      Mein docker-compose.yml sieht so aus:
      Code:
      openhab:
        #image: openhab/openhab:3.2.0
        image: openhab/openhab:3.3.0.M1
        environment:
          - TZ=Europe/Amsterdam
          - USER_ID=999
          - GROUP_ID=998
          - CRYPTO_POLICY=unlimited
        ports:
          - "1880:1880"
          - "8080:8080"
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - /etc/timezone:/etc/timezone:ro
          - ./openhab/conf:/openhab/conf
          - ./openhab/userdata:/openhab/userdata
          - ./openhab/addons:/openhab/addons
        restart: unless-stopped
      Das volume mapping für die timezone sorgt dafür dass der Container die selbe Zeitzone verwendet wie der Host.. Ich habe das allerdings nicht auf einem NAS sondern unter Ubuntu 20.04 am laufen...

      Kommentar


        #4
        Zitat von udo1toni Beitrag anzeigen
        Was steht denn im Startaufruf von openHAB? Bin mir beim Container nicht zu 100% sicher, wo Du das findest, bei einer normalen Installation steht das in /etc/default/openhab mit drin. es gab mal die Empfehlung, dort beim Start von Java explizit ebenfalls die Zeitzone mit anzugeben.
        ein /etc/default/ existiert in dem Container, darin aber leider kein openhab.

        Ich habe mal mehr oder weniger planlos in den verschiedenen Verzeichnissen nach default oder ähnlichen gesucht, bin aber nicht fündig geworden.

        In ..../conf/services gibt es eine runtime.cfg, in der "# The region that should be used." angegeben werden kann, der Eintrag dazu ist allerdings auskommentiert

        Vielleicht kann man mit dem Folgenden noch was anfangen:

        Der Startbefehl für den Container lautet:

        gosu openhab tini -s ./start.sh

        start.sh enthält
        Code:
        # cat start.sh
        #!/bin/sh
        
        echo Launching the openHAB runtime...
        
        if [ ! -z ${OPENHAB_RUNTIME} ]; then
        RUNTIME=${OPENHAB_RUNTIME}
        else
        RUNTIME="`dirname "$0"`/runtime"
        fi
        
        exec "${RUNTIME}/bin/karaf" "${@}"
        Und die Konsole des Containers meldet:
        Code:
        + initialize_volume /openhab/userdata /openhab/dist/userdata
        + volume=/openhab/userdata
        + source=/openhab/dist/userdata
        ++ ls -A /openhab/userdata
        + '[' -z 'backup
        cache
        config
        etc
        icalendar_calendar_bbcf7a6835.ical
        jsondb
        kar
        logs
        persistence
        secrets
        tmp' ']'
        ++ cmp /openhab/userdata/etc/version.properties /openhab/dist/userdata/etc/version.properties
        + '[' '!' -z ']'
        + chown -R openhab:openhab /openhab
        + sync
        + '[' -d /etc/cont-init.d ']'
        + sync
        + '[' true == false ']'
        + exec gosu openhab tini -s ./start.sh
        Launching the openHAB runtime...
        
        _ _ _ ____
        ___ ___ ___ ___ | | | | / \ | __ )
        / _ \ / _ \ / _ \ / _ \ | |_| | / _ \ | _ \
        | (_) | (_) | __/| | | || _ | / ___ \ | |_) )
        \___/| __/ \___/|_| |_||_| |_|/_/ \_\|____/
        |_| 3.2.0 - Release Build
        
        Use '<tab>' for a list of available commands
        and '[cmd] --help' for help on a specific command.
        To exit, use '<ctrl-d>' or 'logout'.
        Ich hoffe das hilft weiter

        Kommentar


          #5
          Zitat von rfuh Beitrag anzeigen
          Wenn die Logs in der "falschen" Zeit sind würde ich mal vermuten dass der Container in der falschen Zeitzone läuft...
          ,
          Was hast Du denn genau geprüft? Wie hast Du die Zeitzone im Container gesetzt?
          Ich habe ein Terminal in dem Container geöffnet und date eingegeben und die Ausgabe

          [CODE]# date
          Wed 02 Mar 2022 08:58:57 PM CET
          #/CODE]
          mit der aktuellen Uhrzeit verglichen.
          Das stimmt überein.


          Was ich mal die nächsten Tage versuchen werde, ist deine Volumemappings für localtime und timezone abzubilden. Die fehlen bei mir.

          Ich werde berichten....

          Kommentar


            #6
            Offensichtlich funktioniert der Start unter docker grundlegend anders als nativ, das mag aber auch am darunter laufenden Image liegen, vielleicht handelt es sich dabei um alpine (das wird gern als Grundlage für Docker Container genommen, weil es so kompakt ist), aber das ist nur eine vage Vermutung.
            Das Problem ist aber sicherlich, dass innerhalb des Containers Java mit der falschen Zeitzone aufgerufen wird.

            Laut https://hub.docker.com/r/openhab/openhab soll man in der yaml-Datei den Parameter EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin" setzen (oder halt auf Amsterdam...) Das wäre auch der Parameter, welcher gewöhnlich über /etc/default/openhab gesetzt wird.

            Kommentar


              #7
              Ich werde versuchen, eure Vorschläge am Wochenende umzusetzen, das sollte ich hinkriegen. Ich berichte dann

              Danke in jedem Fall für eure Hilfe

              Kommentar


                #8
                Zitat von udo1toni Beitrag anzeigen
                Offensichtlich funktioniert der Start unter docker grundlegend anders als nativ, das mag aber auch am darunter laufenden Image liegen, vielleicht handelt es sich dabei um alpine (das wird gern als Grundlage für Docker Container genommen, weil es so kompakt ist), aber das ist nur eine vage Vermutung.
                Das Problem ist aber sicherlich, dass innerhalb des Containers Java mit der falschen Zeitzone aufgerufen wird.
                ,
                Laut https://hub.docker.com/r/openhab/openhab soll man in der yaml-Datei den Parameter EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin" setzen (oder halt auf Amsterdam...) Das wäre auch der Parameter, welcher gewöhnlich über /etc/default/openhab gesetzt wird.
                Sorry, das ich mich jetzt erst mit der Auflösung des Problems zurückmelde, ich bin erst jetzt dazu gekommen, die Vorschläge umzusetzen:
                Die Zeitzone hatte ich händisch gesetzt, das hatte nur bewirkt, dass die Zeit innerhalb des Containers richtig lief.

                Was es letzendlich gebracht hat, war EXTRA_JAVA_OPTS wie vorgeschlagen zu setzen. . Ich gehe davon aus, das meine Rules jetzt auch zur richtigen Zeit getriggert werden, muss das aber noch beobachten...

                Danke schön noch einmal

                PS Es handelt sich bei dem Dockerimage tatsächlich um alpine

                Kommentar

                Lädt...
                X