Ankündigung

Einklappen
Keine Ankündigung bisher.

Stateengine Plugin Support

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

  • Onkelandy
    antwortet
    Du solltest fürs Suspend unbedingt die structs nutzen, die mitgeliefert werden.
    Generell weist der Fehler darauf hin, dass du zwar ein agemax drin hast, aber keine Angabe, welchen Wert das manuell Item haben soll. Ein se_value_manuell: True sollte die Warnung beheben.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Ich hab seit dem kürzlichen Update auf SH 1.9 ein paar WARNING's (4. Zeile) im Log:

    Code:
    2021-12-30 18:56:55.382324 Check if state 'Dg.Bad.Jalousie.Fenster_gross.AutoBlind.rules.Suspend' ('Pause bis 20:56:55') can be entered:
    ...
    2021-12-30 18:56:55.383006   Check condition set 'enter_stay'
    ...
    2021-12-30 18:56:55.383661     Condition 'manuell': Checking all relevant stuff
    2021-12-30 18:56:55.383725         WARNING: Neither value nor min/max given. This might result in unexpected evalutions. Min None, max None, value None
    2021-12-30 18:56:55.387518         Checking variable 'item.suspend_time', value 7200 from list ['var:item.suspend_time']
    2021-12-30 18:56:55.387584         Variable result: 7200
    2021-12-30 18:56:55.387646         Age of 'manuell': min=[None] max=[7200] negate=None current=0.036812
    2021-12-30 18:56:55.387705         Testing valuepair min None and max 7200
    2021-12-30 18:56:55.387755         given limits ok -> matching
    Code:
           Suspend:
                type: foo
                name: Automatik ausgesetzt bis ...
                enforce_updates: 'True'
                enter_stay:
                    type: foo
                    se_value_beschattenFuerZeit: 'False'
                    se_value_laststate: var:current.state_id
                    se_agemax_manuell: var:item.suspend_time
                    se_value_suspend: 'True'
                se_name: "eval: se_eval.insert_suspend_time('..suspend', suspend_text='Pause bis %X')"
    Zuletzt geändert von ivande; 30.12.2021, 19:42.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Es gab ein Problem bei items mit Namen, das erst im develop gefixt ist. Zieh dir bitte mal die develop Version oder lösch die Name Attribute

    Einen Kommentar schreiben:


  • Makulakamula
    antwortet
    Hi Onkelandy,

    danke für die schnelle und umfangreiche Antwort! Ich hab mich heute morgen noch mal dran gesetzt und versucht deine Info's und Tipps umzusetzen. Leider mit mäßigem Erfolg...

    Zitat von Onkelandy Beitrag anzeigen
    Die Punkte refernzieren auf relative Items. Wenn du auf Nummer sicher gehen willst, kannst du auch einfach die absoluten Pfade angeben, also z.b. raffstore.hoehe oder so.
    Ah ok, dann lag ich ja nicht komplett falsch

    Jetzt habe ich die Pfade absolut angegeben, aber die Fehlermeldungen bleiben. Hab es auch mit einer unterschiedlichen Anzahl an Punkten davor versucht, ohne Erfolg. Also irgendwas hab ich offensichtlich noch falsch weil nicht verstanden 🤔
    Ich seh es doch richtig, dass die Fehlermeldung aus der struct "stateengine_default_raffstore" kommt, weil dort auf das Item "se_item_hoehe" referenziert wird, welches er offensichtlich nicht findet. Unter dem angegebenen absoluten Pfad "beispiel.raffstore1.hoehe" ist das Item aber doch da. Oder hab ich da noch einen Denkfehler? So wie ich es verstehe, habe ich wohl im Code für die Raffstore Steuerung noch einen Fehler. Vielleicht hat da noch jemand einen Tipp für mich?!
    Code:
    beispiel:
        raffstore1:    
            name: Raffstore Beispiel 1
            hoehe:
                type: num
                name: Behanghöhe des Raffstores
                knx_dpt: 5001
                knx_send: 8/1/0
                cache: 'on'
                    
            lamelle:
                type: num
                name: Lamellenwinkel des Raffstores
                knx_dpt: 5001
                knx_send: 8/2/0
                cache: 'on'
    Fehlermeldungen aus dem Log:
    Code:
    2021-04-05  11:52:16 WARNING  plugins.stateengine.beispiel.raffstore1.automatik.rules Item 'Behanghöhe des Raffstores' not found!
    2021-04-05  11:52:16 WARNING  plugins.stateengine.beispiel.raffstore1.automatik.rules Item 'Lamellenwinkel des Raffstores' not found!
    2021-04-05  11:52:16 WARNING  plugins.stateengine.beispiel.raffstore1.automatik.rules Item 'Behanghöhe des Raffstores' not found!
    2021-04-05  11:52:16 WARNING  plugins.stateengine.beispiel.raffstore1.automatik.rules Item 'Lamellenwinkel des Raffstores' not found!
    2021-04-05  11:52:16 WARNING  plugins.stateengine.beispiel.raffstore1.automatik.rules Item 'Behanghöhe des Raffstores' not found!
    2021-04-05  11:52:16 WARNING  plugins.stateengine.beispiel.raffstore1.automatik.rules Item 'Lamellenwinkel des Raffstores' not found!
    2021-04-05  11:52:16 WARNING  plugins.stateengine.beispiel.raffstore1.automatik.rules Item 'Behanghöhe des Raffstores' not found!
    2021-04-05  11:52:16 WARNING  plugins.stateengine.beispiel.raffstore1.automatik.rules Item 'Behanghöhe des Raffstores' not found!

    Zitat von Onkelandy Beitrag anzeigen
    Beim SE Plugin werden die Referenzen immer von dem Item aus gesucht, in dem das se_plugin: active steht, also normalerweise "rules". Das rules Item wiederum ist ein Unteritem (eine Einrückung mehr) von "automatik". Und im automatik sind die settings Items. Daher dort nur zwei Punkte. Die drei Punkte, weil dann hoehe, etc. außerhalb von automatik sind. Hoffe, das war verständlich.
    Teils teils. Aber ich denke, dass es mir zunehmend klarer wird, je mehr ich mich damit auseinandersetze. Mir fehlt einfach die Erfahrung. Es fühlt sich vieles für mich noch wie Swahili an 😅

    Zitat von Onkelandy Beitrag anzeigen
    Das se_use Beispiel in der Doku hat leider einen kleinen Fehler. Da darf nur EIN Punkt hin, in der Doku sind aber zwei bei "Nachfuehren.Osten".
    Probier das so nochmals aus, dann sollte es klappen.
    Bingo! Die Fehlermeldung bezüglich "se_use" ist weg. 👍

    Zitat von Onkelandy Beitrag anzeigen
    Vielleicht ist es auch leichter, mit dem Blogbeitrag zu starten: https://www.smarthomeng.de/starting-...toblind-plugin
    Tatsächlich hatte ich ursprünglich mit genau diesem Beispiel angefangen. Das hat aber leider auch nicht komplett funktioniert. Da ist der Raffstore beim Neustart in die aktuell richtige Position gefahren, aber er hat sich nicht mehr aktualisiert.
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hi!
    Die Punkte refernzieren auf relative Items. Wenn du auf Nummer sicher gehen willst, kannst du auch einfach die absoluten Pfade angeben, also z.b. raffstore.hoehe oder so. Beim SE Plugin werden die Referenzen immer von dem Item aus gesucht, in dem das se_plugin: active steht, also normalerweise "rules". Das rules Item wiederum ist ein Unteritem (eine Einrückung mehr) von "automatik". Und im automatik sind die settings Items. Daher dort nur zwei Punkte. Die drei Punkte, weil dann hoehe, etc. außerhalb von automatik sind. Hoffe, das war verständlich.

    Das se_use Beispiel in der Doku hat leider einen kleinen Fehler. Da darf nur EIN Punkt hin, in der Doku sind aber zwei bei "Nachfuehren.Osten".
    Probier das so nochmals aus, dann sollte es klappen. Die Doku wird aber definitiv nochmals überarbeitet, da noch nicht alles optimal ist. Vielleicht ist es auch leichter, mit dem Blogbeitrag zu starten: https://www.smarthomeng.de/starting-...toblind-plugin

    Einen Kommentar schreiben:


  • Makulakamula
    antwortet
    Hallo Zusammen,

    ich (blutiger Anfänger im Bereich KNX und Python 😟) versuche mich gerade in die Funktionsweise des SmartHomeNG allgemein, und im speziellen der StateEngine, einzuarbeiten. Ich habe nun versucht dieses Beispiel aus der Anwender Doku nachzubauen, aber leider will es nicht funktionieren.

    Ich habe die drei Items wie im Beispiel beschrieben angelegt (1x Prüf-Item Wetterstation, 1x Trigger, 1x Raffstore Automatik) und das Item "Raffstore Automatik" mit meinen KNX-Adressen ergänzt. Unter Struct dann das "stateengine_default_raffstore:" angelegt (darin hab ich nichts verändert).

    Wenn ich jetzt SmartHomeNG neu starte, bekomme ich im Log folgende Fehlermeldungen:

    Code:
    2021-04-04 18:57:59 WARNING lib.item.item item 'beispiel.raffstore1.automatik.rules': trigger item 'beispiel.raffstore1.automatik.anwesenheit' not found for function 'True'
    2021-04-04 18:58:00 WARNING plugins.stateengine.beispiel.raffstore1.automatik. rules Item 'Behanghöhe des Raffstores' not found!
    2021-04-04 18:58:00 WARNING plugins.stateengine.beispiel.raffstore1.automatik. rules Item 'Lamellenwinkel des Raffstores' not found!
    2021-04-04 18:58:00 WARNING plugins.stateengine.beispiel.raffstore1.automatik. rules Determined item 'beispiel.raffstore1.automatik.Nachfuehren_Osten' does not exist.
    2021-04-04 18:58:00 WARNING plugins.stateengine.beispiel.raffstore1.automatik. rules se_use is set up in a wrong way - ignoring None
    2021-04-04 18:58:00 WARNING plugins.stateengine.beispiel.raffstore1.automatik. rules Item 'Behanghöhe des Raffstores' not found!
    2021-04-04 18:58:00 WARNING plugins.stateengine.beispiel.raffstore1.automatik. rules Item 'Lamellenwinkel des Raffstores' not found!
    2021-04-04 18:58:00 WARNING plugins.stateengine.beispiel.raffstore1.automatik. rules Item 'Behanghöhe des Raffstores' not found!
    2021-04-04 18:58:00 WARNING plugins.stateengine.beispiel.raffstore1.automatik. rules Item 'Behanghöhe des Raffstores' not found!
    Die erste Warnung kann ich mir noch damit erklären, dass ich keine "Anwesenheit" "programmiert/konfiguriert" habe. Aber warum findet er die anderen Items nicht bzw. was sagt mir die Fehlermeldung zu "se_use"?

    Leider blicke ich bei einigen grundlegenden Dingen noch nicht ganz durch, was es nicht gerade leichter macht. Z. B. verstehe ich das mit den Punkten vor einem Item noch nicht wirklich. Als Beispiel hier mal "...hoehe", "...lamelle" und "..settings.himmelsrichtung" aus dem Doku-Beispiel:
    Code:
    rules:
            # Item für Behanghöhe
            se_item_hoehe: ...hoehe
            
            # Item für Lamellenwinkel
            se_item_lamelle: ...lamelle
            
            # Keine Änderung des Lamellenwinkels wenn Abweichung kleiner 5
            se_item_himmelsrichtung: ..settings.himmelsrichtung
    Ich denke mal, dass das mit den Einrückungen zu tun hat. Stimmt das und kann mir das vielleicht jemand noch etwas genauer erklären? Vielleicht einfach anhand dem vorgenannten Beispiel. Warum sind vor "hoehe" und "lamelle" drei Punkte und vor "settings" nur zwei?

    Ich hoffe ich quäle euch nicht mit solchen Anfänger-Fragen, aber irgendwie konnte ich mir meine Fragen durch lesen der sehr umfangreichen Doku nicht selbst beantworten.

    LG Maku

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hi!
    Ich würds mal simpel halten und das se_releasedby ausprobieren. Du hast den suspend ganz oben in der Hierarchie, über der Nacht und definierst dort eben, dass Nacht den Status "auflösen" darf. Das wegen der kürzeren Zeit kannst du dann mit se_suspend_time: eval:x if state1 else y lösen, wobei du da wohl Hilfsitems brauchst, die auf true oder false gesetzt werden, je nachdem, welcher Status grad aktiv ist.

    Einen Kommentar schreiben:


  • gama
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    gama Schon getestet? Hast du Ideen für den Code..? Ich hab mir überlegt, manche Infos in die States als Properties auszulagern, aber richtig was bringt das auch nicht.

    Was vermutlich vernünftig wäre.. beim ersten Start dafür zu sorgen, dass der Suspend nicht gleich aufgelöst werden kann, falls der auflösende Zustand eingenommen werden könnte. Sondern erst beim nächsten Mal..?
    Hi,
    am Wochenende habe ich (endlich) angefangen das die StateEngine umzubauen. Dabei wollte ich gleich die state_suspend_dynamic nutzen, komme aber nicht richtig weiter. Hast Du ein Beispiel welches das Zusammenspiel an der Praxis erläutert?

    Exemplarisch wäre eine kleine StateEngine mit einem Nacht Modus cool:
    * Ist ein normaler Suspend aktiv, jedoch der Zustand "Nacht" als gültig evaluiert, so wird der aktuelle Suspend aufgelöst.
    * Wird während der Nacht ein Suspend aktiviert, läuft dieser mit einer geänderten Zeit.
    * Ist Nacht Suspend aktiv, aber Nacht nicht mehr als gültig bestimmt, so wird der Nacht Suspend vorzeitig beendet.

    Vielen Dank und Grüße
    Markus

    Einen Kommentar schreiben:


  • mike
    antwortet
    Ja das fixt das Problem. Vielen Dank!

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    mike Fixt das das Problem? https://github.com/smarthomeNG/plugi...601444f4b34b5c

    Einen Kommentar schreiben:


  • mike
    antwortet
    Ja! Das ist Gebäudeteil "Garage" und dann Raum "Garage" ...

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Schau ich mal. Dass dein item doppelt garage, also
    garage.garage.ladeplatz1.automatik.rules ist Absicht?!

    Einen Kommentar schreiben:


  • mike
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Das sollte leicht fixbar sein. Hab einen PR auf github gesehen, der aber wieder geschlossen wurde?
    Ja, da hatte ich versucht das zu fixen, da es mir auch einfach erschien. Das war dann aber doch nichts. Ich habe da nicht den rechten Überblick was genau das Problem ist.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Das sollte leicht fixbar sein. Hab einen PR auf github gesehen, der aber wieder geschlossen wurde?

    Einen Kommentar schreiben:


  • mike
    antwortet
    Ich habe eine merkwürdige Meldung im Log (smarthomeNG 1.8.1, plugin-Version 1.8.2):
    Code:
    2021-02-24  07:23:45 WARNING  plugins.stateengine.garage.garage.ladeplatz1.automatik.rules      Item 'Name vom Item' not found!
    Das ganze kommt von StateEngineItem.py:782. Die dort aufgelöste "item_id" wird (soweit ich das verstanden habe) in StateEngineCondition.py:109 in das Dictionary getan. Dort allerdings via "str(self.__item)", also mit dem Namen.
    Solange das Item keinen Namen über das Attribut "name" bekommen hat, wird als Name der Pfad verwendet. D.h. sobald man dem Item einen Namen gibt, dann kommt es zu dieser Meldung.

    Einen Kommentar schreiben:

Lädt...
X