@ Ronny
Theoretisch sollte Deine Routine ja auch mit einer ical Datei funktionieren, tut sie aber nicht. Ich habe sie entsprechend der hier benutzten Gegebenheiten angepasst, bleibt trotzdem ein Misserfolg
# Mülltermine auswerten
sub Muelltermine ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
my $t = time;
my $dtBio = '';
my $dtYellow = '';
my $dtRest = '';
my $dtPapier = '';
my $dtAltholz = '';
my $dtSchadstoff = '';
my $dtGruen = '';
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Abfall summary $uid");
if ($Kalendertext =~ /Biomüll/) {
my $dt = fhem("get Abfall start $uid");
my @SplitDt = split(/ /,$dt);
my @SplitDate = split(/\./,$SplitDt[0]);
my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
if ($dtBio eq '' || ($eventDate < $dtBio && $eventDate > $t))
{
$dtBio = $eventDate;
Log(3, $dtBio);
}
};
if ($Kalendertext =~ /Gelber Sack/) {
my $dt = fhem("get Abfall start $uid");
my @SplitDt = split(/ /,$dt);
my @SplitDate = split(/\./,$SplitDt[0]);
my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
if ($dtYellow eq '' || ($eventDate < $dtYellow && $eventDate > $t))
{
$dtYellow = $eventDate;
}
};
if ($Kalendertext =~ /Restmüll/) {
my $dt = fhem("get Abfall start $uid");
my @SplitDt = split(/ /,$dt);
my @SplitDate = split(/\./,$SplitDt[0]);
my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
if ($dtRest eq '' || ($eventDate < $dtRest && $eventDate > $t))
{
$dtRest = $eventDate;
}
};
if ($Kalendertext =~ /Papiertonne/) {
my $dt = fhem("get Abfall start $uid");
my @SplitDt = split(/ /,$dt);
my @SplitDate = split(/\./,$SplitDt[0]);
my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
if ($dtPapier eq '' || ($eventDate < $dtPapier && $eventDate > $t))
{
$dtPapier = $eventDate;
}
};
if ($Kalendertext =~ /Altholz/) {
my $dt = fhem("get Abfall start $uid");
my @SplitDt = split(/ /,$dt);
my @SplitDate = split(/\./,$SplitDt[0]);
my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
if ($dtAltholz eq '' || ($eventDate < $dtAltholz && $eventDate > $t))
{
$dtPapier = $eventDate;
}
};
if ($Kalendertext =~ /Schadstoffsammlung/) {
my $dt = fhem("get Abfall start $uid");
my @SplitDt = split(/ /,$dt);
my @SplitDate = split(/\./,$SplitDt[0]);
my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
if ($dtSchadstoff eq '' || ($eventDate < $dtSchadstoff && $eventDate > $t))
{
$dtPapier = $eventDate;
}
};
if ($Kalendertext =~ /Grünabfall/) {
my $dt = fhem("get Abfall start $uid");
my @SplitDt = split(/ /,$dt);
my @SplitDate = split(/\./,$SplitDt[0]);
my $eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
if ($dtGruen eq '' || ($eventDate < $dtGruen && $eventDate > $t))
{
$dtPapier = $eventDate;
}
};
};
my $dayDiff = floor(($dtBio - $t) / 60 / 60 / 24 + 1);
if ($dayDiff >= 0) {
fhem("set BiomuellIn $dayDiff");
}
my $dayDiff = floor(($dtYellow - $t) / 60 / 60 / 24 + 1);
if ($dayDiff >= 0) {
fhem("set GelbeTonneIn $dayDiff");
}
my $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
if ($dayDiff >= 0) {
fhem("set RestmuellIn $dayDiff");
}
my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
if ($dayDiff >= 0) {
fhem("set PapierIn $dayDiff");
}
my $dayDiff = floor(($dtAltholz - $t) / 60 / 60 / 24 + 1);
if ($dayDiff >= 0) {
fhem("set AltholzIn $dayDiff");
}
my $dayDiff = floor(($dtSchadstoff - $t) / 60 / 60 / 24 + 1);
if ($dayDiff >= 0) {
fhem("set SchadstoffIn $dayDiff");
}
my $dayDiff = floor(($dtGruen - $t) / 60 / 60 / 24 + 1);
if ($dayDiff >= 0) {
fhem("set GruenIn $dayDiff");
}
}
Vor allem ist mir mode.*abfallamtbautzende.* in dem Notify
define nf.Muellkalender.Update notify Muellkalender:mode.*abfallamtbautzende.* {Muelltermine("$EVENT");;}
nicht klar