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"); }
};
};
}
}
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??
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!
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ß