Gibt im develop wieder paar neue Features. Siehe auch readme Datei
Ankündigung
Einklappen
Keine Ankündigung bisher.
Stateengine Plugin Support
Einklappen
X
-
Zitat von Hasenradball Beitrag anzeigenHi OA,
funktioniert das SE auch mit emacean?
Kommentar
-
Erneutes Update auf 1.7.3 mit kleinen Codeänderungen, bitte testen.
Außerdem gibt es nun einige Items, um das neue SV widget von wvhn clock.countdown nutzen zu können. So könnt ihr zB die verbleibende Suspendzeit anzeigen lassen:
Code:clock.countdown('', 'screens.westen_s3.automatik.suspend', 'screens.westen_s3.automatik.suspend_start.unix_timestamp', 'screens.westen_s3.automatik.settings.suspendduration.duration_format', '1s', '')
Kommentar
-
Guten Morgen Onkelandy,
ich hab in meiner SE Config irgend einen Fehler, finde ihn aber nicht. Die se_eval.get_variable Anweisung wird nicht ausgeführt, oder der .format Teil nicht eingesetzt.
Code:stateengine_default_raffstore: settings: Nacht: hoehe: type: num cache: True initial_value: 100 rules: se_template_setvalue: "eval:se_eval.get_relative_itemvalue('..settings.{}.hoehe'.format(se_eval.get_variable('current.state_name')))" # Zustand Nacht Nacht: type: foo name: Nacht # Aktionen: # - Behang ganz herunterfahren se_action_hoehe: - 'function: set' - 'to: template:setvalue'
Code:2020-11-13 07:47:02 WARNING plugins.stateengine.EG.Essen.RolloWest.automatik.r ules Determined item 'EG.Essen.RolloWest.automatik.settings..hoehe' does not exist. 2020-11-13 07:47:02 WARNING plugins.stateengine.EG.Essen.RolloWest.automatik.r ules Problem evaluating value of '..settings..hoehe': 'NoneType' object has no attribute 'property'
Was mache ich falsch?
Danke und Grüße
Thomas
Kommentar
-
se_eval.get_variable('current.state_name') bringt dir den Namen des zustands, der gerade evaluiert wird. Deine Aktionen werden aber NACH der Evaluierung ausgeführt, zu dem Zeitpunkt ist die Variable schon wieder leer. Allerdings ist das Item "state_name" schon befüllt. Daher kannst du das hier stattdessen nutzen:
se_eval.get_relative_itemvalue('..state_name')
in der Doku ist das prinzipiell richtig drin, allerdings müsste ich wohl dezidiert auf diese Unterscheidung hinweisen: https://github.com/onkelandy/plugins..._variablen.rst
Update ist erfolgt: https://github.com/onkelandy/plugins..._variablen.rst
Passt das so?Zuletzt geändert von Onkelandy; 13.11.2020, 19:50.
Kommentar
-
Zitat von Onkelandy Beitrag anzeigen
😀
Kommentar
-
Guten Morgen,
zunächst ein gesundes und glückliches Jahr 2021 und herzlichen Dank für all die tollen code Zeilen aus 2020!
Über die Feiertage hate ich etwas Zeit, meine Konfiguration umzustellen und insgesamt wieder auf aktuellen Stand zu bringen.
Ich hätte eine Bitte bzw. Idee für Erklärung oder Erweiterung bei der Verwendung von structs - die zunächst eine tolle Sache sind. Jedoch kann man bei zusammenführen in einem Item z.B. die Reihenfolge der Zustände nicht beeinflussen. Es gibt bei mir z.B. den Fall, dass im Nachmodus ein vorheriger suspend aufgelöst werden soll. Somit müsste ich meinen Nacht-Zustand (in etc/struct.yaml definiert) vor den (in der plugin.yaml definiert) suspend Zustand bringen. Jetzt müsste man für jeden eigenen Zustand ein eigenes Struct definieren, sodass man die Reihenfolge beim Item festlegen kann, oder es wäre hilfreich, eine se_prio_* einzuführen, wo man den Zustände entsprechend der Abarbeitung priorisieren könnte.
Vielen Dank und Grüße
Markus
Kommentar
-
Das Anliegen ist mir klar - ich hab das bei mir auch. Aber mir ist noch nicht ganz klar, wo das Problem liegt. Ich referenziere die structs wie folg:
Code:osten_bad: automatik: rules: eval_trigger: - merge_unique* - jalousien.stateengine.jalousientrigger_eg struct: - beschattung_se_nachtsettings - stateengine.general - beschattung_se_state_wind - stateengine.state_release - stateengine.state_lock - beschattung_se_state_suspend_nacht - beschattung_se_state_nacht
Was würde das se_prio machen?
Kommentar
-
Nichts Wesentliches, nur dass man die Templates zusammenfassen könnte und die Auflistungsreihenfolge unter structs nicht mehr kritisch ist.
Achja, noch eine Frage: warum hast Du die Suspend Duration in Minuten angegeben, obwohl diese beim setzen mit " .. * 60" wieder in Sekunden umgerechnet wird? Wäre die Einheit "Sekunden" könnte man direkt das widget basic.input(...'duration'..) verwenden.
Kommentar
-
Kannst du mir mit einem konkreten Beispiel auf die Sprünge helfen? Du meinst ein struct mit substructs? Aber warum auch dort nicht einfach in der richtigen Reihenfolge listen? Sehe da eher Problempotenzial, wenn man die Reihenfolge dann intern wieder überschreibt, nicht..?
suspend_duration: Ja, das wäre schon ne Möglichkeit gewesen. Ich nutze hier halt immer einen Slider und nicht basic. input. Deinen Ansatz find ich gut, aber ich wüsste jetzt nicht, wie ich das als non breaking Change umsetzen sollte. Du könntest höchstens dein eigenes supsend_template anlegen mit struct: stateengine.suspend und dort einfach se_suspend_time neu definieren und somit das aus dem plugin struct überschreiben? Alternativ könnte ich ein plugin Attribut suspend_time_format einbinden, das standardmäßig minutes ist. Und wenn man es auf seconds setzt, wird der Wert bei der Evaluierung nochmals durch 60 geteilt.. Was meinst du?
Kommentar
-
Für mich war halt die Frage, wie jemand der mit stateengine Neuland betritt, möglichst schnell einen Einstieg und das System zum Laufen bekommt. Daher die Frage, ob es einen speziellen Grund für das Minutenraster gibt. Natürlich, kann man (bzw. ich für meine Installation) eigene Konfigurationen erstellen, aber es wäre m.E. für die Verbreitung und Akzeptanz von StateEngine ein weiterer Schritt... ist aber nur eine Anregung und soll nicht bedeuten, dass jetzt das Plugin meinetwegen geändert werden soll. Ich kann das auch drumherum bauen - ist wirklich kein Problem.
Kommentar
-
Ne, ich bin da ganz bei dir, dass es möglichst einfach sein soll. Daher bin ich von der prio Sache noch nicht ganz überzeugtDas mit den Sekunden macht aber Sinn. Ich bin da eh schon dran, muss noch intensiv testen und werden dann einen PR erstellen. Musst also nix selbst basteln, nur dann testen.
- Likes 1
Kommentar
-
Das Testen übernehme ich gerne.
Einen Gedanken hätte ich noch, da ich gerne einen Status inkl. zugehörigen Settings in ein Struct (quasi als Modul) zusammenfassen möchten:
Aktuell nutzt Du ja auch 3 getrennte Templates für einen zusätzlichen Status:
- beschattung_se_nachtsettings
- beschattung_se_state_suspend_nacht
- beschattung_se_state_nacht
Da beschattung_se_nachtsettings eigentlich keine Reihenfolge benötigt und *_nacht zusammen liegen, könnten doch alle 3 structs zusammengeführt werden, oder übersehe ich da was?
Kommentar
-
Die Nachtsettings nutze ich global für mehrere Zustände, daher als getrenntes struct. Aber normalerweise hab ich ja settings und rules auch in einem struct (so wie im plugin.yaml ja auch).
Suspend_nacht ist bei mir ein eigener State mit anderen Aktionen als Nacht. Daher zwei unterschiedliche structs. Aber ja, klar, man könnte die auch zusammenfassen, zB als sub-structs. Aber das wäre für mich wieder verwirrend, da ich dann im Item selbst nicht direkt sehe, was ich da genau konfiguriert habe..
Kommentar
Kommentar