Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • martinb07
    antwortet
    Dank dir Andy. Die beiden Beispiele haben mich ja etwas verwirrt. Danke für die Aufklärung.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    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:


  • Onkelandy
    antwortet
    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:


  • martinb07
    antwortet
    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:
    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
    Im zentral.conf steht folgende:

    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
    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.
    Verwende ich einen alten Stand?

    Vielen Dank schon mal.

    Einen Kommentar schreiben:


  • offline
    antwortet
    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:


  • Onkelandy
    antwortet
    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:

    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')
    Und hier bei der Jalousie direkt daneben. Aber doch eine ganze halbe Minute später!
    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')
    Hier die Items (etwas gekürzt):
    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
    Merci für deine Antwort!

    Einen Kommentar schreiben:


  • schloessl
    antwortet
    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:


  • offline
    antwortet
    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:


  • schloessl
    antwortet
    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:


  • offline
    antwortet
    Hi Waldemar,

    Zitat von mumpf Beitrag anzeigen
    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).
    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.

    Grüße
    offline

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    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.
    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).

    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:


  • Onkelandy
    antwortet
    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:


  • offline
    antwortet
    @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:


  • Onkelandy
    antwortet
    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:


  • mumpf
    antwortet
    Zitat von Marcov Beitrag anzeigen
    Nachdem ich mit eingelesen habe, frage ich mich, ob das Plugin auch für Rolladensteuerung benutzt werden kann.
    Hi,

    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:

Lädt...
X