Ankündigung
Einklappen
Keine Ankündigung bisher.
Automatische Beschattung
Einklappen
X
-
Dank dir Andy. Die beiden Beispiele haben mich ja etwas verwirrt. Danke für die Aufklärung.
-
martinb07, ja, es gibt jetzt kein eigenes autoblind Unteritem mehr beim Rollo. Du musst alle Definitionen wie sie in der Readme stehen direkt ins Jalousie-Item geben - und dann natürlich die geforderten Unteritem...
Ein paar Posts zuvor habe ich mal ein Beispiel von mir gepostet, aber auch in der Readme ganz unten steht ein Beispiel. Da musst du umbauen!
Einen Kommentar schreiben:
-
Offline, Danke für den Tipp. Ich habe jetzt also ein neues Item gemacht, bei dem das autoblind Plugin aktiv ist und dort einen Cycle eingestellt. Dieses Item habe ich dann als eval_trigger bei allen Jalousien definiert, wobei ich dort dann das Cycle überall heraus genommen habe. Bis dato scheint das super zu funzen. Merci!
Einen Kommentar schreiben:
-
Ich glaube ich habe mich jetzt im Wald verlaufen.
Habe in letzter Zeit nur noch sporadisch mitgelesen und nebenbei das Plugin in meine Installation integriert. Dabei habe ich jetzt anscheinend etwas durcheinander gebracht.
Ich fange jetzt mal ganz unten an und bitte um Korrekturen bzw. Hilfestellungen.
Das Plugin wird erkannt und initalisiert, sagt allerdings im Log, dass es deaktiviert wurde, da keine items gefunden wurden.
Beispiel eines Items:
Im zentral.conf steht folgende:Code:[[[rollo]]] name = Rollo Zimmer [[[[fahren]]]] type = bool visu = yes knx_dpt = 1 knx_send = 2/2/12 [[[[schritt]]]] type = bool visu = yes knx_dpt = 1 knx_send = 2/2/13 [[[[pos]]]] type = num visu = yes knx_dpt = 5.001 knx_send = 2/2/14 knx_init = 2/2/15 [[[[schaltuhr]]]] type = dict uzsu_item = og.zimmer.rollo.pos cache = True visu_acl = rw [[[[AutoBlind]]]] watch_manual = og.zimmer.rollo.fahren | og.zimmer.rollo.schritt | og.zimmer.rollo.pos | og.zimmer.rollo.schaltuhr manual_break = 7200 [[[[[active]]]]] type = bool visu_acl = rw cache = on [[[[[lastpos_id]]]]] type = str visu_acl = r cache = on [[[[[lastpos_name]]]]] type = str visu_acl = r cache = on [[[[[night]]]]] use = autoblind.default.night [[[[[morning]]]]] use = autoblind.default.morning [[[[[evening]]]]] use = autoblind.default.evening [[[[[suntrack]]]]] use = autoblind.default.suntrack_front2 [[[[[day]]]]] use = autoblind.default.day
Ich bin nun schon soweit, dass das "as_plugin=active" fehlt. Als ich eure Zeilen und die neue (?) Readme so gesehen habe, viel mir auf, dass es in der Struktur doch einige Differenzen gibt.Code:[autoblind] [[default]] item_brightness = zentral.sonstiges.helligkeit_aussen_og item_temperature = wp.temp.aussen [[[night]]] type = foo name = Night position = 100,0 [[[[enter]]]] max_brightness = 100 min_time = 17,0 max_time = 8,0 [[[morning]]] type = foo name = Twilight in the morning position = 100,25 [[[[enter]]]] min_brightness = 100 max_brightness = 300 min_time = 0,0 max_time = 12,0 [[[evening]]] type = foo name = Twilight in the evening position = 100,75 [[[[enter]]]] min_brightness = 100 max_brightness = 300 min_time = 12,0 max_time = 24,0 [[[suntrack_front1]]] type = foo name = Day (tracking the sun) position = auto [[[[enter]]]] min_brightness = 60000 min_sun_altitude = 20 min_sun_azimut = 170 max_sun_azimut = 270 [[[[leave]]]] max_brightness = 35000 min_age = 1800 [[[suntrack_front2]]] type = foo use = autoblind.default.suntrack_front1 [[[[enter]]]] min_sun_azimut = 260 max_sun_azimut = 360 [[[suntrack_front3]]] type = foo use = autoblind.default.suntrack_front1 [[[[enter]]]] min_sun_azimut = 70 max_sun_azimut = 170 [[[day]]] type = foo name = Day (static) position = 0,100 [[[[enter]]]] min_time = 6,0 max_time = 22,0 [[[child_nap]]] name = Childrens nap after lunch position = 100,0 [[[[enter]]]] min_time = 12,15 max_time = 16,0 [[[child_sleep]]] name = Childrens sleep at night position = 100,0 [[[[enter]]]] min_time = 19,30 max_time = 08,30
Verwende ich einen alten Stand?
Vielen Dank schon mal.
Einen Kommentar schreiben:
-
Hi onkelandy,
ich denke nicht das das an der Anzahl der zu berechnenden Zustände liegt. Das sollte sich maximal im Bereich einiger Sekundenbruchteile abspielen. Ich denke eher, das das an der Art und Weise liegt, wie der Scheduler von Smarthome.py arbeitet. Ich habe mir das entsprechende Coding mal angesehen. Dabei sind mir zwei Sachen aufgefallen:- Wenn beim Starten von smarthome.py die Scheduler-Einträge für Items mit cron bzw. cycle-Attribut angelegt werden, wird automatisch ein Offset zur Laufzeit ergänzt um die Scheduler-Jobs zu streuen. Dieses Offset wird zufällig ermittelt und beträgt zwischen 10 und 15 Sekunden.
- Wenn der Scheduler ein Item triggert, setzt er die nächste Laufzeit für dieses Item zurück. Erst beim nächsten Durchlauf des Schedulers wird die nächste Laufzeit neu berechnet. Bei Cycle wird dabei einfach die Cycle-Zeit zur aktuellen Zeit addiert. Wenn ein Durchlauf des Schedulers sich etwas verzögert, verlängert sich dadurch ggf. die Zeit bis zum nächsten Aufruf.
Ich denke, dass diese beiden Verhaltensweisen zusammen dafür sorgen können, dass die einzelnen Items bei cycle streuen und ggf. auseinanderlaufen. Ich habe das bei mir selbst beobachtet, wobei es bei mir keine 30 Sekunden sind, sondern nur ca. 3-5. Du kannst ja mal in den Logs der beiden Jalousien schauen, ob sie diesen Abstand seit dem letzten Resart von Smarthome.py haben oder ob da ein Drift erkennbar ist.
Wenn du alle Jalousien immer gemeinsam auslösen willst, dürfte der sinnvollste Weg darin liegen, ein separates Item mit einem cycle zu haben, dass dann alle Jalousie-Items triggert.
Grüße
offline
Einen Kommentar schreiben:
-
Heho offline!
Ich hab jetzt in den letzten Wochen zwei Phänomene beobachtet, die ich nicht so ganz zuordnen kann. Vielleicht ist das auch Teil des Konzepts und es passt so. Jedenfalls werden die Jalousien bei einem automatischen Durchlauf (Cycle) immer ziemlich verzögert geschaltet, bei einem Trigger aber fahren sie exakt zeitgleich. Ich gehe mal davon aus, dass eine gewisse Verzögerung logisch ist, weil ja deutlich mehr Zustände errechnet werden müssen als bei einem Trigger. Aber teils sind die Abstände doch recht beträchtlich, zumal die Items zB direkt untereinander deklariert wurden bzw. auch alphabetisch beisammen liegen. Manchmal führt das sogar dazu, dass eine Jalousie mit dem eigtl. gleichen Zustand erst beim nächsten Durchlauf gefahren wird, in meinem Fall also 10 Minuten später.
Die Items sind absolut identisch deklariert und es gibt auch keinerlei Delay-Definitionen..
Hier ist das erste Update von suntrack:
Und hier bei der Jalousie direkt daneben. Aber doch eine ganze halbe Minute später!Code:2015-07-31 12:50:38.470800 Update state of item Sueden Jalousie Schiebefix ================================ 2015-07-31 12:50:38.485710 Last state: sueden.j9_schiebefixteil.day ('Tag (statisch)') 2015-07-31 12:50:38.487491 Check if state 'sueden.j9_schiebefixteil.day' ('Tag (statisch)') can be left: 2015-07-31 12:50:38.489157 State can be left 2015-07-31 12:50:38.507352 Check if state 'sueden.j9_schiebefixteil.suntrack' ('Sonnenstand') can be entered: 2015-07-31 12:50:38.509232 Check condition set 'enter': 2015-07-31 12:50:38.523838 Age of 'temperature': No limits given 2015-07-31 12:50:38.525945 Age of 'sun_altitude': No limits given 2015-07-31 12:50:38.527908 Age of 'sun_azimut': No limits given 2015-07-31 12:50:38.530584 Age of 'brightness_south': No limits given 2015-07-31 12:50:38.543131 State can be entered 2015-07-31 12:50:38.545112 Changing to sueden.j9_schiebefixteil.suntrack ('Sonnenstand')
Hier die Items (etwas gekürzt):Code:2015-07-31 12:51:11.453865 Update state of item Sueden Jalousie Schiebetuere ============================== 2015-07-31 12:51:11.457249 Last state: sueden.j8_schiebetuere.day ('Tag (statisch)') 2015-07-31 12:51:11.459037 Check if state 'sueden.j8_schiebetuere.day' ('Tag (statisch)') can be left: 2015-07-31 12:51:11.475116 State can be left 2015-07-31 12:51:11.477035 Check if state 'sueden.j8_schiebetuere.suntrack' ('Sonnenstand') can be entered: 2015-07-31 12:51:11.478716 Check condition set 'enter': 2015-07-31 12:51:11.493259 Age of 'temperature': No limits given 2015-07-31 12:51:11.495264 Age of 'sun_altitude': No limits given 2015-07-31 12:51:11.497263 Age of 'sun_azimut': No limits given 2015-07-31 12:51:11.499217 Age of 'brightness_south': No limits given 2015-07-31 12:51:11.517763 State can be entered 2015-07-31 12:51:11.519544 Changing to sueden.j8_schiebetuere.suntrack ('Sonnenstand')
Merci für deine Antwort!Code:[['j8_schiebetuere']] type = foo cycle = 600 as_plugin = active name='Sueden Jalousie Schiebetuere' as_lock_item = sueden.j8_schiebetuere.autostate_lock as_laststate_item_id = sueden.j8_schiebetuere.autostate_id as_laststate_item_name = sueden.j8_schiebetuere.autostate_name as_item_height = sueden.j8_schiebetuere.hoehe as_item_lamella = sueden.j8_schiebetuere.lamellen as_suspend_watch = sueden.j8_schiebetuere.lz | sueden.j8_schiebetuere.kz | jalousien.sued.kz | jalousien.sued.lz eval_trigger=jalousien.automatik_lock as_suspend_item = sueden.j8_schiebetuere.autostate_suspend [[[autostate_lock]]] type = bool knx_dpt = 1 visu_acl = rw cache = on enforce_updates = true [[[autostate_id]]] type = str visu_acl = r cache = on [[[autostate_name]]] type = str visu_acl = r [[[autostate_suspend]]] type = bool visu_acl = r [[[suntrack]]] type = foo as_use = autoblind.default.suntrack_south_terrasse [[[day]]] type = foo as_use = autoblind.default.day [[[off]]] type = foo as_use = autoblind.default.off [['j9_schiebefixteil']] type = foo cycle = 600 as_plugin = active name='Sueden Jalousie Schiebefix' as_lock_item = sueden.j9_schiebefixteil.autostate_lock as_laststate_item_id = sueden.j9_schiebefixteil.autostate_id as_laststate_item_name = sueden.j9_schiebefixteil.autostate_name as_item_height = sueden.j9_schiebefixteil.hoehe as_item_lamella = sueden.j9_schiebefixteil.lamellen as_suspend_watch = sueden.j9_schiebefixteil.lz | sueden.j9_schiebefixteil.kz | jalousien.sued.kz | jalousien.sued.lz eval_trigger=jalousien.automatik_lock as_suspend_item = sueden.j9_schiebefixteil.autostate_suspend [[[autostate_lock]]] type = bool knx_dpt = 1 visu_acl = rw cache = on enforce_updates = true [[[autostate_id]]] type = str visu_acl = r cache = on [[[autostate_name]]] type = str visu_acl = r [[[autostate_suspend]]] type = bool visu_acl = r [[[suntrack]]] type = foo as_use = autoblind.default.suntrack_south_terrasse [[[day]]] type = foo as_use = autoblind.default.day [[[off]]] type = foo as_use = autoblind.default.off [autoblind] [[default]] [[[suntrack_south_terrasse]]] type = foo name = Sonnenstand as_set_height = value:100 as_set_lamella = value:100 [[[[enter]]]] type = foo as_min_brightness_south = 85000 as_min_sun_altitude = 20 as_min_sun_azimut = 130 as_max_sun_azimut = 230 as_min_temperature = 24 [[[[leave_toodark]]]] as_max_brightness_south = 70000 as_min_delay = 1200 type = foo [[[[leave_sun_azimut]]]] as_min_sun_azimut = 130 as_max_sun_azimut = 230 as_negate_sun_azimut = True type = foo [[[[leave_sun_altitude]]]] as_max_sun_altitude = 20 type = foo [[[[leave_temperature]]]] as_max_temperature = 22 as_min_delay = 1200 type = foo
Einen Kommentar schreiben:
-
Danke offline,
so habe ich es auch verstanden. Ich glaubte, das erweiterte Logging ist nur von der Angabe in der Beschattung abhängig.
Ich habe den normalen -d beendet und normalgestartet!
Das war wohl der große Denkfehler!
Na dann eben morgen die Daten für das Feintuning!
LG
Wolfgang
Einen Kommentar schreiben:
-
Hi Wolfgang,
wenn du das erweiterte Logging aktiviert, wird für jeden Tag eine neue Logdatei geschrieben. Das Datum ist jeweils im Dateinamen enthalten (Rückwärts, also [Jahr]-[Monat]-[Tag]) Das Logging wird nicht ausgeschaltet, du musst nur in der nächsten Datei schauen ...
Grüße
offline
Einen Kommentar schreiben:
-
Hallo,
die automatische Beschattung ist installiert und läuft soweit. Jetzt wollte ich an das Feintuning gehen .
Dafür lasse ich mir den Sonnenwinkel und Sonnenstand ins logfile schreiben.
Gestern, leider etwas spät, habe ich die Beschattung mit dem Debugschalter aktiviert.
Das Protokoll zeigt exakt die jeweiligen Zustände an, leider nur bis Mitternacht!!
Ich hoffte mir einmal einen kompletten Tag mitzuschneiden, um die Einzelwerte noch zu optimieren!
Wer setzt den Debugmodus zurück?
Notfalls muss ich mir in aller Früh einmal den Wecker stellen.
Ich hoffe es gibt eine Lösung!
Wolfgang
Einen Kommentar schreiben:
-
Hi Waldemar,
Magst du das nicht in das Wiki auf GitHub stellen? Da kann man es sicherlich besser finden und ggf. abändern als hier im Forum, auch wenn es ein separater Thread ist.Zitat von mumpf Beitrag anzeigenKann ich machen, wenn es so weit ist (dann aber in dem Tips & Tricks Thread zu Autoblind). Derzeit sind das bei mir nur Sachen, die ich angetestet habe (außer Zirkulationssteuerung, das mach ich heut Abend mal rein).
Grüße
offline
Einen Kommentar schreiben:
-
Kann ich machen, wenn es so weit ist (dann aber in dem Tips & Tricks Thread zu Autoblind). Derzeit sind das bei mir nur Sachen, die ich angetestet habe (außer Zirkulationssteuerung, das mach ich heut Abend mal rein).Zitat von Onkelandy Beitrag anzeigenMumpf, magst du mal ein paar Beispiele von dir hier posten bzw. schildern.. ich denke, du hast da noch einen Haufen cooler Dinge, die man als Ideen aufschnappen könnte, hehe.
Aber wenn es um Ideen geht, die kann ich motivieren:
Licht: Ich schalte Licht über PM, Taster, Szenen und den Panikmodus der MDT Glastaster. Weitere Einflüsse sind Nachtabdunkelung, Urlaubsmodus (Anwesenheitssimulation).
Im Wohn-/Esszimmer hatte ich 4 Taster für Szenen vorgesehen, komme aber sehr schnell auf mehr: Normal, Fernsehen, Musizieren, Gemütlich1, Gemütlich2, Party, Frühstück, Hausaufgaben. Dann waren schon alle Tasten mit Kurz/Lang belegt - Ist schwer zu bedienen und unsmart.
Meine aktuelle Idee ist, mit Hilfe des Zustandsautomaten quasi "dynamische Szenen" zu haben, idealerweise zu jeder Tages- und Nachtzeit maximal 2. Das kann man alles über Logiken lösen, aber über Autoblind wird das besser beherrschbar und gut erweiterbar.
Zirkulationspumpe: Hatte ich früher über Logik, die Einflussfaktoren (Temperaturen, Präsenz) lassen sich aber in Autoblind übersichtlich auf Zustände mappen (Zirkulation an/aus, Gesamtheizung an/aus). Das stelle ich heut Abend mal rein.
Lüftung: Bei mir ist die dezentral, ich kann jeweils Raumpaare individuell steuern. Die Problematik hier ist ähnlich zur Verschattungssteuerung: Man will nachts kalte Luft ins Haus bekommen, Tagsüber soll Wärmerückgewinnung funktionieren (bei der derzeitigen Lage also eher Kälterückgewinnung). Weitere Einflussfaktoren sind Innen- und Außentemp, Luftfeuchte, Luftqualität, Präsenz, Abwesenheitsmodus. Ausgabe hier ist Lüftungsstufe und Bypass für Wärmerückgewinnung.
Demnächst kommt dann noch Heizungssteuerung dazu (aber erst im Winter), und Ekey, dann habe ich hoffentlich alle Logiken, die über ein eval hinausgehen, durch Autoblind abgelöst.
Der Hautptvorteil von Autoblind (als State Engine) ist meiner Meinung nach die Tatsache, dass es einen Restart von sh.py überlebt - man kehrt in den gleichen Zustand zurück, in dem sh.py gestoppt wurde bzw. der für den Startzeitpunkt geltende Zustand wird dann neu berechnet. Das mit Logiken hin zu bekommen habe ich nicht geschafft. Und ich muss die Logik nicht algorithmisch lösen, sondern über ein Regelwerk - man sagt also nicht, wie man etwas lösen muss, sondern was man haben will. Das steigert die Übersicht und vermindert Seiteneffekte.
Gruß, Waldemar
Einen Kommentar schreiben:
-
Danke für den Tipp, offline.. aber vielleicht wäre das ja generell ein brauchbares Feature für dein Mega-Plugin
?
Mit Hystere und Delay funzt ja in punkto Leave ellesperfekt, aber eigtl. wäre es super, wenn es ähnliche Funktionen für die Enter-Bedingung gäbe - oder denk nur ich so
?
Ansonsten versuch ich mal deinen Vorschlag umzusetzen..
Einen Kommentar schreiben:
-
@onkelandy:
delay funktioniert nur bei leave-Bedingungen sinnvoll, nicht bei enter-Bedingungen.
Mal so ins unreine gedacht: Du legt ein bool-Item an, das du per eval auf True setzt, wenn dein Helligkeitsgrenzwert überschritten wird. Bei Unterschreitung des Grenzwerts setzt du wieder auf False. Statt dem Helligkeitswert wertest du im Plugin nun dieses Item aus und kannst über eine age-Bedingung abprüfen, wielange die Sonne schon bretzelt.
Grüße
offline
Einen Kommentar schreiben:
-
So, ich hab jetzt selbst nochmals eine Frage, da gerade die Situation hier auftritt. Mir ist klar, dass ich mit dem min_delay verhindern kann, dass die Jalousien wieder hoch fahren, nur weil grad eine Wolke vor der Sonne ist, wenn das Plugin grad alle Conditions durchspielt.
Aber wie genau kann ich den umgekehrten Fall verhindern..? Sprich - es ist tendenziell bewölkt und erst wenn die Sonne zB 10 Minuten durchgehend Gas gibt (zB über 80000 Lux ist), soll die Jalousie runter fahren. Ein min_delay oder min_age in der "day" Definition scheint mir nur bedingt sinnvoll zu sein und in der enter-Condition der Suntrack-Bedingung funktioniert das ja auch nicht ganz so wie ich das gedacht hätt, oder schon?
Mumpf, magst du mal ein paar Beispiele von dir hier posten bzw. schildern.. ich denke, du hast da noch einen Haufen cooler Dinge, die man als Ideen aufschnappen könnte, hehe.
Einen Kommentar schreiben:
-
Hi,Zitat von Marcov Beitrag anzeigenNachdem ich mit eingelesen habe, frage ich mich, ob das Plugin auch für Rolladensteuerung benutzt werden kann.
auch wenn das Ding AutoBlind heißt, es ist inzwischen eine gute StateEngine geworden, die man für alles mögliche nutzen kann. Ich nutze sie für Licht, Zirkulation, Lüftung und - ja - auch für Rollläden.
Die aktuelle Version ist die in GitHub, https://github.com/i-am-offline/smar...ugin.autoblind.
Gruß, Waldemar
Einen Kommentar schreiben:

Einen Kommentar schreiben: