Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
funkleuchtturm
Beiträge: 2362
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 355 Mal
Kontaktdaten:

Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von funkleuchtturm » 19.02.2016, 10:59

Auf meiner Homepage gibt´s hierzu aktuellere und weitere Informationen:
http://www.stall.biz/project/universell ... den-lampen

Im Homematic Zeitmodul fehlen eine Reihe wichtiger Zeitfunktionen wie Datumsbereiche, Monate, Wochentage und Kalenderwochen. Aber besonders die Astrofunktion ist unbefriedigend, weil man nur selten genau zum Sonnenaufgang(SA) oder Sonnenuntergang(SU) etwas schalten möchte. Meist benötigt man nämlich Schaltvorgänge vor oder nach diesem Sonnenereignis.

Um diesen Mangel "auszubügeln" , gibt es hier im Forum eine Vielzahl von mehr oder weniger gelungener Hilfslösungen, die aber meist nur auf spezielle Fragestellungen abgestimmt wurden. Mit diesem Astro/Zeitskript werden einfach verschiedene Systemvariablen berechnet, welche die verschiedenen Zeitinformationen abbilden. Die gewählte Benamung der Systemvariablen erklären selbstredend die Funktion.

Und das geht so:

1. Folgende Systemvariablen anlegen:

Minuten_vor_SA als Zahl , Wertebereich -1000 bis +1000
Minuten_vor_SU als Zahl , Wertebereich -1000 bis +1000
Tageszeit_hh.mm als Zahl in h
Datum_MM.TT als Zahl
Monat als Werteliste Januar;Februar; ...
Monatstag als Werteliste 1;2;3; ... ;31
Wochennummer als Zahl
Woche_gerade logisch wahr ist gerade , unwahr ist ungerade
Wochentag als Zahl

2. WebUI Programm anlegen, in dem beispielsweise alle 3min das folgende Astro/Zeit-Skript aufgerufen wird:
astro_skript1.jpg
Das Skript dazu verwendet nur eine (!) Skriptvariable, was für eine gute "Skripthygiene" wichtig ist.

Code: Alles auswählen

!Skript zur Berechnung der Minuten vor SA und SU        !  
!stall.biz  18.02.2016  Dieses Skript verwendet nur eine (!) Skript-Variable     
!folgende Systemvariablen anlegen
!Minuten_vor_SA"    als Zahl , Wertebereich  -1000 bis +1000
!Minuten_vor_SU"    als Zahl , Wertebereich  -1000 bis +1000
!"Tageszeit_hh.mm"  als Zahl  in h
!"Datum_MM.TT"    als Zahl  
!"Monat"    als Werteliste Januar;Februar;  ...  
!"Monatstag"    als Werteliste 1;2;3; ... ;31  
!"Wochennummer"    als Zahl  
!"Woche_gerade"    logisch   wahr ist gerade , unwahr ist ungerade
!"Wochentag"    als Zahl  
!"Jahrestag" als Zahl
real c_zeit =(system.Date("%M").ToFloat()+ (60.0*system.Date("%H").ToFloat())); 

if (c_zeit >720.0) { dom.GetObject("Minuten_vor_SA").State(999); 
  c_zeit = system.SunsetTime("%M").ToFloat() + (60.0*system.SunsetTime("%H").ToFloat());
  c_zeit = c_zeit -  (system.Date("%M").ToFloat()+ (60.0*system.Date("%H").ToFloat()));
  dom.GetObject("Minuten_vor_SU").State(c_zeit); 
}
else {dom.GetObject("Minuten_vor_SU").State(999); 
  c_zeit = system.SunriseTime("%M").ToFloat() + (60.0*system.SunriseTime("%H").ToFloat());
  c_zeit = c_zeit - (system.Date("%M").ToFloat()+ (60.0*system.Date("%H").ToFloat()));
  dom.GetObject("Minuten_vor_SA").State(c_zeit); 
}

real c_zeit = (1.0*system.Date("%H").ToInteger()) +(0.01*system.Date("%M").ToInteger());                      
dom.GetObject("Tageszeit_hh.mm").State(c_zeit);

real c_zeit  = (0.01 * system.Date("%d").ToInteger()) + system.Date("%m").ToInteger();
dom.GetObject("Datum_MM.TT").State(c_zeit );

integer c_zeit   = system.Date("%m").ToInteger();
dom.GetObject("Monat").State(c_zeit  -1);

integer c_zeit    = system.Date("%d").ToInteger();
dom.GetObject("Monatstag").State(c_zeit    -1);

integer c_zeit =  system.Date("%V").ToInteger();
dom.GetObject("Wochennummer").State(c_zeit);

if ((c_zeit - 2*(c_zeit/2.0)) == 1) {dom.GetObject("Woche_gerade").State(0);} else {dom.GetObject("Woche_gerade").State(1);}

integer  c_zeit = system.Date("%u").ToInteger();
dom.GetObject("Wochentag").State( c_zeit);

integer c_zeit = system.Date("%j").ToInteger();
dom.GetObject("Jahrestag").State( c_zeit);

3. Wer CuxD installiert hat, der kann den manchmal instabilen regelmäßigen Zeitaufruf des Astro/Zeit-Skripts mit einem CuxD-Timer realisieren. Wie das geht, ist an verschiedenen Stellen hier im Forum bereits beschrieben. Das Programm zum regelmässigen Aufruf des Astro/Zeit-Skriptes sieht dann so aus:
astro_skript5.jpg
Der Vorteil bei diesem Verfahren ist, daß fast die gesamten Zeitsteuerungen der WebUI-Programme nun über dieAstro/Zeit-Systemvariablen erfolgen kann. Und diese Systemvariablen werden nur über einen(!) viel zuverlässigeren CuxD-Timer aktualisiert. Damit wird das gesamte Zeitmanagement deutlich stabiler und zuverlässiger.

4. So wird das Astro/Zeit-Skript eingesetzt
Zum Beispiel eine Rollade[/b] so steuern, daß sie morgens 30min vor Sonnenaufgang hoch geht, aber nicht vor 6h45 und abends 45min nach Sonnenuntergang
runter fährt,aber nicht später als 22h00.

Das WebUI -Programm dazu ist mit Verwendung der soeben definierten Systemvariablen ganz einfach:
astro_skript4.jpg
...und mit der Verwendung der Systemvariablen aus der Astro/Zeitsteuerung sind die WebUI-Programm viel besser lesbar , als mit dem "verkorksten"Zeitmodul!

Abschließend noch einige Erläuterungen zur Astrofunktion:
Da die meisten Steuerungsaufgaben stark mit dem Sonnenaufgang und -untergang verknüpft ist, hat man die sog. Astrofunktion eingeführt. Diese ist aber oft unzureichend, weil man oft lieber einige Minuten vorher oder nachher den Schaltvorgang ausführen möchte. Dazu wurden in dem Astro/Zeit-Skript die zwei Systemvariablen Minuten_vor_SA und Minuten_vor_SU eingeführt. Der Wert dieser Variablen ändert sich über den Tagesverlauf entsprechend dem folgenden Bild:
astro_skript3.jpg
Die Systemvariable Minuten_vor_SA ist nur von 00h00 bis 12h00 aktiviert und wird im zweiten Tagesabschnitt auf einen Wert von 999 gesetzt.
Bei der Systemvariablen Minuten_vor_SU ist es genau umgekehrt. Diese Definition hat Vorteile bei Anwendung in WebUI -Programmen.

Viel Spaß mit dem neuen "Zeitgefühl" :D

Update 28.03.2016:
Berechnung Jahrestag im Skript hinzugefügt!
Zuletzt geändert von funkleuchtturm am 28.02.2016, 20:39, insgesamt 2-mal geändert.
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

tris08
Beiträge: 122
Registriert: 17.12.2014, 22:09

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und

Beitrag von tris08 » 21.02.2016, 15:17

Und wie stelle ich ein wenn die Rollladen nach Sonnenaufgang hoch gehen sollen ?
Größer als 30min ?

Benutzeravatar
funkleuchtturm
Beiträge: 2362
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 355 Mal
Kontaktdaten:

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und

Beitrag von funkleuchtturm » 21.02.2016, 15:25

Ganz einfach:

Die Abfrage der Systemvariablen Minuten_vor_SA ist bei Rolladenbetätigung 30min vor SA : Abfrage auf kleiner als 30min

die Abfrage der Systemvariablen Minuten_vor_SA ist bei Rolladenbetätigung 30min nach SA : Abfrage auf kleiner als -30min
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

SuCitta
Beiträge: 169
Registriert: 26.01.2016, 14:38
Danksagung erhalten: 1 Mal

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und

Beitrag von SuCitta » 24.02.2016, 16:33

Erstmal, vielen lieben Dank für diese wunderbare Steuerung! Nach genau sowas hatte ich gesucht! Die Rolläden nach Sonnenaufgang bzw frühestens zu Uhrzeit x rauf
und vor Sonnenuntergang bzw spätestens zu Uhrzeit y runter fahren zu lassen...
Das hat auch fast einwandfrei gefunzt... Fast einwandfrei... Fahren tun sie wunderbar, aaaber... Da ich mir zu jeder Fahrt auch eine (kontroll-)mail schicken lasse, habe ich bemerkt dass der Punkt: spätestens runter =
Systemzustand: Tageszeit = Wertebereich (bei mir) > 21:30
immer ausgeführt wird, auch wenn der Punkt die Rollos regulär zur Zeit: Minuten_vor_SU kleiner 30 Minuten (will sie ja vor SU runterfahren und nicht nach, daher "+") bereits ausgeführt wurde.
Jetzt dachte ich, ich bin besonders schlau und füge noch "und Geräteauswahl Rollo Behanghöhe >5% prüfen" hinzu... aber trotzdem scheint dieser Programm-part durch zu laufen. Technisch dürfte dies, aufgrund der Endschalter im Rohrmotor kein Thema sein, ich finde es trotzdem nicht schön... Was mach ich falsch?
PS: (Habe noch zusätzlich einen Programmpunkt, dass wenn jemand daheim, sollen die rollos doch "nach" SU runterfahren... dies schien gestern einwandfrei zu klappen...)
PPS: ich weiss, ich könnte die beiden letzten punkte aus (und, und)oder(und, und) auch ein und und oder machen... ist insofern noch nicht optimiert, ändert aber denke ich nichts an meinem derzeitigen "Problem" oder?!

Danke schonmal!!!
Dateianhänge
Screenshot_2016-02-23-07-35-33.png
Grüße, Sven

สัพเพ สัตตา สุขีตา โหนตุ

Benutzeravatar
funkleuchtturm
Beiträge: 2362
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 355 Mal
Kontaktdaten:

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und

Beitrag von funkleuchtturm » 24.02.2016, 16:58

Dein Programm wird abends insgesamt nur 3x durchfahren : 30min vor SU, 15 Minuten nach SU und um 21h30.

Entsprechend wird der Rolladenaktor nur zu diesen Zeitpunkten so betätigt, wie die Programmbedingungen sind.
Wenn der Rolladen bereits unten ist und er erhält einen neuen "unten"-Schaltbefehl , dann passiert gar nichts: Der Rolladen ist ja schon in Zielposition. Auch die Relais des Rolladenaktors dürften dann nicht schalten. Und die Endschalter merken auch nichts davon!
Eigentlich müßte das Programm so laufen auch ohne die 5%.
Schau Dir mal die etwas ungewöhnliche Logik der Homematic an: https://www.stall.biz/project/tutorial- ... ebui-logik

Wenn Du die Kontrollmail bei jedem Programmdurchlauf vermeiden willst, dann benötigt Du zwei Programme: Eins fürs Runterfahren und eins fürs Hochfahren.
In beiden Programmen ist der Sonst-Zweig leer.
Im Runterfahren-Programm verwendest Du in allen Bedingungen zusätzlich die >5% Bedingung (wie bereits gemacht) und im Hochfahren-Programm eine entsprechende Bedingung wie z.B. >50%.
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

SuCitta
Beiträge: 169
Registriert: 26.01.2016, 14:38
Danksagung erhalten: 1 Mal

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und

Beitrag von SuCitta » 24.02.2016, 17:41

funkleuchtturm hat geschrieben:!

Wenn Du die Kontrollmail bei jedem Programmdurchlauf vermeiden willst, dann benötigt Du zwei Programme: Eins fürs Runterfahren und eins fürs Hochfahren.
In beiden Programmen ist der Sonst-Zweig leer.
Im Runterfahren-Programm verwendest Du in allen Bedingungen zusätzlich die >5% Bedingung (wie bereits gemacht) und im Hochfahren-Programm eine entsprechende Bedingung wie z.B. >50%.
Hmmm?! Genau so mache ich es bereits und erhalte, abends, die erwähnte(n) mail(s)
Grüße, Sven

สัพเพ สัตตา สุขีตา โหนตุ

SuCitta
Beiträge: 169
Registriert: 26.01.2016, 14:38
Danksagung erhalten: 1 Mal

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und

Beitrag von SuCitta » 24.02.2016, 18:23

Sorry, war etwas kurz angebunden vorhin.
Also, so mache ich es gerade. Es sind zweierlei Programme bei denen jeweils der "sonst" teil unbelegt ist. Mir fiel vorgestern (erster Tag mit jenem Programm) eben auf, dass es in der Unterputzdose klackte und ich Sekunden darauf auch die mail erhielt und das obwohl der Rollo schon unten war. Ein Blick auf die Uhr sagte, es ist 21:30, also der späteste Zeitpunkt zu dem er runter fahren sollte. Um dies zu vermeiden kam mir die Idee mit "prüfen auf 5%". Gestern hab ich aber leider wieder dieselbe mail erhalten zur selben Uhrzeit. Gerade vorhin ist er wie gewünscht, da im Wohnzimmer, nach SU runter gefahren und jetzt warte ich gespannt auf 21:30.
Wie gesagt, ich denke auch nicht dass dadurch irgendein defekt entsteht denn dafür gibt es ja Endschalter aber bekommen und getan hat die HM Dose auf jedem Fall etwas, das kann ich nicht nur durch die Kontrollmail sondern wie gesagt auch das Klacken aus der Dose sagen. Heute werde ich um diese Uhrzeit zwar nicht persönlich daheim sein aber dafür gibt es ja dann die mail. Warum sich ohne Änderung aber was tun soll?! Aber, wer weiß [emoji12] ... Werde weiter berichten und zur Not um Hilfe bitten [emoji6]
Grüße, Sven

สัพเพ สัตตา สุขีตา โหนตุ

SuCitta
Beiträge: 169
Registriert: 26.01.2016, 14:38
Danksagung erhalten: 1 Mal

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und

Beitrag von SuCitta » 24.02.2016, 22:14

Ich verstehe es zwar nicht, aber keine weitere mail. Passt also [emoji2]
Danke vielmals!
Eine Frage aber noch oder zwei auch wenn sie nicht ganz hierher passen
- Wenn noch weitere Programme z.b. alarme den Rollo schließen lassen sollen, wie würdest du vorgehen? Den eigentlichen Befehl über eine Systemvariable oder einfach jedes Programm den Rollo schließen lassen?
- Gibt es schon ein Datum ab wann der Wiffi Wz wieder lieferbar sein wird?
Grüße, Sven

สัพเพ สัตตา สุขีตา โหนตุ

Benutzeravatar
funkleuchtturm
Beiträge: 2362
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 355 Mal
Kontaktdaten:

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und

Beitrag von funkleuchtturm » 24.02.2016, 22:34

SuCitta hat geschrieben:Wenn noch weitere Programme z.b. alarme den Rollo schließen lassen sollen, wie würdest du vorgehen? Den eigentlichen Befehl über eine Systemvariable oder einfach jedes Programm den Rollo schließen lassen?
Ich würde über eine Systemvariable schließen lassen. Das erleichtert die Fehlersuche, so daß nicht viele Programme auf eine Rollade zugreifen sondern nur ein oder zwei Programme mit vielen Einflußgrößen die jeweilige Rollade betätigen . Du behälst viel besser den Überblick, wenn im Programm für die Rollade x auch alle Einflußgrößen für deie Rollade x enthalten sind.
SuCitta hat geschrieben:- Gibt es schon ein Datum ab wann der Wiffi Wz wieder lieferbar sein wird?
Genaues Datum noch nicht, obwohl die Bausätze schon da sind. Wahrscheinlich Ende Februar/Anfang März. Ich muß noch etwas an der Software "feilen".
Zuerst wird es den Bausatz allerdings nur ohne Gehäuse geben. Das Thema Gehäuse ist einfach zeitaufwendig und wird deshalb erst später verfügbar sein.
Das Gehäuse wird ein Kubus werden mit einer Kantenlänge von etwa 9cm.
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

SuCitta
Beiträge: 169
Registriert: 26.01.2016, 14:38
Danksagung erhalten: 1 Mal

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und

Beitrag von SuCitta » 25.02.2016, 05:21

Sehr cool, freue mich auf den Wiffi.

Danke, irgendwie ahnte ich, dass die Variablen da die günstigere Wahl sind

Argh, vermutlich hat gestern mein leerer Akku (Energiespar modus) das Handy davon abgehalten die push mail zu empfangen. Es kam um 21:30 leider sich der Befehl "schließen"[emoji15]
Grüße, Sven

สัพเพ สัตตา สุขีตา โหนตุ

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“