Feiertagsberechnung - Skript
Moderator: Co-Administratoren
Re: Feiertagsberechnung - Skript
Hallo Petrus,
geniale Arbeit von dir. DANKE!
Auch die Idee mit der Auswertung der Urlaubsdaten finde ich super praktisch. Ich würde nur gerne diese Scriptoption als separates Script laufen lassen. Leider habe ich als Newbie noch nichts programmiert und keine Anhnung davon.
Was muss ich wo alles ändern oder definieren?
Gruß
Heini
geniale Arbeit von dir. DANKE!
Auch die Idee mit der Auswertung der Urlaubsdaten finde ich super praktisch. Ich würde nur gerne diese Scriptoption als separates Script laufen lassen. Leider habe ich als Newbie noch nichts programmiert und keine Anhnung davon.
Was muss ich wo alles ändern oder definieren?
Gruß
Heini
-
- Beiträge: 134
- Registriert: 13.01.2010, 20:53
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 25 Mal
Re: Feiertagsberechnung - Skript
Hallo Heini,Heini hat geschrieben:Leider habe ich als Newbie noch nichts programmiert und keine Anhnung davon.
Was muss ich wo alles ändern oder definieren?
du benötigst ein Array, in dem die Anzahl der Tage je Monat enthalten ist, eine String-Variable mit dem aktuellen Datum und die Definition aller sonst enthaltenen Variablen vom entsprechenden Typ.
Kurz gesagt: Wenn du noch kein Script geschrieben hast und ich es dir hier im Detail erläutern soll, wäre es einfacher, dir eine fertige Lösung zu präsentieren. Daher werde ich mir die Option mal vornehmen und entsprechend modifizieren, so dass du und andere den Part auch separat nutzen können.
Gruß
Peter
Re: Feiertagsberechnung - Skript
Hallo Petrus,
na dann will ich mal geduldig abwarten. Danke im voraus.
Gruß
Heini
na dann will ich mal geduldig abwarten. Danke im voraus.
Gruß
Heini
Re: Feiertagsberechnung - Skript
Hallo,
dieses Projekt ist richtig toll, (von beiden Peters). Großes Lob und Dank dafür!!
Besonders lobenswert finde ich die Umsetzung in HP...
Frage an PeterM:
Hast Du Dich mal mit dem Heizungsscript von Erik beschäftigt?? Ist das umsetzbar in HP??
Gruß
Rhobin
dieses Projekt ist richtig toll, (von beiden Peters). Großes Lob und Dank dafür!!
Besonders lobenswert finde ich die Umsetzung in HP...
Frage an PeterM:
Hast Du Dich mal mit dem Heizungsscript von Erik beschäftigt?? Ist das umsetzbar in HP??
Gruß
Rhobin
-
- Beiträge: 761
- Registriert: 14.10.2008, 10:15
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Walldorf/Baden
- Danksagung erhalten: 2 Mal
Re: Feiertagsberechnung - Skript
Hallo Rhobin,
vielen Dank, das geht runter wie Öl
Habe mir das Heizungsskript von Erik noch nicht verinnerlicht, da meine Steuerung eher trivial ausfällt.
Meine Frau ist schon ne Weile zu Hause (während ich noch 20 Monate absitzen muß) und wo sie sich aufhält muß es warm sein, sonst...
Also Erdgeschoß den ganzen Tag warm und Bad im OG nur morgens und abends. Alle anderen Zimmer sind meistens nicht mehr bewohnt, also Absenkung aktiv.
Habe allerdings diese Steuerung auch auf die HM gelegt, um leichter eingreifen zu können.
Grundsätzlich sollte aber auch das Skript in HM umgesetzt werden können, sofern nicht Werte angesprochen werden, die in HM nicht zur verfügung stehen.
Hier mal mein Heizungs-Makro fürs Bad (wird alle 10 Minuten aufgerufen):
Auf offene Fenster nehme ich keine Rücksicht. Wie schon Volkmar sagte, müsste die Absenkung ja bereits beginnen bevor das Fenster geöffnet wird - sonst macht's wenig Sinn.
Könnte man natürlich einfach mit einbinden. Dann müsste das Skript aber wenigstens jede Minute ausgeführt werden!
Generisch geht natürlich absolut nichts mit HP. Solch ein Makro muss also von jedem Thermostaten einzeln aufgerufen werden. Datenübergabe muss über globale Variablen erfolgen...
Viele Grüsse,
Peter
vielen Dank, das geht runter wie Öl
Habe mir das Heizungsskript von Erik noch nicht verinnerlicht, da meine Steuerung eher trivial ausfällt.
Meine Frau ist schon ne Weile zu Hause (während ich noch 20 Monate absitzen muß) und wo sie sich aufhält muß es warm sein, sonst...
Also Erdgeschoß den ganzen Tag warm und Bad im OG nur morgens und abends. Alle anderen Zimmer sind meistens nicht mehr bewohnt, also Absenkung aktiv.
Habe allerdings diese Steuerung auch auf die HM gelegt, um leichter eingreifen zu können.
Grundsätzlich sollte aber auch das Skript in HM umgesetzt werden können, sofern nicht Werte angesprochen werden, die in HM nicht zur verfügung stehen.
Hier mal mein Heizungs-Makro fürs Bad (wird alle 10 Minuten aufgerufen):
Code: Alles auswählen
//==========================================================================
//** aktuelle Werte sichern
tempT:= SVA_T
tempN:= SVA_N
tempL:= SVA_L
SVA_T:= "M"
SVA_N:= "FWT_BAD_Mp"
SVA_L:= FWT_BAD_Mp_Sme
//==========================================================================
LOG:= "Status = aktiv"
aufrufen(MAC_wrt_LOG)
// evtl. über deaktivieren/aktivieren steuern?????
wenn FWT_all_Heizperiode = "aus" dann
deaktivieren(FWT_BAD_Mp)
gehezu VERLASSEN
endewenn
// Temperaturabsenkung:
// FWT_all_Datum_absenken und FWT_all_Datum_hochfahren = Urlaubszeit!
wenn Datum = FWT_all_Datum_absenken dann
wenn FWT_BAD_TAbsenkung > 0 dann
FWT_BAD setzen auf FWT_BAD_TAbsenkung
FWT_all_Datum_absenken:= FWT_all_Datum_absenken - 1
LOG:= "Absenkdatum erreich, absenken auf " + FWT_BAD_TAbsenkung
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
// Bei Urlaubsende wieder aufheizen entsprechend TnachAbsenkung
wenn Datum = FWT_all_Datum_hochfahren dann
FWT_BAD setzen auf FWT_BAD_TnachAbsenkung
FWT_all_Datum_hochfahren:= FWT_all_Datum_hochfahren - 1
LOG:= "Datum zum hochfahren erreicht, hochfahren auf " + FWT_BAD_TnachAbsenkung
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
// Bei Party = an - einmalig auf Party-Temperatur setzen und so lassen
wenn UVA_Party = "an" dann
// Wenn Party-Temperatur vorgegeben wurde: übernehmen, ansonsten aktuelle Temp. halten
wenn FWT_BAD_TParty > 0 dann
wenn FWT_BAD_P_erledigt = 0 dann
FWT_BAD setzen auf FWT_BAD_TParty
FWT_BAD_P_erledigt:= 1
LOG:= "Party aktiv, setzen auf " + FWT_BAD_TParty
aufrufen(MAC_wrt_LOG)
endewenn
endewenn
gehezu VERLASSEN
sonst
// Wenn Party ausgeschaltet, dann Flag wieder zurücksetzen
wenn FWT_BAD_P_erledigt = 1 dann
LOG:= "Party beendet, normaler Ablauf wieder aktiv"
aufrufen(MAC_wrt_LOG)
FWT_BAD_P_erledigt:= 0
endewenn
endewenn
// zunächst Zeitrahmen setzen, falls nicht exakt zur Uhrzeit aktiv!
u:= Uhrzeit + "00:00:20"
// SVA_Feiertag wird einmalig in einem Makro zum Tageswechsel gesetzt!
// Feiertagstemperatur prüfen
wenn SVA_Feiertag <> " " dann
LOG:= "jetzt ist Feiertag aktiv"
aufrufen(MAC_wrt_LOG)
wenn FWT_BAD_Z1_WF <> " " dann
z:= FWT_BAD_Z1_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T1
LOG:= "Uhrzeit = Z1_WF, T1 setzen: " + FWT_BAD_T1
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z2_WF <> " " dann
z:= FWT_BAD_Z2_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T2
LOG:= "Uhrzeit = Z2_WF, T1 setzen: " + FWT_BAD_T2
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z3_WF <> " " dann
z:= FWT_BAD_Z3_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T3
LOG:= "Uhrzeit = Z3_WF, T1 setzen: " + FWT_BAD_T3
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z4_WF <> " " dann
z:= FWT_BAD_Z4_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T4
LOG:= "Uhrzeit = Z4_WF, T1 setzen: " + FWT_BAD_T4
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
gehezu VERLASSEN
endewenn
// Wochenendtemperatur prüfen
// SMDMDFS (Sonntag, Montag, Dienstag...
wenn Wochentag =+ "1000001" dann
LOG:= "jetzt ist Wochenende aktiv"
aufrufen(MAC_wrt_LOG)
wenn FWT_BAD_Z1_WF <> " " dann
z:= FWT_BAD_Z1_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T1
LOG:= "Uhrzeit = Z1_WF, T1 setzen: " + FWT_BAD_T1
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z2_WF <> " " dann
z:= FWT_BAD_Z2_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T2
LOG:= "Uhrzeit = Z2_WF, T2 setzen: " + FWT_BAD_T2
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z3_WF <> " " dann
z:= FWT_BAD_Z3_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T3
LOG:= "Uhrzeit = Z3_WF, T3 setzen: " + FWT_BAD_T3
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
wenn FWT_BAD_Z4_WF <> " " dann
z:= FWT_BAD_Z4_WF
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T4
LOG:= "Uhrzeit = Z4_WF, T4 setzen: " + FWT_BAD_T4
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
endewenn
gehezu VERLASSEN
endewenn
// normale Zeiten berücksichtigen
z:= FWT_BAD_Z1
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T1
LOG:= "Uhrzeit = Z1, T1 setzen: " + FWT_BAD_T1
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
z:= FWT_BAD_Z2
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T2
LOG:= "Uhrzeit = Z2, T2 setzen: " + FWT_BAD_T2
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
z:= FWT_BAD_Z3
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T3
LOG:= "Uhrzeit = Z3, T3 setzen: " + FWT_BAD_T3
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
z:= FWT_BAD_Z4
wenn z zwischen Uhrzeit und u dann
FWT_BAD setzen auf FWT_BAD_T4
LOG:= "Uhrzeit = Z4, T4 setzen: " + FWT_BAD_T4
aufrufen(MAC_wrt_LOG)
gehezu VERLASSEN
endewenn
VERLASSEN:
//==========================================================================
//** aktuelle Werte zurückholen
SVA_T:= tempT
SVA_N:= tempN
SVA_L:= tempL
//==========================================================================
Auf offene Fenster nehme ich keine Rücksicht. Wie schon Volkmar sagte, müsste die Absenkung ja bereits beginnen bevor das Fenster geöffnet wird - sonst macht's wenig Sinn.
Könnte man natürlich einfach mit einbinden. Dann müsste das Skript aber wenigstens jede Minute ausgeführt werden!
Generisch geht natürlich absolut nichts mit HP. Solch ein Makro muss also von jedem Thermostaten einzeln aufgerufen werden. Datenübergabe muss über globale Variablen erfolgen...
Viele Grüsse,
Peter
Re: Feiertagsberechnung - Skript
Hallo PeterM,
die Lösung von Erik erscheint mir auch ziemlich komplex, Dein Programm muss ich mir in einer ruhigen Minute mal zu Gemüte führen. Alle Achtung!
Auf den ersten Blick versteh' ich nur die Hälfte, was logischerweise auch an Deinen Bezeichnungen liegt. Jeder hat halt so seine eingene Systematik.
Was bedeutet bei Dir "FWT"? Was bedeuten die "FWT_Bad_Z3_WF"?? Z = Zeitpunkt, WF??? MAC_wrt_LOG ist wohl ein Makro, das mit SCHREIBEDATEI irgendetwas irgendwohin schreibt.
Das mit dem offenen Fenster seh' ich auch so, ausserdem lohnt sich für 3 Minuten Stosslüftung nicht die Heizung runterzudrehen, bei Fussboden- oder Wandheizung schon grad gar nicht.
Klar ist auch, dass jedes Thermostat einzeln aufgerufen werden muss. Ob ich das tatsächlich mal realisiere oder ob ich die Thermostate und die Stellantriebe sich selbst überlasse, weiß ich noch nicht. Ich kriege erst in diesem Sommer (so er denn irgendwann nochmal kommt) eine neue Zentralheizung (z.T. normale Heizkörper, z.T. Wandheizung über Sockelheizleisten = sehr träge).
Gruß
Rhobin
die Lösung von Erik erscheint mir auch ziemlich komplex, Dein Programm muss ich mir in einer ruhigen Minute mal zu Gemüte führen. Alle Achtung!
Auf den ersten Blick versteh' ich nur die Hälfte, was logischerweise auch an Deinen Bezeichnungen liegt. Jeder hat halt so seine eingene Systematik.
Was bedeutet bei Dir "FWT"? Was bedeuten die "FWT_Bad_Z3_WF"?? Z = Zeitpunkt, WF??? MAC_wrt_LOG ist wohl ein Makro, das mit SCHREIBEDATEI irgendetwas irgendwohin schreibt.
Das mit dem offenen Fenster seh' ich auch so, ausserdem lohnt sich für 3 Minuten Stosslüftung nicht die Heizung runterzudrehen, bei Fussboden- oder Wandheizung schon grad gar nicht.
Klar ist auch, dass jedes Thermostat einzeln aufgerufen werden muss. Ob ich das tatsächlich mal realisiere oder ob ich die Thermostate und die Stellantriebe sich selbst überlasse, weiß ich noch nicht. Ich kriege erst in diesem Sommer (so er denn irgendwann nochmal kommt) eine neue Zentralheizung (z.T. normale Heizkörper, z.T. Wandheizung über Sockelheizleisten = sehr träge).
Gruß
Rhobin
-
- Beiträge: 761
- Registriert: 14.10.2008, 10:15
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Walldorf/Baden
- Danksagung erhalten: 2 Mal
Re: Feiertagsberechnung - Skript
Hallo Rhobin,
ich verlagere mal die Antwort nach: http://homematic-forum.de/forum/viewtop ... =31&t=4306
Viele Grüsse,
Peter
ich verlagere mal die Antwort nach: http://homematic-forum.de/forum/viewtop ... =31&t=4306
Viele Grüsse,
Peter
-
- Beiträge: 134
- Registriert: 13.01.2010, 20:53
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 25 Mal
Re: Feiertagsberechnung - Skript
Hallo Heini,
Gruß
Peter
Dann will ich deine Geduld mal nicht überstrapazieren. Ich habe das Script total überarbeitet. Es wird jetzt zuerst das Format der Daten in der SV Urlaubstage überprüft und erst dann ausgewertet. Man kann sich ja schließlich mal vertippen. Tritt ein Fehler auf, erfolgt ein Eintrag/Hinweis ins Log.Heini hat geschrieben: na dann will ich mal geduldig abwarten.
Gruß
Peter
Re: Feiertagsberechnung - Skript
Hallo Petrus,
VG
Heini
Hast du nicht. Suuuper Arbeit. Neben der Berechnung des Feiertages finde ich es halt sehr praktisch, wenn meine Urlaubstage auch berücksichtigt werden, so dass ich das an diesen Tagen der Zentrale nicht selbst mitteilen muss. Und damit habe ich schon wieder etwas automatisiert.Petrus hat geschrieben: Dann will ich deine Geduld mal nicht überstrapazieren.
VG
Heini
Re: Feiertagsberechnung - Skript
Hallo,
so, nachdem nun die ersten Feiertage da sind, folgende Beobachtung (für PeterM und HP CL)
Seit dem 1.4. wird Ostern nicht mehr am 4.4.2010 "vorausgesagt, sondern am 5.4.!!
Mir scheint, mit der Berechnung stimmt irgendwas nicht
Dementsprechend war heute zunächst mal auch nicht Karfreitag, sondern "Kein Feiertag"
Nachdem ich an dieser Stelle...
...das "+1" herausgenommen habe, stimmt's wieder logischerweise.
Was war denn der ursprüngliche Grund für diese Addition??
Gruß
Rhobin
so, nachdem nun die ersten Feiertage da sind, folgende Beobachtung (für PeterM und HP CL)
Seit dem 1.4. wird Ostern nicht mehr am 4.4.2010 "vorausgesagt, sondern am 5.4.!!
Mir scheint, mit der Berechnung stimmt irgendwas nicht
Dementsprechend war heute zunächst mal auch nicht Karfreitag, sondern "Kein Feiertag"
Nachdem ich an dieser Stelle...
Code: Alles auswählen
// string + 1, da SONST nach der Zuweisung 1 fehlt!!!!!!!
Ostern:= string + 1
SVA_Ostern:= Ostern
Was war denn der ursprüngliche Grund für diese Addition??
Gruß
Rhobin