Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • Onkelandy
    antwortet
    Genauso sollte das klappen

    Einen Kommentar schreiben:


  • gama
    antwortet
    Ok, dann kann ich as_suspend_time nicht direkt ändern, sondern nur indirekt über ein verlinktes item?

    Also wenn ich es richtig verstanden habe, dann:
    as_supend_time: eval:..(duration)
    duration_item wird im Fall von Suspend per as_action_duration auf settings.durationstandard gesetzt, im Fall von Suspend_Night auf settings.durationnight.


    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Bezüglich suspend_night hast du vollkommen Recht. Am besten heißt das dort:
    as_value_laststate: eval:autoblind_eval.get_relative_itemid('..rules.n ight')
    Dann kannst du da überallhin copy pasten.

    Die Dauer vom Suspend kannst du auf jeden Fall mit einer set action ändern.. Ich hab mir für jedes Item ein paar Settings, hierarchisch auf Höhe von autostate_id, etc:
    Code:
                    settings:
                        type: foo
    
                        suspendduration:
                            type: num
                            visu_acl: rw
                            cache: 'True'
                            enforce_updates: 'no'
    Und in der rules Sektion hab ich dann:
    Code:
    as_suspend_time: eval:autoblind_eval.get_relative_itemvalue('..settings.suspendduration') * 60
    Sprich, du kannst einfach entweder in der default-Sektion oder unter rules eines Items darauf referenzieren:
    as_item_suspendduration: ..settings.suspendduration

    Und die Duration dann anpassen:
    Code:
                    on_enter_or_stay:
                        as_action_suspendduration:
                          - 'function: set'
                          - 'to: XYZ'

    Einen Kommentar schreiben:


  • gama
    antwortet
    Habe es gerade getestet und es funktioniert.

    Ein Problem bleibt: die Standby Zeit wird aufgrund der internen Variable "suspend_time" berechnet. Das Plugin bekommt diese per as_suspend_time übergeben.

    Ich habe eine Workaround, da meine normale Standby Zeit größer ist als die Nacht-Standbyzeit, indem ich

    enter_stay:
    as_agemax_suspend: 300

    ergänzt habe. Somit funktioniert es, auch wenn die Zeit noch als "alter" Suspend Time berechnet wird und Autoblind nur im Tigger-Rythmus (5 Minuten) den Standby Zustand deaktiviert.

    Gibt es ein "Action-Function-Set-..." Aufruf, mit dem man diese suspend_time Variable schreiben kann? Dann wäre es "sauber"...

    Einen Kommentar schreiben:


  • gama
    antwortet
    Oder vielleicht so:

    Code:
    SUSPEND_NIGHT:                            
      as_use: HOME.shutter.default.SUSPEND
      enter_manuell:
        as_value_laststate: item.path.to.state.NIGHT

    Einen Kommentar schreiben:


  • gama
    antwortet
    Was ist eigentlich genau der Unterschied zwischen den Zuständen suspend und suspend_night, ausser das es an unterschiedlichen Stellen vorkommt?
    Könnte man nicht per as_use 2x das Default-Suspend verwenden?

    Code:
                            LOCK:
                                as_use: HOME.shutter.default.LOCK
    
                            SUSPEND_NIGHT:
                                as_use: HOME.shutter.default.SUSPEND
                                enter_manuell:
                                  as_value_night_active: 'True'
    
                            NIGHT:
                                as_use: HOME.shutter.default.NIGHT
    
                            SUSPEND:
                                as_use: HOME.shutter.default.SUSPEND
    
                            OPEN:
                                as_use: HOME.shutter.default.OPEN
    
                            TRACKING:
                                as_use: HOME.shutter.default.TRACKING
    
    ...

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Von=vor. Dann passts

    Einen Kommentar schreiben:


  • gama
    antwortet
    Hm,

    ich versuche es mal zu verstehen:

    Autoblind ist im modus "day" und meine Frau möchte trotzdem beschatten, dann setzt Autoblind den Status Standby z.B. für die nächsten 12h.
    Werden die Bedingung für Nacht oder Nacht-Standby erfüllt, so wird Standby nicht "erreicht" und der Nacht Modus geht aktiv (Standby Signal wird über on_leave deaktiviert).

    Soll nun ein weiterer Status "Abwesend" eingebaut werden, so müsste auch dieser Status von dem eigentlichen Standby kommen und ggf. mit einem eigenen Status-Standby ergänzt werden, oder?

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Relevant ist eigentlich nur die Reihenfolge....
    Nacht muss einfach vor dem supsend evaluiert werden..dann fahren die Jalousien auch zu, selbst wenn noch der Manuell-Modus laufen würde. Oder ich versteh's Problem immer noch nicht ?

    Code:
                        lock:
                            type: foo
                            as_use: jalousien.autoblind.default.lock
    
                        suspend_night:
                            type: foo
                            as_use: jalousien.autoblind.default.suspend_night
    
                        night:
                            type: foo
                            as_use: jalousien.autoblind.default.night
    
                        suspend:
                            type: foo
                            as_use: jalousien.autoblind.default.suspend
    
                        morning:
                            type: foo
                            as_use: jalousien.autoblind.default.morning
    
                        suntrack:
                            type: foo
                            as_use: jalousien.autoblind.default.suntrack_east
    
                        day:
                            type: foo
                            as_use: jalousien.autoblind.default.day
    Suspend_night overrulet die Nacht-Regel, falls man dort mal die Jalousien für ne Zeit ändern möchte.
    Day-Zustand ist der "Standard", Jalousien sind oben.

    Die Regel für suspend_night:
    Code:
                suspend_night:
                    type: foo
                    name: Ausgesetzt
                    enforce_updates: 'yes'
    
                    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_night_active: 'True'
                        #as_max_time: item:jalousien.autoblind.settings.night.max_time
                        #as_negate_time: 'True'
                        as_max_brightness: item:jalousien.autoblind.settings.night.max_brightness
                        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: var:item.suspend_time'
                        as_agemax_suspend: eval:autoblind_eval.get_relative_itemvalue('..settings.suspendduration') * 60
                        as_value_suspend: 'True'
                        #as_value_suspend_active: 'True'
    Regel für das normale Suspend:
    Code:
                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_min_height: 15
                        #as_value_suspend_active: 'True'
    Regel für Nacht:
    Code:
                night:
                    type: foo
                    name: Nacht
    
                    on_enter_or_stay:
                        as_action_height:
                          - 'function: set'
                          - 'to: item:..settings.hoehe.night'
                          - 'order: 1'
                        as_action_lamella:
                          - 'function: set'
                          - 'to: item:jalousien.autoblind.settings.night.lamella'
                          - 'order: 2'
    
                    enter:
                        type: foo
                        as_max_brightness: item:jalousien.autoblind.settings.night.max_brightness
                        as_min_time: item:jalousien.autoblind.settings.night.min_time
                        as_max_time: item:jalousien.autoblind.settings.night.max_time
                        as_negate_time: 'True'
                        #as_value_night_active: 'True'

    Einen Kommentar schreiben:


  • gama
    antwortet
    Der Grund ist folgende Optimierungsidee für die automatische Beschattung:
    Für manche Storen (meist im Wohnbereich) möchte meine Frau tagsüber die "Kontrolle" behalten.

    Das Problem von Standby ist, dass hier ein Timer läuft. Setzt man den Timer zu lang, gehen Abend lange die Storen nicht zu, ist er zu kurz fällt er zu früh in den Status den die Statemachine ermittelt zurück.

    Zuerst dachte ich, ich könnte das zyklische Retriggern optimieren, aber ich glaube das wird schwierig, da ich jedes Signal welches zur Zustandswahl "entprellen" müsste. Wahrscheinlich ist zyklisches "Abtasten" auch Performance Optimal.

    Nun noch einmal zum eigentlichen Problem:
    Kurzerhand habe ich den Status "FREE" eingeführt, der keine Position / keinen Winkel vorgibt. Somit kann in diesem Modus frei eingestellt werden.
    Weiterhin besteht die Möglichkeit eine "Zwangsführung" drüber zu legen und die Zustände "Nacht" oder "Abwesend" einzustellen.

    Nur Morgens müsste zunächst der Zustand "OPEN" angefahren werden und dann in den Zustand "FREE" gewechselt werden, also wäre dann "OPEN" die Bedingung für "FREE". Ebenso sollte nach dem Heimkehren zunächst "OPEN" angefahren werden und danach in "FREE" gewechselt werden.

    Alternativ könnte eventuell Standby sehr lange gesetzt werden und bei "NACHT" wird Standby einfach ignoriert. Hier bin ich mir noch nicht klar, wie das aussehen könnte.

    Habt Ihr bereits Erfahrungen oder Lösungsansätze wie so ein "Vorübergehend-Manueller-Modus" funktionieren könnte?

    Grüße
    Markus

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Den "Grund" hab ich jetzt gar nicht verstanden..?
    Bei mir triggern die Zustände sowohl durch Item-Änderung als auch durch zyklischen Trigger. Theoretisch könnte man sich das Zyklische wirklich sparen, aber stören tut es ja auch nicht.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    natürlich. Aber ich verstehe die Frage nicht. Trigger für eine SM müssen ja entsprechend der Aufgabe der SM gewählt werden.

    Gruß Waldemar

    Einen Kommentar schreiben:


  • gama
    antwortet
    Kurz zum Thema Trigger:

    Hat jemand von Euch autoblind ohne einen zyklischen trigger (z.B. alle 300s) und nur mit items im eval_trigger laufen, sodass autoblind nicht alle 5 Minuten aufgerufen wird, sondern nur, wenn sich ein item ändert?

    Der Grund dafür war, dass die Wetterdaten alle 5 Minuten abgetastet werden sollen - glaube ich mal gelesen zu haben....

    Grüße
    Markus

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Das eval muss direkt in rules: gesetzt werden, dort wo die eval_trigger drin sind, die für die Evaluierung des Zustandes sorgen
    DANKE- jetzt beschattet die Beschattung (autoblind) auch mit SH1.5 :-)

    Code:
                        Rules:
                            type: bool
                            as_plugin: active
                            eval: True
                            name: Dg Wohnzimmer Terrasse
                            eval_trigger:
                              - Dg.Trigger

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Das eval muss direkt in rules: gesetzt werden, dort wo die eval_trigger drin sind, die für die Evaluierung des Zustandes sorgen

    Einen Kommentar schreiben:

Lädt...
X