Ankündigung

Einklappen
Keine Ankündigung bisher.

Stateengine Plugin Support

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

  • Onkelandy
    antwortet
    Seit dem Pluginrelease 1.6.1 gibt es nun im WebInterface auch eine Visualisierung zur Stateengine. Feedback willkommen!

    Leider hatte ich verabsäumt, das entsprechende Verzeichnis automatisch anzulegen. Daher müsste folgender Befehl noch im shng Verzeichnis ausgeführt werden:
    Code:
    mkdir plugins/stateengine/webif/static/img/visualisations

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Nun zum eigentlichen "cast" Problem:
    Du hast Einträge wie se_min_time: hmblind4.vo.max_time_morgens

    Das heißt, als Wert wird der String 'hmblind4.vo.max_time_morgens' herangezogen. Du musst ein item: voran stellen, damit der Wert vom Item geholt wird!
    Ich habe den Logeintrag zu dem Problem noch optimiert, aber generell solltest du echt mal deine YAMl durchchecken, das ist alles sehr inkonsistent und chaotisch.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Zu Punkt 5: Ja, genau so wie du geschrieben hast. Das struct könnte dann so aussehen:
    Code:
    stateengine_nacht_raffstore:
        vo:
            nacht:
                setting_x:
                    type: num
                .....
    
        rules:
            se_item_hoehe: ..hoehe
    
            nacht:
                enter:
                   ...
                on_enter_or_stay:
                   ....

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Zum Log nochmals. Da steht doch alles drin?!?
    Code:
    2019-08-03 16:35:54.363604       Check condition set 'enter_temperatur'
    2019-08-03 16:35:54.373510               Condition 'temperatur': Checking all relevant stuff
    2019-08-03 16:35:54.385745                       Checking eval: se_eval.get_relative_itemvalue('..settings.suntrack.force_temperatur').
    2019-08-03 16:35:54.388228                               Executing method 'get_relative_itemvalue(..settings.suntrack.force_temperatur)'
    2019-08-03 16:35:54.399911                               Testing for relative item declaration ..settings.suntrack.force_temperatur
    2019-08-03 16:35:54.402758                               Return '28' for item jalousien.og.osten_wohnen.automatik.settings.suntrack.force_temperatur
    2019-08-03 16:35:54.406526                       Condition 'temperatur': min=[28] max=[None] negate=False current=25.9
    2019-08-03 16:35:54.417146                               Checking minvalue 28 and maxvalue None
    2019-08-03 16:35:54.420197                               too low -> not matching

    Einen Kommentar schreiben:


  • schloessl
    antwortet
    Danke Onkelandy,

    Deine Antwort war prompt und klar. Ich habe die Bugs ausgebessert und schon einmal einen großen Fortschritt erzielt.
    Stateengine läuft jetzt wenigsten durch und die Feinheiten können bearbeitet werden.

    Herzlichen Dank!

    Deine Lösung geht weit in die Tiefen des Systems hinein, somit bleiben bei mir noch Lücken.

    Den Bereich "Lamellen" hade ich jetzt vor" Automatik" gesetzt, läuft natürlich.
    Leider gehen seitdem die Übernahmen aus meinen Vorgaben nicht mehr. Ich habe die auch einmal vor "Automatik" kopiert, leider das gleich Ergebnis.

    Code:
    2019-08-03  14:16:23 WARNING  stateengine      Problem casting 'hmblind4.vo.min_sun_azimut_vorm' to <function cast_num at 0x69e40738>: Not possible to cast.
    2019-08-03  14:16:23 WARNING  stateengine      Problem casting 'hmblind4.vo.max_sun_azimut_vorm' to <function cast_num at 0x69e40738>: Not possible to cast.
    2019-08-03  14:16:23 WARNING  stateengine      Problem casting 'hmblind4.vo.min_sun_altitude' to <function cast_num at 0x69e40738>: Not possible to cast.
    2019-08-03  14:16:23 WARNING  stateengine      Problem casting 'hmblind4.vo.set_temp' to <function _cast_num at 0x7607af60>: Not possible to cast.
    2019-08-03  14:16:23 WARNING  stateengine      Problem casting 'hmblind4.vo.min_sun_azimut_vorm' to <function cast_num at 0x69e40738>: Not possible to cast.
    2019-08-03  14:16:23 WARNING  stateengine      Problem casting 'hmblind4.vo.max_sun_azimut_vorm' to <function cast_num at 0x69e40738>: Not possible to cast.
    2019-08-03  14:16:23 WARNING  stateengine      Problem casting 'hmblind4.vo.min_sun_altitude' to <function cast_num at 0x69e40738>: Not possible to cast.
    2019-08-03  14:16:23 WARNING  stateengine      Problem casting 'hmblind4.vo.set_hoehe_schatt' to <function _cast_num at 0x7607af60>: Not possible to cast.
    Wenn ich mir die Werte über Items im Admin ansehe, sind diese i.O.

    Zu Deinem Punkt 4 von gestern
    Ich dachte an das LogFile beim Ablauf
    Code:
    2019-08-03 14:16:23.957345             Condition 'sun_azimut':
    2019-08-03 14:16:23.958225                 eval: plugins.stateengine.StateEngineCurrent.get_sun_azimut
    2019-08-03 14:16:23.958532                 min = 100  from item: hmblind4.vo.min_sun_azimut_vorm
    2019-08-03 14:16:23.958774                 max = 200  from item: hmblind4.vo.max_sun_azimut_vorm
    oder ähnlich
    gerade bei invertierten Werten würde es die Übersicht erleichtern.

    Zu Deinem Punkt 5 von gestern: wie sieht das aus

    im Item unter "Automatik"
    struct:
    . die üblichen Statengine....
    dann
    Stateengine_rules_morgens
    . Stateengine_rules_abends
    usw.

    und in der #etc/struct.yaml
    stateengine_default_raffstore:
    <...>
    statengine_rules_morgens:
    <...>

    stateengine_rules_abends:
    <...>

    Anbei noch einmal die gekürzten Logs.

    Danke für Deine Geduld!!!

    state.zip

    Angehängte Dateien
    Zuletzt geändert von schloessl; 03.08.2019, 14:28.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Damit kommen wir schon weiter:
    Problem 1: - 'to: eval:sh.stateengine_eval.sun_tracking()'
    Auf die Schnelle hab ich in der Doku nur die (korrekte) Syntax gefunden: 'to: eval:stateengine_eval.sun_tracking()' - also OHNE sh.
    Falls du irgendwo was mit sh. gelesen hast, bitte Link schicken, dann muss ich das ausbessern.


    Problem 2: WARNING: Problem casting 'hmblind4.vo.mindesdauer_helligkeit'
    Da fehlt ein t!

    Problem 3: Im Zustand Nachführen:
    se_item_temperature: item:hmblind4.wetterstation.temperatur
    se_item_brightnessG435k: hmblind4.wetterstation.brightnessG435k
    Zwei Fehler: In Zeile 1 muss das item: weg, wie schon erwähnt. Außerdem haben beide Zeilen nichts im Zustand verloren. Die gehören unter "rules", nicht in den Zustand. Daraus resultiert auch der Fehler zum "enter is not a valid function"

    Problem 4: Die besagten Items höhe und Lamelle existieren schlichtweg nicht. Das kannst du einfach im Admininterface nachschauen. Du überschreibst raffstore. Wenn du höhe, Lamelle, etc. einfach direkt vor das "Automatik" setzt, läuft alles. Dass das nun mit einer alten Plugin Version läuft, kann eigentlich nicht sein - es hat mit dem Plugin nichts zu tun. Wenn ein Item(baum) in einem ANDEREN File ergänzt wird, funktioniert das. Im gleichen yaml File wird die erste Definition überschrieben.

    Problem 5: Ich würde empfehlen, pro Zustand ein struct zu erstellen, gleich mit passenden settings (bzw. vo bei dir). Dadurch wärst du deutlich flexibler und immer auf der sicheren Seite.

    Zu deinen anderen Fragen:

    Zitat von schloessl Beitrag anzeigen
    Im Trace sieht man z.B. se_brightness: vo_set:brightness, aber leider nicht den wahren Wert.
    Ist es möglich hier noch den Value = xx zusätzlich auszugeben?
    Ich vermute, du meinst den Beginn des Logs? Hier den Wert anzugeben, macht keinen Sinn, da er sich ja bei der Evaluierung des Status ändern kann. Bei der Evaluierung wird der Wert ja aus dem Item gelesen und auch im Logfile entsprechend bekannt gegeben.


    Zitat von schloessl Beitrag anzeigen
    Hier bin ich unsicher:
    se_action_hoehe: - 'function: set' - 'to: 0' wie setze ich hier ein "vo.hoehe.nacht" ein?
    https://www.smarthomeng.de/user/plug...user_doc6.html werde ich in dem Fall noch klarer spezifizieren.
    Code:
    se_action_hoehe:
      - 'function: set'
      - 'to: item:vo.hoehe.nacht'

    Einen Kommentar schreiben:


  • schloessl
    antwortet
    Danke Onkelandy,
    die Fehler lauf vorherigem Post habe ich ausgebessert und schon wieder "unzählige" Versuche unternommen.

    Das eigentliche Problem "Lamelle fehlt" bleibt bestehen.

    Ich habe einmal die wichtigsten Protokelle in ein Zip gelegt. Meine große Bitte, falls Du einmal Zeit hast schaue einmal wo meine Lamlle und Hoehe verschwindet.
    Da meine Lamellen in der alten Version problemlos laufen, besteht kein Zeitdruck. Also bitte nur bei Gelegenheit.

    Es gibt noch ein paar Warnings mit den Triggern, die ich bis jetzt einfach "übersehen" habe , bis einmal meine Lamellen wieder auftauchen.

    Vorgabewerte habe ich einem Bereich "vo" hinterlegt, die ich im Eisatzprogramm aus einer DB versorge.

    Noch eine Bitte.
    Im Trace sieht man z.B. se_brightness: vo_set:brightness, aber leider nicht den wahren Wert.
    Ist es möglich hier noch den Value = xx zusätzlich auszugeben?

    Hier bin ich unsicher:
    se_action_hoehe: - 'function: set' - 'to: 0' wie setze ich hier ein "vo.hoehe.nacht" ein? stateengine_schloessl.zip
    Angehängte Dateien
    Zuletzt geändert von schloessl; 02.08.2019, 15:01.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Das ist etwas zu wenig Info. Worum gehts? Um die lamelle? Wie sieht das ganze hmblind4 Item aus? Gibt es
    hmblind4.raffstore.lamelle?
    Hier ist ein Fehler:
    se_item_hoehe: item:item:hmblind4.raffstore.hoehe

    Mir ist nich ganz klar, was der Punkt nach item: machen soll:
    se_item_brightness: item:.wetterstation.helligkeit

    Im Log lese ich was von se_use. Würde ich nicht nutzen, wenn du structs nutzt.

    Bei der se_item_... ist klar, dass es ein Item ist. Also kein item: voran stellen!!
    Auch das Item
    hmblind4.raffstore.automatik.rules.vo.max_sun_azim ut_vorm macht keinen Sinn. Bitte nochmals zurück zum Start: https://www.smarthomeng.de/user/plug...user_doc3.html
    Siehe auch: https://www.smarthomeng.de/user/plug...user_doc8.html
    Zuletzt geändert von Onkelandy; 31.07.2019, 19:57.

    Einen Kommentar schreiben:


  • schloessl
    antwortet
    Hallo Onkelandy,
    ich habe ein Problem und kämpfe schon einige Abende ohne Erfolg.

    Ich habe meine Jalousien auf die neuste Version /Def umgestellt. Alles in einem item.yaml sah schon sehr gut aus. Ich habe danach die "automtik/rules" versucht laut Beispiel in eine /etc/ struct.yaml zu legen.

    "hmblind4" ist "beispiel"

    Ein Auszug:
    Code:
    stateengine_default_raffstore:
        settings:
            mindestdauer_helligkeit:
                type: num
                cache: True
                initial_value: 30   #nur Testzwecke  
     
    ########################################## Nachführen  ###############################################
    #...#...#...#...#     # Zustand "Nachführen der Lamellen zum Sonnenstand bei großer Helligkeit",
        rules:
            type: bool
            name: Automatik Test Fenster
    
            # Relevante Standard-Attribute werden durch den Import der Templates automatisch eingebunden.
            # Item-Referenzen mittels se_item werden durch das oben eigens angelegte Template eingebunden.
            # Erste Zustandsermittlung nach 30 Sekunden
    
    #       #se_item_brightness: hmblind4.wetterstation.helligkeit
            se_item_brightness: item:.wetterstation.helligkeit
    
            # Item für Temperatur außen
    #       #se_item_temperature: hmblind4.wetterstation.temperature
            se_item_temperature: item:.wetterstation.temperature
          
            # Item das anzeigt, ob die Helligkeit aussen mehr als 25kLux beträgt
    #       #se_item_brightnessGt25k: hmblind4.wetterstation.helligkeit.gt25k
            se_item_brightnessGt25k: item:.wetterstation.helligkeit.gt25k
    
         
            # Item das anzeigt, ob die Helligkeit aussen mehr als 43kLux beträgt
    #       #se_item_brightnessGt43k: hmblind4.wetterstation.helligkeit.gt43k
            se_item_brightnessGt43k: item:.wetterstation.helligkeit.gt43k
    
    
            # Item für Behanghöhe ..hoehe
    #       #se_item_hoehe: eg.wozi.test.pos
            se_item_hoehe: item:item:hmblind4.raffstore.hoehe
    #        se_item_hoehe: item:..hoehe:
    Der Aufruf im item:

    Code:
    #items/item.yaml
    #hmblind4:
        #raffstore:
    #...#...#
    #beispiel.raffstore.automatik.settings.suspendduration = 1
    #hmblind4.raffstore.automatik.settings.suspendduration
    #...#...#     
            automatik:
                settings:
                    suspendduration:
                        name: Suspend Dauer
                        type: num
                        initial_value: 10
                        cache: True
                        visu_acl: rw
                        database: init
    #...#...#...#    
                struct:
                  - stateengine.general
                  - stateengine.state_lock
                  - stateengine.state_suspend
                  - stateengine.state_release
                  - stateengine_default_raffstore
    
                manuell:
                  ....
    Das Logfile zeigt::

    Code:
    2019-07-31  18:30:47 WARNING  stateengine      Item 'item:hmblind4.raffstore.lamelle' not found!
    2019-07-31  18:30:47 INFO     stateengine  Init state hmblind4.raffstore.automatik.rules.nachfuehren
    2019-07-31  18:30:47 WARNING  stateengine      Function 'enter' is no valid function! Please check item attribute.
    2019-07-31  18:30:47 WARNING  stateengine      Item 'item:hmblind4.raffstore.lamelle' not found!
    2019-07-31  18:30:47 WARNING  stateengine      Item 'item:hmblind4.raffstore.lamelle' not found!
    2019-07-31  18:30:47 WARNING  stateengine      Item 'item:hmblind4.raffstore.lamelle' not found!
    2019-07-31  18:30:47 ERROR    stateengine  Ignoring state hmblind4.raffstore.automatik.rules.nachfuehren because:  State 'hmblind4.raffstore.automatik.rules.nachfuehren', Condition Set 'enter_hysterese', Condition 'brightnessGt25K' Error: Condition brightnessGt25K: Neither 'item' nor 'eval' given!
    2019-07-31  18:30:47 INFO     stateengine  Init state hmblind4.raffstore.automatik.rules.Nachführen_helligkeit
    2019-07-31  18:30:47 INFO     stateengine  hmblind4.raffstore.automatik.rules.Nachführen_helligkeit.get_absolutepath('..nachfuehren'): Result = 'hmblind4.raffstore.automatik.rules.nachfuehren' (for attribute 'se_use')
    2019-07-31  18:30:47 WARNING  stateengine      Function 'enter' is no valid function! Please check item attribute.
    2019-07-31  18:30:47 WARNING  stateengine      Item 'item:hmblind4.raffstore.lamelle' not found!
    2019-07-31  18:30:47 WARNING  stateengine      Item 'item:hmblind4.raffstore.lamelle' not found!
    2019-07-31  18:30:47 WARNING  stateengine      Item 'item:hmblind4.raffstore.lamelle' not found!
    2019-07-31  18:30:47 INFO     stateengine      hmblind4.raffstore.automatik.rules.Nachführen_helligkeit: Reading se_use hmblind4.raffstore.automatik.rules.nachfuehren. Nevertheless, it is recommended to use struct items instead.
    2019-07-31  18:30:47 WARNING  stateengine      Determined item 'hmblind4.raffstore.automatik.rules.vo.max_sun_azimut_vorm' does not exist.
    2019-07-31  18:30:47 WARNING  stateengine      Determined item 'hmblind4.raffstore.automatik.rules.vo.min_sun_azimut_vorm' does not exist.
    2019-07-31  18:30:47 WARNING  stateengine      Item 'item:hmblind4.raffstore.lamelle' not found!
    2019-07-31  18:30:47 ERROR    stateengine  Ignoring state hmblind4.raffstore.automatik.rules.Nachführen_helligkeit because:  State 'hmblind4.raffstore.automatik.rules.Nachführen_helligkeit', Condition Set 'enter_hysterese', Condition 'brightnessGt25K' Error: Condition brightnessGt25K: Neither 'item' nor 'eval' given!
    2019-07-31  18:30:47 INFO     stateengine  Init state hmblind4.raffstore.automatik.rules.nacht
    2019-07-31  18:30:47 INFO     stateengine      hmblind4.raffstore.automatik.rules.nacht: Reading se_use hmblind4.default.raffstore.nacht. Nevertheless, it is recommended to use struct items instead.
    2019-07-31  18:30:47 WARNING  stateengine      Item 'item:hmblind4.raffstore.lamelle' not found!
    2019-07-31  18:30:47 WARNING  stateengine      Determined item 'hmblind4.raffstore.automatik.rules.wetterstation.helligkeit' does not exist.
    2019-07-31  18:30:47 WARNING  stateengine      Item 'item:hmblind4.raffstore.lamelle' not found!
    2019-07-31  18:30:47 INFO     stateengine  Init state hmblind4.raffstore.automatik.rules.morgens
    Ich habe schon mit " .. " und den ausgeschriebenen Namen probiert, leider kein Erfolg.

    Kannst Du mir bitte einen Hinweis geben, wo mein Problem zu suchen ist. Im Moment blicke ich nicht mehr durch!

    Danke Wolfgang!

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hi!
    Also ob jemand den Release Zustand nutzen will oder nicht, bleibt ja jedem selbst überlassen. Wer ihn nicht braucht, implementiert ihn nicht. Ich zB hab beim Schalter keine Lock-Funktion, sondern nur die Release:
    Langes Drücken -> Jalousie fährt, SE geht in Suspend
    Kurzes Drücken -> Jalousie stoppt, SE geht/bleibt in Suspend
    Doppelklick -> Release Status -> Suspend und Lock deaktiviert, normale Evaluierung der SE

    Mit dem Suspend hat's auch nix zu tun. Poste bitte deine Items wie du sie aktuell hast inklusive Logfile mit dem Fehler. Dann schau ich mir das an. Gelöst wird es bestimmt durch die aktuellste Version, die ich oben verlinkt habe. Aber es wäre besser, hier früher anzusetzen und die Wurzel des Problems zu checken.

    Einen Kommentar schreiben:


  • gama
    antwortet
    Hi,

    ich habe mir gestern Abend noch einmal die SE inkl. Beispiele angesehen. Dabei ist mir die Release Funktion aufgefallen, die ich noch nicht implementiert habe und wahrscheinlich verantwortlich ist, dass ich den Suspend / Lock Status nicht mehr verlassen kann.

    Kannst Du evtl. kurz posten, warum diese Funktion eingeführt wurde, bzw. was es damit auf sich hat?
    Verstehe den Zweck nicht ganz...

    Zudem sehe ich ein Problem, wenn die Funktionen außerhalb einer Visu (z.B. über MDT Glastaster mit Display) bedient werden sollen. Aktuell muss ich nur den Status-Text übertragen und ich sehe den Status und wie lange Standby noch läuft. Weiterhin habe ich einen Taster für LOCK. Möchte ich sperren, drücke ich einmal. Einweiteres mal für entsperren - klassisch "toggle". Sollte ich frühzeitig STANDBY verlassen wollen, so geht es auch mit dieser Taste - ich gehe zunächst in den LOCK State und durch einen zweiten Klick in zurück den Automatik Modus. Das ist meiner Ansicht nach SEHR Praxistauglich, wenn man die SE sehr KNX-nah bedienen möchte...

    Evtl. kann man die Taster Funktionen auch auf kurz/lang konfigurieren. Somit würde kurz release = 1 triggern, lang ein lock=1...


    Danke
    Markus
    Zuletzt geändert von gama; 31.07.2019, 10:07.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ich könnte mir lediglich vorstellen, dass das suspend Item nicht als String angegeben ist. Aber das wäre komisch..? Nichts desto trotz sollte das hiermit abgefangen sein:
    https://github.com/onkelandy/plugins/tree/stateengine

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hm, also ich kann den Fehler nicht reproduzieren. Wann genau kommt der und wie sieht nun dein Item tatsächlich aus?
    Zuletzt geändert von Onkelandy; 29.07.2019, 21:32. Grund: getestet

    Einen Kommentar schreiben:


  • gama
    antwortet
    Kurze Ergänzung aus dem logging, nachdem ich eine manuelle Verstellung durchgeführt habe:


    Code:
    2019-07-29  16:27:55 ERROR    item         EG.office.window.shutter.auto.fsm Item EG.office.window.shutter.auto.fsm: problem running <bound method SeItem.update_state of EG.office.window.shutter.auto.fsm>: 'Item' object has no attribute 'startswith'
    
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/item.py", line 2224, in __update
        method(self, caller, source, dest)
      File "/usr/local/smarthome/plugins/stateengine/StateEngineItem.py", line 277, in update_state
        new_state.run_enter(self.__repeat_actions.get())
      File "/usr/local/smarthome/plugins/stateengine/StateEngineState.py", line 131, in run_enter
        self.__actions_enter.execute(False, allow_item_repeat, self.__actions_enter_or_stay)
      File "/usr/local/smarthome/plugins/stateengine/StateEngineActions.py", line 323, in execute
        action.execute(is_repeat, allow_item_repeat)
      File "/usr/local/smarthome/plugins/stateengine/StateEngineAction.py", line 158, in execute
        self._execute(actionname, self._name, repeat_text)
      File "/usr/local/smarthome/plugins/stateengine/StateEngineAction.py", line 631, in _execute
        self.suspend_execute()
      File "/usr/local/smarthome/plugins/stateengine/StateEngineAction.py", line 672, in suspend_execute
        suspend_item = self._abitem.return_item(self.__value[0])
      File "/usr/local/smarthome/plugins/stateengine/StateEngineItem.py", line 593, in return_item
        if not item_id.startswith("."):
    AttributeError: 'Item' object has no attribute 'startswith'

    Einen Kommentar schreiben:


  • gama
    antwortet
    Habs heute mittag kurz getestet: er geht jetzt in suspend, kommt aber nicht mehr raus... ich habe gesehen, dass du einiges umgestellt hast... ich muss da evtl. noch einmal über meinen code.

    Das struct in plugin.yaml hast Du selbt im Einsatz und ist großteils getestet, oder? Dann orientiere ich mich danach...

    Danke
    Markus

    Einen Kommentar schreiben:

Lädt...
X