Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
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.
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
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.
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
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".
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.
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.
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?
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.
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
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.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: