Ankündigung

Einklappen
Keine Ankündigung bisher.

Stateengine Plugin Support

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

  • Onkelandy
    antwortet
    Probier's mal so:
    Code:
    item:..WT_hoch_min_time
    Das wird funktionieren. Tatsächlich klappt es mit dem property value nicht. Das muss ich mir nochmals im Detail anschauen, danke für den Bugreport.
    Zuletzt geändert von Onkelandy; 15.04.2020, 16:54. Grund: Fehler rekonstruiert.

    Einen Kommentar schreiben:


  • jonah64
    antwortet
    Ich versuche gerade nach dem Update auf 1.7 von Autblind auf die statengine umzustellen.

    Aber jetzt habe ich Probleme mit se_min_time und se_max_time es kommt die Warnung:

    Code:
    WARNING: Problem checking value '<' not supported between instances of 'datetime.time' and 'str'
    und die Prüfung wird nicht richtig ausgeführt.

    Das passiert bei folgenden Items und Bedingungen:

    Code:
    WT_hoch_min_time:
        type: str
        visu_acl: rw
        cache: 'on'
    
    WT_hoch_max_time:
        type: str
        visu_acl: rw
        cache: 'on'
    Der Teil der Zustandsprüfung sieht so aus:

    Code:
    ...
    enter_fruehestens_WT:
    se_value_FTWE: value:False
    se_min_time: eval:se_eval.get_relative_itemproperty('..WT_hoch_min_time', 'value')
    se_max_time: eval:se_eval.get_relative_itemproperty('..WT_runter_max_time', 'value')
    ...

    Im Logfile sehe ich:
    Code:
    2020-04-15 13:46:45.127322 Check condition set 'enter_fruehestens_WT'
    2020-04-15 13:46:45.128236 Condition 'FTWE': Checking all relevant stuff
    2020-04-15 13:46:45.129216 Condition 'FTWE': value=False negate=False current=False
    2020-04-15 13:46:45.130160 OK -> matching
    2020-04-15 13:46:45.131126 Age of 'FTWE': No limits given
    2020-04-15 13:46:45.132020 Condition 'time': Checking all relevant stuff
    2020-04-15 13:46:45.132914 Trying to get value of eval <bound method SeCurrent.get_time of <plugins.stateengine.StateEngineCurrent.SeCurren t object at 0x7f3c801b3550>>
    2020-04-15 13:46:45.133956 Checking eval: se_eval.get_relative_itemproperty('..WT_hoch_min_t ime', 'value').
    2020-04-15 13:46:45.135279 Executing method 'get_relative_itemproperty(..WT_hoch_min_time, value)'
    2020-04-15 13:46:45.136421 Testing for relative item declaration ..WT_hoch_min_time
    2020-04-15 13:46:45.137584 Return item property value from DG.Rollo.Terrasse.autoTagNacht.WT_hoch_min_time: 07:11
    2020-04-15 13:46:45.138768 Checking eval: se_eval.get_relative_itemproperty('..WT_runter_max _time', 'value').
    2020-04-15 13:46:45.139856 Executing method 'get_relative_itemproperty(..WT_runter_max_time, value)'
    2020-04-15 13:46:45.140818 Testing for relative item declaration ..WT_runter_max_time
    2020-04-15 13:46:45.141963 Return item property value from DG.Rollo.Terrasse.autoTagNacht.WT_runter_max_time: 22:30
    2020-04-15 13:46:45.143132 Condition 'time': min=['07:11'] max=['22:30'] negate=False current=13:46:45.121000
    2020-04-15 13:46:45.144209 Checking minvalue 07:11 and maxvalue 22:30
    2020-04-15 13:46:45.145173 WARNING: Problem checking value '<' not supported between instances of 'datetime.time' and 'str'
    Hat sich hier etwas geändert? Die Doku verstehe ich so, dass es so weiterhin funktionieren sollte. Habe ich etwas übersehen?

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    ne, kannst dich an den bestehenden Beiträgen orientieren:
    https://www.smarthomeng.de/blog

    Bzw. hier, wobei es wohl eher deutsch sein sollte: https://www.smarthomeng.de/starting-...toblind-plugin

    Einen Kommentar schreiben:


  • EIB@Home
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Du kannst übrigens auch templates nutzen, um noch wildere Dinge zu machen. Sehr cool wäre, wenn du dann einen Blogbeitrag schreiben würdest. Hab ich schon lange auf dem Radar, hier einen advanced zu schreiben, aber das wär eh besser, wer anderes macht es.
    Ich kann gerne einen Blogbeitrag schreiben. Von advanced können wir da aber nicht sprechen. Sobald mein Setup läuft, kann ich mich da mal dran machen. Gibt es Vorlagen oder HowTo's zum Erstellen des Blogeintrags?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Ich werde da erstmal nichts tun. Ich kann schon das März Release Datum für die v1.7 nicht halten, da mich durch die Corona Themen die Firma stark in Anspruch nimmt. Wenn ich jetzt noch ein Thema angehe (das überarbeiten des Generators für die Plugin Doku), reden wir von frühestens Mai für ein Release.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Wärs vielleicht noch ne Idee, in der Pluginübersicht einen Hinweis auf etwaige vorhandene Structs zu machen? Icon mit Link auf admin/items/structs, vielleicht sogar mit aktiviertem Filter? Problem auf jener Seite ist, dass sie rein zufällig sortiert scheint und man auch nicht zwingend dran denkt, dort nach Templates der Plugins zu suchen.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Es wäre vermutlich schon hier hilfreich, in der zweiten Spalte "Plugin Konfiguration" hinzuzufügen, also entweder zusätzlich oder besser anstatt dem Link auf dem Pluginnamen:
    https://www.smarthomeng.de/user/plug...ns_system.html

    Ansonsten ist sicher schon viel gewonnen, wenn ich auf die erste Seite der stateengine Plugin darauf verlinke wie es bei den anderen Plugins eh schon passiert.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Da die Seiten aus den Plugindaten generiert werden, sehe ich im Moment keine Möglichkeit die Seite hervorzuheben. Die Seite ist außer in der Doku selbst auch noch aus der Plugin Liste im Admin Interface erreichbar.Onkelandy Du könntest höchstens einen Blog Artikel verfassen und aus dem auf alle relevanten Doku Seiten verlinken.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Zitat von EIB@Home Beitrag anzeigen
    Ich kann zwar auf keinen Fall erklären, was hier z.B. {} mit den geschweiften Klammern passiert oder für was ich .format() benötige. Das versuche ich mir noch mal durch Lesen der Doku näher zu bringen. Laufen tut es jedenfalls wie Hölle.
    Notwendig ist relativ. Es ist halt klassische Python Nomenklatur, wenn du einen String hast, in den du was einfügen willst. Ginge sicher auch anders, bin kein Python Pro.
    Zitat von EIB@Home Beitrag anzeigen
    Auch hier Danke für den dezenten Hinweis - wer Lesen kann, ist klar im Vorteil. Steht alles da und wenn man das macht, dann klappt es auch. Über die verlinkte Seite bin ich vorher noch nicht gestolpert.
    Ich denke auch, dass diese Seite sehr leicht zu übersehen ist. Msinn können wir das direkt in der Dokuwebseite optimieren?

    Du kannst übrigens auch templates nutzen, um noch wildere Dinge zu machen. Sehr cool wäre, wenn du dann einen Blogbeitrag schreiben würdest. Hab ich schon lange auf dem Radar, hier einen advanced zu schreiben, aber das wär eh besser, wer anderes macht es.
    Mit shng 1.7 gibt es übrigens nested structs und die Möglichkeit, Listen innerhalb von structs zu mergen. Besonders cool für eval_trigger für das "Stateengine Item" (= rules). Vielleicht mal in templates rein schnuppern und auf 1.7 warten..?

    Einen Kommentar schreiben:


  • EIB@Home
    antwortet
    so. Ich bin weiter gekommen. Und vielen Dank für die Hinweise. Die haben natürlich ins Schwarze getroffen. Ich schreibe zu den einzelnen Punkten mal ein kleines Beispiel. Vielleicht kann jemand nach mir davon profitieren.
    Zitat von Onkelandy Beitrag anzeigen
    Bitte genau lesen. Danach können wir über Optimierung der doku diskutieren
    https://www.smarthomeng.de/user/plug...user_doc5.html
    Dieser Punkt ist einfach und eindeutig. Hab bei 2 Bedingungen das item: vergessen.
    Code:
    rules:
        # Item das anzeigt, ob die Helligkeit außen mehr als 43kLux beträgt
        se_item_brightnessGTmaxK: Zentral.Wetterdaten.Helligkeit.Sueden.GTmaxK
    
    Clouding:
        enter:
            se_agemin_brightnessGTmaxK: [B]item:[/B]Zentral.Beschattung.Setup.Sueden.MinAgeBrightness

    Dynamisch, mit relativen items geht natürlich auch, hier mal 3 Beispiele wie...:
    Code:
    rules:
        se_item_twilight: Zentral.Wetterdaten.Daemmerung
    
    Nacht:
        enter:
            se_max_twilight: eval:se_eval.get_relative_itemvalue('Zentral.Beschattung.Setup.Sueden.MinTwilight')
    Da aber das Ziel sein soll, das Coding nur 1-mal zu schreiben und dann dynamisch auf jede Seite anwenden kann:

    Code:
    settings:
        direction:
            name: Hausseite zur dynamischen Wertermittlung
            type: str
            value: 'Zentral.Beschattung.Setup.Sueden.MinTwilight'
    
    Nacht:
        enter:
            se_max_twilight: eval:se_eval.get_relative_itemvalue(se_eval.get_relative_itemvalue('..settings.direction'))
    Die einzelnen Einstellungswerte werden dann über ein eigenes struct, dass nur die settings.direction enthält, eingebunden. Dieses Struct gibt es dann pro Seite (Osten, Süden, Westen) 1-mal. Über ..settings.direction wird dann der jeweils richtige Wert gezogen.

    Hier als letztes Beispiel und meine Wunschvorstellung erfolgreich umgesetzt, angelehnt an dem Beispiel:
    Code:
    se_max_brightness: eval:se_eval.get_relative_itemvalue('..settings.{} .max_bright'.format(se_eval.get_variable('current. state_name'))
    Meine Interpretation dazu:

    Code:
    settings:
        direction:
            name: Hausseite zur dynamischen Wertermittlung
            type: str
            value: 'Sueden'
    
    Nacht:
        enter:
            se_max_twilight: eval:se_eval.get_relative_itemvalue('Zentral.Beschattung.Setup.{}.MinTwilight'.format(se_eval.get_relative_itemvalue('..settings.direction')))
    Ich kann zwar auf keinen Fall erklären, was hier z.B. {} mit den geschweiften Klammern passiert oder für was ich .format() benötige. Das versuche ich mir noch mal durch Lesen der Doku näher zu bringen. Laufen tut es jedenfalls wie Hölle.


    Auch hier Danke für den dezenten Hinweis - wer Lesen kann, ist klar im Vorteil. Steht alles da und wenn man das macht, dann klappt es auch. Über die verlinkte Seite bin ich vorher noch nicht gestolpert. Entweder hab ich es tatsächlich einfach überlesen oder ich hatte einen anderen Einstieg, da ich ja grundsätzlich Umsteiger von autoblind bin und auch die 1.6.1 als Update installiert habe.

    Ich kann jetzt jedenfalls Gas geben und will heute Abend zum Test eine Terrassentür einbinden (zusätzliche Bedingungen wegen Tür auf!) und eine 2. Seite. Wenn das problemlos klappt, gibt es den Update auf QAS...

    Vielen Dank noch mal für die Hinweise.
    Viele Grüße
    Marco

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Bitte genau lesen. Danach können wir über Optimierung der doku diskutieren
    https://www.smarthomeng.de/user/plug...user_doc5.html

    https://www.smarthomeng.de/user/plug...ser_doc10.html

    ​​​​​​​https://www.smarthomeng.de/user/plug...ateengine.html

    Einen Kommentar schreiben:


  • EIB@Home
    antwortet
    So. Ich hab jetzt mal ein bisschen was zusammen gestellt. Leider habe ich mehrfach umgebaut und getüftelt, so dass es schwer fällt, alle getesteten Kombinationen noch zusammen zu bringen. Hab im Zip-File jetzt mal den letzten Stand zusammen gestellt. Ausgangspunkt ist immer noch die "Herausforderung", die items dynamisch pro Seite zu benutzen. Davon habe ich mich im aktuellen Stand zum Teil verabschiedet, jedoch klappt es auch in diesem Versuch nicht.

    Code:
    stateengine.clouding.sueden:
    rules:
    # Item das anzeigt, ob die Helligkeit außen mehr als 25kLux beträgt
    se_item_brightnessGTminK: Zentral.Wetterdaten.Helligkeit.Sueden.GTminK
    # Item das anzeigt, ob die Helligkeit außen mehr als 43kLux beträgt
    se_item_brightnessGTmaxK: Zentral.Wetterdaten.Helligkeit.Sueden.GTmaxK
    
    #voherige Versuche...
    #se_item_testMinTemp: "eval:sh.return_item(se_eval.get_variable('Zentral .Beschattung.Setup.Sueden.MinTemp'))"
    #se_item_testerMinTemp: eval:se_eval.get_variable('Zentral.Beschattung.Set up.Sueden.MinTemp')
    
    Clouding:
    type: foo
    name: Tag (beschatten)
    
    
    # 'Einstieg in "Beschattung Sueden": Wenn'
    enter:
    # '- das Flag "Helligkeit > 43kLux" seit mindestens 600 Sekunden gesetzt ist'
    se_value_brightnessGTmaxK: 'true'
    se_agemin_brightnessGTmaxK: Zentral.Beschattung.Setup.Sueden.MinAgeBrightness
    # '- es draußen mindestens 24° hat'
    se_min_temperature: Zentral.Beschattung.Setup.Sueden.MinTemp #item:....settings.MinTemp # 24
    se_value_doclouding: 'true'
    Führt dann zu folgenden Meldungen:


    Code:
    2020-03-15 15:56:26 WARNING plugins.stateengine.EG.Wohnzimmer.Rollo.automatik. rules Problem casting 'Zentral.Beschattung.Setup.Sueden.MinTemp' to <function _cast_num at 0x7fc4b01bbf28>: Not possible to cast: .
    2020-03-15 15:56:26 WARNING plugins.stateengine.EG.Wohnzimmer.Rollo.automatik. rules Problem casting 'Zentral.Beschattung.Setup.Sueden.MinAgeBrightness ' to <function cast_num at 0x7fc4ac0249d8>: Not possible to cast: Can't cast Zentral.Beschattung.Setup.Sueden.MinAgeBrightness to int!.
    2020-03-15 15:56:56 WARNING plugins.stateengine.EG.Wohnzimmer.Rollo.automatik. rules Neither value nor min/max given. This might result in unexpected evalutions. Min None, max None, value None
    Update noch zur grafischen Darstellung. Rechte waren alle korrekt. Ich hab aber übersehen, dass das Verzeichnis "visualizations" hatte tatsächlich gefehlt. Nach Anlegen kam die Fehlermeldung, dass graphviz nicht gefunden wurde. Das habe ich dann über
    Code:
    sudo pip3 install graphviz
    installiert. Hat aber noch nicht endgültig zum Erfolg geführt. Jetzt bin ich mit meinem Latein am Ende.

    Code:
    2020-03-12  22:02:48 ERROR    plugins.stateengine Problem getting graph for EG.Wohnzimmer.Rollo.automatik.rules. Error: GraphViz's executables not found
    Danke und Viele Grüße
    Marco


    Angehängte Dateien

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Machst mich neugierig- poste doch mal ein Beispiel wo es nicht funktioniert

    Hast du das schon gelesen? https://www.smarthomeng.de/itemvorlagen-nutzen-structs
    Zuletzt geändert von Onkelandy; 12.03.2020, 14:46.

    Einen Kommentar schreiben:


  • EIB@Home
    antwortet
    Hi Onkelandy.

    Vielen Dank. Ordner Rechte prüfe ich heute Abend. Getestet habe ich bisher nur 1 Item.

    Habe mich im Moment wohl etwas verstruct 🤔. Und wollte zuviel. Im Moment klappt also gar nichts. Ich bekomme die selben Casting Fehler wie schloessl bzw. hab schon gefühlt 10 Methoden versucht, meine globalen Vorgabewerte in den notwendigen Zuständen abzufragen. Ziel für heute ist, die Wünsche und Ideen zurück zu schrauben und erstmal eine lauffähige Version zu bekommen, dabei gehe ich jetzt auf 1 struct pro Zustand. Dann werde ich am Ende nur für die Beschattung je Seite eine abweichende struct definieren müssen.

    Viele Grüße
    Marco

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Der Satz "Es wird explizit auf Template-Imports via struct verzichtet." sollte nicht als Empfehlung gesehen werden, sondern einfach nur sagen, dass in dem Beispiel keine structs zum Einsatz kommen (weil se_use früher halt der Standard war). Ich empfehle definitiv, structs zu nutzen, ist viel flexibler. Und ja, du kannst die auch überschreiben! Mach ich bei mir auch ständig.
    Im Release 1.7 wird sich noch einiges zu dem Thema structs tun, da können auch sub-structs genutzt werden. Also fröhliches Structen!

    Die Fehlermeldung ist übel. Ist der Ordner im Besitz von smarthome:users und hat RW Access? Hast du das Problem bei jedem Item schätze ich?

    Was passiert, wenn du ein File mit dem gewünschten Namen anlegst, wird es überschrieben? Achte auch hier auf die Rechte.

    Einen Kommentar schreiben:

Lädt...
X