Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Noch was ausprobiert: habe die obere Zeitgrenze für Tagobjekt=true von 20:30 auf 23:30 gesetzt. Jetzt wird das item im Backend richtig als true angezeigt. Es scheint, die Logik funktioniert, der Wert wird nur nicht auf den Bus geschickt.
Beim eval hatte ich ja beim ersten Ansatz auch im Backend keinen Erfolg gesehen. Bei den anderen Versuchen danach habe ich Fehlermeldungen im Log gesehen. So weit wie jetzt gerade war ich vorher nicht. Jetzt muss der Wert nur noch auf den Bus. Muss ich dafür im Item noch etwas angeben? Der Wert passt ja jetzt.
Du solltest noch eine Ergänzung auf None einfügen:
Code:
#Tagobjekt ist 1 am Tag und 0 bei Nacht
if sh.zeit.uhrzeit() is not None:
if sh.zeit.uhrzeit() > datetime.time(6, 30) and sh.zeit.uhrzeit() < datetime.time(20, 30):
sh.zeit.tagobjekt('true')
else:
sh.zeit.tagobjekt('false')
und IMHO könnte ein enforce_updates helfen zum Sende
Du hattest keine Fehler, sondern Warnungen.
Und diese waren ja erklärbar beim Start. Du kannst sie also ignorieren.
Wenn du es mit der Logik lösen willst, solltest du unbedingt die Hochkommas um true und false entfernen. Einen String zu schicken, der dann in ein bool gecasted wird, ist nicht sinnvoll.
Alternativ gilt dasselbe wie beim eval Um einen bool zu setzen, braucht es kein if. Die tagobjekt.py könnte einfach so ausdehen:
Code:
sh.zeit.tagobjekt(sh.zeit.uhrzeit() > datetime.time(6, 30) and sh.zeit.uhrzeit() < datetime.time(20, 30))
Ich finde aber eine Logik für eine einzelne Zeile überflüssig und es wird nur unübersichtlich dadurch.
Ich persönlich finde Logiken praktischer weil man die zur Laufzeit ändern und auslösen kann. Außerdem haben die den Vorteil des Logging.
Das ist wohl Geschmacksache.
Ich mag Logiken für solche Fälle nicht, weil sie völlig entkoppelt vom Ziel-Item sind. So können andere Quellen den Wert des Items ohne auslösen der Logik ändern.
Das Reload ist zum Testen aber tatsächlich praktisch.
Ich mag Logiken für solche Fälle nicht, weil sie völlig entkoppelt vom Ziel-Item sind. So können andere Quellen den Wert des Items ohne auslösen der Logik ändern.
Ob das möglich ist, hängt davon ab wie Du den Trigger für die Logik definierst.
Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
wie weit bist Du denn mit Deiner Idee, auch den eval eines Items zur Laufzeit ändern zu können? Selbst wenn das nur im Backend ginge, könnte man ohne Neustart so lange probieren, bis es funktioniert und dann per Copy&Paste in die eigentliche Item-Source übertragen. Das würde schon vielen helfen...
das ist noch im Backlog. Ich bin mir nicht sicher ob das ändern des eval Attributes (und evtl. des eval_trigger Attributes) zur Laufzeit es in die v1.6 schaffen. Zumal ich das Frontend um dieses zu tun gerne gleich im kommenden neuen Admin Interface implementieren würde und nicht mehr im Backend.
Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar