FHEM- Abfallkalender einbinden - Daten werden nicht anzeigt im FHEM Tablet UI

Begonnen von Warlock_2016, 24 Januar 2016, 15:14:43

Vorheriges Thema - Nächstes Thema

Warlock_2016

Hallo Zusammen

ich möchte gerne fragen ob mir jemand helfen kann.

ich verwende die Anleitung von http://www.juergenstechnikwelt.de/smarthome-2/smarthome-mit-fhem-umsetzung-meines-abfallkalenders/ um einen Abfallkalender zu realisieren.

Ich habe es genauso gemacht wie er es beschreibt. Wenn ich den Befehl : "get Abfall full all" eingebe bekomme ich auch ordentlich die nächsten Termine vom Kalendar angezeigt


n9giffivuhrl20pk1b276ev640googlecom     new upcoming                     26.01.2016 06:30:00-26.01.2016 07:30:00 Biotonne



In der Anleitung geht hervor, dass man das Script (siehe unten) in die Date: 99_myUtils.pm kopieren muss was ich auch getan habe. Man muss ebenso einen Notifier setzen der dann die Funktion aufruft.

define notAbfalltermine notify Abfall:modeUpcoming.* { Abfalltermine("$EVENT") } und

define MuellterminDummy dummy

Danach habe ich den Server durchgestartet.

Ich habe ebenso "FHEM Tablet UI" im Einsatz und habe den Code gemäss der Einleitung reinkopiert. Wenn die den Tablet UI starte werden auch die Kreise angezeigt, aber ohne die Daten aus dem Kalendar

Weiss jemand von euch, wie man testen kann, ob zumindest das Script sauber durchläuft?

Entweder in das Script ist nicht i.O. oder ich kann die Icon nicht auf dem Präsentationlayer darstellen?

Hat jemand sowas mal gemacht bzw. habt ihr ein Script?  :-\

Gruss, Markus
__________________________________________


#
# 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"
#

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 $dtBiotonne = '';

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

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

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

          my $dayDiff = floor(($dtRest - $t) / 60 / 60 / 24 + 1);
          if ($dayDiff >= 0) { fhem("setreading MuellterminDummy Restmuell $dayDiff"); }
      }
   };
   if ($Kalendertext =~ /Biotonne/) {
      my $eventDate = KalenderDatum('Abfall', $uid);
      if ($dtBiotonne eq '' || ($eventDate < $dtBiotonne && $eventDate > $t))
      {
         $dtBiotonne = $eventDate;
         my $dayDiff = floor(($dtBiotonne - $t) / 60 / 60 / 24 + 1);
         if ($dayDiff >= 0) { fhem("setreading MuellterminDummy BioTonne $dayDiff"); }
      };
   };
}
}


myhome

Habe das selbe Problem, liegt aber nicht am Skript, da es auf meinem 2 Raspi läuft. Laut LogFile liegt der Fehler in der Funktion "timelocal" "notAbfalltermine return value: Undefined subroutine &main::timelocal called at ./FHEM/99_myUtils.pm line 60."

Es haben aber noch Andere ein Problem mit der Funktion timelocal aber auch da keine Antwort.
Ich finde keinen Fehler bzw. ein Abweichung zwischen den beiden Raspi's, warum geht es bei dem Einem??
Raspberry Pi4, Pi3 und Zero's, Homematic, Zigbee, WLAN, USB, One-wire für Wasser, Heizung und Rücklauftemp und alte F20 für den Garten, Messen GAS, Wasser, Strom, PV, weiteres

myhome

habe was gefunden. Ergänze mal in Deiner Datei 99_... .pm Datei "use Time::Local;". Laüft zwar jetzt, aber alles um 1Tag versetzt, obwohl die Sytemuhr korrekt ist. Bei einem 2ten Rasp ist use.. auch nicht drin aber hier läuft alles korrekt. Komisch das Verhalten!
Raspberry Pi4, Pi3 und Zero's, Homematic, Zigbee, WLAN, USB, One-wire für Wasser, Heizung und Rücklauftemp und alte F20 für den Garten, Messen GAS, Wasser, Strom, PV, weiteres

uniqueck

Auch wenn es anscheinend schon gelöst ist, ich habe hierfür ein kleines Modul entwickelt.
http://forum.fhem.de/index.php/topic,48237.0.html

Ggf. einfach mal testen, es bereitet einfach die nächsten Termine aus einem Kalender vom Typ 57_Calendar auf und stellt alle Readings in einem Format bereit, dass die Einbindung ins FTUI nur noch ne Kleinigkeit ist.

Gruß