Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

    Zitat von offline Beitrag anzeigen
    [*]Es gibt bei den Bedingungen für ein Item nun die Möglichkeit, nicht nur den Wert eines Items, sondern auch zusätzlich das Alter abzuprüfen firefox hatte nach dieser Möglichkeit gefragt.[/LIST]

    Grüße
    offline
    Kannst du mir da bitte noch einmal auf die Sprünge helfen?

    Habs mit folgendem versucht:
    Code:
    [EG]
        [[Autoblind]]
            [[[default]]]
                item_temperature = EG.Buero.Temperatur.ist
                item_autoshade = EG.Zentral.Rollo.auto_shade
                item_daynight = EG.Zentral.Beleuchtung.tag_nacht
                item_precence = EG.Bad.Praesenz.anwesend
                [[[[night]]]]
                    name = Night
                    set_height = value:85
                    [[[[[enter]]]]]
                        min_time = 06:00
                        max_time = 22:00
                        negate_time = True
                        min_weekday = 0
                        max_weekday = 6
                        value_daynight = 0
                        minage_daynight = 60
    Das scheint aber nicht zu funktionieren:

    2015-06-29 21:46:43.450903 State EG.Buero.Rollo.night:
    2015-06-29 21:46:43.465481 Name: Night
    2015-06-29 21:46:43.467022 Condition sets to enter state:
    2015-06-29 21:46:43.468510 Condition Set 'enter':
    2015-06-29 21:46:43.470005 Condition 'time':
    2015-06-29 21:46:43.471676 eval: plugins.autoblind.AutoBlindCurrent.get_time
    2015-06-29 21:46:43.479979 min: 06:00:00
    2015-06-29 21:46:43.481556 max: 22:00:00
    2015-06-29 21:46:43.488680 negate: True
    2015-06-29 21:46:43.490228 Condition 'daynight':
    2015-06-29 21:46:43.491769 item: EG.Zentral.Beleuchtung.tag_nacht
    2015-06-29 21:46:43.503823 value: False
    2015-06-29 21:46:43.505343 negate: False
    2015-06-29 21:46:43.506846 Condition 'weekday':
    2015-06-29 21:46:43.508433 eval: plugins.autoblind.AutoBlindCurrent.get_weekday
    2015-06-29 21:46:43.509949 min: 0
    2015-06-29 21:46:43.511518 max: 6
    2015-06-29 21:46:43.528722 negate: False
    2015-06-29 21:46:43.530343 Actions to perform if state becomes active:
    2015-06-29 21:46:43.531853 Action 'height':
    2015-06-29 21:46:43.542812 item: EG.Buero.Rollo.pos
    2015-06-29 21:46:43.544858 value: 85

    Kommentar


      Zitat von firefox Beitrag anzeigen
      Kannst du mir da bitte noch einmal auf die Sprünge helfen?
      Die Attribute für die Altersbedingung eines Items heißen "agemin_*", "agemax_*" und "agenegate_*"
      Mit "agemin_daynight = 60" sollte es funktionieren.

      Grüße
      offline

      Kommentar


        Danke für die Updates.. wird ja langsam, hehe Nach ein paar Anpassungen und einer Startverzögerung klappt bei mir jetzt auch alles.

        Jetzt noch eine konkrete Frage: gibt es irgendeine Möglichkeit, noch eine Hysterese einzubinden?
        Derzeit läuft das ja so: Die Helligkeit-Schwelle ist z.B. auf 80.000 gestellt. Jetzt hat es 81.000 und Dank Cycle läuft jetzt die Abfrage - die Jalousie fährt runter. Nach Ablauf der Minimalzeit (min_age) hat es nun eine Helligkeit von 79.900 und die Jalousie fährt wieder rauf. Nach einer Stunde sind wir wieder auf 80.100 und die Jalousie fährt wieder runter. Das ist ein bisschen nervig. Zugegebenermaßen sollte sowas nicht allzu oft vorkommen, tut es aber doch ab und an. Bei der Temperatur vielleicht noch am häufigsten, denke ich.

        Genial wäre nun, wenn es, wie es zB bei meiner Wetterstation wäre, ein Threshold herangezogen wird. Der Unterschied zum vorigen Zustand muss mindest zB 1000 Lux sein, erst dann passiert was. Ich hoffe, das war halbwegs verständlich Mir ist klar, dass das unter Umständen etwas komplex werden kann, aber vielleicht hast du ja eine Idee, offline ?

        Vielen Dank für deine Bemühungen, ist echt genial, das Ding!!!

        Kommentar


          Hi,

          ich bin zwar nicht offline, aber ne Idee hab ich auch... Wenn Du sowieso eine leave condition hast, wieso dann nur mit min_age und nicht mit max_helligkeit? Deine 1000 Lux wären ein "max_Helligkeit" = 79.000"

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            Zitat von mumpf Beitrag anzeigen
            Wenn Du sowieso eine leave condition hast, wieso dann nur mit min_age und nicht mit max_helligkeit? Deine 1000 Lux wären ein "max_Helligkeit" = 79.000"
            Genau, über eine max_helligkeit-Bedingung in einem leave-Bedingungsset kannst du eine Hysterese realisieren. Ich würde zudem empfehlen, statt "min_age" ein "min_delay" im leave-Bedingungsset zu verwenden. min_age lässt deine Jalousie hochfahren, wenn nach Ablauf der eingestellten Zeit einmal die Helligkeit geringer ist als angegeben (weil zufällig genau zu diesem Zeitpunkt einmal eine Wolke die Sonne verdeckt). Über eine delay-Bedingung kannst du hingegen sagen, dass die leave-Bedingung dann erfüllt ist, wenn die Enter Bedingung für einen angegebenen Zeitraum nicht mehr erfüllt ist. Ein Beispiel aus meiner Config:
            Code:
                            [[[Nachfuehren]]]
                                    type = foo
                                    name = Tag (nachführen)
                                    set_hoehe = value:100  
                                    set_lamelle = eval:autoblind_eval.sun_tracking()
                                    [[[[enter]]]]
                                            min_brightness = 40000
                                            min_sun_altitude = 20
                                            min_sun_azimut = 180  
                                            max_sun_azimut = 280  
                                    [[[[leave_todark]]]]
                                            max_brightness = 30000
                                            min_delay = 1200
                                    [[[[leave_sun_azimut]]]]
                                            min_sun_azimut = 180
                                            max_sun_azimut = 280
                                            negate_sun_azimut = True
                                    [[[[leave_sun_altitude]]]]
                                            max_sun_altitude = 19
            Hier fahren die Raffstores zum Nachführen herunter, wenn die Helligkeit über 40 kLux geht und zudem die Sonne in einer bestimmten Richtung steht. Zum Beenden des Nachführens gibt es drei Möglichkeiten: Entweder die Sonne kommt steht mehr in einer Richtung, in der sie in die Fenster scheint ("leave_sun_azimut" -> Azimut, "leave_sun_altitude" -> Altitude) oder es ist zu dunkel ("leave_todark". Hier kannst du die Hysterese von 10kLux erkennen. Wegen "min_delay" ist "leave_todark", nur erfüllt, wenn für 1200 Sekunden (20 Minuten) der Zustand nicht verlassen werden darf (keine der leave-Bedingungen erfüllt) aber gleichzeitig die Bedingungen für den Zustand ebenfalls nicht erfüllt sind (keine der enter-Bedingungen erfüllt).
            Damit das Nachführen beendet wird muss es hier also dunkler als 30 kLux und gleichzeitig bei allen Prüfungen innerhalb von 20 Minuten nicht heller als 40 kLux sein.
            Würde man hier statt "min_delay" "min_age" verwenden, so würde es ausreichen, wenn bei einer Prüfung nach Ablauf von mindestens 20 Minuten 30 kLux unterschritten sind.

            Grüße
            offline

            Kommentar


              Hi offline,

              ne kurze Rückfrage zum delay - nur um es mit meinen Worten auszudrücken - dann verstehe ich es hoffentlich:
              Delay ist die Zeit, die vergangen ist, seitdem das letzte mal ein enter-Zustand gültig war? Du setzt den delay-counter jedesmal zurück, wenn irgendeine enter-Bedingung erfüllt ist, auch wenn das Objekt schon in dem Zustand war?
              Wenn ich also nur cycle = 5 Minuten habe, Zustand x dauerhaft gilt, sind age und delay in den ersten 4:59 Minuten gleich, dann wächst age weiter und delay fängt bei 0 an?
              Wenn das obige stimmt, dann hab ich delay jetzt auch verstanden.

              Gruß, Waldemar
              OpenKNX www.openknx.de

              Kommentar


                Huch, muss man sich zwar immer alles drei Mal durchlesen, aber dann staunt man mal über die Möglichkeiten Vielen Dank, ich teste das mit dem Leave und min_delay gleich mal. Bitte nicht vergessen, das in die Doku zu nehmen, dort ist es nämlich nur im Example ohne Hinweise drin.. Thx!

                Kommentar


                  Hi offline,

                  bin weiter am testen und rumspielen und bekomme ein "set_* = item:<itemref>" nicht hin.
                  Ich habe folgendes erfolgreich hinbekommen:
                  Code:
                                          [[[[[[[Nachfuehren]]]]]]]
                                              name = Blendschutz (nachgeführt)
                                              type = foo
                                              set_Pos = eval:min(int((-(sh.Aussen.Wetter.Sonne.Altitude())+100)/5)*5,65)
                                              [[[[[[[[enter]]]]]]]]
                                                  min_sun_azimut = 190
                                                  max_sun_altitude = 60
                                                  min_sun_altitude = 10
                  Funktioniert prima. Jetzt wollte ich die Berechnung in einem Item haben und darauf referenzieren:
                  Code:
                              [[[[Kueche]]]]
                                  type = num
                                  eval = min(int((-(sh.Aussen.Wetter.Sonne.Altitude())+100)/5)*5,65)
                                  eval_trigger = Aussen.Wetter.Sonne.Altitude
                  Code:
                                          [[[[[[[Nachfuehren]]]]]]]
                                              name = Blendschutz (nachgeführt)
                                              type = foo
                                              set_Pos = item:Aussen.Wetter.Sonne.Kueche
                                              [[[[[[[[enter]]]]]]]]
                                                  min_sun_azimut = 190
                                                  max_sun_altitude = 60
                                                  min_sun_altitude = 10
                  [
                  An der Position wird nichts geändert - ich vermute, meine Item-Notation ist irgendwie falsch (das Item selbst existiert, ich habe es zu Testzwecken in der Visu ausgegeben)
                  Ich habe auch
                  Code:
                  set_Pos = item:Aussen.Wetter.Sonne.Kueche[COLOR=#FF0000]()[/COLOR]
                  versucht.

                  Aufgefallen ist mir, dass im Logfile bei der eval-Variante
                  Code:
                  2015-06-30 18:32:27.000385 State EG.KU.Rollo.West.AutoBlind.Rules.Nachfuehren:
                  2015-06-30 18:32:27.001971       Name: Blendschutz (nachgeführt)
                  2015-06-30 18:32:27.003197       Condition sets to enter state:
                  2015-06-30 18:32:27.003837               Condition Set 'enter':
                  2015-06-30 18:32:27.005063                       Condition 'sun_altitude':
                  2015-06-30 18:32:27.005677                               eval: plugins.autoblind.AutoBlindCurrent.get_sun_altitude
                  2015-06-30 18:32:27.006301                               min: 10
                  2015-06-30 18:32:27.006860                               max: 60
                  2015-06-30 18:32:27.008221                               negate: False
                  2015-06-30 18:32:27.008820                       Condition 'sun_azimut':
                  2015-06-30 18:32:27.009828                               eval: plugins.autoblind.AutoBlindCurrent.get_sun_azimut
                  2015-06-30 18:32:27.010950                               min: 190
                  2015-06-30 18:32:27.011512                               negate: False
                  2015-06-30 18:32:27.012316       Actions to perform if state becomes active:
                  2015-06-30 18:32:27.013808               Action 'Pos':
                  2015-06-30 18:32:27.014429                       item: EG.KU.Rollo.West.Pos
                  2015-06-30 18:32:27.015031                       eval: min(int((-(sh.Aussen.Wetter.Sonne.Altitude())+100)/5)*5,65)
                  die action aufgelistet ist. Bei der Item-Variante fehlt das Item, das gesetzt werden soll (EG.KU.Rollo.West.Pos):
                  Code:
                  2015-06-30 14:34:39.460257 State EG.KU.Rollo.West.AutoBlind.Rules.Nachfuehren:
                  2015-06-30 14:34:39.461337       Name: Blendschutz (nachgeführt)
                  2015-06-30 14:34:39.462265       Condition sets to enter state:
                  2015-06-30 14:34:39.462946               Condition Set 'enter':
                  2015-06-30 14:34:39.464221                       Condition 'sun_altitude':
                  2015-06-30 14:34:39.464905                               eval: plugins.autoblind.AutoBlindCurrent.get_sun_altitude
                  2015-06-30 14:34:39.465707                               min: 10
                  2015-06-30 14:34:39.467054                               max: 60
                  2015-06-30 14:34:39.467718                               negate: False
                  2015-06-30 14:34:39.468686                       Condition 'sun_azimut':
                  2015-06-30 14:34:39.470077                               eval: plugins.autoblind.AutoBlindCurrent.get_sun_azimut
                  2015-06-30 14:34:39.470943                               min: 190
                  2015-06-30 14:34:39.471617                               negate: False
                  2015-06-30 14:34:39.473111       Actions to perform if state becomes active:
                  2015-06-30 14:34:39.473810               Action 'Pos':
                  2015-06-30 14:34:39.474484                       item: Aussen.Wetter.Sonne.Kueche
                  Falls ich noch mehr Details liefern soll, sag bitte Bescheid.

                  Gruß, Waldemar


                  OpenKNX www.openknx.de

                  Kommentar


                    Zitat von mumpf Beitrag anzeigen
                    Hi offline,
                    ne kurze Rückfrage zum delay - nur um es mit meinen Worten auszudrücken - dann verstehe ich es hoffentlich:
                    Delay ist die Zeit, die vergangen ist, seitdem das letzte mal ein enter-Zustand gültig war? Du setzt den delay-counter jedesmal zurück, wenn irgendeine enter-Bedingung erfüllt ist, auch wenn das Objekt schon in dem Zustand war?
                    Wenn ich also nur cycle = 5 Minuten habe, Zustand x dauerhaft gilt, sind age und delay in den ersten 4:59 Minuten gleich, dann wächst age weiter und delay fängt bei 0 an?
                    Wenn das obige stimmt, dann hab ich delay jetzt auch verstanden.
                    Nicht ganz. Die Zeit von "age" wird jedesmal zurückgesetzt, wenn ein neuer Zustand gültig wird. Das ist noch einfach.
                    Die Zeitzählung von "delay" beginnt, wenn ein Zustand zum ersten mal nicht verlassen werden darf. "delay" wird aber zurückgesetzt, wenn ein "enter"-Bedingungsset des Zustands, der nicht verlassen werden darf, erfüllt ist. "delay" zählt also im Prinzip die Zeit, während der weder ein "leave"-Bedingungsset, noch ein "enter"-Bedingungsset erfüllt ist.

                    Grüße
                    offline

                    Kommentar


                      Hi Waldemar,

                      Zitat von mumpf Beitrag anzeigen
                      bin weiter am testen und rumspielen und bekomme ein "set_* = item:<itemref>" nicht hin.
                      Noch ein kleiner Bug ... Fix ist auf GitHub gepusht.

                      Grüße
                      offline


                      Kommentar


                        Zitat von offline Beitrag anzeigen
                        "delay" zählt also im Prinzip die Zeit, während der weder ein "leave"-Bedingungsset, noch ein "enter"-Bedingungsset erfüllt ist.
                        OK, das habe ich verstanden. Und danke für den Fix, ich werde heute Abend mal die neueste Version holen.

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar


                          Zitat von mumpf Beitrag anzeigen

                          Langer Rede kurzer Sinn: Ich habe mir einen .conf-Generator geschrieben, der mir beim generieren schon einige Fehler meldet (Hauptsächlich falsche Item-Referenzen und falsch geschriebene item-Properties. Dem Generator habe ich inzwischen Deine Syntax beigebracht, der hat mich deswegen bereits vorher gewarnt, dass ich ein "value:" vergessen hatte - so dass ich das gar nicht ausprobiert habe.
                          Zwar OT, aber hier wäre ich ganz offiziell dran interessiert. Sprichst du von dem Excel Tool oder machst du das anders?



                          Kommentar


                            Zitat von firefox Beitrag anzeigen
                            ...hier wäre ich ganz offiziell dran interessiert
                            Hi firefox,

                            um diesen Thread nicht zu kapern: Ich werde heute Abend mal in einem neuen Thread vorstellen, was ich gemacht habe, vielleicht gibt es noch andere, die interessiert sind. Ist was selbst geschriebenes in Kombination mit Json, JsonSchema, Visual Studio und nur für Windows -> deswegen wird es wohl für die meisten sh.py User uninteressant. Aber vielleicht kann man ein paar Ideen zum Handling von vielen Items ableiten.

                            Gruß, Waldemar
                            OpenKNX www.openknx.de

                            Kommentar


                              Ich wollte mich gerade dran machen die Item für das Plugin aufzubohren und habe folgenden Text in der Readme.md im dev-Zweig auf Github gelesen:

                              This documentation is not up to date. There have been several changes regarding the configuration of the plugin that are not yet reflected in this file. Please see the file UPDATE.md for a brief description of required configuration changes. This file will be updated after all planned changes have been made and properly tested.
                              So weit so gut, aber wo finde ich die UPDATE.md? Bin ich blind?
                              ---
                              Martin

                              Kommentar


                                Gäbe es die Möglichkeit, einen "Toleranzbereich" für Soll-Position und Ist-Position zu implementieren, damit bei geringen Abweichungen kein neues Telegramm geschickt wird?
                                Hintergrund:
                                Ich würde gerne das Item "Hoehe" mit der Status GA des Aktors verbinden, damit KNX-Welt und SH.py stets synchronisiert sind. Ich mache das aber aktuell wegen meiner Rademacher Xline nicht, weil diese nach einem Positioniersbefehl ihre neue Position oft mit einer geringen Abweichung (<1%) auf der Status GA zurückmelden. Das führt dazu, dass das Plugin beim nächsten Cycle die Position erneut sendet und der Rolladen Repositioniert wird - solange, bis Soll-/Ist übereinstimmen. Im ungünstigsten Fall läuft also der Motor bei den nächsten Zyklen einige Male kurz an.
                                Daher habe ich momentan das Item "Hoehe" nicht hörend auf der Status GA.

                                Ich hoffe das war verständlich, was ich meine

                                Gruss
                                Jochen.

                                Kommentar

                                Lädt...
                                X