FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Warlock_2016 am 24 Januar 2016, 15:14:43

Titel: FHEM- Abfallkalender einbinden - Daten werden nicht anzeigt im FHEM Tablet UI
Beitrag von: Warlock_2016 am 24 Januar 2016, 15:14:43
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"); }
      };
   };
}
}

Titel: Antw:FHEM- Abfallkalender einbinden - Daten werden nicht anzeigt im FHEM Tablet UI
Beitrag von: myhome am 02 Februar 2016, 23:44:36
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??
Titel: Antw:FHEM- Abfallkalender einbinden - Daten werden nicht anzeigt im FHEM Tablet UI
Beitrag von: myhome am 03 Februar 2016, 00:24:00
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!
Titel: Antw:FHEM- Abfallkalender einbinden - Daten werden nicht anzeigt im FHEM Tablet UI
Beitrag von: uniqueck am 06 Februar 2016, 20:11:50
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 (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ß