Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • mumpf
    antwortet
    Hi,

    das einzige, was ich bisher gesehen habe, ist unter den fsm-Item: Du hast da
    Zitat von gama Beitrag anzeigen
    as_item_manual = EG.office.window.shutter.auto.manuell
    Wenn ich das Beispiel in der Doku anschaue, dann heißt es wohl wirklich
    Code:
    as_item_manu[COLOR=#FF0000]ell[/COLOR] = EG.office.window.shutter.auto.manuell
    Versuch es nochmal damit, wenn dann Dein manuell-Item nicht getriggert wird, weiß ich auch nicht mehr weiter.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • gama
    antwortet
    Ok, also hier die zentrale Beschattung - ohne einzelne Zustände (die funktionieren ja).


    Code:
    [HOME]  
            [[shutter]]
                    name = Beschattungsautomatik
                    [[[reference_run]]]
                            name = Referenzfahrt triggern
                            type = bool
                            knx_dpt = 1
                            knx_send = 6/6/10
                            knx_listen = 6/6/10
                            enforce_updates = yes
                    [[[trigger]]]
                            name = Gemeinsamer 300s Trigger für alle Raffstores und Rolladen
                            type = bool
                            enforce_updates = yes
                            cycle = 300 = 1
                    [[[default]]]
                            # OBSERVER Items
                            as_item_brightness = AUSSEN.brightness
                            as_item_temperature = AUSSEN.temperature
                            as_item_presence = ..presence
                            as_item_roomtemp = ..roomtemp
                            as_item_bedtime = ..bedtime
    
                            # ACTION Items
                            as_item_pos = ...pos
                            as_item_angle = ...angle
    
                            # CONTROL Items
                            # as_item_manuell = ..manuell
                            as_item_lock = ..lock
                            as_item_suspend = ..suspend
    
    
                            [[[[LOCK]]]]
                                    name = Automatik gesperrt
                                    type = foo
    
                                    # Aktionen
                                    as_set_suspend = False
    
                                    [[[[[enter]]]]]
                                            as_value_lock = True
    
                            [[[[SUSPEND]]]]
                                    # Automatik nach Handbetrieb                                 name = Ausgesetzt nach Handbetrieb
                                    type = foo
    
                                    as_name = eval:autoblind_eval.insert_suspend_time("..suspend", "Automatik ausgesetzt bis %X")
    
                                    [[[[[on_enter_or_stay]]]]]
                                            # Suspend Item setzen
                                            as_action_suspend = function: special | value: suspend:..suspend,..manuell | repeat: True | order: 1
                                            as_action_name = function: set | to: eval:autoblind_eval.insert_suspend_time('..suspend', suspend_text='Ausgesetzt bis %X') | repeat: True | order: 2
                                            # Automatischen Retrigger nach Ablauf der Suspend-Zeit einplanen
                                            as_action_retrigger = function: set | to: true | delay: var:item.suspend_remaining | repeat: True | order: 3
                                    [[[[[on_leave]]]]]
                                            # Suspend-Item zurücksetzen
                                            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')
    
                                    [[[[[enter_debug]]]]]
                                            type = foo
                                            as_value_trigger_source = eval: autoblind_eval.get_relative_itemid('..suspend')
                                            as_value_suspend = True
    
                                    [[[[[enter_stay]]]]]
                                            type = foo
                                            as_value_laststate = var:current.state_id
                                            as_agemax_suspend = eval:autoblind_eval.get_relative_itemvalue('..suspend_duration') * 60
                                            as_value_suspend = True
    Dann einfachen Ansteuerungen des Aktuators:

    Code:
    [EG]    
    
            [[office]]
    
                    [[[window]]]
    
                            [[[[shutter]]]]
                                    name = Rolladen
                                    [[[[[move]]]]]
                                            name = Rolladen fahren
                                            type = bool
                                            visu_acl = rw
                                            knx_dpt = 1
                                            knx_send = 3/1/0
                                            knx_listen = 3/1/0 # listen for manual action -> supend shutter automatic
                                            enforce_updates = true
                                    [[[[[stop]]]]]
                                            name = Rolladen stoppen
                                            type = bool
                                            visu_acl = rw
                                            knx_dpt = 1
                                            knx_send = 3/1/1
                                            knx_listen = 3/1/1 # listen for manual action -> supend shutter automatic
                                            enforce_updates = true
                                    [[[[[pos]]]]]
                                            name = Rolladen position anfahren
                                            type = num
                                            visu_acl = rw
                                            knx_dpt = 5001
                                            knx_send = 3/1/2
                                            knx_listen = 3/1/3
                                            knx_init = 3/1/3
                                            enforce_updates = true
    und noch die vererbte Autoblind Konfig für den speziellen Fall:

    Code:
    #   ___   __  __ _
    #  / _ \ / _|/ _(_)__ ___
    # | (_) |  _|  _| / _/ -_)
    #  \___/|_| |_| |_\__\___|
    #
    
    [EG]
            [[office]]
                    [[[window]]]
                            [[[[shutter]]]]
                                    [[[[[auto]]]]]
                                            [[[[[[lock]]]]]]
                                                    name = Automatik Sperre
                                                    type = bool
                                                    visu_acl = rw
                                                    knx_dpt = 1
                                                    knx_listen = 3/1/6
                                                    knx_send = 3/1/6
                                                    cache = yes
                                            [[[[[[suspend]]]]]]
                                                    name = Aussetzen
                                                    type = bool
                                                    visu_acl = rw
                                                    cache = true
                                                    # NIEMALS enforce_updates=yes setzen
                                            [[[[[[manuell]]]]]]
                                                    name = Manuelle Bedienung
                                                    type = bool
                                                    # check if items move,stop listen on knx
                                                    eval_trigger = EG.office.window.shutter.move | EG.office.window.shutter.stop | EG.office.window.shutter.pos
                                                    # pos Rückmeldung vom Aktor sperren!
                                                    as_manual_exclude = KNX:1.0.8 | Init:*
                                                    # as_manual_invert = true
                                                    as_manual_logitem = EG.office.window.shutter.auto.manuell
                                            [[[[[[bedtime]]]]]]
                                                    name = Schlafenszeit
                                                    type = bool
                                                    visu_acl = rw
                                                    value = False
                                                    cache = True
                                                    eval = sh.EG.office.bedtime()
                                                    eval_trigger = EG.office.bedtime
                                            [[[[[[presence]]]]]]
                                                    name = Anwesend
                                                    type = bool
                                                    visu_acl = rw
                                                    value = True
                                                    eval = True if sh.EG.office.presence() > 0 else False
                                                    eval_trigger = EG.office.presence
                                            [[[[[[roomtemp]]]]]]
                                                    name = Raumtemperatur
                                                    type = num
                                                    value = 21.0
                                                    eval = sh.EG.office.temperature()
                                                    eval_trigger = EG.office.temperature
                                            [[[[[[suspend_duration]]]]]]
                                                    name = Dauer der Unterbrechung in Minuten
                                                    type = num
                                                    value = 60
                                                    cache = true
                                            [[[[[[state_id]]]]]]
                                                    name = ID des aktuellen Zustands
                                                    type = str
                                                    visu_acl = r
                                                    cache = on
                                            [[[[[[state_name]]]]]]
                                                    name = Name des aktuellen Zustands
                                                    type = str
                                                    visu_acl = r
                                                    knx_dpt = 16 # ASCII, 14 bytes
                                                    knx_send = 3/1/7
                                                    knx_reply = 3/1/7
                                                    cache = on
                                                    telegram_message = "Shutter State OFFICE: [VALUE]"
                                            [[[[[[fsm]]]]]]
                                                    name = Shutter FSM
                                                    as_plugin = active
                                                    as_startup_delay = 90
                                                    # NO fast changing values, e.g. temperature
                                                    eval_trigger = HOME.shutter.trigger | EG.office.window.shutter.auto.lock | EG.office.window.shutter.auto.suspend | EG.office.window.shutter.auto.manuell | EG.office.window.shutter.auto.bedtime | EG.office.window.shutter.auto.presence
                                                    as_laststate_item_id = ..state_id
                                                    as_laststate_item_name = ..state_name
                                                    # as_item_suspend_end = ..state_suspend_end
                                                    as_suspend_time = eval:autoblind_eval.get_relative_itemvalue('..suspend_duration') * 60
                                                    as_item_retrigger = .
    
                                                    as_item_manual = EG.office.window.shutter.auto.manuell
    
                                                    [[[[[[[LOCK]]]]]]]
                                                            as_use = HOME.shutter.default.LOCK
                                                    [[[[[[[SUSPEND]]]]]]]
                                                            as_use = HOME.shutter.default.SUSPEND
                                                    [[[[[[[ASLEEP]]]]]]]
                                                            as_use = HOME.shutter.default.ASLEEP
                                                    [[[[[[[PRIVACY]]]]]]]
                                                            as_use = HOME.shutter.default.PRIVACY
                                                    [[[[[[[COOLING]]]]]]]
                                                            as_use = HOME.shutter.default.COOLING
                                                    [[[[[[[OPEN]]]]]]]
                                                            as_use = HOME.shutter.default.OPEN

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    stell doch mal das gesamte autoblind hier rein, dann kann man vielleicht mehr sehen. Ich glaube, wir reden aneinander vorbei. Ich sagte schon, das Problem liegt nicht am manuell-Item, sondern dass autoblind Dein manuell-Item nicht kennt. Du musst dazu das rules-Item vom autoblind untersuchen, nicht das manuell-Item.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • gama
    antwortet
    Hier noch der Status nachdem ich das Stop Item gesetzt habe:

    Code:
    CLI > ii EG.office.window.shutter.auto.manuell
    
    Item EG.office.window.shutter.auto.manuell {
    
      type: bool
    
      value: False
    
      age: 59.320292
    
      last_change: 2017-11-21 13:52:22.134839+01:00
    
      changed_by: Init:None
    
      previous_value: False
    
      previous_age: -0.001543
    
      previous_change: 2017-11-21 13:52:22.136382+01:00
    
      config: {
    
        as_manual_exclude: ['KNX:1.0.8', 'Init:*']
    
        as_manual_logitem: EG.office.window.shutter.auto.manuell
    
      }
    
      logics: [
    
      ]
    
      triggers: [
    
        <bound method WebSocket.update_item of <plugins.visu_websocket.WebSocket object at 0x72447290>>
    
      ]
    
    }

    Einen Kommentar schreiben:


  • gama
    antwortet
    Hi, das habe ich gemacht. Leider ohne Reaktion. Das Item EG.office.window.shutter.auto.manuell reagiert einfach nicht auf trigger... und bleibt unverändert...

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    Du solltest erstmal herausfinden, ob meine Behauptung stimmt und es am as_item_manual liegt.
    Füge bitte in dem rules item einfach ein as_item_manual = EG.office.window.shutter.auto.manuell ein. Also mit absolutem Pfad. Dann siehst Du, ob das manuell-Item getriggert wird. Dann kannst Du Dich immer noch damit beschäftigen, wie Du es relativ adressiert.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • gama
    antwortet
    Bedauerlicherweise steht in der Doku nicht darüber drin...
    https://github.com/i-am-offline/smar...uspend-Manuell
    Im Code werde ich auch nicht fündig, es gibt anscheinend eine manual_item_update_eval() Funktion, welche ein eigenes eval aufruft, sofern in der Item-Config as_manual_include oder as_manual_exclude gesetzt sind...

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Jetzt wo ich das nochmal lese: heißt es vielleicht
    Code:
    as_item_manual
    Wie gesagt, ich weiß es nicht mehr, aber das wäre ein klassischer Tippfehler.

    Gruß Waldemar

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    das kann ich nicht sagen. Du hast da eine relative Adresse angegeben, Du musst wissen, ob ..manuell Deinem Item EG.office.window.shutter.auto.manuell entspricht. Soweit ich mich erinnere, wird beim Startup im log immer der aufgelöste Name des Items ausgegeben, da sollte dann
    Code:
    as_item_manuell = EG.office.window.shutter.auto.manuell
    stehen. Wenn nicht, dann musst Du deinen relativen Pfad entsprechend anpassen.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • gama
    antwortet
    Ich habe im default Zweig eine Zuweisung per "as_item_manuell = ..manuell". Reicht das?

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Ah!

    Dann hast Du autoblind nicht angegeben, welches Item das manuell-Item ist.
    Ich nutze schon länger kein shNG.py und somit auch kein Autoblind, deswegen weiß ich die Syntax nicht aus dem Kopf. Aber damit autoblind die Verwaltung vom manuell-Item übernehmen kann, musst Du irgendwo so was wie as_manual_item = ... haben. Schau mal in der Doku. Das ist Dein Problem.

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • gama
    antwortet
    Hi, habe ich alles probiert...

    Das Problem lässt sich mittlerweile soweit einkreisen, dass es ohne "eval = ... " zu keiner Änderung kommt und somit die eval_trigger = .. Funktion ohne Bedeutung ist.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi gama ,

    mir würden noch ein paar Sachen einfallen, um das Problem einzukreisen:
    • as_manual_exclude rausnehmen und testen, ob es das Seiteneffekte gab,
    • as_manual_invert rausnehmen und gleicher Test.
    • Ein anderes Item anlegen und genau so wie das manuell-Item von move, stop und pos triggern lassen und schauen, ob nur das manuell-Item oder auch das neue Item nicht getriggert wird. Daran kann man erkennen, ob es eher am manuell-Item (also am Ziel des Triggers) oder an der Trigger-Quelle (also am move, stop bzw. pos) liegt.
    • Nochmal checken, dass move und stop ein enforce_updates gesetzt haben (wobei das nicht das Problem sein sollte, das stellt ja nur sicher, dass manuell auch erkannt wird, wenn man mehrmals hintereinander move=1 auf dem Bus hat).
    • Und - der Vollständigkeit halber: Ist das hier angegebene
      Zitat von gama Beitrag anzeigen
      [[[[[[manuell]]]]]]
      wirklich das
      Zitat von gama Beitrag anzeigen
      EG.office.window.shutter.auto.manuell
      , oder hast Du Dich doch im Pfad vertan?
    Gruß, Waldemar

    Einen Kommentar schreiben:


  • gama
    antwortet
    Loglevel, etc. passt alles, aber ich bekomme keine Log Meldung, da das manuell item gar nicht verändert wird... ich bin ratlos....
    setze ich über CLI z.B.
    EG.office.window.shutter.move fährt der Rolladen, aber das manuell item wird nicht getriggert... somit kein suspend bzw. log-Eintrag...

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Füg deinem Manuell-Item mal ein

    as_manual_logitem= EG.office.window.shutter.auto.manuell

    hinzu, dann siehst du im entsprechenden Logfile (im autoblind log-Ordner), ob, wann und wie das getriggert wird und woran es haken könnte.
    Ich hab im Plugin.conf auch noch die Attribute gesetzt:
    log_level= 2
    log_directory= var/log/autoblind/

    Einen Kommentar schreiben:

Lädt...
X