Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • gama
    antwortet
    Ich komme irgendwie nicht weiter. Vorab zur info: ich nutze aktuellen develop checkout.

    Suspend funktioniert, wenn ich z.B. über das suspend Item direkt ein true setze. Timeout, etc. läuft alles.

    Das Problem liegt darin, dass move, stop, pos das manuell item nicht triggern. Hier der code-schnipsel für ein spezielles Fenster:

    Code:
    [[[[[[manuell]]]]]]
      name = Manuelle Bedienung
      type = bool
      eval_trigger = EG.office.window.shutter.move | EG.office.window.shutter.stop | EG.office.window.shutter.pos
      as_manual_exclude = KNX:1.0.8 | Init:*
      as_manual_invert = true
    im CLI habe ich z.B. eine move initiiert und dann das item diagnostiziert:

    Code:
    CLI > ii EG.office.window.shutter.move
    Item EG.office.window.shutter.move {
      type: bool
      value: True
      age: 906.953654
      ...
    das manuell item hingegen bleibt unverändert, was die fehlende Reaktion von autoblind auch erklären könnte:

    Code:
    CLI > ii EG.office.window.shutter.auto.manuell
    Item EG.office.window.shutter.auto.manuell {
      type: bool
      value: False
      age: 347332.793781
      ...
    Was übersehe ich? Andere eval oder eval_trigger funktionieren...

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Genau, wie mumpf schreibt, wechselt das Manuell Item bei jeder Betätigung den Status, daher kein Enforce_update.
    Das eval selbst läuft ja im Plugin, daher braucht es auch kein or.

    Übernimm einfach mein Beispiel, läuft seit Jahresbeginn sauber.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Markus,

    ich weiß zwar nicht, wie es jetzt ist, aber in der Entstehungszeit des Manuell-Items wurde dieses beim Parsen immer angepasst, sinngemäß ist
    Code:
    eval = not self()
    (also bei jeglichem triggern wird der Wert vom Manuell-Item negiert). Und da sich dann immer der Wert ändert, muss auch kein enforce_updates da rein, da das ja nur wirkt, wenn sich der Wert nicht ändert.

    Ich denke, dass das Verhalten prinzipiell immer noch so ist, eventuell sind im Laufe der Zeit noch ein paar "Tricks" dazugekommen.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • gama
    antwortet
    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

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    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.

    Einen Kommentar schreiben:


  • gama
    antwortet
    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?

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    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.

    Einen Kommentar schreiben:


  • gama
    antwortet
    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.

    Einen Kommentar schreiben:


  • gama
    antwortet
    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...

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    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.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    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

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Kannst bedenkenlos auf yaml umsteigen

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    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

    Einen Kommentar schreiben:


  • gama
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X