Zitat von McTao
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Automatische Beschattung
Einklappen
X
-
Die item-Struktur ist auf dem aktuellen Stand, oder? Da gab es doch mal Änderung, oder?
-
Hi Jochen,Zitat von Dragonos2000 Beitrag anzeigenGäbe es die Möglichkeit, einen "Toleranzbereich" für Soll-Position und Ist-Position zu implementieren,
gibt es schon, schau mal in der Doku unter Using a delta to prevent small changes
Grüße, Waldemar
Einen Kommentar schreiben:
-
Hi Martin,
Nein, die gibt es schon nicht mehr, aber es ist noch kein "master"-Zustand erreicht:Zitat von martinb07 Beitrag anzeigenSo weit so gut, aber wo finde ich die UPDATE.md? Bin ich blind?
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:
-
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:
-
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:
So weit so gut, aber wo finde ich die UPDATE.md? Bin ich blind?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.
Einen Kommentar schreiben:
-
Hi firefox,Zitat von firefox Beitrag anzeigen...hier wäre ich ganz offiziell dran interessiert
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:
-
Zwar OT, aber hier wäre ich ganz offiziell dran interessiert. Sprichst du von dem Excel Tool oder machst du das anders?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.
Einen Kommentar schreiben:
-
OK, das habe ich verstanden. Und danke für den Fix, ich werde heute Abend mal die neueste Version holen.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.
Gruß, Waldemar
Einen Kommentar schreiben:
-
Hi Waldemar,
Noch ein kleiner Bug ... Fix ist auf GitHub gepusht.Zitat von mumpf Beitrag anzeigenbin weiter am testen und rumspielen und bekomme ein "set_* = item:<itemref>" nicht hin.
Grüße
offline
Einen Kommentar schreiben:
-
Nicht ganz. Die Zeit von "age" wird jedesmal zurückgesetzt, wenn ein neuer Zustand gültig wird. Das ist noch einfach.Zitat von mumpf Beitrag anzeigenHi 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.
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:
-
Hi offline,
bin weiter am testen und rumspielen und bekomme ein "set_* = item:<itemref>" nicht hin.
Ich habe folgendes erfolgreich hinbekommen:
Funktioniert prima. Jetzt wollte ich die Berechnung in einem Item haben und darauf referenzieren: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
Code:[[[[Kueche]]]] type = num eval = min(int((-(sh.Aussen.Wetter.Sonne.Altitude())+100)/5)*5,65) eval_trigger = Aussen.Wetter.Sonne.AltitudeAn 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)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 [
Ich habe auch
versucht.Code:set_Pos = item:Aussen.Wetter.Sonne.Kueche[COLOR=#FF0000]()[/COLOR]
Aufgefallen ist mir, dass im Logfile bei der eval-Variante
die action aufgelistet ist. Bei der Item-Variante fehlt das Item, das gesetzt werden soll (EG.KU.Rollo.West.Pos):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)
Falls ich noch mehr Details liefern soll, sag bitte Bescheid.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
Gruß, Waldemar
Einen Kommentar schreiben:
-
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:
-
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:
-
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:Zitat von mumpf Beitrag anzeigenWenn 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"
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).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
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:
-
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:

Einen Kommentar schreiben: