Bei der Umsetzung des Abfallkalenders treten bei mir ei jeder Abfrage folgende Fehlermeldungen auf.
Ich selber habe von Perl keine Ahnung und habe das modul von
http://www.juergenstechnikwelt.de/smarthome-2/smarthome-mit-fhem-umsetzung-meines-abfallkalenders/ benutzt.Time::Local; ist gesetzt
Komischerweise funktionierd alles????????
Kann mir da jemand bitte helfen.
2017.01.13 15:23:06 1: PERL WARNING: Use of uninitialized value within @SuchTexte in concatenation (.) or string at ./FHEM/99_myUtils.pm line 72.
2017.01.13 15:23:06 3: get Abfall find : argument is missing
2017.01.13 15:23:06 3: get Abfall start uid=argument is missing 1 : Argument is is not a number.
2017.01.13 15:23:06 1: PERL WARNING: Use of uninitialized value $SplitDate[1] in subtraction (-) at ./FHEM/99_myUtils.pm line 49.
2017.01.13 15:23:06 1: ERROR evaluating my $EVTPART0='triggered';my $NAME='Abfall';my $TYPE='Calendar';my $EVENT='triggered';my $SELF='notAbfalltermine';{ Abfalltermine() }: Month '-1' out of range 0..11 at ./FHEM/99_myUtils.pm line 49.
2017.01.13 15:23:06 3: notAbfalltermine return value: Month '-1' out of range 0..11 at ./FHEM/99_myUtils.pm line 49.
hier noch meine 99_myUtils.pm
use Time::Local;
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
#
# Anruf Funktionen
#
sub CheckAnrufe($)
{
my ($aktion) = @_;
#bei ausgehenden Anrufen wird der Dummy hochgezählt
if (ReadingsVal("CallMonitor", "direction", "outgoing") eq "incoming")
{
fhem("set duVerpassteAnrufe ".(Value("duVerpassteAnrufe")+1));
}
}
#
# Hilfsfunktion für Kalenderauswertungen
#
sub
KalenderDatum($$)
{
my ($KalenderName, $KalenderUid) = @_;
my $dt = fhem("get $KalenderName start uid=$KalenderUid 1");
my $ret = time - (2*86400); #falls kein Datum ermittelt wird Rückgabewert auf "vorgestern" -> also vergangener Termin;
if ($dt and $dt ne "")
{
my @SplitDt = split(/ /,$dt);
my @SplitDate = split(/\./,$SplitDt[0]);
$ret = timelocal(0,0,0,$SplitDate[0],$SplitDate[1]-1,$SplitDate[2]);
}
return $ret;
}
#
# Abfall Kalender auswerten / Google Kalender: "Abfall"
#
sub
Abfalltermine()
{
my $t = time;
my @Tonnen = ("BlaueTonne", "GelberSack", "GrüneTonne");
my @SuchTexte = (".*Papier.*", ".*Gelber*.*", ".*Restmüll.*");
my $uid;
my $dayDiff;
for(my $i=0; $i<4; $i++)
{
$dayDiff = -1; #BUG behoben
my @uids = split(/;/,fhem("get Abfall find $SuchTexte[$i]"));
# den nächsten Termine finden
foreach $uid (@uids)
{
my $eventDate = KalenderDatum('Abfall', $uid);
my $dayDiffNeu = floor(($eventDate - $t) / 60 / 60 / 24 + 1);
if ($dayDiffNeu >= 0 && ($dayDiffNeu < $dayDiff || $dayDiff == -1)) #BUG behoben
{
$dayDiff = $dayDiffNeu;
}
}
fhem("setreading MuellterminDummy $Tonnen[$i] $dayDiff");
}
}
1;