FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Kalendermodule => Thema gestartet von: FhemPiUser am 15 April 2021, 19:47:18

Titel: Abfallkalender geht nicht mehr nach fhem update
Beitrag von: FhemPiUser am 15 April 2021, 19:47:18
Hallo,
mein seit vielen Jahren zuverlässig laufender Abfallkalender ist seit dem letzten Fhem Update am vor ein paar Tagen nicht mehr aktualisiert.

Ich habe ein Calendar device:

defmod Abfall_Kalender Calendar ical file /opt/fhem/www/kalender/entsorgungskalender_2021.ics 21600
attr Abfall_Kalender hideOlderThan 0


ein CALVIEW:

defmod Abfall_CalView CALVIEW Abfall_Kalender
attr Abfall_CalView maxreadings 17
attr Abfall_CalView modes modeAlarm,modeStart,modeStarted,modeUpcoming


und ein notify:

defmod n_Abfalltermine notify Abfall_Kalender:modeUpcoming.* { Abfalltermine("$EVENT") }


Das notify triggert eine Funktion in myUtil, die wiederum Readings in einem Dummy setzt, wieviele Tage es noch bis zu einem Abfallevent sind. Diese Tage bzw. Readings ändern sich seit dem fhem update nicht mehr.


sub
Abfalltermine ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1); #id des Kalendereintrags
my $t = time;
my $dtPapier = ''; #Datum der Leerung
my $dtWertstoff = '';
my $dtRest = '';
my $dtSperrmuell = '';
my $dtGruen = '';

fhem("setreading MuellterminDummy Altpapier 99");
fhem("setreading MuellterminDummy GelberSack 99");
fhem("setreading MuellterminDummy Restmuell 99");
fhem("setreading MuellterminDummy Sperrmuell 99");
fhem("setreading MuellterminDummy Gruen 99");

foreach my $uid (@uids) {
   my $Kalendertext = fhem("get Abfall_Kalender summary $uid");
   if ($Kalendertext =~ /Altpapier/)
   {
      my $eventDate = KalenderDatum('Abfall_Kalender', $uid);
      if ($dtPapier eq '' || ($eventDate < $dtPapier && $eventDate > $t))
      {
         $dtPapier = $eventDate;

         my $dayDiff = floor(($dtPapier - $t) / 60 / 60 / 24 + 1);
         if ($dayDiff > 99) { $dayDiff = 99; }
         if ($dayDiff >= 0) { fhem("setreading MuellterminDummy Altpapier $dayDiff"); }
      }
   };
   if ($Kalendertext =~ /Gelber/) {
      my $eventDate = KalenderDatum('Abfall_Kalender', $uid);
      if ($dtWertstoff eq '' || ($eventDate < $dtWertstoff && $eventDate > $t))
      {
         $dtWertstoff = $eventDate;

         my $dayDiff = floor(($dtWertstoff - $t) / 60 / 60 / 24 + 1);
         if ($dayDiff > 99) { $dayDiff = 99; }
         if ($dayDiff >= 0) { fhem("setreading MuellterminDummy GelberSack $dayDiff"); }
      }
   };
   if ($Kalendertext =~ /Restmüll/) {
      my $eventDate = KalenderDatum('Abfall_Kalender', $uid);
      if ($dtRest eq '' || ($eventDate < $dtRest && $eventDate > $t))
      {
          $dtRest = $eventDate;

          my $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
          if ($dayDiff > 99) { $dayDiff = 99; }
          if ($dayDiff >= 0) { fhem("setreading MuellterminDummy Restmuell $dayDiff"); }
      }
   };
   if ($Kalendertext =~ /Sperrmüll/) {
      my $eventDate = KalenderDatum('Abfall_Kalender', $uid);
      if ($dtSperrmuell eq '' || ($eventDate < $dtSperrmuell && $eventDate > $t))
      {
         $dtSperrmuell = $eventDate;
         my $dayDiff = floor(($dtSperrmuell - $t) / 60 / 60 / 24 + 1);
         if ($dayDiff > 99) { $dayDiff = 99; }
         if ($dayDiff >= 0) { fhem("setreading MuellterminDummy Sperrmuell $dayDiff"); }
      };
   };
   if (($Kalendertext =~ /Grünrückstände/) or ($Kalendertext =~ /Weihnachtsbäume/)) {
      my $eventDate = KalenderDatum('Abfall_Kalender', $uid);
      if ($dtGruen eq '' || ($eventDate < $dtGruen && $eventDate > $t))
      {
         $dtGruen = $eventDate;
         my $dayDiff = floor(($dtGruen - $t) / 60 / 60 / 24 + 1);
         if ($dayDiff > 99) { $dayDiff = 99; }
         if ($dayDiff >= 0) { fhem("setreading MuellterminDummy Gruen $dayDiff"); }
      };
   };
}
}



Scheinbar wird der notify nicht mehr getriggert. Gleiches gilt für andere Kalender bei mir in fhem, die nach dem gleichen Prinzip funktionieren. Es kann also nicht an der Kalenderdatei liegen, sondern muss ein grundsätzliches Problem sein.

Hat jemand eine Idee, woran das liegen könnte?

Hat sich etwas in den Calendar-Modul geändert? Gibt es kein "modeUpcoming" mehr?
Titel: Antw:Abfallkalender geht nicht mehr nach fhem update
Beitrag von: TomLee am 15 April 2021, 19:53:30
ZitatHat sich etwas in den Calendar-Modul geändert? Gibt es kein "modeUpcoming" mehr?

Ich meine ja, hab nur noch die lastUpdate,nextUpdate und nextWakeup-Readings.
Titel: Antw:Abfallkalender geht nicht mehr nach fhem update
Beitrag von: FhemPiUser am 15 April 2021, 19:56:04
tatsächlich.

Habe das attr hasModeReadings auf 1 gesetzt und jetzt geht es wieder mit modeUpcoming.

Ist irgendwo beschrieben, wie sich die modes geändert haben? Was ersetzt modeUpcoming jetzt?

Titel: Antw:Abfallkalender geht nicht mehr nach fhem update
Beitrag von: Otto123 am 15 April 2021, 19:59:55
Beschreibung https://commandref.fhem.de/#Calendar
ich glaube die Änderung war vor zwei Jahren?  ::)
Titel: Antw:Abfallkalender geht nicht mehr nach fhem update
Beitrag von: FhemPiUser am 15 April 2021, 20:50:11
ahh, danke, irgendwie hatte ich es in der commndref überlesen.

Aber ich wundere mich, dass es bis zu meinem letzten fhem update vor 4 Tagen ging. Ich mache sicherlich deutlich häufiger als alle 2 Jahre ein fhem update.
Titel: Antw:Abfallkalender geht nicht mehr nach fhem update
Beitrag von: Otto123 am 15 April 2021, 21:23:17
die letzte Änderung war am 17.3.2021
Ich habe aber jetzt auch erst gesehen, dass die Events weggefallen sind. Aber ich reagiere darauf auch nicht.