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

    #76
    Danke onkelandy für die Infos zum Delay!

    Leider kämpfe ich immer noch mit demDelay.Ich habe schon die Delayzeiten verlängert und verkürzt, leider ohne sichtbaren Erfolg.

    Ich habe einen MDT-Jal-Actor 4 Kanale und nutze 3 Kanale.

    In allen xx.yaml der Jalousien steht jetzt:

    Code:
                    on_enter_or_stay:
                        se_action_height:
                          - 'function: set'
                          - 'to: 0'
                          - 'order: 1'
                          - 'delay: 30'
                        
                        se_action_lamella:
                          - 'function: set'
                          - 'to: 0'
                          - 'order: 2'
    Jeweils um 19 Uhr setze ich den Dämmerungszustand
    Code:
    2019-03-24 19:01:06.219148 State can be entered
    2019-03-24 19:01:06.219565 Leaving hmblind1.raffstore1.automatik.rules.tag ('Tag (statisch)')
    2019-03-24 19:01:06.220054 Entering hmblind1.raffstore1.automatik.rules.abends ('Dämmerung Abends')
    2019-03-24 19:01:06.220707     Action 'suspend': Set 'hmblind1.raffstore1.automatik.suspend' to 'False'.
    2019-03-24 19:01:06.221358     Action 'hoehe': Set 'eg.ess.schatt.pos' to '70'.
    2019-03-24 19:01:06.224680     Action 'lamelle': Set 'eg.ess.schatt.plusminus.lamelle' to '70'.
    das Protokoll
    Code:
    2019-03-24  19:01:02 INFO     hmblind3.raffstore3.automatik.rules-eval Item eg.wozi.schatt.plusminus.lamelle = 70 via StateEngine Plugin None None
    2019-03-24  19:01:02 INFO     hmblind3.raffstore3.automatik.rules-eval Item hmblind3.raffstore3.automatik.state_id = hmblind3.raffstore3.automatik.rules.abends via Logic None None
    2019-03-24  19:01:02 INFO     hmblind3.raffstore3.automatik.rules-eval Item hmblind3.raffstore3.automatik.state_name = Dämmerung Abends via Logic None None
    2019-03-24  19:01:02 INFO     hmblind2.raffstore2.automatik.rules-eval Item eg.ess.tuer.pos = 70 via StateEngine Plugin None None
    2019-03-24  19:01:02 INFO     hmblind2.raffstore2.automatik.rules-eval Item eg.ess.tuer.plusminus.lamelle = 70 via StateEngine Plugin None None
    2019-03-24  19:01:02 INFO     hmblind2.raffstore2.automatik.rules-eval Item hmblind2.raffstore2.automatik.state_id = hmblind2.raffstore2.automatik.rules.abends via Logic None None
    2019-03-24  19:01:02 INFO     hmblind2.raffstore2.automatik.rules-eval Item hmblind2.raffstore2.automatik.state_name = Dämmerung Abends via Logic None None
    [COLOR=#FF0000]2019-03-24  19:01:06 INFO     hmblind1.raffstore1.automatik.rules-eval Item eg.ess.schatt.pos = 70 via StateEngine Plugin None None
    2019-03-24  19:01:06 INFO     hmblind1.raffstore1.automatik.rules-eval Item eg.ess.schatt.plusminus.lamelle = 70 via StateEngine Plugin None None[/COLOR]
    2019-03-24  19:01:06 INFO     hmblind1.raffstore1.automatik.rules-eval Item hmblind1.raffstore1.automatik.state_id = hmblind1.raffstore1.automatik.rules.abends via Logic None None
    2019-03-24  19:01:06 INFO     hmblind1.raffstore1.automatik.rules-eval Item hmblind1.raffstore1.automatik.state_name = Dämmerung Abends via Logic None None
    in der ETS sehe ich
    Code:
    2019-03-24 19:01:47 INFO     Main         Item eg.ess.schatt.pos = 71.8 via KNX 1.1.11 3/4/6
    [COLOR=#FF0000]2019-03-24 19:01:47 INFO     Main         Item eg.ess.schatt.plusminus.lamelle = 100.0 via KNX 1.1.11 3/4/7
    3/4/7 ist der Status des Winkels, die Jal war bis 19 Uhr geöffnet. Woher kommt der Status 100.0
    Ist bei der fahrenden Jalousie etwa der Status des Winkels 100? Ist der Delay nicht wirksam?[/COLOR]
    2019-03-24 19:01:48 INFO     Main         Item eg.ess.schatt.pos = 72.5 via KNX 1.1.11 3/4/6

    die Position wird angefahren,die Lamelle bleibt geschlossen
    Im nächsten Zyklus klappt die Lamelle erst auf die 70 Grad.

    Code:
    2019-03-24 19:06:05 INFO     Main         Item eg.ess.schatt.pos = 72.2 via KNX 1.1.11 3/4/6
    2019-03-24 19:06:05 INFO     Main         Item eg.ess.schatt.plusminus.lamelle = 69.0 via KNX 1.1.11 3/4/7
    aus ITEMS noch eg.schatt.
    Code:
    [
                pos:
                    type: num
                    enforce_updates: 'yes'
                    visu_acl: rw
                    knx_dpt: '5.001'
                    knx_cache: 3/5/6
                    knx_listen: 3/5/6
                    knx_send: 3/5/4
                plusminus:
                    type: bool
                    enforce_updates: 'true'
                    visu_acl: rw
                    knx_dpt: 1
                    lamelle:
                        type: num
                        enforce_updates: 'true'
                        visu_acl: rw
                        knx_dpt: '5.001'
                        knx_cache: 3/5/5
                        knx_listen: 3/5/7
                        knx_send: 3/5/5
    Bis auf das verzögerte Setzen des Lamellenwinkels läuft aller super, Danke !

    Wo kann ich suchen? Welche Parameter verändern?
    Gehört das Delay etwa in die se_action_lamella?

    Ich hoffe auf den entscheidenden Hinweis!
    Danke für jede Hilfe!

    PS:
    für alle se_werte und sonstige variablen Werte , wie auch für den Delaywerte habe ich Vorgaben = vo nach folgenden Muster angelegt
    #
    vo:
    type: foo
    name: Vorgabedaten

    set_temp:
    name: Temperatur
    type: num
    initial_value: -10
    cache: True
    visu_acl: rw
    database@mysqldb: init

    Eine Maske gebastelt und die Variablen in eine Mysql_Tabelle geschrieben, somit konnte ich die Variablen online verändern und brauchte nicht jedesmal einen Neustart.
    Somit konnte ich auch den Delay in jede Richtung testen.

    Kommentar


      #77
      Die Lamellenaktion soll um 30 sek verzögert sein also muss der delay dort in diese Aktion rein.

      Aber kann das nicht dein aktor handhaben? Ich brauch bei meinen keine delays

      Kommentar


        #78
        Hi,


        ich habe in Problem mit der StateEngine:


        Die FSM geht in den Zustand TRACKING und steuert den Aktor über Position und Winkel.
        Danach meldet der Aktor (Adresse 1.0.9) über die Gruppenadresse die Position zurück.
        Jetzt geht die FSM über manual in Standby, obwohl die Quelle per exclude ignoriert werden sollte:


        LOG:

        Code:
        2019-05-29 17:53:38.431575 Update state of item Shutter FSM ===============================================
        2019-05-29 17:53:38.432681 Update triggered by Eval (item=EG.kitchen.door.shutter.auto.fsm source=EG.kitchen.door.shutter.auto.manuell dest=None)
        2019-05-29 17:53:38.433864 Eval initially triggered by knx (item=EG.kitchen.door.shutter.pos source=[MARKIEREN]1.0.9[/MARKIEREN]:ga=3/1/43)
        ...
        2019-05-29 17:53:38.446922 Leaving EG.kitchen.door.shutter.auto.fsm.TRACKING ('Tracking')
        2019-05-29 17:53:38.447559 Entering EG.kitchen.door.shutter.auto.fsm.SUSPEND ('Ausgesetzt nach Handbetrieb')
        item:
        Code:
        …
        
                            manuell:
                                name: Manuelle Bedienung
                                type: bool
                                eval_trigger:
                                  - '...move'
                                  - '...stop'
                                  - '...pos'
        
                                se_manual_exclude:
                                  - 'KNX:[MARKIEREN]1.0.9[/MARKIEREN]'
                                  - 'Init:*'
                                  - 'database:*'
        Was übersehe ich?

        Kommentar


          #79
          Die Rückmeldung vom knx Plugin hat sich IMHO geändert

          Kommentar


            #80
            Ok, ich bin mal durch den source, und kam auf folgenden Eintrag in StateEngineFunctions.py:

            Code:
                            # If current value is in list -> Return "NoTrigger"
                            for entry in exclude:
                                entry_caller, __, entry_source = entry.partition(":")
                                if (entry_caller == original_caller or entry_caller == "*") and (
                                        entry_source == original_source or entry_source == "*"):
                                    elog.debug("{0}: matching. Writing value {1}", entry, retval_no_trigger)
                                    return retval_no_trigger
                                elog.debug("{0}: not matching", entry)
                            elog.decrease_indent()
            Ich bin jetzt nicht so tief drin, aber wie ich es verstehe wird der entry im Format "caller:irgendwas:source" übergeben.
            Könnte es somit sein, dass es "KNX:*:1.0.9" lauten müsste?

            Kommentar


              #81
              Setz mal als se_manual_exclude KNX:1.0.9:ga=3/1/43

              Die Source Angabe dex KNX Plugins besteht inzwischen aus PA und GA.
              Viele Grüße
              Martin

              There is no cloud. It's only someone else's computer.

              Kommentar


                #82
                Ok, ich habe mal ".partition()" nachgeschlagen...
                Es wäre dann allgemein gut, sofern man "KNX:1.0.9:*" angeben könnte - um kopierfehler zu vermeiden.
                Es könnte doch ein re.match() statt "==" funktionieren, oder?

                Kommentar


                  #83
                  Hi, ich habe es gelöst (KNX muss klein geschrieben werden)

                  Beispiel:

                  Code:
                                          se_manual_exclude:
                                            - 'knx:1.0.9:ga=3/1/43'
                                            - 'Init:*'
                                            - 'database:*'
                  1.0.9 is die Adresse des Aktors
                  3/1/34 die Gruppenadresse auf der die Position gesendet wird.

                  Kommentar


                    #84
                    Hi! Kann man auch knx:1.0.9:* angeben? Wenn ich's richtig verstehe, wird nun vom KNX Plugin die "source" klein geschrieben, ja?
                    Sprich, das Plugin müsste hier ein lower() einbinden, damit die alten Konfigurationen funktionieren?

                    Kommentar


                      #85
                      Das mit dem "*" funktioniert leider nicht. Wie gesagt, ich würde es so patchen, dass auf den source string ein regex Vergleich statt einfachen "==" stattfindet. Dann wäre auch z.B. auch ein
                      knx:1.0.9:ga=3/1/*' möglich

                      Kommentar


                        #86
                        Hab gestern wild an dem Plugin gebastelt, könntest dir mal den PR ansehen. Auf jeden Fall geht jetzt KNX:PA:* oder auch einfach nur so wie bisher.
                        Das mit der Regex ist eine gute Idee. Ich hab das bereits eingepflegt - scheint gut zu funktionieren.
                        Zuletzt geändert von Onkelandy; 03.06.2019, 15:52.

                        Kommentar


                          #87
                          Probleme und Rückmeldung bitte in den Supportthread https://knx-user-forum.de/forum/supp...plugin-support

                          Kommentar


                            #88
                            Hi, habe mir den PR angesehen und sieht gut aus!

                            Kommentar

                            Lädt...
                            X