FHEM Forum

FHEM => Automatisierung => Thema gestartet von: teufelchen am 06 September 2022, 10:32:08

Titel: [ASC] Variable Privacy Up Time
Beitrag von: teufelchen am 06 September 2022, 10:32:08
Hallo,

ich möchte gerne dass meine Rollos früh zu einer festen Zeit schon etwas öffnen.
Hierfür verwende ich ASC_PrivacyUpValue_beforeDayOpen.
Solange der Sonnenaufgang vor der Hochfahrzeit ist, funktioniert ein fester Wert.

Da es nun aber jeden Tag später hell wird ändert sich die Hochfahrzeit, und da der Wert für die Privacy Up Time fest ist auch das die Zeit für das teilweise Öffnen.

Ich habe mir über userReadings eine Variable berechnet, die jeden Tag die Privacy Up Time neu berechnet.

Wenn ich jeden Tag das Attribut aktualisiere, ist dies wie eine zu speichernde Änderung im System.
Deshalb würde ich im Attribut Privacy Up Time auf ein variables Reading verweisen.
Wenn ich nun jeden Tag den neu errechneten Wert in das Attribut "ASC_PrivacyUpValue_beforeDayOpen" schreiben lasse, funktioniert es.
Da sich aber das Attribut ändert ist jedes oben das Fragezeichen, dass es eine Systemänderung gab.

Nun habe ich, erfolglos, versucht das Attribut als Variable zum Reading zu setzen.
Ich weiß nicht ob es vom ASC-Modul überhaupt unterstütz wird
oder ob ich einfach nur falschen Code verwende.
Ich verwende diesen Code:
{ReadingsVal($name,"Z_My_ASC_PrivacyUpValue_beforeDayOpen","-1")}

Titel: Antw:[ASC] Variable Privacy Up Time
Beitrag von: CoolTux am 06 September 2022, 10:49:33
Du kannst es einmal versuchen über die API setzen zu lassen. Ich glaube das sollte gehen.

{ ascAPIset('PrivacyUpTime','ROLLODEVICENAME','VALUE') }

Bei VALUE muss dann der Wert Deiner Variablen rein welche Du über das userReadings berechnet hast.
Titel: Antw:[ASC] Variable Privacy Up Time
Beitrag von: teufelchen am 06 September 2022, 12:26:59
Hallo CoolTux,

bisher verwende ich im berechneten Reading diesen Code, wobei $PrivacyUpValue_offset mein berechneter Wert ist:
fhem("attr $name ASC_PrivacyUpValue_beforeDayOpen $PrivacyUpValue_offset");
Dadurch wird das Attribut am Rollo geändert.
Dein Code
{ ascAPIset('PrivacyUpTime','ROLLODEVICENAME','VALUE') }
ändert ebenfalls den Wert in den Attributen.
Dadurch wird in FHEM eine Änderung erzeugt die mit den Fragezeichen hinter "save config" signalisiert wird, was ich gerne anders lösen würde.

Ich habe gehofft, dass Perlcode möglich ist und ich damit zum Reading (was keine Änderung in der Config verursacht) einen Verweis bekomme.

So ähnlich wie es in der Beschreibung für die ASC_Sleep_Pos ist:
ASC_Sleep_Pos - in 10 Schritten von 0 bis 100 (default: ist abhängig vom AttributASC 75/25) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
Titel: Antw:[ASC] Variable Privacy Up Time
Beitrag von: frank am 06 September 2022, 13:38:57
ZitatSo ähnlich wie es in der Beschreibung für die ASC_Sleep_Pos ist:
ob mit oder ohne perl.
sobald ein attribut gesetzt wird, wird das fragezeichen rot.
Titel: Antw:[ASC] Variable Privacy Up Time
Beitrag von: CoolTux am 06 September 2022, 15:43:46
Zitat von: teufelchen am 06 September 2022, 12:26:59
Hallo CoolTux,

bisher verwende ich im berechneten Reading diesen Code, wobei $PrivacyUpValue_offset mein berechneter Wert ist:
fhem("attr $name ASC_PrivacyUpValue_beforeDayOpen $PrivacyUpValue_offset");
Dadurch wird das Attribut am Rollo geändert.
Dein Code
{ ascAPIset('PrivacyUpTime','ROLLODEVICENAME','VALUE') }
ändert ebenfalls den Wert in den Attributen.
Dadurch wird in FHEM eine Änderung erzeugt die mit den Fragezeichen hinter "save config" signalisiert wird, was ich gerne anders lösen würde.

Ich habe gehofft, dass Perlcode möglich ist und ich damit zum Reading (was keine Änderung in der Config verursacht) einen Verweis bekomme.

So ähnlich wie es in der Beschreibung für die ASC_Sleep_Pos ist:
ASC_Sleep_Pos - in 10 Schritten von 0 bis 100 (default: ist abhängig vom AttributASC 75/25) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!

Schade, ich hatte gedacht das die Änderung ohne das Fragezeichen passiert. Dann ist das in der Tat aktuell nicht möglich.
Was ich aber nicht ganz verstehe. Wieso funktioniert das mit der Zeitberechnung eigentlich nicht für Dich.
Er berechnet doch den Sonnenaufgang für den nächsten Tag und zieht dann davon die angegebene Sekundenzahl ab so das er x Sekunden vor dem morgendlichen öffnen schon in die PrivacyPos fährt.
Titel: Antw:[ASC] Variable Privacy Up Time
Beitrag von: teufelchen am 06 September 2022, 20:26:36
Es soll Werktags immer um 5:40 das Rollo zum lüften hoch fahren.
Wenn Sonnenaufgang vor 5:40 dann greift Time Up Early und öffnet ganz.
Wenn der Sonnenaufgang nach 5:40 soll der Rollo um 5:40 zum lüften ein Stück hochfahren und ganz öffnen wenn  Sonnenaufgang ist.
Deshalb muss ich jeden Tag die Differenz zwischen Sonnenaufgang und Rollo öffnet ganz zur Uhrzeit 5:40 Uhr neu berechnen und als Wert in  Sekunden bei Privacy open aktualisieren.
Oder gibt es eine andere Möglichkeit?
Titel: Antw:[ASC] Variable Privacy Up Time
Beitrag von: CoolTux am 07 September 2022, 07:42:21
Zitat von: teufelchen am 06 September 2022, 20:26:36
Es soll Werktags immer um 5:40 das Rollo zum lüften hoch fahren.
Wenn Sonnenaufgang vor 5:40 dann greift Time Up Early und öffnet ganz.
Wenn der Sonnenaufgang nach 5:40 soll der Rollo um 5:40 zum lüften ein Stück hochfahren und ganz öffnen wenn  Sonnenaufgang ist.
Deshalb muss ich jeden Tag die Differenz zwischen Sonnenaufgang und Rollo öffnet ganz zur Uhrzeit 5:40 Uhr neu berechnen und als Wert in  Sekunden bei Privacy open aktualisieren.
Oder gibt es eine andere Möglichkeit?

Kann ich nicht nachvollziehen. Wenn Du tatsächlich mit PrivacyUp arbeitest dann sollte er nicht ganz hochfahren sondern in die PrivacyPos. Und das ganze X Sekunden vor dem eigentlichen Sunrise
Titel: Antw:[ASC] Variable Privacy Up Time
Beitrag von: teufelchen am 07 September 2022, 09:00:48
Zitat von: CoolTux am 07 September 2022, 07:42:21
Kann ich nicht nachvollziehen. Wenn Du tatsächlich mit PrivacyUp arbeitest dann sollte er nicht ganz hochfahren sondern in die PrivacyPos. Und das ganze X Sekunden vor dem eigentlichen Sunrise

Ich versuche es mal an Beispielen zu erklären:
Sonnenaufgang 4:30 Uhr
Rollo soll ganz um 5:40 öffnen, da es draußen schon hell ist; Privacy Time = 0; funktioniert so im Modul

Sonnenaufgang 6:40 Uhr
Rollo soll um 5:40 in Privacy open gehen und zum Sonnenaufgang um 6:40 ganz öffnen; Privacy Time = 3600 Sekunden

Sonnenaufgang 6:50 Uhr
Rollo soll um 5:40 in Privacy open gehen und zum Sonnenaufgang um 6:50 ganz öffnen; Privacy Time = 4200 Sekunden

Die Öffnungszeit soll fix sein und nicht x Sekunden vor Öffnen.
Da aber jetzt jeden Tag die Sonne später aufgeht, muss täglich neu die Privacy Time berechnet werden.