Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • Onkelandy
    antwortet
    @firefox: Das Problem hatte ich auch mal: https://knx-user-forum.de/forum/supp...171#post894171
    Es gibt im Post darunter einen Lösungsansatz. Weiß leider nicht mehr genau, ob's das wirklich war

    Jedenfalls würde ich empfehlen, einfach mal nur mit einem einzigen Item zu arbeiten, also alles andere in einen temp Ordner zu schieben und neu zu starten. Dann bei diesem einen Item genau checken, ob die Hierarchien auch wirklich passen und ob nicht doch direkt beim Start von Smarthome eine Fehlermeldung kommt von wegen, dass die Anzahl Klammern nicht gleich ist, etc.

    Einen Kommentar schreiben:


  • firefox
    antwortet
    Ich hab jetzt mal develop ausgecheckt und auf ".get_relative_itemid" umgestellt. Die Fehlermeldung ist weg.
    Jetzt hab ich aber ein neues Problem.

    Das Autoblind Log File zeigt mir zwar den Init Teil an, aber dann nichts mehr. Ich hab gerade mal die Neuigkeiten der letzten Monate eingebaut und mich recht genau an das deutsche Beispiel gehalten. Ich seh im smarthome debug log, dass der Trigger alle 5min die Autoblind Items anstößt. Der Autoblind Log zeigt aber bis auf folgendes nichts mehr an. Sonstige Warnings oder Errors im smarthome log erhalte ich auch nicht.

    Code:
    2016-02-17 17:13:34.451556 Initialize Item EG.Bad.Rollo.AutoBlind.Rules ===================================
    2016-02-17 17:13:34.457542 Init state EG.Bad.Rollo.AutoBlind.Rules.lock
    2016-02-17 17:13:34.488474 Init state EG.Bad.Rollo.AutoBlind.Rules.suspend
    2016-02-17 17:13:34.520552 Init state EG.Bad.Rollo.AutoBlind.Rules.night
    2016-02-17 17:13:34.540787 Init state EG.Bad.Rollo.AutoBlind.Rules.morning
    2016-02-17 17:13:34.586258 Init state EG.Bad.Rollo.AutoBlind.Rules.evening
    2016-02-17 17:13:34.637095 Init state EG.Bad.Rollo.AutoBlind.Rules.day
    2016-02-17 17:13:34.654502 Configuration of item Rolladenautomatik ========================================
    2016-02-17 17:13:34.656232 Startup Delay: 60
    2016-02-17 17:13:34.657953 Cycle: Inactive
    2016-02-17 17:13:34.659437 Cron: Inactive
    2016-02-17 17:13:34.660943 Trigger: EG.Zentral.Rollo.Trigger, EG.Bad.Rollo.AutoBlind.State.lock, EG.Bad.Rollo.AutoBlind.State.suspended, EG.Bad.Rollo.AutoBlind.State.manuell
    2016-02-17 17:13:34.662650 Repeat actions if state is not changed: True
    2016-02-17 17:13:34.664297 Item 'Laststate Id': EG.Bad.Rollo.AutoBlind.State.stateId
    2016-02-17 17:13:34.665823 Item 'Laststate Name': EG.Bad.Rollo.AutoBlind.State.stateName
    2016-02-17 17:13:34.667576 State EG.Bad.Rollo.AutoBlind.Rules.lock:
    2016-02-17 17:13:34.669316       Name: Automatik manuell gesperrt
    2016-02-17 17:13:34.671044       State Name: Automatik manuell gesperrt
    2016-02-17 17:13:34.684656       Condition sets to enter state:
    2016-02-17 17:13:34.686398               Condition Set 'enter':
    2016-02-17 17:13:34.688347                       Condition 'lock':
    2016-02-17 17:13:34.689976                               item: EG.Bad.Rollo.AutoBlind.State.lock
    2016-02-17 17:13:34.691524                               value: True
    2016-02-17 17:13:34.693230                               negate: False
    2016-02-17 17:13:34.695032       Actions to perform if state becomes active:
    2016-02-17 17:13:34.696649               Action 'suspend':
    2016-02-17 17:13:34.713964                       item: EG.Bad.Rollo.AutoBlind.State.suspended
    2016-02-17 17:13:34.715595                       value: False
    2016-02-17 17:13:34.717602 State EG.Bad.Rollo.AutoBlind.Rules.suspend:
    2016-02-17 17:13:34.734070       Name: Ausgesetzt
    2016-02-17 17:13:34.735680       State Name from eval: autoblind_eval.insert_suspend_time('..State.suspended','Automatik ausgesetzt bis %X')
    2016-02-17 17:13:34.737472       Condition sets to enter state:
    2016-02-17 17:13:34.754042               Condition Set 'enter_manuell':
    2016-02-17 17:13:34.755659                       Condition 'trigger_source':
    2016-02-17 17:13:34.757617                               eval: plugins.autoblind.AutoBlindItem.get_update_trigger_source
    2016-02-17 17:13:34.774013                               value from eval: autoblind_eval.get_relative_itemid('..State.manuell')
    2016-02-17 17:13:34.775622                               negate: False
    2016-02-17 17:13:34.777535               Condition Set 'enter_stay':
    2016-02-17 17:13:34.795946                       Condition 'suspend':
    2016-02-17 17:13:34.797791                               item: EG.Bad.Rollo.AutoBlind.State.suspended
    2016-02-17 17:13:34.799373                               value: True
    2016-02-17 17:13:34.800953                               negate: False
    2016-02-17 17:13:34.802551                       Condition 'manuell':
    2016-02-17 17:13:34.804151                               item: EG.Bad.Rollo.AutoBlind.State.manuell
    2016-02-17 17:13:34.805869                               negate: False
    2016-02-17 17:13:34.807656                               agemax: 3600
    2016-02-17 17:13:34.816538                       Condition 'laststate':
    2016-02-17 17:13:34.818511                               eval: plugins.autoblind.AutoBlindItem.get_laststate_id
    2016-02-17 17:13:34.820094                               value from variable: current.state_id
    2016-02-17 17:13:34.821808                               negate: False
    2016-02-17 17:13:34.823569       Actions to perform if state becomes active:
    2016-02-17 17:13:34.825175               Action 'suspend':
    2016-02-17 17:13:34.826824                       item: EG.Bad.Rollo.AutoBlind.State.suspended
    2016-02-17 17:13:34.841758                       value: True
    2016-02-17 17:13:34.843439 State EG.Bad.Rollo.AutoBlind.Rules.night:
    2016-02-17 17:13:34.845095       Name: Night
    2016-02-17 17:13:34.846695       State Name: Night
    2016-02-17 17:13:34.855288       Condition sets to enter state:
    2016-02-17 17:13:34.856882               Condition Set 'enter':
    2016-02-17 17:13:34.863927                       Condition 'weekday':
    2016-02-17 17:13:34.865621                               eval: plugins.autoblind.AutoBlindCurrent.get_weekday
    2016-02-17 17:13:34.867547                               min: 0
    2016-02-17 17:13:34.874281                               max: 6
    2016-02-17 17:13:34.875829                               negate: False
    2016-02-17 17:13:34.877880                       Condition 'time':
    2016-02-17 17:13:34.884998                               eval: plugins.autoblind.AutoBlindCurrent.get_time
    2016-02-17 17:13:34.886832                               min: 06:00:00
    2016-02-17 17:13:34.895317                               max: 22:00:00
    2016-02-17 17:13:34.896860                               negate: True
    2016-02-17 17:13:34.903971                       Condition 'daynight':
    2016-02-17 17:13:34.905608                               item: EG.Zentral.Status.Nacht_Tag
    2016-02-17 17:13:34.907157                               value: False
    2016-02-17 17:13:34.915834                               negate: False
    2016-02-17 17:13:34.917828       Actions to perform if state becomes active:
    2016-02-17 17:13:34.924839               Action 'suspend':
    2016-02-17 17:13:34.926616                       item: EG.Bad.Rollo.AutoBlind.State.suspended
    2016-02-17 17:13:34.935271                       value: False
    2016-02-17 17:13:34.936887               Action 'height':
    2016-02-17 17:13:34.944013                       value: 90
    2016-02-17 17:13:34.945737 State EG.Bad.Rollo.AutoBlind.Rules.morning:
    2016-02-17 17:13:34.947710       Name: Twilight in the morning
    2016-02-17 17:13:34.954565       State Name: Twilight in the morning
    2016-02-17 17:13:34.956126       Condition sets to enter state:
    2016-02-17 17:13:34.964685               Condition Set 'enter':
    2016-02-17 17:13:34.966461                       Condition 'sun_altitude':
    2016-02-17 17:13:34.973596                               eval: plugins.autoblind.AutoBlindCurrent.get_sun_altitude
    2016-02-17 17:13:34.975218                               min: 0
    2016-02-17 17:13:34.976745                               max: 5
    2016-02-17 17:13:34.983766                               negate: False
    2016-02-17 17:13:34.985407                       Condition 'time':
    2016-02-17 17:13:34.987066                               eval: plugins.autoblind.AutoBlindCurrent.get_time
    2016-02-17 17:13:34.995978                               min: 06:15:00
    2016-02-17 17:13:34.997844                               max: 09:00:00
    2016-02-17 17:13:34.999405                               negate: False
    2016-02-17 17:13:35.007644                       Condition 'precence':
    2016-02-17 17:13:35.009314                               item: EG.Zentral.Praesenz.Anwesenheit
    2016-02-17 17:13:35.018854                               value: True
    2016-02-17 17:13:35.023070                               negate: False
    2016-02-17 17:13:35.024824       Condition sets to leave state:
    2016-02-17 17:13:35.032374               Condition Set 'leave':
    2016-02-17 17:13:35.033989                       Condition 'precenceBad':
    2016-02-17 17:13:35.035597                               item: EG.Bad.Praesenz.Anwesend
    2016-02-17 17:13:35.037600                               value: True
    2016-02-17 17:13:35.044258                               negate: False
    2016-02-17 17:13:35.045943                               agemin: 300
    2016-02-17 17:13:35.048000               Condition Set 'leave_away':
    2016-02-17 17:13:35.054790                       Condition 'precence':
    2016-02-17 17:13:35.056421                               item: EG.Zentral.Praesenz.Anwesenheit
    2016-02-17 17:13:35.068458                               value: False
    2016-02-17 17:13:35.070200                               negate: False
    2016-02-17 17:13:35.071747                               agemin: 60
    2016-02-17 17:13:35.073461       Actions to perform if state becomes active:
    2016-02-17 17:13:35.075057               Action 'suspend':
    2016-02-17 17:13:35.076676                       item: EG.Bad.Rollo.AutoBlind.State.suspended
    2016-02-17 17:13:35.083930                       value: False
    2016-02-17 17:13:35.085658               Action 'height':
    2016-02-17 17:13:35.087732                       value: 70
    2016-02-17 17:13:35.094600 State EG.Bad.Rollo.AutoBlind.Rules.evening:
    2016-02-17 17:13:35.096222       Name: Twilight in the evening
    2016-02-17 17:13:35.109952       State Name: Twilight in the evening
    2016-02-17 17:13:35.111583       Condition sets to enter state:
    2016-02-17 17:13:35.113163               Condition Set 'enter_maxtime':
    2016-02-17 17:13:35.114738                       Condition 'time':
    2016-02-17 17:13:35.116409                               eval: plugins.autoblind.AutoBlindCurrent.get_time
    2016-02-17 17:13:35.148719                               min: 21:30:00
    2016-02-17 17:13:35.150433                               negate: False
    2016-02-17 17:13:35.152102               Condition Set 'enter_sunaltitude':
    2016-02-17 17:13:35.153695                       Condition 'sun_altitude':
    2016-02-17 17:13:35.155353                               eval: plugins.autoblind.AutoBlindCurrent.get_sun_altitude
    2016-02-17 17:13:35.156930                               max: -5
    2016-02-17 17:13:35.233458                               negate: False
    2016-02-17 17:13:35.235241       Condition sets to leave state:
    2016-02-17 17:13:35.236854               Condition Set 'leave_time':
    2016-02-17 17:13:35.284488                       Condition 'time':
    2016-02-17 17:13:35.286296                               eval: plugins.autoblind.AutoBlindCurrent.get_time
    2016-02-17 17:13:35.314344                               max: 23:59:00
    2016-02-17 17:13:35.315926                               negate: False
    2016-02-17 17:13:35.333102               Condition Set 'leave_sleep':
    2016-02-17 17:13:35.344589                       Condition 'daynight':
    2016-02-17 17:13:35.346217                               item: EG.Zentral.Status.Nacht_Tag
    2016-02-17 17:13:35.393621                               value: False
    2016-02-17 17:13:35.395268                               negate: False
    2016-02-17 17:13:35.397014       Actions to perform if state becomes active:
    2016-02-17 17:13:35.425465               Action 'suspend':
    2016-02-17 17:13:35.427123                       item: EG.Bad.Rollo.AutoBlind.State.suspended
    2016-02-17 17:13:35.445721                       value: False
    2016-02-17 17:13:35.488892               Action 'height':
    2016-02-17 17:13:35.490714                       value: 75
    2016-02-17 17:13:35.492407 State EG.Bad.Rollo.AutoBlind.Rules.day:
    2016-02-17 17:13:35.494094       Name: Day (static)
    2016-02-17 17:13:35.495659       State Name: Day (static)
    2016-02-17 17:13:35.518511       Condition sets to enter state:
    2016-02-17 17:13:35.550513               Condition Set 'enter':
    2016-02-17 17:13:35.552127                       Condition 'time':
    2016-02-17 17:13:35.553793                               eval: plugins.autoblind.AutoBlindCurrent.get_time
    2016-02-17 17:13:35.555598                               min: 06:30:00
    2016-02-17 17:13:35.582599                               max: 22:00:00
    2016-02-17 17:13:35.600994                               negate: False
    2016-02-17 17:13:35.602784       Actions to perform if state becomes active:
    2016-02-17 17:13:35.604389               Action 'suspend':
    2016-02-17 17:13:35.606132                       item: EG.Bad.Rollo.AutoBlind.State.suspended
    2016-02-17 17:13:35.665099                       value: False
    2016-02-17 17:13:35.666753               Action 'height':
    2016-02-17 17:13:35.684279                       value: 0

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Sieht gut aus, thanks!

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Onkelandy
    Zitat von Onkelandy Beitrag anzeigen
    Hmmm, offline, kann es sein, dass das Manuell-Item nun gar nicht mehr funktioniert? Bekomme keinerlei Reaktion bezüglich suspend mehr
    Da hatte sich in der Tat noch ein Fehler eingeschlichen. Fix habe ich auf GitHub gepusht.

    Grüße
    offline

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hmmm, offline, kann es sein, dass das Manuell-Item nun gar nicht mehr funktioniert? Bekomme keinerlei Reaktion bezüglich suspend mehr

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Onkelandy
    Zitat von Onkelandy Beitrag anzeigen
    Hier der Debugcode vom Manuell-Item, das nicht in den Suspend Modus will, wenn ich eine "0" sende nach einem Neustart:
    So, ich glaube ich habe das Problem erkannt. Das Problem ist folgendes: Smarthome.py setzt den Wert von "changed_by" eines Items nur, wenn sich der Wert tatsächlich geändert hat. Bei den betroffenen Items ("...kz" und "...lz") handelt es sich vermutlich um die Items für kurzen/langen Tastendruck. Sie haben nach dem Start von smarthome.py den Wert 0 und das Flag "enforce_updates = yes" gesetzt. Wenn du auf diese Items wieder eine "0" sendest, wird durch "enforce_updates" zwar der "eval" getriggert, "changed_by" wird aber nicht geändert. Es steht dort weiterhin "Init" drin und dieser Wert ist in der Ausschlussliste.

    Wenn du nun einfach die nur Ausschlussbedingung "Init:*" rausnimmst, sollte es funktionieren.

    Grundsätzlich ist es aber sinnvoll, während der Initialisierungsphase von smarthome.py das Autoblind-Plugin nicht zutriggern. Die erste Statusermittlung läuft ja automatisch, nachdem nach der vollständigen Initialisierung das eingestellte Startup Delay abgelaufen ist. Solange das nicht der Fall ist werden auch Trigger auf das Plugin vom Plugin abgeblockt. Die in der Doku aufgeführte Ausschlussbedingung "Init:*" hat im wesentlichen den Zweck, dass mögliche Trigger auf das Plugin so früh wie möglich aussortiert werden, um bei der Initialisierung so wenig unnötiges wie möglich zu tun und keine grundlosen Verzögerungen zu schaffen.

    Ich habe daher die manual_item_update_eval-Funktion so modifiziert, dass sie überhaupt nichts prüft, loggt, etc. solange das AutoBlind-Plugin nich vollständig läuft. Die Änderung ist auf GitHub gepusht.

    Grüße
    offline

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi firefox und Onkelandy

    in der Tat scheint bei firefox das Plugin nicht aktuell zu sein, die "besondere" Bedingung "trigger_source" scheint in seiner Version noch nicht vorhanden zu sein.

    Bei "get_relative_itemid" kann man beliebig viele Ebenen nach oben gehen, in dem man einfach mehr Punkte voranstellt. Mit einem Punkt beginnt man auf der Ebene des Autoblind Objekt-Items, im Falle von firefox also bei "EG.Bad.Rollo.AutoBlind.Rules". Jeder weitere Punkt bringt einen eine Ebene nach oben, bevor der hinter den Punkte angegebene Item-Pfad angehängt wird. Für "EG.Bad.Rollo.AutoBlind.State.manuell" braucht man also
    Code:
    as_value_trigger_source = eval: autoblind_eval.get_relative_itemid("..State.manuell")
    Grüße
    offline

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    firefox
    Zieh dir mal die neueste Version runter und mach das so wie im vorigen Beitrag beschrieben mit dem
    as_value_trigger_source = eval:autoblind_eval.get_relative_itemid('..manuell ')

    Bin mir nicht sicher, ob du wirklich 2 Item-Ebenen angeben kannst, das weiß offline besser. Notfalls probierst du's mal so, dass du die "States" raus wirfst und das "manuell"-Item auf die gleiche Hierarchieebene stellst wie "rules".

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Bonze

    Das Supsend Item bewirkt, dass das Autoblind-Plugin für die angegebene Suspendzeit keine weiteren Evaluierungen bzw. Änderungen mehr macht. Hat den Sinn, dass man zB über einen Taster einen "Overrule" zur Automatik machen möchte, irgendwann sollte die Automatik aber natürlich wieder greifen - eben sobald, suspend_time abgelaufen und autoblind getriggert wird.

    Hier mal ein volles Beispiel-Item, das auch die neue Funktionsweise des suspend/manuell-Items berücksichtigt. Vorteil gegenüber der alten Herangehensweise: das Suspend ist nun ein eigener Zustand, somit ist man hier deutlich flexibler. Das Beispiel zeigt einen Sonnenschutzbehang:
    Code:
        [['sueden_s2']]
        type = foo
            [[['automatik']]]
            type = foo
                [[[['autostate_id']]]]
                    type = str
                    visu_acl = r
                    cache = on
                [[[['autostate_name']]]]
                    type = str
                    visu_acl = r 
                    cache = on
                [[[['autostate_suspend_end']]]]
                    type = str
                    visu_acl = ro 
                    cache = on
                [[[['lock']]]]
                    type = bool
                    knx_dpt = 1
                    knx_listen = 4/5/1
                    visu_acl = rw
                    cache = on
                [[[['suspend']]]]
                    type = bool  
                    knx_dpt = 1                                     
                    visu_acl = rw
                [[[['manuell']]]]
                    type = bool
                    name = Manuelle Bedienung
                    as_manual_logitem = screens.sueden_s2.automatik.manuell
                    as_manual_invert = True
                    as_manual_exclude = Init:* | SQLite:* | KNX:1.1.5 | KNX:1.1.26
                    eval_trigger = screens.sueden_s2.lz | screens.sueden_s2.kz | screens.sueden_s2.hoehe | screens.sueden_s2.lamellen | screen.alle.lz | screens.terrasse.* | screens.westen.*                 
                [[[['settings']]]]
                    type = foo
                    [[[[['suspendduration']]]]]
                        type = num
                        visu_acl = rw
                        cache = True
                        enforce_updates  = no
                [[[['rules']]]]
                    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 = screens.sueden_s2.hoehe
                    as_item_wind = screens.sicherheit.windlock
                                        
                    eval_trigger = screens.automatik_lock | jalousien.autoblind.screentrigger | screens.sueden_s2.automatik.lock | screens.sueden_s2.automatik.suspend | screens.sueden_s2.automatik.manuell | screens.sicherheit | Wetterstation.Schnee
                    [[[[['wind']]]]]
                        type = foo
                        as_use = jalousien.autoblind.default.wind_screens
                    [[[[['lock']]]]]
                        type = foo
                        as_use = jalousien.autoblind.default.lock
                    [[[[['suspend_night']]]]]
                        type = foo
                        as_use = jalousien.autoblind.default.suspend_night
                    [[[[['schnee']]]]]
                        type = foo
                        as_use = jalousien.autoblind.default.schnee
                     [[[[['night']]]]]
                        type = foo
                        as_use = jalousien.autoblind.default.night
                    [[[[['evening']]]]]
                        type = foo
                        as_use = jalousien.autoblind.default.evening    
                    [[[[['suspend']]]]]
                        type = foo
                        as_use = jalousien.autoblind.default.suspend
                     [[[[['suntrack']]]]]
                        type = foo
                        as_use = jalousien.autoblind.default.suntrack_screens  
                    [[[[['day']]]]]
                        type = foo
                        as_use = jalousien.autoblind.default.day
    Meine Herangehensweise mit den 2 Suspend-Items ist vermutlich unnötig kompliziert, veranschaulicht aber das Prinzip recht gut. Wenn ein Taster oder die Visu den Behang ändert, geht die Jalousie vom Suntrack bzw. Hochgefahren (day) Modus in den "Aussetzen"-Modus. Am Abend aber wird Suspend immer aufgehoben, weil der Zustand höherrangig definiert ist. Möchte ich jetzt aber doch mal bei Dunkelheit wieder manuell den Behang ändern und soll dieser manuelle Zustand x Minuten dauern, greift dort dann der suspend_night Zustand.

    Die Zustände sind im default wie folgt definiert:
    Code:
                [[[['suspend']]]]
                    type = foo
                    name = Ausgesetzt
                    as_set_suspend = True
                    enforce_updates  = yes
                    as_set_suspend_end = eval:autoblind_eval.insert_suspend_time('..suspend', suspend_text='%X')
                    [[[[['enter_manuell']]]]]
                        type = foo
                        as_value_trigger_source = eval:autoblind_eval.get_relative_itemid('..manuell')
                    [[[[['enter_stay']]]]]
                        type = foo
                        as_value_laststate = var:current.state_id                            
                        as_agemax_manuell = var:item.suspend_time
                        as_value_suspend = True
    
                [[[['suspend_night']]]]
                    type = foo
                    name = Ausgesetzt
                    enforce_updates  = yes
                    as_set_suspend = True
                    as_set_suspend_end = eval:autoblind_eval.insert_suspend_time('..suspend', suspend_text='%X')
                    [[[[['enter_manuell']]]]]
                        type = foo
                        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_max_brightness = item:jalousien.autoblind.settings.night.max_brightness
                        as_value_trigger_source = eval:autoblind_eval.get_relative_itemid('..manuell')
                    [[[[['enter_stay']]]]]
                        type = foo
                        as_value_laststate = var:current.state_id                            
                        as_agemax_manuell = var:item.suspend_time
                        as_value_suspend = True

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hi @offline!
    Hier der Debugcode vom Manuell-Item, das nicht in den Suspend Modus will, wenn ich eine "0" sende nach einem Neustart:
    Code:
    2016-02-11 21:31:10.291797 manual_item_update_eval ========================================================
    2016-02-11 21:31:10.292831 running for item 'screens.sueden_s2.automatik.manuell' source 'Init' caller 'None'
    2016-02-11 21:31:10.293358 Current value of item screens.sueden_s2.automatik.manuell is False
    2016-02-11 21:31:10.293793 get_original_caller: returning Init, None
    2016-02-11 21:31:10.294205 original trigger by caller 'Init' source 'None'
    2016-02-11 21:31:10.294664 checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26']
    2016-02-11 21:31:10.295533       Init:*: matching. Writing value False
    2016-02-11 21:31:38.483832 manual_item_update_eval ========================================================
    2016-02-11 21:31:38.484741 running for item 'screens.sueden_s2.automatik.manuell' source 'Eval' caller 'screens.sueden_s2.hoehe'
    2016-02-11 21:31:38.485735 Current value of item screens.sueden_s2.automatik.manuell is False
    2016-02-11 21:31:38.486938 get_original_caller(Eval, screens.sueden_s2.hoehe): changed by KNX, 1.1.5
    2016-02-11 21:31:38.487964 get_original_caller: returning KNX, 1.1.5
    2016-02-11 21:31:38.488677 original trigger by caller 'KNX' source '1.1.5'
    2016-02-11 21:31:38.489368 checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26']
    2016-02-11 21:31:38.489967       Init:*: not matching
    2016-02-11 21:31:38.490524       SQLite:*: not matching
    2016-02-11 21:31:38.491087       KNX:1.1.5: matching. Writing value False
    2016-02-11 21:32:43.211114 manual_item_update_eval ========================================================
    2016-02-11 21:32:43.216044 running for item 'screens.sueden_s2.automatik.manuell' source 'Eval' caller 'screens.sueden_s2.hoehe'
    2016-02-11 21:32:43.217779 Current value of item screens.sueden_s2.automatik.manuell is False
    2016-02-11 21:32:43.220149 get_original_caller(Eval, screens.sueden_s2.hoehe): changed by AutoBlind Plugin, None
    2016-02-11 21:32:43.221162 get_original_caller: returning AutoBlind Plugin, None
    2016-02-11 21:32:43.222535 original trigger by caller 'AutoBlind Plugin' source 'None'
    2016-02-11 21:32:43.223804 checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26']
    2016-02-11 21:32:43.278078       Init:*: not matching
    2016-02-11 21:32:43.279730       SQLite:*: not matching
    2016-02-11 21:32:43.280952       KNX:1.1.5: not matching
    2016-02-11 21:32:43.282284       KNX:1.1.26: not matching
    2016-02-11 21:32:43.299202 No include limitation. Writing value True
    2016-02-11 21:54:04.396726 manual_item_update_eval ========================================================
    2016-02-11 21:54:04.401073 running for item 'screens.sueden_s2.automatik.manuell' source 'Eval' caller 'screens.sueden_s2.lz'
    2016-02-11 21:54:04.405795 Current value of item screens.sueden_s2.automatik.manuell is True
    2016-02-11 21:54:04.407168 get_original_caller(Eval, screens.sueden_s2.lz): changed by Init, None
    2016-02-11 21:54:04.408053 get_original_caller: returning Init, None
    2016-02-11 21:54:04.408860 original trigger by caller 'Init' source 'None'
    2016-02-11 21:54:04.409703 checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26']
    2016-02-11 21:54:04.410499       Init:*: matching. Writing value True
    2016-02-11 21:54:04.412747 manual_item_update_eval ========================================================
    2016-02-11 21:54:04.413511 running for item 'screens.sueden_s2.automatik.manuell' source 'Eval' caller 'screens.sueden_s2.lz'
    2016-02-11 21:54:04.414275 Current value of item screens.sueden_s2.automatik.manuell is True
    2016-02-11 21:54:04.415500 get_original_caller(Eval, screens.sueden_s2.lz): changed by Init, None
    2016-02-11 21:54:04.416336 get_original_caller: returning Init, None
    2016-02-11 21:54:04.417020 original trigger by caller 'Init' source 'None'
    2016-02-11 21:54:04.417776 checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26']
    2016-02-11 21:54:04.418468       Init:*: matching. Writing value True
    2016-02-11 21:54:05.879845 manual_item_update_eval ========================================================
    2016-02-11 21:54:05.881097 running for item 'screens.sueden_s2.automatik.manuell' source 'Eval' caller 'screens.sueden_s2.kz'
    2016-02-11 21:54:05.882073 Current value of item screens.sueden_s2.automatik.manuell is True
    2016-02-11 21:54:05.883478 get_original_caller(Eval, screens.sueden_s2.kz): changed by Init, None
    2016-02-11 21:54:05.884384 get_original_caller: returning Init, None
    2016-02-11 21:54:05.885260 original trigger by caller 'Init' source 'None'
    2016-02-11 21:54:05.886394 checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26']
    2016-02-11 21:54:05.890013       Init:*: matching. Writing value True
    2016-02-11 21:54:05.892085 manual_item_update_eval ========================================================
    2016-02-11 21:54:05.892730 running for item 'screens.sueden_s2.automatik.manuell' source 'Eval' caller 'screens.sueden_s2.kz'
    2016-02-11 21:54:05.893335 Current value of item screens.sueden_s2.automatik.manuell is True
    2016-02-11 21:54:05.894239 get_original_caller(Eval, screens.sueden_s2.kz): changed by Init, None
    2016-02-11 21:54:05.894889 get_original_caller: returning Init, None
    2016-02-11 21:54:05.895453 original trigger by caller 'Init' source 'None'
    2016-02-11 21:54:05.896082 checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26']
    2016-02-11 21:54:05.896662       Init:*: matching. Writing value True
    2016-02-11 21:54:12.814058 manual_item_update_eval ========================================================
    2016-02-11 21:54:12.815326 running for item 'screens.sueden_s2.automatik.manuell' source 'Eval' caller 'screens.sueden_s2.hoehe'
    2016-02-11 21:54:12.816149 Current value of item screens.sueden_s2.automatik.manuell is True
    2016-02-11 21:54:12.817335 get_original_caller(Eval, screens.sueden_s2.hoehe): changed by KNX, 1.1.5
    2016-02-11 21:54:12.818052 get_original_caller: returning KNX, 1.1.5
    2016-02-11 21:54:12.818724 original trigger by caller 'KNX' source '1.1.5'
    2016-02-11 21:54:12.819484 checking exclude values: ['Init:*', 'SQLite:*', 'KNX:1.1.5', 'KNX:1.1.26']
    2016-02-11 21:54:12.820175       Init:*: not matching
    2016-02-11 21:54:12.820837       SQLite:*: not matching
    2016-02-11 21:54:12.821495       KNX:1.1.5: matching. Writing value True

    Einen Kommentar schreiben:


  • firefox
    antwortet
    Hallo zusammen,

    muss auch mal wieder euren Rat konsultieren.
    Ich versuche mich gerade an der realtiven Item Referenzierung mit get_item.

    Default Items:
    Code:
    [EG]
        [[Autoblind]]
            [[[Default]]]
                as_item_autoshade = EG.Zentral.Rollo.Auto_shade
                as_item_daynight = EG.Zentral.Status.Nacht_Tag
                as_item_precenceBad = EG.Bad.Praesenz.Anwesend
                as_item_precence = EG.Zentral.Praesenz.Anwesenheit
                [[[[lock]]]]
                    type = foo
                    name = Automatik manuell gesperrt
                    #suspend-Item manuell zurueck setzen
                    as_set_suspend = False
                    [[[[[enter]]]]]
                        as_value_lock = True
                [[[[suspend]]]]
                    type = foo
                    name = Ausgesetzt
                    as_set_suspend = True
                    #verbleib in suspend wenn
                    [[[[[enter_manuell]]]]]
                        #Zustandsermittlung ueber das Manuell-Item ausgeloest
                        [COLOR=#FF0000]as_value_trigger_source = eval: autoblind_eval.get_item('State.manuell',1)[/COLOR]
                    [[[[[enter_stay]]]]]
                        #suspend bereits aktiviert wurde
                        as_value_laststate = var: current.state_id
                        as_agemax_manuell = 3600
                        as_value_suspend = True
    Autoblind Item:
    Code:
    [EG]
        [[Bad]]
            [[[Rollo]]]
               ...
    
                [[[[AutoBlind]]]]
                    [[[[[State]]]]]
                        #$order = 2
                        [[[[[[suspended]]]]]]
                            #Status: Automatik ist deaktiviert
                            type = bool
                            name = Suspend-Item
                            value = False
                            visu_acl = rw
                        [[[[[[lock]]]]]]
                            #Über dieses Item wird die Automatik gesperrt
                            type = bool
                            name = Sperr-Item
                            value = False
                            visu_acl = rw
                        [[[[[[stateId]]]]]]
                            type = str
                            name = Id des aktuellen Zustands
                            cache = True
                            visu_acl = ro
                        [[[[[[stateName]]]]]]
                            type = str
                            name = Name des aktuellen Zustands
                            cache = True
                            visu_acl = ro
                        [COLOR=#FF0000][[[[[[manuell]]]]]][/COLOR]
                            type = bool
                            name = Manuelle Bedienung
                            eval_trigger = EG.Bad.Rollo.Move | EG.Bad.Rollo.Stop | EG.Bad.Rollo.Pos
                            as_manuel_exclude = KNX:y.y.y | Init:*
                    [[[[[Rules]]]]]
                        type = bool
                        name = Rolladenautomatik
                        as_plugin = active
                        as_startup_delay = 60
                        eval_trigger = EG.Zentral.Rollo.Trigger | EG.Bad.Rollo.AutoBlind.State.lock | EG.Bad.Rollo.AutoBlind.State.suspended | EG.Bad.Rollo.AutoBlind.State.manuell
                        as_laststate_item_id = EG.Bad.Rollo.AutoBlind.State.stateId
                        as_laststate_item_name = EG.Bad.Rollo.AutoBlind.State.stateName
                        as_item_hoehe = EG.Bad.Rollo.Pos
                        as_mindelta_hoehe = 10
                        as_item_manuell = EG.Bad.Rollo.AutoBlind.State.manuell
                        as_item_lock = EG.Bad.Rollo.AutoBlind.State.lock
                        as_item_suspend = EG.Bad.Rollo.AutoBlind.State.suspended
                        [[[[[[lock]]]]]]
                            as_use = EG.Autoblind.Default.lock
                        [[[[[[suspend]]]]]]
                            as_use = EG.Autoblind.Default.suspend
                        [[[[[[night]]]]]]
                            as_use = EG.Autoblind.Default.night
                        [[[[[[morning]]]]]]
                            as_use = EG.Autoblind.Default.morning
                        [[[[[[evening]]]]]]
                            as_use = EG.Autoblind.Default.evening
                        [[[[[[day]]]]]]
                            as_use = EG.Autoblind.Default.day
    Führt leider ständig zum Fehler:
    Code:
    State EG.Bad.Rollo.AutoBlind.Rules.suspend:
    2016-02-11 21:45:09.254630       Name: Ausgesetzt
    2016-02-11 21:45:09.254654       Condition sets to enter state:
    2016-02-11 21:45:09.254678               Condition Set 'enter_manuell':
    2016-02-11 21:45:09.254701                       Condition 'trigger_source':
    2016-02-11 21:45:09.254725                               error: Condition trigger_source: Neither 'item' nor 'eval' given!
    2016-02-11 21:45:09.254750                               value from eval: autoblind_eval.get_item('State.manuell',1)
    2016-02-11 21:45:09.254775                               negate: False
    2016-02-11 21:45:09.254800               Condition Set 'enter_stay':
    2016-02-11 21:45:09.254824                       Condition 'suspend':
    2016-02-11 21:45:09.254847                               item: EG.Bad.Rollo.AutoBlind.State.suspended
    2016-02-11 21:45:09.254871                               value: True
    2016-02-11 21:45:09.254896                               negate: False
    2016-02-11 21:45:09.254920                       Condition 'manuell':
    2016-02-11 21:45:09.254962                               item: EG.Bad.Rollo.AutoBlind.State.manuell
    2016-02-11 21:45:09.254989                               negate: False
    2016-02-11 21:45:09.255013                               agemax: 3600
    2016-02-11 21:45:09.255039       Actions to perform if state becomes active:
    2016-02-11 21:45:09.255063               Action 'suspend':
    2016-02-11 21:45:09.255087                       item: EG.Bad.Rollo.AutoBlind.State.suspended
    2016-02-11 21:45:09.255110                       value: True
    get_item("State.manuell",1) müsste doch so aufgelöst werden, dass er aus ...Autoblind.Rules welches das plugin_active Attribut führt nach Autoblind.State.manuell macht.


    Einen Kommentar schreiben:


  • Bonze
    antwortet
    welche funktion hat das Suspend item ?
    wird dies direkt bei den Items definiert ? oder gibts eine möglichkeit dies in der default allgemein zu definieren?

    ich hab versucht mal in der eval
    as_name = eval:autoblind_eval.insert_suspend_time("beispiel. raffstore.automatik.suspend")
    mit variablen zu arbeiten, das wollte aber nicht wirklich funktionieren
    Zuletzt geändert von Bonze; 11.02.2016, 18:11.

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Onkelandy

    in "as_manual_logitem" muss die Id eines (existierenden) Items rein. Hintergrund ist, das das erweiterte Log so arbeitet, dass die Logs immer einem Item zugeordnet sind. Über "as_manual_logitem" wird angegeben, in das Log welches Items die Einträge beim Auswerten der eval-Funktion geschrieben werden. Du kannst hier z. B. das manuell-Item angeben, dann wird ein separates Log geschrieben. Du kannst aber z. B. auch das zugehörige AutoBlind-Objektitem angeben, dann landen die Logeinträge zur eval-Funktion mit in diesem Log.

    Der Fehler, den du in deinen letzten Post kopiert hast, kommt daher, weil ich nicht geprüft habe, ob das als as_manual_logitem angegebene Item auch existiert. Ich habe das korrigiert.

    Wenn die letzten Änderungen bei dir drin sind, stelle die Situation bitte nochmal nach und schicke mir wieder die Logs.

    Grüße
    offline

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hi offline
    Hmmm, kapiere das mit der Item ID nicht.. was muss hier angegeben werden? Ich bekomme im Log die Fehlermeldung:
    Code:
    problem evaluating sh.autoblind_plugin_functions.manual_item_update_eval('screens.sueden_s2.automatik.manuell', caller, source): 'NoneType' object has no attribute 'id'
    Das Verhalten ist bei mir leider nach wie vor dasselbe.. Jalousie nach unten fahren -> Suspend. Jalousie nach oben (0) -> nix

    Einen Kommentar schreiben:


  • offline
    antwortet
    Hi Onkelandy

    meine Änderung hat nun zwei Tage lang funktioniert. Ich habe sie daher eben in den Develop-Zweig auf GitHub gepusht. Es wird nun eine Sperre gesetzt, während die Eval-Funktion eines Manuell-Items ausgewertet wird. Dadurch wird eine parallele Auswertung verhindert.

    Es gibt auch noch eine Änderung am Logging für die eval-Funktion. Diese passiert nicht mehr automatisch ins normale smarthome.py log. Man kann nun beim Manuell-Item über das Attribut "as_manual_logitem" eine Item-Id angeben. Diese Item-Id wird dann als Basis für die Logdatei im erweiterten Logging des AutoBlind-Plugins verwendet. Wenn das Attribut nicht angegeben ist, findet kein Logging statt.

    Grüße
    offline

    Einen Kommentar schreiben:

Lädt...
X