Ankündigung

Einklappen
Keine Ankündigung bisher.

Stateengine Plugin Support

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

  • bmx
    antwortet
    Zitat von ivande Beitrag anzeigen
    Wieso werden hier im Forum (zumindest bei mir) beim Einfügen des Codes (STRG-V) die Einrückungen (Leerzeichen) nicht mit übernommen - die muss ich immer von Hand dazumachen?
    Die Vorgehensweise ist in diesem Beitrag hier beschrieben...

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Code:
    Ticker: #aendert alle 150 Sekunden / 2,5Minuten den Zustand
        type: bool
        enforce_updates: True
        cycle: 150
        eval: not sh..()
        DelayEg: # Einschaltverzoegerung Erdgeschoss 2Minuten
            type: num
            autotimer: 120 = 2 = latest
            eval: sh...() if value == 2 else 0
            eval_trigger: ..
        DelayOg: # Einschaltverzoegerung Obergeschoss 1Minute
            type: num
            autotimer: 60 = 2 = latest
            eval: sh...() if value == 2 else 0
            eval_trigger: ..
    
    Eg:
        Trigger: # Triggert alle 5 Minuten / jeweils um DelayEg (2min) verzögert
        type: bool
        enforce_updates: True
        eval: True if sh.Ticker.DelayEg() == 1 else None
        eval_trigger: Ticker.DelayEg
    Og:
        Trigger: # Triggert alle 5 Minuten / jeweils um DelayOg (1min) verzögert
        type: bool
        enforce_updates: True
        eval: True if sh.Ticker.DelayOg() == 1 else None
        eval_trigger: Ticker.DelayOg
    Dg:
        Trigger: # Triggert alle 5 Minuten ohne Verzögerung
        type: bool
        enforce_updates: True
        eval: True if sh.Ticker() == 1 else None
        eval_trigger: Ticker
    hat ein bisschen gedauert..

    Wieso werden hier im Forum (zumindest bei mir) beim Einfügen des Codes (STRG-V) die Einrückungen (Leerzeichen) nicht mit übernommen - die muss ich immer von Hand dazumachen?
    Zuletzt geändert von ivande; 23.05.2020, 09:11.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    ivande Könntest du mir vielleicht schnell alle drei Stockwerke posten? Dann werde ich das verzögerte Triggern in nem Blogeintrag o.ä. gerne verewigen. Danke!

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ziemlich cool Lösung

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Du hast also pro Stockwerk einen eigenen Trigger und die sollen verzögert triggern..?
    genau.

    hab es mit 2 Hilfsitem mit einer Einschaltverzögerung (autotimer) gelöst..
    Code:
    Og:
        Trigger: # Triggert alle 5 Minuten / jeweils um 1 Minute Verzögert
            type: bool
            enforce_updates: 'True'
            eval: True if sh.Og.Ticker.Delay() == 1 else None
            eval_trigger: Og.Ticker.Delay
    
        Ticker: #aendert alle 2,5Minuten den Zustand
            type: bool
            enforce_updates: 'True'
            cycle: 150
            eval: not sh.Og.Ticker()
    
            Delay: # Einschaltverzoegerung
                type: num
                autotimer: 60 = 2 = latest
                eval: sh.Og.Ticker() if value == 2 else 0
                eval_trigger: Og.Ticker
    Code:
    2020-05-13 16:[MARKIEREN]13[/MARKIEREN]:30.186403 Update triggered by Eval (item=Dg.Bad.Jalousie.Fenster.AutoBlind.rules source=Dg.Trigger dest=None)
    2020-05-13 16:[MARKIEREN]14[/MARKIEREN]:31.233377 Update triggered by Eval (item=Og.Bad.Jalousie.Fenster.AutoBlind.rules source=Og.Trigger dest=None)
    2020-05-13 16:[MARKIEREN]15[/MARKIEREN]:28.370470 Update triggered by Eval (item=Eg.Bad.Jalousie.Fenster.AutoBlind.rules source=Eg.Trigger dest=None)

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Du hast also pro Stockwerk einen eigenen Trigger und die sollen verzögert triggern..? Probier's doch mal mit einer Logik, die sich bei "init" aktiviert und die einzelnen Trigger per Timer ansteuert. Also dg.trigger.raffstore.timer(5,1) usw. Die Frage ist, nach was sich der Cycle richtet. Startup oder was auch immer. Wäre ein eigener Thread denk ich, vielleicht kann da wer helfen.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Hallo,

    da ich mit dem plugin über 30 Fenster beschatte, würde ich gerne verschiedene stateengines (z.B. je Stockwerk) versetzt triggern. Da ich die KNX-Buslast unmittelbar nach dem Triggern reduzieren möchte..

    Wie kann ich erreichen, dass der Trigger jede 5 Minuten abläuft, jedoch in den verschiedenen Stockwerken jeweils um 1 Minute versetzt:

    Code:
    #items/item.yaml
    dg:
        trigger:
            raffstore:
                type: bool
                name: Gemeinsamer Trigger für alle Raffstores im Dachgeschoss
                enforce_updates: yes
                cycle: 300 = 1
    Gruß Ivan

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    se_set ist insofern deprecated als dass ich es mit den ganzen neuen Features nie getestet habe - aber generell sollte es problemlos parallel zum se_action funktionieren.
    Historie: se_set ist tatsächlich simpel. Aber eben simpel. se_action ist deutlich flexibler, weil man da noch eine Menge andere Parameter angeben kann, die teilweise wichtig sein könnten.

    Bei deinen beiden Beispielen sollte exakt das gleiche Resultat rauskommen.

    Einen Kommentar schreiben:


  • jonah64
    antwortet
    Ich stolpere jetzt über se_set_* und se_action_*

    Wie ist das. Wie es aussieht funktioniert beides für die Ausführung von Aktionen. Liege ich da richtig?

    In der Doku ist eigentlich nur (noch) se_action_ beschrieben. In paar Beispielen finde ich aber auch noch se_set (unter "Pluginspezifische Templates").

    Ist se_set "deprecated" oder wie ist der Status?
    Eigentlich finde ich ja die Syntax von se_set gegenüber se_action smarter:

    se_set_height: value:0
    vs.
    se_action_height:
    - 'function: set'
    - 'to: value:0'
    Oder habe ich etwas übersehen? Was ist der Grund? Gibt es Unterschiede?

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Locale.yaml mit Übersetzung fürs Webif fehlt. Muss ich wohl mal nachreichen

    Einen Kommentar schreiben:


  • jonah64
    antwortet
    Ich sehe gerade, dass beim Aufruf des Webinterfaces aus dem Backend haufenweise der gleiche Fehler geloggt wird:
    Code:
    2020-04-16  00:09:08 ERROR    lib.translation     Trying to use undefined aditional_translations 'plugin/stateengine'
    Scheint aber nicht zu stören. Worauf deutet das hin?

    Einen Kommentar schreiben:


  • jonah64
    antwortet
    ...genau, da bin ich dabei, von se_use auf struct umzustellen. Und noch einiges mehr.
    Die Doku/ den Blog kenne ich - auch darauf bezog sich mein Dank! Da gibt es einige Anregungen für mich.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Es gibt übrigens ein Script im Pluginordner, der beim Umstieg helfen könnte (wobei ich das lange nicht mehr getestet habe )
    Ich empfehle auch, beim Umstieg das struct Feature statt "se_use" zu nutzen, das ist dann ein ganzes Stück flexibler. Die Doku und der Blog https://www.smarthomeng.de/starting-...toblind-plugin geben dir sicher auch Tipps.

    Einen Kommentar schreiben:


  • jonah64
    antwortet
    Beides sieht gut aus:
    mit
    Code:
    se_min_time: item:..WT_hoch_min_time
    Code:
    2020-04-15 21:41:59.089888 Trying to get value of eval <bound method SeCurrent.get_time of <plugins.stateengine.StateEngineCurrent.SeCurren t object at 0x7efe7802bdd0>>
    2020-04-15 21:41:59.090377 Condition 'time': min=[datetime.time(7, 11)] max=[datetime.time(22, 30)] negate=False current=21:41:59.081569
    2020-04-15 21:41:59.090729 Checking minvalue 07:11:00 and maxvalue 22:30:00
    2020-04-15 21:41:59.090977 given limits ok -> matching
    und wie vorher, mit der Änderung im Plugin:
    Code:
    2020-04-15 22:13:33.342579 Trying to get value of eval <bound method SeCurrent.get_time of <plugins.stateengine.StateEngineCurrent.SeCurren t object at 0x7f0e65f35310>>
    2020-04-15 22:13:33.342849 Checking eval: se_eval.get_relative_itemproperty('..WT_hoch_min_t ime', 'value').
    2020-04-15 22:13:33.343171 Executing method 'get_relative_itemproperty(..WT_hoch_min_time, value)'
    2020-04-15 22:13:33.343428 Testing for relative item declaration ..WT_hoch_min_time
    2020-04-15 22:13:33.343994 Return item property value from DG.Rollo.Terrasse.autoTagNacht.WT_hoch_min_time: 07:11
    2020-04-15 22:13:33.344409 Checking eval: se_eval.get_relative_itemproperty('..WT_runter_max _time', 'value').
    2020-04-15 22:13:33.344737 Executing method 'get_relative_itemproperty(..WT_runter_max_time, value)'
    2020-04-15 22:13:33.344957 Testing for relative item declaration ..WT_runter_max_time
    2020-04-15 22:13:33.345329 Return item property value from DG.Rollo.Terrasse.autoTagNacht.WT_runter_max_time: 22:30
    2020-04-15 22:13:33.345699 Condition 'time': min=[datetime.time(7, 11)] max=[datetime.time(22, 30)] negate=False current=22:13:33.333295
    2020-04-15 22:13:33.345975 Checking minvalue 07:11:00 and maxvalue 22:30:00
    2020-04-15 22:13:33.346187 given limits ok -> matching
    Bin zufrieden und komme weiter ;-) Werde weiter umstellen und dabei noch viel zu testen haben!

    Vielen Dank für die schnelle Hilfe
    und btw. auch generell: Danke für die gute Arbeit! So macht es Spaß!

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ich denke, das sollte das Problem auch beheben: https://github.com/smarthomeNG/plugi...2dc1e081a42eb3
    Hoffe auf ausgiebige Testung, meine ersten Versuche warten aber schon mal erfolgreich.

    Einen Kommentar schreiben:

Lädt...
X