Ankündigung

Einklappen
Keine Ankündigung bisher.

Stateengine Plugin Support

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

  • Jackhammer
    antwortet
    --
    Zuletzt geändert von Jackhammer; 26.05.2025, 11:00. Grund: ich bin blöd :D

    Einen Kommentar schreiben:


  • MrSetup
    antwortet
    Hallo Onkelandy,

    erst einmal Danke. Bin noch nicht dazu gekommen es zu testen. Ich schaue mal wie ich damit zurecht komme.

    Gruß

    Michael

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Die Reihenfolge wäre release, lock, suspend. Da brauchst du dann kein automatik_manuell_aus, sondern du triggerst einfach den release State. Dafür gibt es das Item .automatik.release -> True

    Um zu sperren, setzt du das lock Item auf True, das ist schon fix im struct. Wichtig ist die korrekte Hierarchie der States.
    Zuletzt geändert von Onkelandy; 04.04.2025, 16:30.

    Einen Kommentar schreiben:


  • MrSetup
    antwortet
    Hallo schon wieder,

    bin jetzt schon ein ganzes Stück weiter bekommen. Allerdings habe ich einen Knoten im Kopf wie ich mit stateengine.state_lock und stateengine.state_release umgehe.

    Ich habe ein Item, welches wie folgt definiert ist:

    Code:
    allgemein:
        status:
            automatik_manuell_aus:
                type: bool
                knx_dpt: 1
                knx_listen: 0/7/10
                knx_init: 0/7/10
                knx_send: 0/7/10​
    Jetzt möchte ich, wenn ich das Item auf "Aus" also "false" setzte, dass state_release ausgelöst wird (also das erneute Ausführen der stateengine, z.B. zum definierten Nachführen der Rolläden, welche evtl. vorher manuell verstellt wurden. Klar möchte ich auch, wenn ich das Item auf "Ein" also "true" setzte, das state_Lock angesprochen wird.

    Mein Item sieht derzeit wie folgt aus:

    Code:
    beschattung:
        triggeritem:
            type: bool
            name: Trigger
            cycle: 300 = 1
            #crontab: '* */5 8-19 * *'
            enforce_updates: true
        EG:
            Buero:
                automatik:
                    struct:
                        - stateengine.general
                        - stateengine.state_suspend
                        - stateengine.state_lock
                        - stateengine.state_release
                        #- beschattung_default
                    manuell:
                        eval_trigger:
                            - EG.Buero.Rolladen.Fenster.Wert.knx_send
                            - EG.Buero.Rolladen.Fenster.Fahren
                            - EG.Buero.Rolladen.Fenster.Stopp
                        se_manual_exclude:
                            - KNX:1.1.11:0.0.0
                    
                    rules:
                        type: bool
                        se_log_level: 0
                        se_plugin: active
                        se_item_height: EG.Buero.Rolladen.Fenster.Wert
                        se_item_sun_altitude: env.location.sun_position.azimut.degrees
                        se_item_sun_elevation: env.location.sun_position.elevation.degrees
                        se_item_fassade4: allgemein.status.rolladen_automatik_fassade4
                        se_repeat_actions: false
                        eval_trigger:
                            - beschattung.EG.Buero.automatik.manuell
                            #- beschattung.EG.Buero.automatik.release
                            #- beschattung.EG.Buero.automatik.lock
                            - beschattung.triggeritem
                        eval: true​
                        ...
    Wo und wie muss ich jetzt die Zuordnung von
    beschattung.EG.Buero.automatik.lock zu allegmein.status.automatik_manuell_aus = true
    und
    beschattung.EG.Buero.automatik.release zu allegmein.status.automatik_manuell_aus = false
    machen? In den verschiedenen Dokus und Hilfeseiten habe ich das nicht gefunden, oder ich habe Tomaten auf den Augen, sry dafür.

    Danke im voraus

    Michael

    P.S. weil ich es gerade sehe: wenn ich den crontab nutzen möchte, funktioniert das irgendwie auch nicht.

    Einen Kommentar schreiben:


  • MrSetup
    antwortet
    Super, vielen Dank. das habe ich tatsächlich nicht gesehen. Es funktioniert. Freu mich schon auf die unendlichen Möglichkeiten

    Gruß
    Michael

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    2 Kleinigkeiten mit großen Auswirkungen:
    https://smarthomeng.github.io/dev_do...s.html#index-2

    on_enter_or_Stay muss on_enter_or_stay heißen.

    Einen Kommentar schreiben:


  • MrSetup
    antwortet
    Guten Abend zusammen,

    ich versuche mich gerade in der Stateengine. Hier mein erstes Item:

    Code:
    # 00_Beschattung.yaml
    
    beschattung:
        triggeritem:
            type: bool
            name: Trigger
            cycle: 120 = 1
            enforce_update: True
    
        automatik:
            struct: stateengine.general
            rules:
                type: bool
                se_log_level: 2
                se_plugin: active
                se_item_height: EG.Buero.Rolladen.Fenster.Wert
                se_item_sun_altitude: env.location.sun_position.azimut.degrees
                se_item_temperature: DG.Dach.Wetterstation.Temperatur
                eval: True
                eval_trigger: beschattung.triggeritem
                
                suntrack:
                    enter_Sonnenstand:
                        se_min_sun_altitude: 170
                        se_max_sun_altitude: 310
                        se_min_temperature: 5
                    on_enter_or_Stay:
                        se_action_height:
                            - 'function: set'
                            - 'to: 60'
                standard:
                    on_enter_or_Stay:
                        se_action_height:
                          - 'function: set'
                          - 'to: 0'  ​
    Im Plugin sieht auch alles gut aus:

    Screenshot 2025-03-26 184054.png

    Nach einem Neustart von SHNG kann ich nur einen Fehler sehen, wobei ich mich Frage wo der herkommt.

    Code:
    25-03-26  17:17:38 NOTICE   lib.smarthome       --------------------   SmartHomeNG restarting, initiated by admin interface   --------------------
    2025-03-26  17:17:53 NOTICE   lib.smarthome       --------------------   SmartHomeNG stopped   --------------------
    2025-03-26  17:17:54 NOTICE   lib.smarthome       --------------------   Init SmartHomeNG v1.10.0-master (4b25822a0)   --------------------
    2025-03-26  17:17:54 NOTICE   lib.smarthome       Running in Python interpreter 'v3.10.12 final', from directory /usr/local/smarthome
    2025-03-26  17:17:54 NOTICE   lib.smarthome        - operating system 'Linux Mint 21.3' (pid=702433)
    2025-03-26  17:17:56 NOTICE   lib.smarthome        - on 'Intel(R) Core(TM) i5-7400T CPU @ 2.40GHz'
    2025-03-26  17:18:10 NOTICE   lib.metadata        Item 'beschattung.triggeritem', attribute 'enforce_update': Attribute is undefined and has value 'True' (defined in 00_Beschattung.yaml)
    [B]2025-03-26  17:18:11 ERROR    lib.triggertimes    crontab entry '' has fewer than 4 parts and is invalid[/B]
    2025-03-26  17:18:11 NOTICE   lib.smarthome       --------------------   SmartHomeNG initialization finished   --------------------
    ​
    Mein Problem:

    Der Rolladen wird nicht angesprochen. Das Item "EG.Buero.Rolladen.Fenster.Wert" wird an anderer Stelle erfolgreich eingesetzt, das kann es also nicht sein.

    Code:
    2025-03-26 14:52:39.536763  ===============================================================================
    2025-03-26 14:52:39.561559 Set log level to startup log level 2
    2025-03-26 14:52:39.561990 Initialize Item beschattung.automatik.rules (Log stateengine.beschattung.automatik.rules, Level set to -1, default log level is 0)
    2025-03-26 14:52:39.562768 Testing for relative item declaration ..state_id
    2025-03-26 14:52:39.563439 Testing for relative item declaration ..state_name
    2025-03-26 14:52:39.563543 Testing for relative item declaration ..previousstate_id
    2025-03-26 14:52:39.563648 Testing for relative item declaration ..previousstate_name
    2025-03-26 14:52:39.563706 Testing for relative item declaration ..conditionset_id
    2025-03-26 14:52:39.563763 Testing for relative item declaration ..conditionset_name
    2025-03-26 14:52:39.563815 Testing for relative item declaration ..previousconditionset_id
    2025-03-26 14:52:39.563867 Testing for relative item declaration ..previousconditionset_name
    2025-03-26 14:52:39.563920 Testing for relative item declaration ..previousstate_conditionset_id
    2025-03-26 14:52:39.563973 Testing for relative item declaration ..previousstate_conditionset_name
    2025-03-26 14:52:39.564248 Init state beschattung.automatik.rules.suntrack
    2025-03-26 14:52:39.568427     Added 0 action(s) based on item configuration: 0 on_enter, 0 on_stay , 0 on_enter_or_stay, 0 on_leave
    2025-03-26 14:52:39.610723     Added 1 condition set(s) based on item configuration
    2025-03-26 14:52:39.612094 Appended state beschattung.automatik.rules.suntrack
    2025-03-26 14:52:39.612783 Init state beschattung.automatik.rules.standard
    2025-03-26 14:52:39.614152     Added 0 action(s) based on item configuration: 0 on_enter, 0 on_stay , 0 on_enter_or_stay, 0 on_leave
    2025-03-26 14:52:39.625545     Added 0 condition set(s) based on item configuration
    2025-03-26 14:52:39.626193 Appended state beschattung.automatik.rules.standard
    2025-03-26 14:52:39.627595 ________________________________________________________________________________
    2025-03-26 14:52:39.630612 Recalculating state order. Current order: [SeState item: beschattung.automatik.rules.suntrack, id beschattung.automatik.rules.suntrack., SeState item: beschattung.automatik.rules.standard, id beschattung.automatik.rules.standard.]
    2025-03-26 14:52:39.650025 Recalculated state order. New order: [SeState item: beschattung.automatik.rules.suntrack, id beschattung.automatik.rules.suntrack., SeState item: beschattung.automatik.rules.standard, id beschattung.automatik.rules.standard.]
    2025-03-26 14:52:39.653443 ________________________________________________________________________________
    2025-03-26 14:52:39.667005 Testing for relative item declaration ..settings.instant_leaveaction
    2025-03-26 14:52:39.670084 Using instant_leaveaction ['item:beschattung.automatik.settings.instant_leaveaction'] from attribute se_instant_leaveaction. Default value is False
    2025-03-26 14:52:39.678077 ________________________________________________________________________________
    2025-03-26 14:52:39.686867 Configuration of item beschattung.automatik.rules ==============================
    2025-03-26 14:52:39.691141 Startup Delay: 10 (<class 'int'>)
    2025-03-26 14:52:39.720136 Suspension time on manual changes: 3600 (<class 'int'>)
    2025-03-26 14:52:39.725294 Instant Leave Action from item: beschattung.automatik.settings.instant_leaveaction
    2025-03-26 14:52:39.733568 Currently item results in -1
    2025-03-26 14:52:39.736326 Cycle: Inactive
    2025-03-26 14:52:39.736504 Cron: Inactive
    2025-03-26 14:52:39.736578 Trigger: beschattung.triggeritem
    2025-03-26 14:52:39.736682 Repeat actions if state is not changed: True (<class 'bool'>)
    2025-03-26 14:52:39.736776 Item 'Laststate Id': beschattung.automatik.state_id
    2025-03-26 14:52:39.736846 Item 'Laststate Name': beschattung.automatik.state_name
    2025-03-26 14:52:39.785246 Item 'Previousstate Id': beschattung.automatik.previousstate_id
    2025-03-26 14:52:39.807528 Item 'Previousstate Name': beschattung.automatik.previousstate_name
    2025-03-26 14:52:39.826258 Item 'Lastcondition Id': beschattung.automatik.conditionset_id
    2025-03-26 14:52:39.826350 Item 'Lastcondition Name': beschattung.automatik.conditionset_name
    2025-03-26 14:52:39.826398 Item 'Previouscondition Id': beschattung.automatik.previousconditionset_id
    2025-03-26 14:52:39.826438 Item 'Previouscondition Name': beschattung.automatik.previousconditionset_name
    2025-03-26 14:52:39.826641 Item 'Previousstate condition Id': beschattung.automatik.previousstate_conditionset_id
    2025-03-26 14:52:39.844581 Item 'Previousstate condition Name': beschattung.automatik.previousstate_conditionset_name
    2025-03-26 14:52:39.857191 ________________________________________________________________________________
    2025-03-26 14:52:39.857294 Initializing released_by attributes
    2025-03-26 14:52:39.857384 ________________________________________________________________________________
    2025-03-26 14:52:39.857438 State beschattung.automatik.rules.suntrack:
    2025-03-26 14:52:39.857548     State Name: suntrack (<class 'str'>)
    2025-03-26 14:52:39.857602     State Order: 1 (<class 'int'>)
    2025-03-26 14:52:39.857652     Updating Web Interface...
    2025-03-26 14:52:39.859909     Finished Web Interface Update
    2025-03-26 14:52:39.896648     Condition sets to enter state:
    2025-03-26 14:52:39.902418         Condition Set 'enter_Sonnenstand':
    2025-03-26 14:52:39.902794             Condition 'sun_altitude':
    2025-03-26 14:52:39.903065                 item: sun_altitude (env.location.sun_position.azimut.degrees)
    2025-03-26 14:52:39.903264                 min: 170 (<class 'int'>)
    2025-03-26 14:52:39.903442                 max: 310 (<class 'int'>)
    2025-03-26 14:52:39.903542                 negate: False
    2025-03-26 14:52:39.903675             Condition 'temperature':
    2025-03-26 14:52:39.903790                 item: temperature (DG.Dach.Wetterstation.Temperatur)
    2025-03-26 14:52:39.903895                 min: 5 (<class 'int'>)
    2025-03-26 14:52:39.903955                 negate: False
    2025-03-26 14:52:39.928399 State beschattung.automatik.rules.standard:
    2025-03-26 14:52:39.928618     State Name: standard (<class 'str'>)
    2025-03-26 14:52:39.928715     State Order: 2 (<class 'int'>)
    2025-03-26 14:52:39.928793     Updating Web Interface...
    2025-03-26 14:52:39.928874     Finished Web Interface Update
    2025-03-26 14:52:39.928992 ________________________________________________________________________________
    2025-03-26 14:52:39.929065
    2025-03-26 14:52:39.929131 These attributes are not used: height. Please check extended log file for details.
    2025-03-26 14:52:39.929193
    2025-03-26 14:52:39.929256 The following attributes have issues:
    2025-03-26 14:52:39.929321     Definition height not used in any action or condition.
    2025-03-26 14:52:39.929389 ________________________________________________________________________________
    2025-03-26 14:52:39.929562 Will start stateengine evaluation at 14:52:49, 26.03.
    2025-03-26 14:52:39.929795 Reset log level to -1
    ​
    ​
    Wo ist mein Fehler? Ich kann ihn nicht finden

    Danke schon mal im Voraus für die Hilfe

    Michael
    Zuletzt geändert von MrSetup; 26.03.2025, 20:17.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    hab eine NOTICE im Log gefunden (PLUGIN_VERSION = '2.0.0'):

    Code:
    2024-07-17  07:16:26 NOTICE   lib.metadata        Item 'Dg.Wohnzimmer.Jalousie.Fenster.AutoBlind.rules.Beschatten', attribute 'se_name': Attribute is undefined and has value 'eval: ('Beschatten-' + sh....Parameter.Himmelsrichtung())'
    Zuletzt geändert von ivande; 17.07.2024, 06:23.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Gut, habs zusammen mit ein paar weiteren Fixes gemergt, ist nun im develop

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Danke, es scheint nun zu klappen.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Musste tatsächlich tief graben, aber hab das Problem gefunden. Das hier sollte es lösen, bitte testen:
    https://github.com/smarthomeNG/plugins/pull/948

    Einen Kommentar schreiben:


  • ivande
    antwortet
    wollte in mein bestehendes Projekt, welches schon länger läuft mit struct eine Ergänzung einfügen und komme seit 2 Tagen nicht auf den Fehler drauf: expected string or bytes-like object


    log:
    Code:
    2024-07-03 12:44:46.156430 Init state Dg.Wohnzimmer.Jalousie.Terrasse.AutoBlind.rules.Schiebetuer
    2024-07-03 12:44:46.157878     Struct stateengine_jalousie_spezial.Default.Schiebetuer created.
    2024-07-03 12:44:46.158718     Reading struct stateengine_jalousie_spezial.Default.Schiebetuer. It is a valid struct for the state configuration.
    2024-07-03 12:44:46.161389     Added 3 action(s) based on se_use stateengine_jalousie_spezial.Default.Schiebetuer. 0 on_enter, 0 on_stay , 3 on_enter_or_stay, 0 on_leave
    2024-07-03 12:44:46.161762     Added 1 condition set(s) based on se_use: stateengine_jalousie_spezial.Default.Schiebetuer
    2024-07-03 12:44:46.163661 ERROR: Ignoring state Dg.Wohnzimmer.Jalousie.Terrasse.AutoBlind.rules.Schiebetuer because: expected string or bytes-like object​
    dg.yaml
    Code:
                   AutoBlind:
                        struct:
                            - stateengine_jalousie_default
                            - stateengine.general
                            - stateengine_jalousie_spezial
                        rules:
                            type: bool
                            se_plugin: active
                            name: Dg Wohnzimmer Terasse
                            eval_trigger:
                                - Dg.Trigger
                                - Dg.Wohnzimmer.Jalousie.Terrasse.AutoBlind.manuell
                                - Dg.Wohnzimmer.Jalousie.Terrasse.AutoBlind.retrigger
                                - Dg.Wohnzimmer.Jalousie.Terrasse.AutoBlind.suspend
                                - Dg.Wohnzimmer.Jalousie.Terrasse.AutoBlind.automatik
                                - Dg.Wohnzimmer.Jalousie.Terrasse.AutoBlind.beschatten
                                - Dg.Wohnzimmer.Jalousie.Terrasse.AutoBlind.beschattenFuerZeit
                                - Dg.Wohnzimmer.Jalousie.Terrasse.Position_gueltig
                                - Dg.Wohnzimmer.Jalousie.Terrasse.ReferenzFahren
                                - Dg.Wohnzimmer.Status.Schlafen
                                - Wetterstation.WindWarnung
                                - Wetterstation.WindAlarm
                                - Dg.Wohnzimmer.Schiebetuer.Status
                            eval: True
                            se_item_schiebetuer: .....Schiebetuer.Status
                            se_repeat_actions: true
                            se_laststate_item_id: ..state_id
                            se_laststate_item_name: ..state_name
                            se_suspend_time: "eval:se_eval.get_relative_itemvalue('...Parameter.ZeitManuell') * 60"
                            Schiebetuer:
                                se_use: struct:stateengine_jalousie_spezial.Default.Schiebetuer
    global_structs.yaml
    Code:
    stateengine_jalousie_default:
        rules:
            se_item_Brightness_ost_gt43k: Wetterstation.Helligkeit.Ost_gt43k​
            ....
            Tag:
                type: foo
                name: Tag
                se_set_suspend: 'False'
                se_set_Position: 'item: ...Parameter.Tag.Position'
                se_set_Lamellenposition: 'item: ...Parameter.Tag.Lamellenposition'
                enter:
                    se_value_TagAktive: 'True'
                    se_min_sun_altitude: 0
                    se_min_Daemmerung: 200
                    se_min_time: 'item: ...Parameter.Tag.Uhrzeit'​
               ...
    
    stateengine_jalousie_spezial:
        Default:
            Schiebetuer:
                type: foo
                name: Schiebetuer
                enter:
                    se_value_schiebetuer: True
                    se_value_automatik: True
                se_set_suspend: False
                se_set_Position: 0
                se_set_Lamellenposition: 0​

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Bin mit Morg da dran.. frag mich eh grad, was ich mit den zwei Zeilen bewirken wollte bzw. ob da jemals was Gescheites rauskommen kann
    Ändere die Zeilen bitte mal wie folgt, dann funzt es zumindest.

    Code:
                            try:
                                _last_conditionset_id = self.__conditionsets[_wouldenter][0]
                                _last_conditionset_name = self.__conditionsets[_wouldenter][1]
                            except:
                                pass

    Einen Kommentar schreiben:


  • paularndt
    antwortet
    Wir haben leider kein Glück ;-(. Habe es mit dem aktuellen develop Stand für das Stateengine Plugin versucht. Keine Veränderung. Der Fehler wird einmal beim Start für alle Stateengines geworfen und sie laufen alle nicht.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ich kann den Fehler hier komischerweise nicht reproduzieren. Kannst du bitte mal die develop Version ziehen und nochmals testen? Vielleicht haben wir Glück

    Einen Kommentar schreiben:

Lädt...
X