Ich habe mal die subroutine etwas verkürzt und der Kalender wird beim Notiy mit übergeben
define Abfall_Update notify myCalendar:modeUpcoming.* {Abfalltermine($NAME,"$EVENT")}
#
#### Google Kalender auswerten
#
sub Abfalltermincheck($$$$$$$){
my ($text,$art,$check,$uid,$t,$cal,$Kt) = @_;
my ($dt,@SplitDt,@SplitDate,$eventDate,$daydiff);
# Log 3, "Abfalltermincheck - $text,$art,$check,$uid,$t,$cal";
if ($Kt =~ /$text/) {
$dt = fhem("get $cal start $uid");
@SplitDt = split(/ /,$dt);
@SplitDate = split(/\./,$SplitDt[0]);
$eventDate = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
if ($check eq '' || ($eventDate < $check && $eventDate > $t)){
$check = $eventDate;
$daydiff = floor(($eventDate - $t) / 60 / 60 / 24 + 1);
fhem("set $art $daydiff");
};
};
return ($check);
}
sub Abfalltermine($$){
my ($cal,$Ereignis) = @_;
my ($Kt);
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
my $t = time;
# Prüfvariablen
my $dtBio = '';
my $dtYellow = '';
my $dtRest = '';
my $dtGlas = '';
my $dtPapier = '';
foreach my $uid (@uids) {
$Kt = fhem("get $cal summary $uid");
# Prüfvariable = Abfalltermincheck("Suchtext","Dummyname",Prüfvariable,UID,Zeit,Kalender,Kalendertext)
$dtPapier = Abfalltermincheck("Blaue Tonne","Papiertonne",$dtPapier,$uid,$t,$cal,$Kt);
$dtRest = Abfalltermincheck("Schwarze Tonne","Restmuell",$dtRest,$uid,$t,$cal,$Kt);
};
}
Angepasst an eigene Werte sollte mit ändern/einfügen von reichen:
my $dtxxx = '';
bzw.
$dtxxx = Abfalltermincheck("Suchtext","Dummyname",$dtxxx,$uid,$t,$cal,$Kt);