Ankündigung

Einklappen
Keine Ankündigung bisher.

Automatische Beschattung

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

  • martinb07
    antwortet
    Zitat von McTao Beitrag anzeigen
    Das README.md ist noch in der Entwicklung. Alles aus der Update.md steht inzwischen schon in der README.md aber diese ist noch nicht vollständig.
    Die item-Struktur ist auf dem aktuellen Stand, oder? Da gab es doch mal Änderung, oder?

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Zitat von Dragonos2000 Beitrag anzeigen
    Gäbe es die Möglichkeit, einen "Toleranzbereich" für Soll-Position und Ist-Position zu implementieren,
    Hi Jochen,

    gibt es schon, schau mal in der Doku unter Using a delta to prevent small changes

    Grüße, Waldemar

    Einen Kommentar schreiben:


  • McTao
    antwortet
    Hi Martin,

    Zitat von martinb07 Beitrag anzeigen
    So weit so gut, aber wo finde ich die UPDATE.md? Bin ich blind?
    Nein, die gibt es schon nicht mehr, aber es ist noch kein "master"-Zustand erreicht:
    Das README.md ist noch in der Entwicklung. Alles aus der Update.md steht inzwischen schon in der README.md aber diese ist noch nicht vollständig.
    Es fehlen noch Teile der Beschreibung und Beispiele wollte offline auch noch ergänzen. Du kannst Dich also an die README.md halten und es fehlen dann keine Informationen. Einiges findest du in den letzten Beiträgen, was nicht nicht in der README.md steht, deshalb ist diese also noch nicht ganz fertig.

    Gruss Andreas

    Einen Kommentar schreiben:


  • Dragonos2000
    antwortet
    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.

    Einen Kommentar schreiben:


  • martinb07
    antwortet
    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?

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    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

    Einen Kommentar schreiben:


  • firefox
    antwortet
    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?



    Einen Kommentar schreiben:


  • mumpf
    antwortet
    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

    Einen Kommentar schreiben:


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


    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    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


    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X