Ankündigung

Einklappen
Keine Ankündigung bisher.

Autoblind-/StateEngine-Plugin Status - Wie gehts weiter?

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

    Autoblind-/StateEngine-Plugin Status - Wie gehts weiter?

    Hallo zusammen,

    da ich meine SmartHome-Items neu strukturiere und die Konfiguration dann auch gleich auf den neuesten Stand bringe würde mich interessieren wie der aktuelle Status bzgl. o. g. Plugins ist...

    Auf der "alten" Github-Seite steht:
    ##Dieses Projekt ist umgezogen. Es ist nun im Plugin Repository von smarthomeNG enthalten. Weitere Entwicklungen werden dort stattfinden
    Leider kann ich in dem verlinkten smarthomeNG/Plugins-Repository das Autoblind-/StateEngine-Plugin aber nicht finden.

    Daher meine Fragen:
    1. Gibt es daher eine andere aktuelle Quelle von der das Plugin bezogen werden soll?
    2. Welches ist die aktuelle Doku?
    3. Oder sollte ich garnicht mehr auf dieses Plugin setzten? sonder auf.....?
    Contribute to smarthomeNG/plugins development by creating an account on GitHub.
    cu Yfkt5A
    1-Wire(Wiregate), DALI(ABB DG/S1.1), RaspberryPi2(recalbox/KODI), QNAP TS-509, Zehnder ComfoAir 200 L Luxe
    DELL T20 mit Proxmox - VM´s: Smarthome.py/smartVISU, TVHeadend, Emby

    #2
    Ist als stateengine in develop enthalten
    ​​​​​​

    Kommentar


      #3
      Danke für die schnelle Antwort
      Zitat von bmx Beitrag anzeigen
      Ist als stateengine in develop enthalten
      ​​​​​​
      Ist dann damit zu rechnen das es im nächsten Release enthalten ist, oder?

      Dann würde ich mit meiner Umstellung nämlich noch warten wollen...
      cu Yfkt5A
      1-Wire(Wiregate), DALI(ABB DG/S1.1), RaspberryPi2(recalbox/KODI), QNAP TS-509, Zehnder ComfoAir 200 L Luxe
      DELL T20 mit Proxmox - VM´s: Smarthome.py/smartVISU, TVHeadend, Emby

      Kommentar


        #4
        Ich würde vermuten ja, aber ich weiß nicht, ob und was da noch alles angepasst werden muss

        Kommentar


          #5
          Muss eigentlich nichts angepasst werden und du kannst das Plugin einfach runterladen und trotzdem mit Master 1.4+ nutzen

          Kommentar


            #6
            Erledigt.gif
            Im smarthomeng 1.5.1 master habe ich aus dem develop "stateengine" übernommen und zum Test hergenommen.

            Leider scheitere ich an einer Kleinigkeit und bringe den Fehler nicht weg.

            Der Code entspricht weitestgehend dem Beispiel.
            beispiel = hmblind4

            Unter Nachführen Blind2 werden Zeiten vorgegeben.
            Diese bringen jedoch den Fehler.

            Wer erkennt mein Problem?

            Code:
             default:
                    raffstore:
                        # Item für Helligkeit aussen
                        se_item_brightness: hmblind4.wetterstation.helligkeit
            
                        # Item für Temperatur aussen
                        se_item_temperature: hmblind4.wetterstation.temperatur
            
                        # Item das anzeigt, ob die Helligkeit aussen mehr als 25kLux beträgt
                        se_item_brightnessGt25k: hmblind4.wetterstation.helligkeit.gt25k
            
                        # Item das anzeigt, ob die Helligkeit aussen mehr als 43kLux beträgt
                        se_item_brightnessGt43k: hmblind4.wetterstation.helligkeit.gt43k
            
                        # Item für Behanghöhe
                        se_item_hoehe: eg.wozi.test.pos
                        # Keine Änderung der Behanghöhe wenn Abweichung kleiner 10
                        se_mindelta_hoehe: 10
            
                        # Item für Lamellenwinkel
                        se_item_lamelle: eg.wozi.test.plusminus.lamelle
                        # Keine Änderung des Lamellenwinkels wenn Abweichung kleiner 5
                        se_mindelta_lamelle: 5
            
                        # "Manuell" Item
                        se_item_manuell: eg.wozi.schatt.sperre
            
                        # "Lock" Item
                        se_item_lock: eg.wozi.test.auto_lock
            
                        # "Suspend" Item
                        se_item_suspend: eg.wozi.test.auto_suspend
            
                        # Zustand "Sperre über Sperr-Item"
                        lock:
                            type: foo
                            name: Automatik manuell gesperrt
                            # Aktionen:
                            # - "Suspend"-Item ggf. zurücksetzen
                            se_set_suspend: False
                            # sonst nichts tun
            
                            enter:
                                # Einstieg in "Lock" Wenn
                                # - das "Lock"-Item gesetzt ist
                                se_value_lock: True
            
                            # Zustand "Zeitweises Deaktivieren bei manuellen Aktionen"
                        suspend:
                            type: foo
                            name: Ausgesetzt
                            # Namensermittlung über eval-Funktion
                            se_name: eval:stateengine_eval.insert_suspend_time(...suspend, "Automatik ausgesetzt bis %X")
                            # Aktionen:
                            # - "Suspend"-Item setzen
                            se_set_suspend: True
                            # sonst nichts tun
            
                            # Einstieg in "Suspend": Wenn
                            enter_manuell:
                                # - die Zustandsermittlung über das "Manuell"-Item ausgelöst wurde
                                se_value_trigger_source: eval:stateengine_eval.get_relative_itemid(...manuell)
            
                                # Verbleib in "Suspend": Wenn
                            enter_stay:
                                # - wir bereits in "Suspend" sind
                                se_value_laststate: var:current.state_id
            
                                # - wir weniger 3600 Sekunden im Suspend-Zustand sind
                                se_agemax_suspend: 3600
                                # - das "Suspend"-Item nicht von irgendwo anders auf "False" gesetzt wurde
                                se_value_suspend: True
            
                            # Zustand "Nachführen der Lamellen zum Sonnenstand bei größer Helligkeit", Gebäudeseite Sued
                            ###############################  Seite eins #####################################
                        nachfuehren_seite_eins:
                            type: foo
                            name: Tag (nachführen)
            
                            # Aktionen:
                            # - Behang ganz herunterfahren
                            se_set_hoehe: value:100
            
                            # - Lamellen zur Sonne ausrichten
                            se_set_lamelle: eval:stateengine_eval.sun_tracking()
            
                            # - "Suspend"-Item ggf. zurücksetzen
                            se_set_suspend: False
            
                            # Einstieg in "Nachführen": Wenn
                            enter:
                                # - das Flag "Helligkeit > 43kLux" seit mindestens 60 Sekunden gesetzt ist
                                se_value_brightnessGt43k: true
                                se_agemin_brightnessGt43k: 60
            
                                # - die Sonnenhöhe mindestens 18 ° ist
                                se_min_sun_altitude: 18
            
                                # - die Sonne aus Richtung 130 ° bis 270 ° kommt
                                se_min_sun_azimut: 130
                                se_max_sun_azimut: 270
            
                                # - es draussen mindestens 22 ° hat
                                se_min_temperature: 22
            
                            # Hysterese für Helligkeit: Wenn
                            enter_hysterese:
                                # ... wir bereits in "Nachführen" sind
                                se_value_laststate: var:current.state_id
            
                                # .... das Flag "Helligkeit > 25kLux" gesetzt ist
                                se_value_brightnessGt25k: true
            
                                # ... die Sonnenhöhe mindestens 18° ist
                                se_min_sun_altitude: 18
            
                                # ... die Sonne aus Richtung 130 ° bis 270  ° kommt
                                se_min_sun_azimut: 130
                                se_max_sun_azimut: 270
            
                                # Anmerkung: Hier keine erneute Prüfung der Temperatur, damit Temperaturschwankungen nicht
                                # zum Auf-/Abfahren der Raffstores führen
            
                                # Verzögerter Ausstieg nach Unterschreitung der Mindesthelligkeit: Wenn
                            enter_delay:
                                # ... wir bereits in "Nachführen" sind
                                se_value_laststate: var:current.state_id
                                # .... das Flag "Helligkeit > 25kLux" nicht (!) gesetzt ist, aber diese Änderung nicht mehr als 20 Minuten her ist
                                se_value_brightnessGt25k: false
                                se_agemax_brightnessGt25k: 1200
            
                                # ... die Sonnenhöhe mindestens 18 ° ist
                                se_min_sun_altitude: 18
            
                                # ... die Sonne aus Richtung 130 ° bis 270 ° kommt
                                se_min_sun_azimut: 130
                                se_max_sun_azimut: 270
            
                                # Anmerkung: Auch hier keine erneute Präfung der Temperatur, damit Temperaturschwankungen nicht
                                # zum Auf-/Abfahren der Raffstores führen
            
            ########################################## Seite zwei ################################################
                            # Zustand "Nachführen der Lamellen zum Sonnenstand bei großer Helligkeit", Gebäudeseite 2
            
                        nachfuehren_seite_zwei:
                            type: foo
                            # Einstellungen des Vorgabezustands "Nachfuehren_Seite_Eins" übernehmen
                            se_use: hmblind4.default.raffstore.nachfuehren_seite_eins
            
                            # Sonnenwinkel in den Bedingungsgruppen anpassen
                            enter:
                                # ... die Sonne aus Richtung 220 ° bis 340 ° kommt
                                se_min_sun_azimut: 220
                                se_max_sun_azimut: 340
            
                            enter_hysterese:
                                # ... die Sonne aus Richtung 220 ° bis 340 ° kommt
                                se_min_sun_azimut: 220
                                se_max_sun_azimut: 340
            
                            enter_delay:
                                # ... die Sonne aus Richtung 220 ° bis 340 ° kommt
                                se_min_sun_azimut: 220
                                se_max_sun_azimut: 340
            
            
            
            
            #---#---#---#---#
                        # Zustand "Nacht"
                        nacht:
                            type: foo
                            name: Nacht
                            # Aktionen:
                            # - Behang ganz herunterfahren
                            se_set_hoehe: value:100
                            # - Lamellen ganz schließen
                            se_set_lamelle: value:0
            
                        # - "Suspend"-Item ggf. zurücksetzen
                            se_set_suspend: False
            
                        # Einstieg in "Nacht": Wenn
                        enter:
                            # - es zwischen 16:00 und 08:00 Uhr ist
                            se_min_time: 08:00
                            se_max_time: 16:00
            
                            se_negate_time: True
                            # - die Helligkeit höchstens 90 Lux beträgt
                            se_max_brightness: 90
            
                            # Zustand "Morgens"
                        morgens:
                            type: foo
                            name: Dämmerung Morgens
            
                            # Aktionen:
                            # - Behang ganz herunterfahren
                            se_set_hoehe: value:100
            
                            # - Lamellen ca 45 ° nach unten
                            se_set_lamelle: value:25
            
                            # - "Suspend"-Item ggf. zurücksetzen
                            se_set_suspend: False
            
                            # Einstieg in "Morgens": Wenn
                            enter:
                                # - die Helligkeit zwischen 90 und 250 Lux beträgt
                                se_min_brightness: 90
                                se_max_brightness: 250
            
                                # - es zwischen 00:00 und 12:00 Uhr ist
                                se_min_time: 00:00
                                se_max_time: 12:00
            
                        # Zustand "Abends"
                        abends:
                            type: foo
                            name: Dämmerung Abends
                            # Aktionen:
                            # - Behang ganz herunterfahren
                            se_set_hoehe: value:100
            
                            # - Lamellen ca 45 ° nach oben
                            se_set_lamelle: value:75
            
                            # - "Suspend"-Item ggf. zurücksetzen
                            se_set_suspend: False
            
                            # Einstieg in "Abends": Wenn
                            enter:
                            # - die Helligkeit zwischen 90 und 250 Lux beträgt
                                se_min_brightness: 90
                                se_max_brightness: 250
            
                                # - es zwischen 12:00 und 24:00 Uhr ist
                                se_min_time: 12:00
                                se_max_time: 24:00
                                # Anmerkung: "24:00" ist eigentlich eine ungültige Zeit. Sie wird aber automatisch zu 23:59:59 umgewandelt
            
                        # Zustand "Tag"
                        tag:
                            type: foo
                            name: Tag (statisch)
                            # Aktionen:
                            # - Behang ganz hochfahren
                            se_set_hoehe: value:0
            
                            # - Lamellen auf den Standardwert bei ganz hochgefahrenem Behang
                            se_set_lamelle: value:100
            
                            # - "Suspend"-Item ggf. zurücksetzen
                            se_set_suspend: False
            
                            # Einstieg in "Tag": Wenn
                            enter:
                                # - es zwischen 06:30 und 21:30 Uhr ist
                                se_min_time: 06:30
                                se_max_time: 21:30
            Die Fehlermeldung:
            Code:
            2018-12-11 15:59:19.580516 Initialize Item hmblind4.raffstore4.automatik.rules ============================
            2018-12-11 15:59:19.581774 Init state hmblind4.raffstore4.automatik.rules.Lock
            2018-12-11 15:59:19.584973 Init state hmblind4.raffstore4.automatik.rules.Suspend
            2018-12-11 15:59:19.590596 Init state hmblind4.raffstore4.automatik.rules.nachfuehren
            2018-12-11 15:59:19.611163 Init state hmblind4.raffstore4.automatik.rules.nacht
            2018-12-11 15:59:19.614396     Problem casting value '1260': Can not cast '1260' to data type 'time' due to incorrect format!.
            2018-12-11 15:59:19.617553 Init state hmblind4.raffstore4.automatik.rules.morgens
            2018-12-11 15:59:19.626242     Problem casting value '720': Can not cast '720' to data type 'time' due to incorrect format!.
            2018-12-11 15:59:19.628625 Init state hmblind4.raffstore4.automatik.rules.abends
            2018-12-11 15:59:19.633428     Problem casting value '720': Can not cast '720' to data type 'time' due to incorrect format!.
            2018-12-11 15:59:19.634988     Problem casting value '1440': Can not cast '1440' to data type 'time' due to incorrect format!.
            2018-12-11 15:59:19.657749 Init state hmblind4.raffstore4.automatik.rules.tag
            2018-12-11 15:59:19.737667     Problem casting value '1290': Can not cast '1290' to data type 'time' due to incorrect format!.
            2018-12-11 15:59:19.740883 Configuration of item Automatik Raffstore 4 ====================================
            2018-12-11 15:59:19.747936 Startup Delay: 30
            2018-12-11 15:59:19.760626 Cycle: Inactive
            2018-12-11 15:59:19.783852 Cron: Inactive
            Zuletzt geändert von schloessl; 11.12.2018, 16:24.

            Kommentar


              #7
              Zeit in Anführungszeichen setzen?
              Bei nachfuehren_seite_eins, enter_delay gibt es übrigens einen Encodingfehler bei Änderung

              Kommentar


                #8
                Hallo Onkelandy,
                danke für Deinen gestrigen Hinweis zu den '09:15' Zeiteingaben. Damit läuft es jetzt!

                Besten Dank,
                was mir aber dann auffiel in der Doku - komplettes Beispiel fehlen auch die '' . Wenns mal passt biite ändern.
                Viele Erststarter mit der stateengine werden die Doku kopieren und die hauseigenen Variablen anpassen und damit starten.

                Zeiten in der Doku 'xx:xx' Hochkomma fehlen

                ebenso
                Code:
                gt20k:
                                type: bool
                                name: Flag:  Helligkeit größer als 20 kLux
                                eval: sh.aussen.mdt.luxsued() > 20000
                                Flag: bringt Fehler, (der Doppelpunkt hinter Flag)
                Leider brauche ich noch einmal Deine Hilfe:

                Aufbau wie Beispiel
                Code:
                hmblind4:
                    steckdosen
                    wetterstation    
                    trigger
                    default
                        raffstore:
                    raffstore4:    
                    in    
                    suspend:
                                type: foo
                                name: Ausgesetzt
                                # Namensermittlung über eval-Funktion
                                se_name: eval:stateengine_eval.insert_suspend_time(...suspend, "Automatik ausgesetzt bis %X")
                                # Aktionen:
                                # - "Suspend"-Item setzen
                                se_set_suspend: True
                                # sonst nichts tun
                
                                # Einstieg in "Suspend": Wenn
                                enter_manuell:
                                    # - die Zustandsermittlung über das "Manuell"-Item ausgelöst wurde
                                    se_value_trigger_source: eval:stateengine_eval.get_relative_itemid(...manuell)
                
                                    # Verbleib in "Suspend": Wenn
                                enter_stay:
                                    # - wir bereits in "Suspend" sind
                                    se_value_laststate: var:current.state_id
                Die Fehlermeldung:
                Code:
                 2-11 23:29:25.343207 Update state of item Automatik Raffstore 4 =====================================
                3:13:44.034179 Update state of item Automatik Raffstore 4 =====================================
                2018-12-12 13:13:44.075357 Update triggered by Startup Delay (item=hmblind4.raffstore4.automatik.rules source=None dest=None)
                2018-12-12 13:13:44.096593 Last state: hmblind4.raffstore4.automatik.rules.Suspend ('Ausgesetzt')
                2018-12-12 13:13:44.127548 Check if state 'hmblind4.raffstore4.automatik.rules.Lock' ('Automatik manuell gesperrt') can be entered:
                2018-12-12 13:13:44.141754     Check condition set 'enter':
                2018-12-12 13:13:44.142229         Condition 'lock': value=True negate=False current=False
                2018-12-12 13:13:44.142477             not OK -> not matching
                2018-12-12 13:13:44.142755 State can not be entered
                2018-12-12 13:13:44.143041 Check if state 'hmblind4.raffstore4.automatik.rules.Suspend' ('Ausgesetzt') can be entered:
                2018-12-12 13:13:44.143354     Check condition set 'enter_manuell':
                2018-12-12 13:13:44.144644         Problem evaluating 'stateengine_eval.get_relative_itemid(...manuell)': invalid syntax (<string>, line 1).
                2018-12-12 13:13:44.145758         Condition 'trigger_source': value=None negate=False current=None
                2018-12-12 13:13:44.146096             OK -> matching
                2018-12-12 13:13:44.146503         Age of 'trigger_source': No limits given
                2018-12-12 13:13:44.146891 State can be entered
                2018-12-12 13:13:44.147136 Staying at hmblind4.raffstore4.automatik.rules.Suspend ('Ausgesetzt')
                2018-12-12 13:13:44.147657     Action 'suspend': Set 'eg.wozi.test.auto_suspend' to 'True'. Repeat allowed by item configuration.
                2018-12-12 13:13:44.158413 Problem evaluating 'stateengine_eval.insert_suspend_time(...suspend, "Automatik ausgesetzt bis %X")': invalid syntax (<string>, line 1).
                Welche Line 1?

                Ich habe dann einmal die 3 Punkte mit hmblind4.default.raffstore ersetzt. Leider ein neuer Fehler
                Code:
                2018-12-12 13:44:59.445548 Update state of item Automatik Raffstore 4 =====================================
                2018-12-12 13:44:59.446162 Update triggered by Startup Delay (item=hmblind4.raffstore4.automatik.rules source=None dest=None)
                2018-12-12 13:44:59.446871 Last state: hmblind4.raffstore4.automatik.rules.Suspend ('Ausgesetzt')
                2018-12-12 13:44:59.447123 Check if state 'hmblind4.raffstore4.automatik.rules.Lock' ('Automatik manuell gesperrt') can be entered:
                2018-12-12 13:44:59.447369     Check condition set 'enter':
                2018-12-12 13:44:59.447642         Condition 'lock': value=True negate=False current=False
                2018-12-12 13:44:59.447846             not OK -> not matching
                2018-12-12 13:44:59.448071 State can not be entered
                2018-12-12 13:44:59.448283 Check if state 'hmblind4.raffstore4.automatik.rules.Suspend' ('Ausgesetzt') can be entered:
                2018-12-12 13:44:59.448497     Check condition set 'enter_manuell':
                2018-12-12 13:44:59.449179         Problem evaluating 'stateengine_eval.get_relative_itemid(hmblind4.default.raffstore.manuell)': name 'hmblind4' is not defined.
                2018-12-12 13:44:59.449516         Condition 'trigger_source': value=None negate=False current=None
                2018-12-12 13:44:59.449731             OK -> matching
                2018-12-12 13:44:59.449960         Age of 'trigger_source': No limits given
                2018-12-12 13:44:59.450177 State can be entered
                2018-12-12 13:44:59.450389 Staying at hmblind4.raffstore4.automatik.rules.Suspend ('Ausgesetzt')
                2018-12-12 13:44:59.450740     Action 'suspend': Set 'eg.wozi.test.auto_suspend' to 'True'. Repeat allowed by item configuration.
                2018-12-12 13:44:59.453191 Problem evaluating 'stateengine_eval.insert_suspend_time(hmblind4.default.raffstore.suspend, "Automatik ausgesetzt bis %X")': name 'hmblind4' is not defined.
                Ich bin etwas ratlos und hoffe auf Deinen weisen Rat.

                Mein Aktor hat jeweils für Position und Lamelle einen Vorgabewert und eine Statuswert, wie löst Du das in den Defaults bei Höhe und Lamelle
                Ich habe einmal eg..hoehe | eg..hoehe_status gesehen ?? (nicht bei Deiner Lösung!)

                cicle inaktiv, ist das die Folge der Fehler, leider habe ich noch nicht eine Wiederholung erreicht.
                Zuletzt geändert von schloessl; 12.12.2018, 14:26.

                Kommentar


                  #9
                  Danke für den Hinweis. Hab's in der Doku (die derzeit über das webif abrufbar ist) als auch im Wiki https://github.com/i-am-offline/smar...diges-Beispiel gefixt. Doku werde ich aber eh noch abändern, damit das dann auch auf der smarthomeng Seite sauber integriert ist.

                  Kommentar


                    #10
                    Dein Problem oben resultiert ebenfalls aus den fehlenden Hochkomma. Das steht aber im Wiki richtig:
                    as_name: eval:autoblind_eval.insert_suspend_time("..suspend ", "Automatik ausgesetzt bis %X")

                    cicle inaktiv weiß ich nicht genau, was du meinst. Aber das Beste ist, du setzt in den rules Part ein:
                    eval: True
                    eval_trigger: irgendeintrigger Und bei irgendeintrigger-Item machst du dann ein cycle = <Sekunden> = 1


                    Welche defaults meinst du? Ich setze Lamellen und Höhe so:
                    Code:
                    on_enter_or_stay:
                                        se_action_height:
                                          - 'function: set'
                                          - 'to: item:..settings.hoehe.schnee'
                                          - 'order: 1'
                                        se_action_lamella:
                                          - 'function: set'
                                          - 'to: item:jalousien.stateengine.settings.night.lamella'
                                          - 'order: 2'

                    Kommentar


                      #11
                      Hallo Onkelandy,

                      dank Deiner Hilfe und den korrigierten Beispieldaten läuft bei mir jetzt die Stateengine seit einigen Tagen in "Beobachtungsmodus". d.h. fehlerfrei mit den gegebenen
                      Vorgabewerten. Da ich mich bis jetzt nicht mit Azimut und Altitude und den gegebenen Helligkeitswerten gekümmert habe, ist die Einstellung bei den gegebenen Wetterverhältnissen recht mühsam. Jedesmal, wenn sich die Sonne einmal zeigte, war ich leider nicht am Rechner.

                      Aus lauter Verzweiflung habe ich jetzt für alle se_xx Felder Vorgabefelder vo_xxx auf der untersten Ebene definiert, die ich dann im Code, wie unten dargestellt übernehme,
                      Somit habe ich die Möglichkeit über das Backend die Items im laufenden Betrieb zu ändern. Super , "Try and Error" ohne Neusstart.
                      Ich hoffe jetzt auf etwas Sonne um weitere Parameter anzupassen. Vielleicht hilft der kleine Trick einigen Mitstreitern.

                      Danke für Deine Hilfe und für das Pluign!

                      Tritzdem noch eine Frage. Wo liegt der Unterschied?

                      se_min_sun_azimut: hmblind4.vo_min_sun_azimut_vorm
                      se_mim_sun_azimut: item:hmblind4.vo_min_sun_azimut_vorm

                      In den Beispilen übernimmst Du Felder der Vorgaben wie un der ersten Zeile, laut Doku sollte ein Item vorangehen. Ich habe noch keinen Unterschied bemerkt.

                      Vorgabewerte per Backend änderbar
                      Code:
                      #   flacher Lichteinfall Vormittags
                          vo_min_brightness_morgens:
                              name: Vorgabe Dämmerung min Früh Lux
                              type: num
                              value: 121
                      
                          vo_max_brightness_morgens:
                              name: Vorgabe Dämmerung max Früh Lux
                              type: num
                              value: 471
                      
                      # Azimut Erdwinkel
                          vo_min_sun_azimut_vorm:
                              name: Vorgabe Azimut min Früh
                              type: num
                              value: 121
                          vo_max_sun_azimut_vorm:
                              name: Vorgabe Azimut max Früh
                              type: num
                              value: 261
                      
                      # Altitude Höhenwinkel
                          vo_min_sun_altitude_morgens:
                              name: Vorgabe Elevation min Früh
                              type: num
                              value: 15
                          vo_max_sun_altitude_morgens:
                              name: Vorgabe Elevation max Früh
                              type: num
                              value: 21
                      Übernahme im Code

                      Code:
                                          se_min_sun_azimut: item:hmblind4.vo_min_sun_azimut_vorm
                                          se_max_sun_azimut: item:hmblind4.vo_max_sun_azimut_vorm

                      Viel Erfölg für das neue Jahr!

                      Kommentar


                        #12
                        Fürs Plugin musst du offline danken

                        das mit den Items kann ich in den nächsten blog eintrag nehmen. Nutze das selbst auch ekzessiv
                        eigentlich bräuchte es das item: weil sonst der Eintrag als string gewertet werden müsste. Tut es das nicht?

                        Kommentar


                          #13
                          Da der Thread "wie geht es weiter" heißt, bitte Supportanfragen und Hinweise in den eigenen Support Thread posten: https://knx-user-forum.de/forum/supp...plugin-support

                          Hier gerne noch über mögliche Verbesserungen zur Integration in SmarthomeNG diskutieren. Aktuell gibt es folgende Ideen:
                          • Spezielle Kennzeichung von state_id und state_name Items. Damit könnte man beim Start prüfen, ob die Konfigurationen der Items valide sind
                          • Konfigurationshilfen und grafische Darstellung für Zustandsautomaten im admin Interface
                          • Integration des Loggings in das normale shng Logging
                          • Entfall der einzelnen Aktions-Parameter, also nur noch se_action_bla mit der Liste an Parametern
                          • Statt eval:autoblind_eval.get_relative_itemid('..manuell ') -> itemid:..manuell
                          • Statt eval:autoblind_eval.get_relative_itemvalue('..susp endduration') -> itemvalue:..suspendduration (??)
                          • Ändern von Items durch Aktionen eventuell durch Angabe eines "item: itemid" in der Aktionsliste statt über se_item_.. unter "rules"
                          • Bedingungs-Sets vielleicht auch über Listen abbilden statt der se_ Attribute?
                          • Generell Vereinfachung der Hierarchie/Item-Einträge durch Fokussieren auf die kompakten Aktionen
                          Wäre natürlich super, wenn offline mal einen Blick drauf werfen könnte
                          Zuletzt geändert von Onkelandy; 03.01.2019, 08:33.

                          Kommentar


                            #14
                            Die Aktionen könnten meiner Meinung nach wie folgt vereinfacht werden. Das würde die Items on_enter, etc. obsolet machen und auch die verschiedenen "function" Angaben könnten von den Dict-Keys direkt abgeleitet werden. Außerdem könnte man sich die Deklaration von se_item_<name> sparen, wenn man das zu setzende Item direkt in der Aktion angibt.

                            Code:
                            item:
                              rules:
                                se_plugin: active
                            
                                zustand1:
                                  se_action_irgendeinname: 
                                    # Aktion: Je nachdem, welches der folgenden 5 Keyword genutzt wird, werden Items aktualisiert,
                                    # Eval durchgeführt, eine Logik getriggert oder Items mit einem Attribut aktualisiert.
                                    # Es kann also nur eines der folgenden vier Keys angegeben werden. Gibt man mehrere an,
                                    # gibt es einen entsprechenden Logeintrag und die Aktion wird ignoriert (?)
                                    - set_to: item:|value:|eval:|function:xxx # wenn nichts angegeben: Versuch, Typ selbst herauszufinden?
                                    # Bei function kann zB sun_tracking oder get_variable genutzt werden.   
                                    - eval: <eval term> # Beispiel: sh.item(5) if sh.item2() == 3 else sh.item(10)
                                    - logic: <logic name to be triggered>        
                                    - attribute: <attribute name for byattr>
                                    - suspend: <suspend item>, <manuell item>, <suspend end item>, <suspend end text> #"Special" suspend-Funktion 
                                    # und stateengine_eval.insert_suspend_time; letzte zwei Einträge optional
                            
                                    - set_items: <item to be changed> #mehrere Items zB mittels Komma trennen? Nur bei "Set" Funktion nötig
                                    - logic_value: <value for logic> # Nur bei Logicfunktion berücksichtigt, optional
                                    
                                    - delay: <delay> #optional
                                    - order: <order> #optional
                                    - repeat: <repeat> #optional
                                    - force: <force> #optional
                                    
                                    - on: enter|enter_or_stay|stay|leave  #optional, wenn nichts angegeben -> enter_or_stay

                            Kommentar


                              #15
                              Bei den Bedingungen scheint mir die Sache etwas komplizierter zu sein. Man könnte dort aber auch einige Attribute loswerden und zusammenlegen, indem man beispielsweise statt min und max die crontab Syntax heranzieht.

                              Code:
                              item:
                                rules:
                                  se_plugin: active
                              
                                  zustand1:
                                                  
                                    enter_irgendeinname:
                                      se_time: 8:00 < time < 10:00 # gleich wie bei crontab
                                      se_azimut: 1 < azimut < 100
                                      se_laststate: <statusname>
                                      se_original_caller: <itemname>
                                      se_stateage: 3600 < stateage # Minimumalter des Zustands 3600 Sekunden
                                      se_weekday: 2<=weekday<=5 # zwischen Mittwoch und Samstag
                                      se_value_irgendeinname: sh.beispiel.minimum() < beispiel.brightness < sh.test.wert() + 500 
                                      # Wert vom brigthness-Item muss zwischen dem Wert von Item beispiel.minimum und dem Evalausdruck liegen
                                      se_age_irgendeinname: 3600 < beispiel.brightness < 50000 # Alter vom Brightnessitem muss zwischen den beiden Werten liegen
                                      se_negate_irgendeinname: True # Bedingungen mit dem Attributanhängsel "irgendeinname" werden negiert, egal, ob Alter- oder Werte-Range
                                      se_value_einanderername: beispiel.zustandsitem == True # Zustandsitem muss True sein
                                      se_value_nocheinanderername: beispiel.zustandsitem2 != [1, 2, 3] # zustandsitem2 darf nicht 1, 2 oder 3 sein
                              Etwas verwirrend könnte die Zeile se_value_irgendeinname sein. Hier wäre ein klassischer eval-Ausdruck vorgesehen, allerdings käme statt "value" eben das zu evaluierende Item rein. Besser wäre aber vermutlich tatsächlich value und das Zuordnen des Items wie gehabt über se_item_irgendeinname.

                              Kommentar

                              Lädt...
                              X