Für den ein oder anderen ist es vielleicht hilfreich, sich die Zeitmoduleinträge auf seiner CCU anzuschauen zu können.
Das unten stehende Script erzeugt eine Liste mit Zeitmodulen und die Zuordnung zu einem Programm und vieles mehr.
Zum Testen einfach per Copy & Paste in einen geeigneten Editor kopieren und ausführen.
Alchy
Code: Alles auswählen
! Zeitmoduleinträge auslesen aufarbeiten und ausgeben
! v0.3 (c) by Alchy
! https://homematic-forum.de/forum/viewtopic.php?f=31&t=60258
string sItemId; string slist;
foreach(sItemId,dom.GetObject(ID_CALENDARDPS).EnumIDs() ) {
var oObj = dom.GetObject(sItemId);
if (oObj) {
if (oObj.Type() == OT_CALENDARDP) {
var oObjProg = dom.GetObject(oObj.DPEnumUsagePrograms());
slist = slist#" \n\n Zeitmoduleintrag ID: " # oObj.ID() #" aus Programm: "#oObjProg.Name() #" - Programm aktiv: "#oObjProg.Active() #"\n\t";
if (oObj.SunOffsetType() == sotNone) {
if ( (oObj.CalDuration() == 0) && (oObj.Time() == 0) ) { slist = slist # " Zeit: ganztägig"; }
else {
if (oObj.CalDuration() != 0) {
slist = slist# " Zeit: Zeitspanne: "#oObj.Time().ToString("%H:%M Uhr") #" bis "#(oObj.Time()+oObj.CalDuration()).ToString("%H:%M Uhr") #" (Dauer: " # oObj.CalDuration() #" Sekunden)";
}else {
slist = slist #" Zeit: Zeitpunkt: " #oObj.Time().ToString("%H:%M Uhr");
}
}
}
else {
if (oObj.SunOffsetType() == sotAfterSunrise) { slist = slist# " Zeit: Zeitspanne: Tagsüber";}
if (oObj.SunOffsetType() == sotAfterSunset) { slist = slist #" Zeit: Zeitspanne: Nachtsüber";}
}
string sCalRep = oObj.CalRepeatTime();
integer iPeriod = oObj.Period();
integer iRepVal = oObj.CalRepetitionValue();
integer iWdays = oObj.Weekdays();
integer iType = oObj.TimerType();
if (iType == ttCalOnce) { slist = slist# "\n\t Serienmuster: einmalig am " # sCalRep;}
if (iType == ttPeriodic) {
slist = slist# "\n\t Serienmuster: Zeitintervall"; integer iSelIdx = 0; string sVal = "";
sVal = iPeriod;
if ( (iPeriod / (3600)) > 0)
{
if( (iPeriod % 3600) == 0 ){sVal = iPeriod / (3600); iSelIdx = 0; }
else {
if( (iPeriod % 60) == 0 )
{ sVal = iPeriod / (60); iSelIdx = 1;
} else
{ sVal = iPeriod; iSelIdx = 2;
}
}
}
else
{
if ( (iPeriod / 60) > 0)
{
if( (iPeriod % 60) == 0 )
{
sVal = iPeriod / (60);
iSelIdx = 1;
}
else
{
sVal = iPeriod;
iSelIdx = 2;
}
}
else
{
sVal = iPeriod;
iSelIdx = 2;
}
}
slist = slist# " alle " # sVal # " ";
if (iSelIdx == 0) { slist = slist# " Stunden ";}
if (iSelIdx == 1) { slist = slist# " Minuten ";}
if (iSelIdx == 2) { slist = slist# " Sekunden ";}
}
if (iType == ttCalDaily) {
slist = slist# "\n\t Serienmuster: täglich";
if (iRepVal != 0) { slist = slist# " - alle " # iRepVal #" Tage "; }
if (iWdays != 0) {
if (iWdays == 96) { slist = slist# ", an Wochenenden "; }
else { slist = slist# ", werktags "; }
}
if ((iRepVal == 0) && (iWdays == 0)) { slist = slist# ", jeden Tag";}
}
if (iType == ttCalWeekly) {
slist = slist# "\n\t Serienmuster: wöchentlich";
if (iRepVal != 0) {
slist = slist# ", alle " # iRepVal # " Wochen am ";
} else { slist = slist# " - jede Woche am "; }
if ( (iWdays & 1) != 0) { slist = slist#" Montag"; }
if ( (iWdays & 2) != 0) { slist = slist#" Dienstag"; }
if ( (iWdays & 4) != 0) { slist = slist#" Mittwoch"; }
if ( (iWdays & 8) != 0) { slist = slist#" Donnerstag"; }
if ( (iWdays & 16) != 0) { slist = slist# " Freitag"; }
if ( (iWdays & 32) != 0) { slist = slist# " Samstag"; }
if ( (iWdays & 64) != 0) { slist = slist# " Sonntag"; }
}
if (iType == ttCalMonthly) {
slist = slist# "\n\t Serienmuster: monatlich ";
if (iWdays == 0) { slist = slist# " am "#iPeriod#". Tag jedes "#iRepVal#". Monats";
}else {
slist = slist# " am "#iPeriod#". ";
integer iSelIdx = 0;
if ( (iWdays & 1) != 0) { slist = slist# " Montag"; }
if ( (iWdays & 2) != 0) { slist = slist# " Dienstag"; }
if ( (iWdays & 4) != 0) { slist = slist# " Mittwoch"; }
if ( (iWdays & 8) != 0) { slist = slist# " Donnerstag"; }
if ( (iWdays & 16) != 0) { slist = slist# " Freitag"; }
if ( (iWdays & 32) != 0) { slist = slist# " Samstag"; }
if ( (iWdays & 64) != 0) { slist = slist# " Sonntag"; }
slist = slist# " jedes "#iRepVal#". Monats";
}
}
if (iType == ttCalYearly) {
slist = slist# "\n\t Serienmuster: jährlich ";
if (iWdays == 0) {
slist = slist# "am "#iPeriod#"."#iRepVal#".";
}else {
slist = slist# "am "#iPeriod#". ";
if ( (iWdays & 1) != 0) { slist = slist# " Montag"; }
if ( (iWdays & 2) != 0) { slist = slist# " Dienstag"; }
if ( (iWdays & 4) != 0) { slist = slist# " Mittwoch"; }
if ( (iWdays & 8) != 0) { slist = slist# " Donnerstag"; }
if ( (iWdays & 16) != 0) { slist = slist# " Freitag"; }
if ( (iWdays & 32) != 0) { slist = slist# " Samstag"; }
if ( (iWdays & 64) != 0) { slist = slist# " Sonntag"; }
slist = slist# " im Monat "#iRepVal;
}
}
time sBegin; time sEnd;
sBegin = oObj.Begin();
sEnd = oObj.End();
integer iCalCount = oObj.CalRepetitionCount();
slist = slist# "\n\t Gültigkeitsdauer: "#sBegin.ToString("%d.%m.%y") ;
!--- um den local0.err ReGaHss bei oObj.Next() zu vermeiden nur aktive Programme scannen
if (oObjProg.Active()==true)
{
if ( (iCalCount == 0) && (oObj.EndSeconds() == 0) )
{
slist = slist# " - kein Enddatum - nächste Auslösung am: "#oObj.Next().ToString("%d.%m.%y %H:%M Uhr");
}
else
{
if (iCalCount == 0)
{
slist = slist# " - endet am "#sEnd.ToString("%d.%m.%y") #" - nächste Auslösung am: "#oObj.Next().ToString("%d.%m.%y %H:%M Uhr");
}
else
{
slist = slist# " - endet nach "#iCalCount#" Terminen - nächste Auslösung am: "#oObj.Next().ToString("%d.%m.%y %H:%M Uhr");
}
}
}
}
}}
WriteLine(slist);