Wochentagabhängig schalten

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

gerald_d
Beiträge: 132
Registriert: 13.07.2008, 13:06

Wochentagabhängig schalten

Beitrag von gerald_d » 06.08.2009, 09:54

Hallo zusammen,

ich hab wieder ein kleines *g* problem.
wobei es natürlich sein kann das es keines ist und ich nur komplett auf der leitung stehe.

ich möchte gerne gewisse schaltvorgänge davon abhängig machen ob es ein wochentag oder ein wochenende/feiertag ist.
zb. rolladen am wochentag um 07:00 uhr rauf, am wochenende um 08:00 uhr.

wie kann bekomme ich das gebacken das die CL Studio weiss welcher wochentag heute ist bzw. ob heute ein feiertag ist?
kann ich irgendwie einen kalender mit einbauen?

danke für eure hilfe!

gruß
gerald

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Wochentagabhängig schalten

Beitrag von buempi » 06.08.2009, 10:31

Hallo Gerald

Mit Samstag/Sonntag ist's kein Problem. Wenn die Schaltung nicht auch noch von anderen Bedingungen abhängig ist, würde sich da die Zeittabelle des entsprechenden Aktors am besten eignen.

Feiertage kennt Homeputer aber nicht. Die sind ja auch überall etwas anders. Du müsstest sie selber programmieren und die Daten einmal jährlich updaten. - Das Makro könnte dann so aussehen:

Code: Alles auswählen

// Ausführungsintervall: Jede Stunde
// Nötige Variable:      MeinTag   Typ Zeichen

MeinTag := Wochentag

// Zur besseren Übersicht vielleicht immer nur 3-4 Feiertage in einen Wenn-Block packen
wenn Datum = "01.01.09" oder ... alle übrigen Feiertage ....oder Datum = "26.12.09" dann
   MeinTag := "Feiertag"
endewenn

// Ferien
wenn Datum >= "10.08.09" und Datum <= "30.08.09" dann
   MeinTag := "Feiertag"
endewenn

wenn MeinTag = "Samstag" oder MeinTag = "Sonntag" oder MeinTag = "Feiertag" dann
   wenn Uhrzeit = "08:00:00" dann
      Rollladen rauffahren
   endewenn
sonst
   wenn Uhrzeit = "07:00:00" dann
      Rollladen rauffahren
   endewenn
endewenn
Feiertagstabellen findest du im Internet...

Solltest du diesen "Kalender" in mehreren Makros benötigen, schreibst du ihn am besten in ein Makro, welches bei Start der Ausführung und bei Tageswechsel ausgeführt wird. Auf die Variable MeinTag kannst du dich dann von überall her mit folgender Abfrage beziehen:

Code: Alles auswählen

wenn InitKalender.MeinTag = "Samstag" oder InitKalender.MeinTag = "Sonntag" oder InitKalender.MeinTag = "Feiertag" dann
Viele Grüsse
Bümpi

EDIT: Habe eben noch in der Versions-History nachgeschaut. - Das "Kalender-Makro" müsste INIT_Kalender (nicht InitKalender) heissen, damit es beim Start automatisch ausgeführt wird.

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Wochentagabhängig schalten

Beitrag von buempi » 06.08.2009, 13:44

Hallo Gerald

Beachte bitte auch noch das obige EDIT.

Die jährliche Wartungsarbeit liesse sich noch etwas vereinfachen, indem du die festen Daten so vorgibst:

Code: Alles auswählen

wenn Datum =# "01.01.**" oder ... alle übrigen Feiertage ... oder Datum =# "26.12.**" dann
So brauchst du nur noch die kirchlichen Feiertage, die von Ostern abhängen, zu warten.

Viele Grüsse
Bümpi

gerald_d
Beiträge: 132
Registriert: 13.07.2008, 13:06

Re: Wochentagabhängig schalten

Beitrag von gerald_d » 06.08.2009, 14:18

hallo buempi!

danke für die raschen antworten!!

ich hätte noch eine frage, warum muss ich das erste makro jede stunde ausführen?

danke
gerald

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Wochentagabhängig schalten

Beitrag von buempi » 06.08.2009, 14:35

Hallo Gerald
gerald_d hat geschrieben:warum muss ich das erste makro jede stunde ausführen?
Dort hast du ja Schaltzeiten drin, die zur vollen Stunden (07:00:00 bzw. 08:00:00) ausgeführt werden sollen. Würdest du es nur zum Tageswechsel ausführen, wäre Uhrzeit 00:00:00, und es würde nichts passieren.

Mit "jede Stunde" läuft das Makro natürlich 24x ab und Homeputer muss die Wochenende-/Feiertagsberechnung 22x für die Katz machen. Wenn du diese Berechnung aber nur für den Rollladen benötigst, ist es so einfacher. Wenn hingegen auch andere Schaltungen in anderen Makros vom Wochentag abhängig sind, ist es vorteilhafter, das nur 1x (beim Start bzw. Tageswechsel) zu machen. Die andern Makros holen sich den Wert dann im INIT_Kalender Makro. Sie müssen dann aber auch im richtigen Intervall ablaufen. Hast du in einem Makro bei den Schaltzeiten auch **:**:05* drin, alle 5 Sekunden. Bei **:*0:** alle 10 Minuten... usw.

Viele Grüsse
Bümpi

gerald_d
Beiträge: 132
Registriert: 13.07.2008, 13:06

Re: Wochentagabhängig schalten

Beitrag von gerald_d » 06.08.2009, 15:13

hallo buempi!

hab ich das so richtig verstanden?

ich erstelle ein eigenes makro (muss das dann INIT_kalender heissen?) in dem ich alle feiertage usw. definiere .
dieses makro lasse ich dann immer zum tageswechsel laufen, es wird dann unter "MeinTag" der aktuelle wochentag bzw. feiertag gespeichert.
wenn ich dann ein makro erstelle wo ich einen aktor tagesabhängig schalten will dann füge ich diese abfrage
"wenn INIT_Kalender.MeinTag = "Samstag" oder INIT_Kalender.MeinTag = "Sonntag" oder INIT_Kalender.MeinTag = "Feiertag" dann..." ein.

danke
gerald

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Wochentagabhängig schalten

Beitrag von buempi » 06.08.2009, 15:21

Hallo Gerald

Du hast das 100% richtig verstanden. Das Makro muss nicht unbedingt INIT_Kalender heissen. Es muss aber mit INIT_ beginnen. Das führt dazu, dass es auch bei einem Neustart der Anwendung abläuft, und so die Variable MeinTag mit dem richtigen Wert gefüllt wird. Sonst würde die Variable, wenn du deine Anwendung jetzt dann gleich startest, erst um Mitternacht mit "Freitag" gefüllt. Bis dahin stünde nichts drin.

Viele Grüsse
Bümpi

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Wochentagabhängig schalten

Beitrag von buempi » 06.08.2009, 16:37

.... und damit du die jährliche Wartung nicht vergessen kannst, fügst du am Schluss noch folgendes ins Kalender-Makro ein:

Code: Alles auswählen

wenn Datum =# "01.01.**" und Uhrzeit = "00:00:00" dann
   Sendemail("DeineMail@DeinProvider.de","Homeputer","Veränderliche Feiertage und Ferien in Makro INIT_Kalender eintragen!")
endewenn
So kriegst du zeitgleich mit dem Knallen der Champagner-Korken eine Erinnerungs-Mail :P

Viele Grüsse
Bümpi

gerald_d
Beiträge: 132
Registriert: 13.07.2008, 13:06

Re: Wochentagabhängig schalten

Beitrag von gerald_d » 06.08.2009, 22:54

hallo buempi!

ich hab das jetzt so angelegt, wenn ich mir die variable anzeigen lasse dann steht da immer donnerstag, obwohl ich
in meine INIT_kalender makro "wenn Datum = "01.01.09" oder Datum = "06.08.09" oder Datum = "26.12.09" dann
MeinTag := "Feiertag"
endewenn" eingetragen hab.

was hab ich falsch gemacht?

vielleicht hab ich die variable nicht richtig angelegt?!
kannst du mir vielleicht sagen wie ich die genau anlegen muss?

vielen dank
gerald

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Wochentagabhängig schalten

Beitrag von buempi » 06.08.2009, 23:11

Hallo Gerald

Da bin ich jetzt aber auch ratlos! Die Variable hast du sicher richtig angelegt: Unten im Definitionsbereich als Zeichenvariable. Sonst würde ja auch nicht Donnerstag angezeigt. Und anzeigen lässt du sie dir wohl über eine Befehlszeile wie

Code: Alles auswählen

Anzeige := INIT_kalender.MeinTag
Ich habe leider keine HomeMatic und kann das Makro deshalb nicht mit Homeputer CL testen (komme aus dem FHZ-Bereich). In der HomeputerStudioCL-Hilfe steht
DATUM
Diese Funktion gibt das aktuelle Datum im Format TT.MM.JJ zurück
Kommt da vielleicht das Datum in einem anderen Format zurück? Setze doch bei deinem Anzeige-Makro mal

Code: Alles auswählen

Anzeige := Datum
ein. - Vielleicht werden wir dann schlauer...

Viele Grüsse
Bümpi

Antworten

Zurück zu „homeputer CL“