Hmmm... Bei mir funktioniert es. Nimm mal einen leeren String statt None. Was passiert dann?
Hat die Logik vorher bereits einen cycle Wert?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Cycle in Logik ändern
Einklappen
X
-
Irgendwas passt noch nicht.
führt zu:Code:sh.scheduler.change(name='logics.washing_machine', cycle={60, None})
GrussCode:2020-07-31 13:34:02 ERROR logics.washing_machine Logic: logics.washing_machine, File: /usr/local/smarthome/lib/scheduler.py, Line: 455, Method: _next_time, Exception: 'set' object has no attribute 'keys' > Traceback (most recent call last): > File "/usr/local/smarthome/lib/scheduler.py", line 527, in _task > exec(obj.bytecode) > File "/usr/local/smarthome/logics/washing_machine.py", line 61, in <module> > sh.scheduler.change(name='logics.washing_machine', cycle={60, None}) > File "/usr/local/smarthome/lib/scheduler.py", line 432, in change > self._next_time(name) > File "/usr/local/smarthome/lib/scheduler.py", line 455, in _next_time > cycle = list(job['cycle'].keys())[0] > AttributeError: 'set' object has no attribute 'keys'
Marcus
Einen Kommentar schreiben:
-
Der cycle Parameter bei scheduler.change ist kein numerischer Wert, sondern ein dict.
In dem dict wird die Zykluszeit zusammen mit dem Wert der gesetzt werden soll übergeben. Wenn nur die Zykluszeit übergeben werden soll, kann als Wert None übergeben werden:
wobei cycle_time ein integer Wert und value ein String (oder None) sein müssen.Code:sh.scheduler.change(name='logics.washing_machine', cycle={cycle_time, value})
Für Deinen Fall also:
Übrigens: Mir ist dabei aufgefallen. dass in der Admin GUI die veränderte Zeit in der Spalte Cycle im Moment nicht angezeigt wird. Dort wird nur der in der ../etc/logic.yaml konfigurierte Wert angezeigt.Code:sh.scheduler.change(name='logics.washing_machine', cycle={cycle_new, None})
Einen Kommentar schreiben:
-
Du versuchst den Wert für cycle in der Logik selbst zu ändern.
Wie wäre es, einfach das in der Doku beschriebene Attribut cycle des logic Objektes innerhalb der Logik neu zu setzen?
Nachtrag: Ich habe gerade gesehen, dass das Attribut r/o ist, also nicht wirkt.Code:logic.cycle = 600
Den genauen Syntax von scheduler.change muss ich erst nachsehen. (Habe ich nie verwendet).
Einen Kommentar schreiben:
-
Cycle in Logik ändern
Hallo,
laut Doku ist es möglich den cycle einer Logik zu ändern. Beispiele hierzu habe ich nicht gefunden, deshalb habe ich es mit
versucht, allerdings bekomme ich folgenden Fehler:Code:sh.scheduler.change(name='logics.washing_machine', cycle=cycle_new)
Kann mir da jemand helfen?Code:2020-07-31 11:42:44 ERROR logics.washing_machine Logic: logics.washing_machine, File: /usr/local/smarthome/lib/scheduler.py, Line: 455, Method: _next_time, Exception: 'int' object has no attribute 'keys' > Traceback (most recent call last): > File "/usr/local/smarthome/lib/scheduler.py", line 527, in _task > exec(obj.bytecode) > File "/usr/local/smarthome/logics/washing_machine.py", line 64, in <module> > sh.scheduler.change(name='logics.washing_machine', cycle=cycle_new) > File "/usr/local/smarthome/lib/scheduler.py", line 432, in change > self._next_time(name) > File "/usr/local/smarthome/lib/scheduler.py", line 455, in _next_time > cycle = list(job['cycle'].keys())[0] > AttributeError: 'int' object has no attribute 'keys'
Gruss
MarcusStichworte: -


Einen Kommentar schreiben: