Hallo ivande
ich habe da eine Vermutung, wie ich das Problem beheben kann ... ich bin aber leider über's Wochenende unterwegs, so dass ich erst nächste Woche dazu kommen werde, das einzubauen. Wenn du Python-technisch bewandert bist, kann ich dir aber auch gerne sagen, wo du testweise mal was einbauen kannst ...
Grüße
offline
Ankündigung
Einklappen
Keine Ankündigung bisher.
Automatische Beschattung
Einklappen
X
-
Hallo offline,
hab ich mich zufrüh gefreut. die Sache funktioniert nur im Debug-Modus:
wenn ich das "as_manual_exclude = Init:*" rausnehme, sind beim Starten vom shNG alle Raffstoren im Suspend-Modus. Starte ich shNG im Debug-Modus (--d), dann ist nach dem Start kein Raffstore im suspend? hmm?
Gruß Ivan
Einen Kommentar schreiben:
-
Die Ursache war: "as_manual_exclude = Init:*" war noch im Item, owohl ich es gelöscht hatte, (Hab eine Backup-Datei zurückgespielt, und da war es noch enthalten)
PHP-Code:[[[[[[manuell]]]]]]
type = bool
name = Manuelle Bedienung
as_manual_logitem = Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell
as_manual_invert = True
eval_trigger = Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_positionen | Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_taster
# as_manual_exclude = Init:* # Init muss raus, sonst will der suspend-Modus nicht bei einer gesendeten "0" nach Neustart
Danke offline, erst durch Deine Antwort ist mir der Baum im Wald aufgefallen
Einen Kommentar schreiben:
-
Hi ivande
nach dem Log, das du angehängt hast, sollte er aber die Statusermittlung nicht triggern. Er mekt, dass der aktuelle Wert des Manuell-Items "False" ist, dann ermittelt er "Init" als Auslöser der Änderung. "Init" steht auf der Exclude-Liste also behält er den Wert "False" für das Manuell-Item bei. Da "enforce_updates" nicht für das Manuell-Item nicht gesetzt ist, sollte das nicht zum Triggern führen. Wenn doch müsste ich mir das SHNG-Coding an der Stelle nochmal ansehen, das wäre nämlich nicht richtig.
Grüße
offline
Einen Kommentar schreiben:
-
Ist mir schon länger aufgefallen: Damit das manuell Item nach den Neustart von shNG in den Suspend-Status geht, muss ich immer erst eine "1" senden. Also Raffstore oder Lamelle "Runter". Wenn ich erst auf Rauf klicke geht es nicht in den Suspend.
Das Problem hab ich auch schon hier gefunden: siehe Post 478
PHP-Code:[[SuspendNight]]
#$order = 20
type = foo
name = Automatik für eine Zeit ausgesetzt
enforce_updates = True
as_name = eval: autoblind_eval.insert_suspend_time('..suspend', suspend_text='Ausgesetzt bis %X')
as_set_suspend = True
[[[enter_manuell]]]
#$order = 2
as_max_sun_altitude = 20
as_max_Daemmerung = 200
as_value_trigger_source = eval: autoblind_eval.get_relative_itemid('..manuell')
[[[enter_stay]]]
#$order = 3
as_value_laststate = var:current.state_id
as_agemax_manuell = var:item.suspend_time
as_value_suspend = True
PHP-Code:[[[[[[manuell_positionen]]]]]]
type = bool
name = Manuelle Bedienung Positionen
as_manual_include = Visu:*
as_manual_invert = True
eval_trigger = Dg.Eltern.Jalousie.Fenster.Position | Dg.Eltern.Jalousie.Fenster.Lamellenposition
[[[[[[manuell_taster]]]]]]
type = bool
name = Manuelle Bedienung über Tasten
eval = not sh.Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_taster()
as_manual_invert = True
eval_trigger = Dg.Eltern.Jalousie.Fenster.Auf_ab | Dg.Eltern.Jalousie.Fenster.Lamellenverstellung_stop | Dg.Eltern.Jalousie.Fenster.ManuellKNX
[[[[[[manuell]]]]]]
type = bool
name = Manuelle Bedienung
as_manual_logitem = Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell
as_manual_invert = True
eval_trigger = Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_positionen | Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_taster
hat das Problem sonst noch jemand? da ich zurzeit öfters sh neu starte (Testen von shNG, svTNG, ...) ist es unangenehm wenn der Suspend-Modus nicht immer aktiviert wird, wenn er sollte..
2016-08-23 23:49:26.924024 running for item 'Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell' source 'Eval' caller 'Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_tast er'
2016-08-23 23:49:26.924075 Current value of item Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell is False
2016-08-23 23:49:26.924121 get_original_caller(Eval, Dg.Eltern.Jalousie.Fenster.AutoBlind.manuell_taste r): changed by Eval, Dg.Eltern.Jalousie.Fenster.Lamellenverstellung_sto p
2016-08-23 23:49:26.924165 get_original_caller(Eval, Dg.Eltern.Jalousie.Fenster.Lamellenverstellung_sto p): changed by Init, None
2016-08-23 23:49:26.924200 get_original_caller: returning Init, None
2016-08-23 23:49:26.924234 original trigger by caller 'Init' source 'None'
2016-08-23 23:49:26.924270 checking exclude values: ['Init:*']
2016-08-23 23:49:26.924306 Init:*: matching. Writing value False
Gruß Ivan
Zuletzt geändert von ivande; 23.08.2016, 22:52.
Einen Kommentar schreiben:
-
Sorry 5 Sekunden natürlich. Mich macht es nur stutzig, dass es fast auf die 1/100 Sekunde genau 5 Sekunden sind. Aber auch wenn's direkt vom Aktor kommt, sollte im Log zum manuell-Item erkennbar sein, wie der Wert ermittelt wurde
Einen Kommentar schreiben:
-
Hi! Das sind 5 Sekunden und wäre nach meiner Interpretation die Zeit, die der Aktor gebraucht hat, um den aktuellen Lamellenwert zurück zu melden, meinst nicht?
Einen Kommentar schreiben:
-
Das sollte in der Tat nicht sein, genau sowas sollte ja über as_manual_exclude ausgeschlossen sein. Was mich dabei aber wundert ist, dass die zweite Statusermittlung (2016-08-11 11:14:04.830882) ziemlich exakt 5 Minuten nach dem Ende der ersten Neuermittlung (2016-08-11 11:13:59.801515) passiert. Das ist entweder ein extremer Zufall, oder es deutet darauf hin, das as_manual_eval eine andere Quelle für die Änderung ermittelt als die Prüfungen im Plugin. Das sollte dann im Log zum manuell-Item sichtbar sein, dass du nun aktiviert hast.
Einen Kommentar schreiben:
-
Hi offline
Das mit dem manual_logitem hab ich jetzt bei manchen Jalousien aktiviert, aber ich konnte das Problem partout aktuell nicht mehr nachbilden. Nichts desto trotz tauchte es bei mir in den letzten Wochen ab und an auf.
Eine Jalousie ist im Sonnenstand-Modus. Ich beende SmarthomeNG und starte es dann wieder. Direkt nach dem Start geht die Jalousie brav wieder in den Sonnenstandmodus zurück, allerdings wird wohl durch das leichte Ändern der Lamellen das Manuell-Item getriggert. Und jetzt kommt's - obwohl ich den KNX Aktor (1.1.4) aus dem Manuell Item ausgeschlossen habe, wechselt der Zustand in "Suspend".
Ich weiß, dass es das Problem schon mal gab und du da einen Fix eingebaut hast. Offenbar greift dieser Fix auch meistens, aber offenbar nicht immer.. Mehr kann ich dazu leider auch nicht sagen - vielleicht passiert das ja noch irgendwann wieder mit aktiviertem manual_logitem, dann kann ich mehr berichten. Vielleicht fällt dir aber gleich ein, wo damals das Problem lag
Einen Kommentar schreiben:
-
Hi Onkelandy
kannst du mir nochmal kurz sagen, was das Problem ist? Ich sehe vermutlich den Wald vor lauter Bäumen nicht.
In deiner Konfiguration des Manuell-Items kannst du die Zeile "as_manual_invert = ..." rausnehmen. Die brauchst du nur, wenn weder as_manual_exclude noch as_manual_include angegeben sind.
Wenn du ein Problem bei der Auswertung des Manuell-Items vermutest kannst du in der Konfiguration dieses Items das Attributangeben. Dadurch wird das erweiterte Logging des Plugins für die Auswertung von as_manual_exclude/_include aktiviert. Du bekommst dann eine weitere Logfile, deren Namen aus dem im Attribut angegebenen Item zusammengesetzt wird. Daher bietet es sich an, bei diesem Attribut einfach nochmal den Namen des Manuell-Items anzugeben.Code:as_manual_logitem = <Vollständige Item-Id>
Grüße
offline
Einen Kommentar schreiben:
-
offline
Jetzt ist der Fehler doch schon ab und zu aufgetaucht und zwar direkt nach einem Neustart. Ich gehe daher davon aus, dass hier bei der exclude-Routine zu Beginn etwas nicht stimmt. Danach wohl schon. Habe gerade den neuesten develop Release gezogen..
Hier das Log
Das Item:Code:2016-08-11 11:13:59.451195 Update state of item jalousien.og.osten_stiegenhaus.automatik.rules ============ 2016-08-11 11:13:59.452119 Update triggered by Startup Delay (item=jalousien.og.osten_stiegenhaus.automatik.rules source=None dest=None) ... 2016-08-11 11:13:59.520768 State can be entered 2016-08-11 11:13:59.521335 Staying at jalousien.og.osten_stiegenhaus.automatik.rules.suntrack ('Sonnenstand') 2016-08-11 11:13:59.522016 Action 'height': Set 'jalousien.og.osten_stiegenhaus.hoehe' to '100' 2016-08-11 11:13:59.773399 Action 'suspend_end': Set 'jalousien.og.osten_stiegenhaus.automatik.autostate_suspend_end' to '' 2016-08-11 11:13:59.783361 Action 'suntracking': Set 'jalousien.autoblind.settings.suntracking' to 'True' 2016-08-11 11:13:59.793325 Action 'suspend': Set 'jalousien.og.osten_stiegenhaus.automatik.suspend' to 'False' 2016-08-11 11:13:59.795813 Executing method 'SunTracking()' 2016-08-11 11:13:59.797522 Current sun altitude is 47.70685644673391° 2016-08-11 11:13:59.800413 Blinds at right angle to the sun at 42.29314355326609° 2016-08-11 11:13:59.801515 Action 'lamella': Set 'jalousien.og.osten_stiegenhaus.lamellen' to '42.29314355326609' 2016-08-11 11:14:04.830882 Update state of item jalousien.og.osten_stiegenhaus.automatik.rules ============ 2016-08-11 11:14:04.832095 Update triggered by Eval (item=jalousien.og.osten_stiegenhaus.automatik.rules source=jalousien.og.osten_stiegenhaus.automatik.manuell dest=None) 2016-08-11 11:14:04.833678 Eval initially triggered by KNX (item=jalousien.og.osten_stiegenhaus.lamellen source=1.1.4) 2016-08-11 11:14:04.835956 Executing method 'get_relative_itemvalue(..settings.suspendduration)' 2016-08-11 11:14:04.837373 Last state: jalousien.og.osten_stiegenhaus.automatik.rules.suntrack ('Sonnenstand') 2016-08-11 11:14:04.838128 Check if state 'jalousien.og.osten_stiegenhaus.automatik.rules.suntrack' ('Sonnenstand') can be left: 2016-08-11 11:14:04.838780 No condition sets defined -> matching 2016-08-11 11:14:04.839341 State can be left ... 2016-08-11 11:14:04.881408 Check if state 'jalousien.og.osten_stiegenhaus.automatik.rules.suspend' ('Ausgesetzt') can be entered: 2016-08-11 11:14:04.882047 Check condition set 'enter_manuell': 2016-08-11 11:14:04.883235 Executing method 'get_relative_itemid(..manuell)' 2016-08-11 11:14:04.884511 Condition 'trigger_source': value=jalousien.og.osten_stiegenhaus.automatik.manuell negate=False current=jalousien.og.osten_stiegenhaus.automatik.manuell 2016-08-11 11:14:04.885217 OK -> matching 2016-08-11 11:14:04.885860 Age of 'trigger_source': No limits given 2016-08-11 11:14:04.886438 State can be entered 2016-08-11 11:14:04.887046 Changing to jalousien.og.osten_stiegenhaus.automatik.rules.suspend ('Ausgesetzt') 2016-08-11 11:14:05.046132 Action 'suspend': Set 'jalousien.og.osten_stiegenhaus.automatik.suspend' to 'True' 2016-08-11 11:14:05.050667 Executing method 'insert_suspend_time(..suspend, %X)' 2016-08-11 11:14:05.053468 Suspend time is 14400 2016-08-11 11:14:05.056803 Suspend item is jalousien.og.osten_stiegenhaus.automatik.suspend 2016-08-11 11:14:05.060221 Current suspend age: 0.011843 2016-08-11 11:14:05.061268 Remaining suspend time: 14399.988157 2016-08-11 11:14:05.064902 Suspend finished at 2016-08-11 15:14:05.051550+02:00 2016-08-11 11:14:05.067331 Action 'suspend_end': Set 'jalousien.og.osten_stiegenhaus.automatik.autostate_suspend_end' to '15:14:05'
Bei einer anderen Jalousie, die exakt gleich konfiguriert ist, gab es das Problem nicht..Code:[[[[['manuell']]]]] type = bool name = Manuelle Bedienung as_manual_invert = True as_manual_exclude = Database:* | KNX:1.1.4 eval_trigger = jalousien.og.osten_stiegenhaus.lz | jalousien.og.osten_stiegenhaus.kz | jalousien.og.osten_stiegenhaus.hoehe | jalousien.og.osten_stiegenhaus.lamellen | jalousien.og.szenen | jalousien.alle | jalousien.og.osten.lz | jalousien.og.osten.kz
Code:2016-08-11 11:14:01.407966 Update state of item jalousien.og.osten_wohnen.automatik.rules ================= 2016-08-11 11:14:01.409316 Update triggered by Eval (item=jalousien.og.osten_wohnen.automatik.rules source=jalousien.og.osten_wohnen.automatik.manuell dest=None) 2016-08-11 11:14:01.411043 Eval initially triggered by AutoBlind Plugin (item=jalousien.og.osten_wohnen.lamellen source=None) 2016-08-11 11:14:01.412041 Ignoring changes from AutoBlind Plugin 2016-08-11 11:14:01.466032 Update state of item jalousien.og.osten_wohnen.automatik.rules ================= 2016-08-11 11:14:01.467073 Update triggered by Eval (item=jalousien.og.osten_wohnen.automatik.rules source=jalousien.og.osten_wohnen.automatik.manuell dest=None) 2016-08-11 11:14:01.468559 Eval initially triggered by AutoBlind Plugin (item=jalousien.og.osten_wohnen.lamellen source=None) 2016-08-11 11:14:01.469471 Ignoring changes from AutoBlind Plugin 2016-08-11 11:15:56.250934 Update state of item jalousien.og.osten_wohnen.automatik.rules ================= 2016-08-11 11:15:56.258389 Update triggered by Eval (item=jalousien.og.osten_wohnen.automatik.rules source=jalousien.autoblind.jalousietrigger dest=None) 2016-08-11 11:15:56.265316 Eval initially triggered by Scheduler (item=jalousien.autoblind.jalousietrigger source=None)
Zuletzt geändert von Onkelandy; 11.08.2016, 15:38.
Einen Kommentar schreiben:
-
offline vielen Dank für die Antworten. Menno, da hab ich teils die Doku zu wenig genau gecheckt
Das mit dem SmartPlugin ist schon mal top, mal sehen, ob das dann funzt. Und ja, die Sonderlogging-Geschichte funktioniert derzeit eh prima wie sie ist.
Das mit der eigenen Eval-Routine habe ich eh schon testhalber umgesetzt. Mir ist noch nicht ganz klar, wie ich das am besten implementiere, sodass das Ganze unabhängig von deinem Plugin funzt, aber da werd ich schon drauf kommen
Eigentlich wäre es generell cool, einfach ein include und exclude in jedes beliebige Item schreiben zu können.
Einen Kommentar schreiben:
-
So, ich hoffe dass ich zu allen relevanten Themen, die wärend meines Urlaubs gepostet wurden, nun meinen Senf dazu gegeben habe. Würstchen die meinen, sie hätten ihren Senf noch nicht abbekommen können sich gerne nochmal melden ;-))
Grüße
offline
Einen Kommentar schreiben:
-
Hi @Onkelandy
Für das Standard-Logging des Plugins allgemein habe ich das umgesetzt. Push auf GitHub (Develop-Branch) ist erfolgt.Zitat von Onkelandy Beitrag anzeigenVielleicht wärs noch möglich, auf die neue logging-Option von SmarthomeNG einzugehen... das wäre cool:
self.logger = logging.getLogger(__name__) https://knx-user-forum.de/forum/supp...konfigurierbar
Für das erweiterte Logging macht das aber in meinen Augen derzeit keinen Sinn. Ich habe keine Möglichkeit gefunden ie Logger so zu definieren, dass jeder Logger in eine eigene Datei schreibt (außer für jedes Autoblind-Item einen eigenen Handler in der YAML-Datei zu definieren ...).
Grüße
offlineZuletzt geändert von offline; 09.08.2016, 19:46.
Einen Kommentar schreiben:
-
Doch .. genau das gibt's schon (und zwar genauso wie du es oben geschrieben hast). Siehe https://github.com/i-am-offline/smar...estimmter-wertZitat von Onkelandy Beitrag anzeigenoffline
Noch in kurze Frage zu einem Feature, das es vermutlich nicht gibt..
Ist es möglich, bei einzelnen Bedingungen auch eine ODER Abfrage zu machen? Mit eval wird das vermutlich nicht gehen oder doch?
Als Beispiel:
Man hat eine Bedingungsgruppe mit sagen wir 10 verschiedenen Bedingungen. Eine davon kann aber beispielsweise 3, 4 unterschiedliche Werte aufweisen, um in dn entsprechenden Zustand zu kommen. Jetzt wäre es deutlich übersichtlicher, wenn man für diese eine Bedingung sowas angeben könnte anstatt die ganze Wurst 4 Mal hinzuschreiben und abzuändern:
Code:[COLOR=#FF0000]as_value_modus = 1 | 4 | 6 | 7[/COLOR]
Grüße
offline
Einen Kommentar schreiben:

Einen Kommentar schreiben: