Ankündigung

Einklappen
Keine Ankündigung bisher.

Cycle in Logik ändern

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

    #16
    Zitat von SMarcus Beitrag anzeigen
    ist das Ziel schon erreicht, oder?
    Für Dich schon, wenn jemand aber nicht (nur) die Zykluszeit setzen will, sondern den Wert mit dem die Logik aufgerufen wird, reicht da noch nicht.
    Ich habe einen weiteren Fix gepusht (der Scheduler ist die von mir am meisten gehasst Komponente: Komplex, bei Änderungen fehleranfällig und schlecht dokumentiert. Ich habe zwar schon etwas aufgeräumt, bin aber immer noch nicht am Boden des Schedulers angekommen )


    Zitat von SMarcus Beitrag anzeigen
    aber anscheinend übernimmt 'logic.cycle' den geänderten cycle nicht sondern zeigt immer den auf der Logik - Parameter manuell eingetragenen Wert. Daher wahrscheinlich auch die "falsche" Admin GUI Angabe.
    Das hatte ich oben schon geschrieben. Das Attribut wird nur beim initialisieren der Logik gesetzt. (andere Baustelle)

    Zitat von SMarcus Beitrag anzeigen
    Gibts eine Möglichkeit den "aktuellen" Cycle auszulesen?
    Bisher nicht. Dazu muss ich die 'andere Baustelle' lösen (nachdem ich den Scheduler nun hoffentlich gefixt habe).

    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #17
      Variante 1: Weiterhin unauffällig

      Variante 2: (cycle={60, None})
      Code:
      2020-08-01 10:57:46 ERROR logics.washing_machine Logic: logics.washing_machine, File: /usr/local/smarthome/lib/scheduler.py, Line: 551, Method: _next_time, Exception: 'set' object has no attribute 'keys'
      > Traceback (most recent call last):
      > File "/usr/local/smarthome/lib/scheduler.py", line 632, in _task
      > exec(obj.bytecode)
      > File "/usr/local/smarthome/logics/washing_machine.py", line 70, in <module>
      > sh.scheduler.change(name='logics.washing_machine', cycle={60, None})
      > File "/usr/local/smarthome/lib/scheduler.py", line 528, in change
      > self._next_time(name)
      > File "/usr/local/smarthome/lib/scheduler.py", line 551, in _next_time
      > cycle = list(job['cycle'].keys())[0]
      > AttributeError: 'set' object has no attribute 'keys'
      Variante 3: cycle="{60, None}")
      Code:
      2020-08-01 11:01:17 ERROR logics.washing_machine Logic: logics.washing_machine, File: /usr/local/smarthome/lib/scheduler.py, Line: 551, Method: _next_time, Exception: 'set' object has no attribute 'keys'
      > Traceback (most recent call last):
      > File "/usr/local/smarthome/lib/scheduler.py", line 632, in _task
      > exec(obj.bytecode)
      > File "/usr/local/smarthome/logics/washing_machine.py", line 70, in <module>
      > sh.scheduler.change(name='logics.washing_machine', cycle="{60, None}")
      > File "/usr/local/smarthome/lib/scheduler.py", line 528, in change
      > self._next_time(name)
      > File "/usr/local/smarthome/lib/scheduler.py", line 551, in _next_time
      > cycle = list(job['cycle'].keys())[0]
      > AttributeError: 'set' object has no attribute 'keys'

      Kommentar


        #18
        Ich verstehe es nicht mehr. Bei mir laufen die Varianten 2 und 3 durch
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #19
          Ich führe die Änderung in der jeweiligen Logik durch (also während der Laufzeit der Logik) - Könnte das der Unterschied sein?

          Kommentar


            #20
            Nein, ich ändere bei meinen Tests auch den cycle Parameter Logik aus der laufenden Logik heraus...

            Code:
            #!/usr/bin/env python3
            # a_testlogic_temp.py
            
            logic.logger.warning("a_testlogic_temp was triggered")
            
            sh.scheduler.change('logics.a_testlogic_temp', cycle={70: None})
            logic.logger.warning("cycle value set to 70")
            
            #sh.scheduler.change('logics.a_testlogic_temp', cycle="{80: None}")
            #logic.logger.warning("cycle value set to 80")
            zwischen den beiden Varianten schalte ich durch Änderung der kommentierten Zeilen hin und her und Sichere+Starte nur die Logik neu.
            Viele Grüße
            Martin

            There is no cloud. It's only someone else's computer.

            Kommentar

            Lädt...
            X