Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

    Hallo,

    ich habe eine Frage zu von AutoBlind ignorierten Event.

    Zuvor kurz das Problem:
    Ich möchte die Beschattung in Abhängigkeit von An-/Abwesenheit steuern. Somit hat jede FSM ein "presence" Item per default, was in den in den jeweiligen Zustands-Entry-Bedingungen ausgewertet wird. Funktioniert alles bestens.

    Der Unterschied liegt nun darin, das die Anwesenheit je nach Raum (und somit angepasster FSM) individuell ermittelt werden soll und innerhalb des presence Items unterschiedliche Logik (evals, eval_trigger) haben soll.

    Das Problem liegt nur darin, dass in Update des presence Items erst mit dem nächsten trigger erkannt wird (in meinem Fall 5 Minuten), obwohl die FSM per eval_trigger auf dieses Item "lauscht". Im Log kommt die Meldung:

    Code:
    2017-08-10 18:16:42.949187 Update state of item Shutter FSM ===============================================
    2017-08-10 18:16:42.952101 Update triggered by Eval (item=EG.kitchen.door.shutter.auto.fsm source=EG.kitchen.door.shutter.auto.presence dest=None)
    2017-08-10 18:16:42.953828 Eval initially triggered by AutoBlind Plugin (item=HOME.mode.state.athome source=None)
    2017-08-10 18:16:42.955704 Ignoring changes from AutoBlind Plugin
    Demzufolge erkennt die FSM den Statuswechsel von presence richtig, im o.g. Fall von der zentralen Haus FSM, jedoch wird die die Änderung ignoriert.

    In diesem Thread wurden ein paar Seiten zuvor ähnliche "Probleme" mit suspend diskutiert, aber ich konnte keine daraus Schlüsse für mein aktuelles Problem ableiten. Vielleicht weiß jemand Rat.

    Danke
    Markus

    Kommentar


      Hallo Markus,

      nutzt du die letzte Version aus dem Develop-Zweig? Ich meine mich zu erinnern, dass ich dieses Problem schon behoben habe.

      Grüße
      offline

      Kommentar


        Ja, jedoch war es der Stand von Jan/17. Ich werde es noch einmal nach einem git pull versuchen. Danke soweit.

        Kommentar


          Hm, leider ohne Erfolg trotz update.
          Setze ich HOME.mode.state.athome von Hand funktioniert es.
          Kann es sein, dass es ein Problem gibt, wenn eine FSM (Haus-Modus) die andere FSM (Beschattung) triggert?
          Gibt es vielleicht eine Option, z.B. über source=... das zu lösen?

          Wäre gut, denn ich möchte eigentlich mehrere FSM in Kaskade schalten, sodass das System übersichtlich, modular und letztendlich beherrschbar bleibt.

          Danke für jede Idee und Unterstützung
          Markus

          Kommentar


            Hi,

            ich wollte mich hier erneut melden, habe längere Zeit nichts mit autoblind gemacht.
            Würde gerne demnächst eine Versuchsinstallation auf Basis von ShNG machen. Ich würde dann gleich auch auf die neue yaml-Konfig gehen, konnte aber in der autoblind-Doku nicht finden, ob das Format unterstützt wird. Ohne autoblind würde ich ShNG nicht nutzen wollen und ich wollte nicht auf das falsche Konfig-Format setzten.

            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              Kannst bedenkenlos auf yaml umsteigen

              Kommentar


                Hi,

                danke für die Info. Für den (wieder-) Einstieg werde ich aber auf Dein neues Image warten, so was ist immer eine gute Basis für einen Start... Falls Du also Tester brauchst...

                Gruß, Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  Hi, hat sich bei autoblind irgendwas am suspend geändert? Bei manueller Bedienung setzt jetzt die Automatik nicht mehr aus...

                  Kommentar


                    Kommt drauf an mit welchem Stand du vergleichst.. Anfang 2017 hat sich extrem viel getan, seither nicht mehr.

                    Mein suspend Zustand im default sieht so aus:
                    Code:
                                default:
                                    as_item_manuell: ..manuell
                                    as_item_lock: ..lock
                                    as_item_suspend: ..suspend
                    
                                    suspend:
                                        type: foo
                                        name: Ausgesetzt
                    
                                    on_enter_or_stay:
                                        as_action_suspend:
                                          - 'function: special'
                                          - 'value: suspend:..suspend, ..manuell'
                                          - 'repeat: True'
                                          - 'order: 1'
                                        as_action_suspend_end:
                                          - 'function: set'
                                          - "to: eval:autoblind_eval.insert_suspend_time('..suspend', suspend_text='%X')"
                                          - 'repeat: True'
                                          - 'order: 2'
                                        as_action_retrigger:
                                          - 'function: set'
                                          - 'to: true'
                                          - 'delay: var:item.suspend_remaining'
                                          - 'repeat: True'
                                          - 'order: 3'
                    
                    
                                    on_leave:
                                        as_action_suspend:
                                          - 'function: set'
                                          - 'to: False'
                                        as_action_suspend_end:
                                          - 'function: set'
                                          - 'to:  '
                    
                                    enter_manuell:
                                        type: foo
                                        as_value_trigger_source: eval:autoblind_eval.get_relative_itemid('..manuell')
                                        as_value_suspend_active: 'True'
                    
                                    enter_stay:
                                        type: foo
                                        as_value_laststate: var:current.state_id
                                        as_agemax_suspend: eval:autoblind_eval.get_relative_itemvalue('..settings.suspendduration') * 60
                                        as_value_suspend: 'True'
                                        as_value_suspend_active: 'True'
                    Das Item so:
                    Code:
                                  automatik:  
                                      suspend:
                                            type: bool
                                            knx_dpt: 1
                                            visu_acl: rw
                                            cache: 'True'
                    
                                        manuell:
                                            type: bool
                                            name: Manuelle Bedienung
                                            eval_trigger:
                                              - licht.eg.bad.WC.SA
                                              - licht.eg.bad.WC.dimmen
                                            as_manual_invert: 'True'
                                            as_manual_exclude:
                                              - Database:*
                                              - sqlite:*
                                              - KNX:GA
                    Und die rules-Sektion des einzelnen Items beinhaltet u.a. das:
                    Code:
                                        type: bool
                                        as_plugin: active
                                        as_laststate_item_id: ..autostate_id
                                        as_laststate_item_name: ..autostate_name
                                        as_item_suspend_end: ..autostate_suspend_end
                                        as_suspend_time: eval:autoblind_eval.get_relative_itemvalue('..settings.suspendduration') * 60
                                        as_item_height: jalousien.eg.bad.hoehe
                    
                                       eval_trigger:
                                          - jalousien.automatik_lock
                                          - jalousien.eg.bad.automatik.lock
                                          - jalousien.eg.bad.automatik.release
                                          - jalousien.eg.bad.automatik.suspend
                                          - jalousien.eg.bad.automatik.manuell
                    
                                        suspend:
                                            type: foo
                                            as_use: jalousien.autoblind.default.suspend
                    Zuletzt geändert von Onkelandy; 22.11.2017, 19:04.

                    Kommentar


                      Habe erst kürzlich einen git pull im autoblind plugin gemacht (weil ich es immer vergesse), das einiges an updates eingespielt.
                      Danke für den schnellen und ausführlichen Post... ich werde da mal ran ran müssen...

                      Kommentar


                        Kannst Du mal das gesamte Beispiel posten - ich bekomme es nicht richtig zum laufen. Ich bin mir auch nicht sicher ob das Wiki tatsächlich auf Stand ist

                        Mir ist insbesondere nicht ersichtlich, warum bei manuell die invert Funktion notwendig ist, wie man den Status-Namen auf "Ausgesetzt bis %X" mit den neuen as_action... Funktionen setzen kann, welche Einstiegs-/Austiegsbedingungen alle für Supend benötigt werden (on_leave?)...

                        Danke.

                        Kommentar


                          Ups, ich habs oben ergänzt...

                          Das mit dem invert könnte man auch weg lassen, da es wohl eh automatisch gesetzt wird, wenn ein include oder exclude dabei ist. Aber die Funktion führt dazu, dass mit jedem Aktivieren eines manuellen Items der Wert von manuell auf den anderen Zustand gesetzt wird (also True, wenn False und umgekehrt). Dieser Wert hat also nichts damit zu tun, ob das manuelle Item tatsächlich true oder false ist. Es ging wohl darum, das Alter des letzten Aktivierens von Suspend korrekt zu erfassen.

                          Kommentar


                            Danke, das hilft schon weiter.
                            Noch eine Frage die mir eben aufgefallen ist: was bewirkt das Setzen von suspend_active auf true, wenn es nicht mehr auf false gesetzt wird?

                            Kommentar


                              Ah.. das suspend_active wird nicht gesetzt, sondern als Voraussetzung gesehen, den Zustand einzunehmen.
                              Kannst du knicken.. ich hab das bei mir nur so umgesetzt, dass ich jeden Zustand individuell (temporär) überspringen lassen kann, indem ich das "active" in der Visu auf Aus setze.

                              Kommentar


                                Noch eine kurze Verständnisfrage zum Manuell - Item, welches alle Manuellen Betätigungen kapselt:
                                - Müsste da nicht zumindest ein eval = OR, wenn ein eval_trigger vorhanden ist?
                                - Müsste nicht ein enforce_updates = yes ergänzt werden, sodass auch wiederholte manuelle Events den Suspend-Modus verlängern?

                                Danke
                                Markus

                                Kommentar

                                Lädt...
                                X