Ankündigung

Einklappen
Keine Ankündigung bisher.

Ungewöhnliches Verhalten einer Logic

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

    Ungewöhnliches Verhalten einer Logic

    Hi @all!

    Folgende Ausgangssituation:
    Ich habe mir eine Docker Image mit der aktuellen 1.9.0 er Version von SmarthomeNG gebaut (mach ich seit Jahren, aufbauend auf dem Dockerfile aus dem Repository) und das läuft auch alles soweit.
    Einzig eine Logic zeigt ein ungewöhnliches Verhalten, dass ich nicht nachvollziehen kann. Und zwar startet sie in der Zeit, die in "Crontab" definiert ist, jede Sekunde 1 mal. Alle anderen Logiken, auch ähnlich definierte, was die Zeit angeht, haben aktuell kein Problem (kann aber auch an den Crontab Angaben liegen).

    Zuerst einmal die Crontab Angabe: "16:30<sunset-15m<19:00"
    nach meinem Verständnis: starte einmal 15 Minuten nach Sonnenuntergang, frühestens jedoch um 16:30 Uhr, spätestens um 19 Uhr.
    Ein "Cycle" Wert ist nicht eingestellt, "Watch Items" sind nicht definiert. Ansonsten auch keine "Plugin spezifischen Parameter".

    Die Logik:

    Code:
    #!/usr/bin/env python
    #
    import os
    current_dir = os.path.dirname(os.path.abspath(__file__))
    
    logic.logger.info('Alle Rolllaeden von Mitte November bis Mitte Maerz auf die Haelfte, Tag: %s', format(sh.time.day.since.year()))
    
    if (sh.time.day.since.year() < 90 or sh.time.day.until.year() < 60 ) :
    
    # Winter is coming
    sh.wohnzimmer.rollladen.giebel_r3.bewegung_positio n('50')
    sh.wohnzimmer.rollladen.sueden_r2.bewegung_positio n('50')
    sh.wohnzimmer.rollladen.westen_r1.bewegung_positio n('75')
    sh.kueche.rollladen.sueden.bewegung_position('50')
    sh.kueche.rollladen.osten.bewegung_position('60')
    sh.gaestezimmer.rollladen.osten.bewegung_position( '50')
    sh.gaestezimmer.rollladen.norden.bewegung_position ('50')
    sh.gaestewc.rollladen.norden.bewegung_position('50 ')
    
    sh.schlafzimmer.rollladen.osten.bewegung_position( '50')
    sh.kinderzimmer1.rollladen.osten.bewegung_position ('50')
    sh.kinderzimmer1.rollladen.sueden.bewegung_positio n('50')
    sh.kinderzimmer2.rollladen.westen.bewegung_positio n('50')
    sh.kinderzimmer2.rollladen.sueden.bewegung_positio n('50')
    sh.badog.rollladen.westen.bewegung_position('50')
    
    logic.logger.info('Markise rein')
    sh.aussen.markise.wohnzimmer.bewegung_lang('0')
    Sie soll einfach die Rollläden auf die Hälfte fahren, damit man nicht so komplett auf dem Präsentierteller sitzt, wenn das Licht innen an ist.

    Die Logik funktioniert seit Jahren ohne Probleme und wurde immer nur einmal am Tag ausgeführt.

    Es gibt eine 2. ähliche Logik, die die Rollläden dann auf 100% fährt. Von den Einstellungen her ist sie nur bei den "Crontab" Angaben angepasst:
    20:00<sunset-3<22:00

    Die funktioniert und wird auch nur einmal ausgeführt.

    Das Problem bei der sekündlichen Ausführung ist, dass die Items laufend aktualisiert werden und die Gruppenadressen auf dem KNX Bus befeuert werden.
    Während der Laufzeit der Logik ist es somit nicht möglich, die Rollläden zu bewegen.

    Kann sich jemand vorstellen, was das Problem hier ist? Ich wüsste nicht, was ich an der Logik falsch gemacht hätte, die ist ja nun auch keine Raketenwissenschaft.
    Gab es eventuell Änderungen, die ich nicht mitbekommen habe?

    Ich denke, eventuell liegt es an der Einstellung "16:30<sunset-15m<19:00", wüsste aber auch nicht warum es plötzlich nicht mehr funktionieren sollte.

    Jemand ne Idee, was hier schief läuft?
    Für jede Hilfe bin ich dankbar.

    Viele Grüße
    rhaegar

    #2
    Zitat von rhaegar Beitrag anzeigen
    Folgende Ausgangssituation:
    Ich habe mir eine Docker Image mit der aktuellen 1.9.0 er Version von SmarthomeNG
    ...
    Die Logik funktioniert seit Jahren ohne Probleme und wurde immer nur einmal am Tag ausgeführt.

    Es gibt eine 2. ähliche Logik, die die Rollläden dann auf 100% fährt. Von den Einstellungen her ist sie nur bei den "Crontab" Angaben angepasst:
    20:00<sunset-3<22:00

    Die funktioniert und wird auch nur einmal ausgeführt.

    Das Problem bei der sekündlichen Ausführung ist, dass die Items laufend aktualisiert werden und die Gruppenadressen auf dem KNX Bus befeuert werden.
    ...
    Jemand ne Idee, was hier schief läuft?
    Moin Raik,
    danke für Deine ausführliche Schilderung Deiner Beobachtungen. Und ja, ich habe eine recht genaue Idee was schiefläuft:

    Fast der komplette Code für crontab Berechnung und sunset & Co. ist neu geschrieben worden und seit etlicher Zeit in develop. Leider (oder auch gut) nutzen nicht viele Leute develop und daher ist ein fieser Bug dessen Symptome Deiner Beschreibung nach passen übersehen worden.
    Es existiert aktuell eine überarbeitete im develop-Zweig die dieses Problem beseitigen soll.
    (Eventuell läuft das nur mit einem überarbeiteten Scheduler lib/scheduler.py zusammen sowie lib/orb.py und plugins/uzsu/__init__.py Plugin.)

    Das ist eigentlich ein Thema für ein Bugfix Release 1.9.1
    Nun ist der Fehler recht selten und ich habe auch lange gebraucht um das Problem zu isolieren und zu reproduzieren daher habe ich das nicht an die grosse Glocke gehängt.

    Du kannst also versuchen nach meinem push in develop die lib.triggertimes.py auszutauschen und damit den Bug für Dich zu beheben.
    Zuletzt geändert von bmx; 04.02.2022, 20:36.

    Kommentar


      #3
      Super! Dann werde ich das mal probieren. Also nur die eine Datei austauschen und dann mal weitersehen.
      Melde mich dann, wenn ich damit durch bin.

      Kommentar


        #4
        rhaegar Ja, genau, einmal tauschen ausprobieren und Feedback geben

        Kommentar


          #5
          so, ich habe die Datei getauscht und es scheint, dass es funktioniert.
          Die Logik wurd nur einmal ausgeführt.
          vielen Dank!!!!

          Kommentar

          Lädt...
          X