Hallo zusammen,
mir ist bekannt das das Modul gerade überarbeitet wird, jedoch ging ich davon aus das das aktuelle Modul erst mal soweit funktioniert wie vorher auch. Mir ist jedoch aufgefallen das bei mir das Intervall nicht mehr funktioniert. Das .ics File wird lediglich beim restart einmalig eingelesen was ich im Log sehe, aber das gesetzte Intervall führt nicht dazu das dies erneut durchgeführt wird. So sieht meine Definition aus: define Abfall Calendar ical file /opt/fhem/FHEM/2016_Abfall.ics 60
attr Abfall icon time_calendar
attr Abfall room Abfallkalender
define Abfall_Update notify Abfall:(modeUpcoming|modeAlarmOrStart).* {Abfalltermine("$EVENT")}
attr Abfall_Update room Abfallkalender
define MuellterminDummy dummy
define Papiertonne dummy
attr Papiertonne group Abfall Countdown
attr Papiertonne room Abfallkalender
...
Lediglich beim shutdown restart sehe ich im Log: 2016.02.18 22:54:55 3: get Abfall summary 23752ED596014D36B27BBB21BF3751DD : GelbeTonne
2016.02.18 22:54:55 3: get Abfall start 23752ED596014D36B27BBB21BF3751DD : 06.09.2016 10:00:00
2016.02.18 22:54:55 3: 1473112800
2016.02.18 22:54:55 3: get Abfall summary 5F627C215CA94565A354D29770BBCFE4 : Reste
2016.02.18 22:54:55 3: get Abfall start 5F627C215CA94565A354D29770BBCFE4 : 25.10.2016 10:00:00
2016.02.18 22:54:55 3: 1477346400
2016.02.18 22:54:55 3: get Abfall summary BDE920C133884F7BB0955D2B04BD9CF8 : Papiertonne
2016.02.18 22:54:55 3: get Abfall start BDE920C133884F7BB0955D2B04BD9CF8 : 28.10.2016 10:00:00
2016.02.18 22:54:55 3: 1477605600
2016.02.18 22:54:55 3: get Abfall summary 7305648DD6B44FCF9CE62E8EC94D5773 : GelbeTonne
2016.02.18 22:54:55 3: get Abfall start 7305648DD6B44FCF9CE62E8EC94D5773 : 09.08.2016 10:00:00
2016.02.18 22:54:55 3: 1470693600
2016.02.18 22:54:55 3: get Abfall summary D952ADD526CE4279AA7437007355B45D : Papiertonne
2016.02.18 22:54:55 3: get Abfall start D952ADD526CE4279AA7437007355B45D : 19.02.2016 10:00:00
2016.02.18 22:54:55 3: 1455836400
2016.02.18 22:54:55 3: get Abfall summary 6F988C52207B492EBF75B25A02DB8FDB : GelbeTonne
2016.02.18 22:54:55 3: get Abfall start 6F988C52207B492EBF75B25A02DB8FDB : 28.12.2016 10:00:00
2016.02.18 22:54:55 3: get Abfall summary 716500CD82134FC29AA0C45236FB3329 : GelbeTonne
2016.02.18 22:54:55 3: get Abfall start 716500CD82134FC29AA0C45236FB3329 : 29.11.2016 10:00:00
2016.02.18 22:54:55 3: get Abfall summary 4322415EFC9047B792DB4ED09E5C03A9 : GelbeTonne
2016.02.18 22:54:55 3: get Abfall start 4322415EFC9047B792DB4ED09E5C03A9 : 22.03.2016 10:00:00
...
Ich hätte erwartet das das alle 60sek. (so wie früher) ausgeführt und gelogt wird - ist aber nicht. Laut Wiki hat sich die definition aber nicht geändert ?!? Hat da jemand einen Tipp?
Danke vorab!
Probiers mal ohne Intervallangabe, oder zumindest nicht mit einem so kurzen Intervall wie von Dir gewählt.
Ohne Interval wird der Kalender doch nur einmalig eingelesen - das nützt mir in diesem Fall nix - ich benötige schon einen intervall.
Das mit 60sek. ist nur testweise drin, normalerweise steht da 10800 drin. Aber ob 5, 60 oder 10800 macht eh keinen Unterschied da der Intervall eh ignoriert wird...
define Abfall_Update notify Abfall:triggered {Abfalltermine("$EVENT")}
Zitat von: dieoma am 19 Februar 2016, 20:15:31
Ohne Interval wird der Kalender doch nur einmalig eingelesen
Nein. Der default-Wert für den optionalen Paramter interval ist 3600 Sekunden.
Hallo ,
habe das gleiche Problem.
Die Readings "State" "lastupdate" "nextupdate" werden so wie im define testweise im 60sec Rythmus aktualisiert.
Allerdings wird in "modeUpcoming" wo die Termine stehen nichts geändert wenn Termine im Kalener hinzugefügt wurden.
Dadurch werden die vorhandenen vermutlich auch nicht aktualisiert(wieviele Tage noch bis zur Müllabholung sind).
Wenn ich die cfg allerings speicher, wird der Kalener geupdatet.
Anbei ie cfg.
define Abfall Calendar ical url https://...........basic.ics 60
attr Abfall alias Abfallkalender
attr Abfall fp_Wohnzimmer 359,726,1, ,Abfall
attr Abfall icon recycling
attr Abfall room Kalender
define Gelber.Sack dummy
attr Gelber.Sack group Info
attr Gelber.Sack icon bag@yellow
attr Gelber.Sack room Kalender
define Resttonne dummy
attr Resttonne group Info
attr Resttonne icon dustbin@rgb(87,44,1)
attr Resttonne room Kalender
define Papiertonne dummy
attr Papiertonne group Info
attr Papiertonne icon dustbin@blue
attr Papiertonne room Kalender
define Biotonne dummy
attr Biotonne group Info
attr Biotonne icon dustbin@green
attr Biotonne room Kalender
define Abfall_Update notify Abfall:modeUpcoming.* {Abfalltermine($NAME,"$EVENT")}
attr Abfall_Update room Kalender
und der Inhalt der 99myUtils
######Abfallkalener ##############
#
# Hilfsfunktion für Kalenderauswertungen
#
sub
KalenderDatum($$)
{
my ($KalenderName, $KalenderUid) = @_;
my $dt = fhem("get $KalenderName start $KalenderUid");
my @SplitDt = split(/ /,$dt);
my @SplitDate = split(/\./,$SplitDt[0]);
my $ret = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
return $ret;
}
#
# Abfall Kalender auswerten / Google Kalender: "Abfall"
#
#### 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",1);
@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",1);
};
};
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 $dtGelb = '';
my $dtRest = '';
# my $dtGlas = '';
my $dtPapier = '';
foreach my $uid (@uids) {
$Kt = fhem("get $cal summary $uid",1);
# Prüfvariable = Abfalltermincheck("Suchtext","Dummyname",Prüfvariable,UID,Zeit,Kalender,Kalendertext)
$dtPapier = Abfalltermincheck("Papier","Papiertonne",$dtPapier,$uid,$t,$cal,$Kt);
$dtRest = Abfalltermincheck("Rest","Resttonne",$dtRest,$uid,$t,$cal,$Kt);
$dtBio = Abfalltermincheck("Bio","Biotonne",$dtBio,$uid,$t,$cal,$Kt);
$dtGelb = Abfalltermincheck("Gelber","Gelber.Sack",$dtGelb,$uid,$t,$cal,$Kt);
};
}
Meinen Beitrag dazu gesehen?
Wenn Du im Google-Kalender einen Termin hinzufügst, wir der Kalender beim nächsten Update aktualisiert. Du kannst das selbst debuggen, indem Du
get Abfall debug all
get Abfall vevents
vor und nach der Änderung im Kalender mit Update via
set Abfall update
vergleichst.
Viele Grüße
Boris
habe das nun wie von Boris vorgeschlagen geändert aber im Log ist noch immer kein update zu sehen?!?
meine 99_myUtils sieht so aus: #
# Abfall Kalender auswerten / Google Kalender: "Abfall"
#
sub
Abfalltermine ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
my $t = time;
my $dtPapier = '';
my $dtWertstofftonne = '';
my $dtRest = '';
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Abfall summary $uid");
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;
Log(3, $dtPapier);
}
};
if ($Kalendertext =~ /GelbeTonne/) {
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 ($dtWertstofftonne eq '' || ($eventDate < $dtWertstofftonne && $eventDate > $t))
{
$dtWertstofftonne = $eventDate;
Log(3, $dtWertstofftonne);
}
};
if ($Kalendertext =~ /Reste/) {
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;
Log(3, $dtRest);
}
};
my $dayDiff1 = floor(($dtPapier - $t) / 60 / 60 / 24 +1);
if ($dayDiff1 >= 0) {
fhem("set Papiertonne $dayDiff1");
fhem("setreading MuellterminDummy BlaueTonne $dayDiff1");
}
my $dayDiff2 = floor(($dtWertstofftonne - $t) / 60 / 60 / 24 +1);
if ($dayDiff2 >= 0) {
fhem("set Gelbe $dayDiff2");
fhem("setreading MuellterminDummy GelbeTonne $dayDiff2");
}
my $dayDiff3 = floor(($dtRest - $t) / 60 / 60 / 24 +1);
if ($dayDiff3 >= 0) {
fhem("set Restmuell $dayDiff3");
fhem("setreading MuellterminDummy Restmuell $dayDiff3");
}
}
}
1;
Kann es sein das "Abfall:triggered" anders auswertet als "Abfall:(modeUpcoming|modeAlarmOrStart)" und daher a) nix mehr im Log steht und b) der Countdown nicht mehr klappt? Wie gesagt - das hat mal alles mehrere Monate prima funktioniert ::)
Sorry, es muss
define Abfall_Update notify Abfall:(alarm|start|end).* {Abfalltermine("$EVENT")}
heißen.
Das sieht geringfügig besser aus, aber nicht gut. Mit debug zeigt er nun ...
EFFCB14CFE6C4C9C88AD7A172E766AE4 end 26.01.2016 10:00:00-26.01.2016 11:00:00 GelbeTonne
BA9A0C406A024BB3A3734B9FF7E9F057 end 02.02.2016 10:00:00-02.02.2016 11:00:00 Reste
32D9BBA7ED5B485194E6B00DEDDCCF72 end 10.02.2016 10:00:00-10.02.2016 11:00:00 GelbeTonne
80DFCF32AD684FB997A7C0DCCDBD51D5 end 16.02.2016 10:00:00-16.02.2016 11:00:00 Reste
D952ADD526CE4279AA7437007355B45D end 19.02.2016 10:00:00-19.02.2016 11:00:00 Papiertonne
D53D8896EF55464AB6A1543224CE247D upcoming 23.02.2016 10:00:00-23.02.2016 11:00:00 GelbeTonne
E224CFF789B14BAF8CD8F7547C0F94C3 upcoming 01.03.2016 10:00:00-01.03.2016 11:00:00 Reste
B9AA164FAA0145FE8230958520E7BF81 upcoming 08.03.2016 10:00:00-08.03.2016 11:00:00 GelbeTonne
E2CECFFA42744371BD4ACFE2C1396C3D upcoming 15.03.2016 10:00:00-15.03.2016 11:00:00 Reste
27F366849C6341599D61C389AE00A9F2 upcoming 18.03.2016 10:00:00-18.03.2016 11:00:00 Papiertonne
4322415EFC9047B792DB4ED09E5C03A9 upcoming 22.03.2016 10:00:00-22.03.2016 11:00:00 GelbeTonne
...
was richtig ist bezogen auf "end" und "upcoming" aber die Zähler werden nicht aktualisiert denn für Papiertonne zeigt er 0 an was ja nicht stimmen kann. Außerdem bin ich was das Intervall angeht auch noch unsicher denn noch immer sehe ich keine Updates im log...