Hallo zusammen,
das folgende Modul lief bis zum neuen Calendarmodul ohne Probleme und ich habe es deshalb auch nie verändert:
RemovalCheck {
my $RemovalBlack = "off";
my $RemovalBrown = "off";
my $RemovalBlue = "off";
my $RemovalYellow = "off";
my $RemovalToxic = "off";
my $RemovalPaper = "off";
my $RemovalGreen = "off";
my $rcal= fhem("get Abfall text all 4");
my @@events = split ("\n", $rcal);
my $tomorrow = strftime "%d.%m.%y", localtime(time + 86400);
foreach my $event (@events)
{
my @values = split(" ", $event);
if ($values[0] eq $tomorrow)
{
if ($values[3] eq "Restmüll") {$RemovalBlack = "on"}
elsif ($values[3] eq "Biomüllabfuhr") {$RemovalBrown = "on"}
elsif ($values[3] eq "Papiertonne") {$RemovalBlue = "on"}
elsif ($values[3] eq "Gelber") {$RemovalYellow = "on"}
elsif ($values[3] eq "Schadstoffsammlung") {$RemovalToxic = "on"}
elsif ($values[3] eq "Papiersammlung") {$RemovalPaper = "on"}
elsif ($values[3] eq "Grünabfallsammlung") {$RemovalGreen = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");
fhem("set RemovalBrown $RemovalBrown");
fhem("set RemovalBlue $RemovalBlue");
fhem("set RemovalYellow $RemovalYellow");
fhem("set RemovalToxic $RemovalToxic");
fhem("set RemovalPaper $RemovalPaper");
fhem("set RemovalGreen $RemovalGreen");
return;
}
Problem ist das :
my $rcal= fhem("get Abfall text all 4");
das habe ich an das neue Calendarmodul angepasst:
get Abfall text next 4
Nun wird keine Auswertung mehr durchgeführt, mit folgender Fehlermeldung:
2016.02.14 10:22:17 3: RemovalCheck return value: No such class RemovalCheckevents at (eval 29576) line 11, near ";
my RemovalCheckevents"
syntax error at (eval 29576) line 11, near "my RemovalCheckevents ="
No such class RemovalCheckvalues at (eval 29576) line 16, near "{
my RemovalCheckvalues"
syntax error at (eval 29576) line 16, near "my RemovalCheckvalues ="
Global symbol "@values" requires explicit package name at (eval 29576) line 18.
Global symbol "@values" requires explicit package name at (eval 29576) line 20.
Global symbol "@values" requires explicit package name at (eval 29576) line 21.
Global symbol "@values" requires explicit package name at (eval 29576) line 22.
Global symbol "@values" requires explicit package name at (eval 29576) line 23.
Global symbol "@values" requires explicit package name at (eval 29576) line 24.
Global symbol "@values" requires explicit package name at (eval 29576) line 25.
Global symbol "@values" requires explicit package name at (eval 29576) line 26.
Bareword "RemovalCheckevents" not allowed while "strict subs" in use at (eval 29576) line 14.
Eingelesen werden die Einträge wie vorher:
15.02.16 06:00 Abfuhrtermin Biomüllabfuhr am 15.02.2016
22.02.16 06:00 Abfuhrtermin Restmüll am 22.02.2016
23.02.16 06:00 Abfuhrtermin Papiertonne am 23.02.2016
29.02.16 06:00 Abfuhrtermin Biomüllabfuhr am 29.02.2016
Ich habe leider keinen Ansatzpunkt weshalb das Ganze nun nicht mehr läuft und wäre euch sehr dankbar wenn ihr mich dabei unterstützen könntet
Danke
my @@events = split ("\n", $rcal);
Da gehört nur ein @, oder????
lg, Stefan
Argh........Sag jetzt nicht, du arbeitest in der fhem.cfg mit sowas rum?
Jetzt ins gar kein @ mehr da und lauter doppelte ;;
Nein, ich arbeite natürlich nicht in der cfg sondern über das Webinterface. In der Beziehung bin ich ja kein Änfanger mehr.
Im Webinterface siehrt es so aus:
RemovalCheck {
my $RemovalBlack = "off";
my $RemovalBrown = "off";
my $RemovalBlue = "off";
my $RemovalYellow = "off";
my $RemovalToxic = "off";
my $RemovalPaper = "off";
my $RemovalGreen = "off";
my $rcal= fhem("get Abfall text next 1");
my @events = split ("\n", $rcal);
my $tomorrow = strftime "%d.%m.%y", localtime(time + 86400);
my @values = split(" ", $event);
if ($values[0] eq $tomorrow)
{
if ($values[3] eq "Restmüll") {$RemovalBlack = "on"}
elsif ($values[3] eq "Biomüllabfuhr") {$RemovalBrown = "on"}
elsif ($values[3] eq "Papiertonne") {$RemovalBlue = "on"}
elsif ($values[3] eq "Gelber") {$RemovalYellow = "on"}
elsif ($values[3] eq "Schadstoffsammlung") {$RemovalToxic = "on"}
elsif ($values[3] eq "Papiersammlung") {$RemovalPaper = "on"}
elsif ($values[3] eq "Grünabfallsammlung") {$RemovalGreen = "on"}
}
fhem("set RemovalBlack $RemovalBlack");
fhem("set RemovalBrown $RemovalBrown");
fhem("set RemovalBlue $RemovalBlue");
fhem("set RemovalYellow $RemovalYellow");
fhem("set RemovalToxic $RemovalToxic");
fhem("set RemovalPaper $RemovalPaper");
fhem("set RemovalGreen $RemovalGreen");
return;
}
Das @ wird doch durch den Namen des Notifys ersetzt, deshalb die Logausgabe
In der cfg stehen zwei ;;
Sorry, merke gerade, der letzte Logauszug war aus der Testumgebung. War noch im Buffer
Hier die aktuelle Logausgabe:
2016.02.14 14:16:02 4: RemovalCheck exec {
my $RemovalBlack = "off";;
my $RemovalBrown = "off";;
my $RemovalBlue = "off";;
my $RemovalYellow = "off";;
my $RemovalToxic = "off";;
my $RemovalPaper = "off";;
my $RemovalGreen = "off";;
my $rcal= fhem("get Abfall text next 4");;
my RemovalCheckevents = split ("\n", $rcal);;
my $tomorrow = strftime "d.m.y", localtime(time + 86400);;
foreach my $event (RemovalCheckevents)
{
my RemovalCheckvalues = split(" ", $event);;
if ($values[0] eq $tomorrow)
{
if ($values[3] eq "Restmüll") {$RemovalBlack = "on"}
elsif ($values[3] eq "Biomüllabfuhr") {$RemovalBrown = "on"}
elsif ($values[3] eq "Papiertonne") {$RemovalBlue = "on"}
elsif ($values[3] eq "Gelber") {$RemovalYellow = "on"}
elsif ($values[3] eq "Schadstoffsammlung") {$RemovalToxic = "on"}
elsif ($values[3] eq "Papiersammlung") {$RemovalPaper = "on"}
elsif ($values[3] eq "Grünabfallsammlung") {$RemovalGreen = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");;
fhem("set RemovalBrown $RemovalBrown");;
fhem("set RemovalBlue $RemovalBlue");;
fhem("set RemovalYellow $RemovalYellow");;
fhem("set RemovalToxic $RemovalToxic");;
fhem("set RemovalPaper $RemovalPaper");;
fhem("set RemovalGreen $RemovalGreen");;
return;;
}
2016.02.14 14:16:02 3: RemovalCheck return value: No such class RemovalCheckevents at (eval 1499) line 11, near ";
my RemovalCheckevents"
syntax error at (eval 1499) line 11, near "my RemovalCheckevents ="
No such class RemovalCheckvalues at (eval 1499) line 16, near "{
my RemovalCheckvalues"
syntax error at (eval 1499) line 16, near "my RemovalCheckvalues ="
Global symbol "@values" requires explicit package name at (eval 1499) line 18.
Global symbol "@values" requires explicit package name at (eval 1499) line 20.
Global symbol "@values" requires explicit package name at (eval 1499) line 21.
Global symbol "@values" requires explicit package name at (eval 1499) line 22.
Global symbol "@values" requires explicit package name at (eval 1499) line 23.
Global symbol "@values" requires explicit package name at (eval 1499) line 24.
Global symbol "@values" requires explicit package name at (eval 1499) line 25.
Global symbol "@values" requires explicit package name at (eval 1499) line 26.
Bareword "RemovalCheckevents" not allowed while "strict subs" in use at (eval 1499) line 14.
Habe jetzt mal versucht wenigstens den ersten Eintrag ins Log zu bringen
foreach my $event (@events)
{Log 1,"Zeile".$event;
my @values = split(" ", $event);
aber da kommt nichts
WIE genau hast du das denn definiert?
Bei dieser Länge wäre es mAn sinnvoll, das ganze Konstrukt in die 99_myUtils zu legen.
Du es hat aber bis letzte Woche funktioniert. Die letzte Müllabfuhr ist noch richtig angesagt worden und auch der Dummy gesetzt.
Durch das Notify werden ja nur die Dummys zur visuellen Kontrolle auf on gesetzt und der Befehl für die Sprachausgabe erzeugt
Ich komme mit dem angeblichen Syntaxerror nicht klar
Das Ganze in die 99_myUtils zu legen wäre zwar schön, aber das kann ich leider noch nicht
Gruss
Klaus
Hat denn keiner einen Lösungsansatz ?
schau dir mal das abfall-modul (http://forum.fhem.de/index.php?topic=48237.0) oder calview an. beide extrahieren aus dem calendar erfolgreich werte
1. Fehler: Arrays werden mit einem @ vor dem Namen deklariert.
2. Fehler: Wenn du Variablen umbenennst (values), dann bitte auch an allen Stellen im Code.
3. Fehler: Du hast kein einziges Kapitel eines x-beliebigen Perl-Buchs gelesen oder verstanden, fragst stattdessen lieber im Forum nach...
Hallo Dev0,
Dann er klär mir doch aber bitte war ich nicht verstanden habe:
zu Fehler 1:
Mit dem Array meinst Du sicherlich my @events
Das ist mit einem @ deklariert
Die vormals als test eingebenen doppel @ stammen aus der Befehlsreferenz unter Perl Spezials
zu Fehler 2:
Wo benenne ich Variablen um ?
Meinst Du $values[0) und $values[3)
Das ist keine Umbenennung sondern die Position in der Variablen
Bei
15.02.16 06:00 Abfuhrtermin Biomüllabfuhr am 15.02.2016
ist $values[0] gleich 15.02.2016
und
$values[3) gleich Biomüllabfuhr
also wo liegt das der Fehler ?
Ich habe gelesen
Hallo,
auf die Schnelle 3 Dinge:
- Ich hab vor wenigen Wochen mein FHEM auf eine aktuelle Version gebracht und die Abfuhrtermine aus 2016 eingepflegt. Der folgende Codeschnipsel funktioniert bislang problemlos in einem Notify:
RemovalCheck {
my $RemovalBlack = "off";
my $RemovalBrown = "off";
my $RemovalGreen = "off";
my $RemovalYellow = "off";
my $rcal = "";
$rcal = fhem("get RemovalCalendar text modeUpcoming 4",1);
my @events = split ("\n", $rcal);
my $tomorrow = strftime "%d.%m.%y", localtime(time + 86400);
foreach my $event (@events)
{
my @values = split(" ", $event);
if ($values[0] eq $tomorrow)
{
if ($values[2] eq "Restmülltonne") {$RemovalBlack = "on"}
elsif ($values[2] eq "Biotonne") {$RemovalBrown = "on"}
elsif ($values[2] eq "Papiertonne") {$RemovalGreen = "on"}
elsif ($values[2] eq "Gelber") {$RemovalYellow = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");
fhem("set RemovalBrown $RemovalBrown");
fhem("set RemovalGreen $RemovalGreen");
fhem("set RemovalYellow $RemovalYellow");
return;
}
- Das neue Calendarmodul hab ich wohl verpasst - was ist denn da anders?
- Deine Ausgabe vom Log sieht anders aus als dein Code im Notify. Woher kommt z.B. foreach my $event (RemovalCheckevents)??
Lass mal 1. dein Code aus dem Notify sehen und 2. die PASSENDE Logausgabe, wenn du das Notify triggerst. Vielleicht kann ich ja helfen.
Liebe Grüße
DerJens
Zitat von: raspklaus am 14 Februar 2016, 19:48:49
zu Fehler 1:
Mit dem Array meinst Du sicherlich my @events
Nein, sondern:
my RemovalCheckevents
my RemovalCheckvalues
Zitat von: raspklaus am 14 Februar 2016, 19:48:49
zu Fehler 2:
Wo benenne ich Variablen um ?
my RemovalCheckvalues
Das war ursprünglich @values und darauf wird später mit $values[] zugegriffen.
Hallo Dev0,
Du verwechselst die Logausgabe mit den Einträgen in der FHEM Config:
Hier die Logausgabe:
2016.02.14 14:16:02 4: RemovalCheck exec {
my $RemovalBlack = "off";;
my $RemovalBrown = "off";;
my $RemovalBlue = "off";;
my $RemovalYellow = "off";;
my $RemovalToxic = "off";;
my $RemovalPaper = "off";;
my $RemovalGreen = "off";;
my $rcal = "";;
my $rcal= fhem("get Abfall text next 4");;
my RemovalCheckevents = split ("\n", $rcal);;
my $tomorrow = strftime "d.m.y", localtime(time + 86400);;
foreach my $event (RemovalCheckevents)
{
my RemovalCheckvalues = split(" ", $event);;
if ($values[0] eq $tomorrow)
{
if ($values[3] eq "Restmüll") {$RemovalBlack = "on"}
elsif ($values[3] eq "Biomüllabfuhr") {$RemovalBrown = "on"}
elsif ($values[3] eq "Papiertonne") {$RemovalBlue = "on"}
elsif ($values[3] eq "Gelber") {$RemovalYellow = "on"}
elsif ($values[3] eq "Schadstoffsammlung") {$RemovalToxic = "on"}
elsif ($values[3] eq "Papiersammlung") {$RemovalPaper = "on"}
elsif ($values[3] eq "Grünabfallsammlung") {$RemovalGreen = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");;
fhem("set RemovalBrown $RemovalBrown");;
fhem("set RemovalBlue $RemovalBlue");;
fhem("set RemovalYellow $RemovalYellow");;
fhem("set RemovalToxic $RemovalToxic");;
fhem("set RemovalPaper $RemovalPaper");;
fhem("set RemovalGreen $RemovalGreen");;
return;;
}
2016.02.14 14:16:02 3: RemovalCheck return value: No such class RemovalCheckevents at (eval 1499) line 11, near ";
my RemovalCheckevents"
syntax error at (eval 1499) line 11, near "my RemovalCheckevents ="
No such class RemovalCheckvalues at (eval 1499) line 16, near "{
my RemovalCheckvalues"
syntax error at (eval 1499) line 16, near "my RemovalCheckvalues ="
Global symbol "@values" requires explicit package name at (eval 1499) line 18.
Global symbol "@values" requires explicit package name at (eval 1499) line 20.
Global symbol "@values" requires explicit package name at (eval 1499) line 21.
Global symbol "@values" requires explicit package name at (eval 1499) line 22.
Global symbol "@values" requires explicit package name at (eval 1499) line 23.
Global symbol "@values" requires explicit package name at (eval 1499) line 24.
Global symbol "@values" requires explicit package name at (eval 1499) line 25.
Global symbol "@values" requires explicit package name at (eval 1499) line 26.
Bareword "RemovalCheckevents" not allowed while "strict subs" in use at (eval 1499) line 14.
und hier das Notify aus dem Webinterface:
RemovalCheck {
my $RemovalBlack = "off";
my $RemovalBrown = "off";
my $RemovalBlue = "off";
my $RemovalYellow = "off";
my $RemovalToxic = "off";
my $RemovalPaper = "off";
my $RemovalGreen = "off";
my $rcal = "";
my $rcal= fhem("get Abfall text next 1");
my @events = split ("\n", $rcal);
my $tomorrow = strftime "%d.%m.%y", localtime(time + 86400);
my @values = split(" ", $event);
if ($values[0] eq $tomorrow)
{
if ($values[3] eq "Restmüll") {$RemovalBlack = "on"}
elsif ($values[3] eq "Biomüllabfuhr") {$RemovalBrown = "on"}
elsif ($values[3] eq "Papiertonne") {$RemovalBlue = "on"}
elsif ($values[3] eq "Gelber") {$RemovalYellow = "on"}
elsif ($values[3] eq "Schadstoffsammlung") {$RemovalToxic = "on"}
elsif ($values[3] eq "Papiersammlung") {$RemovalPaper = "on"}
elsif ($values[3] eq "Grünabfallsammlung") {$RemovalGreen = "on"}
}
fhem("set RemovalBlack $RemovalBlack");
fhem("set RemovalBrown $RemovalBrown");
fhem("set RemovalBlue $RemovalBlue");
fhem("set RemovalYellow $RemovalYellow");
fhem("set RemovalToxic $RemovalToxic");
fhem("set RemovalPaper $RemovalPaper");
fhem("set RemovalGreen $RemovalGreen");
return;
}
Die Logausgabe bezieht sich auf verbose 5
Das gezeigte Log bezieht sich NICHT auf das gezeigte notify.
Diese 2 Zeilen
foreach my $event (RemovalCheckevents)
{
my RemovalCheckvalues = split(" ", $event);;
fehlen im gezeigten notify und sind in der Logausgabe aber vorhanden.
Weiters ist auch diese Zeile im Log
my $rcal= fhem("get Abfall text next 4");;
und diese im notify
my $rcal= fhem("get Abfall text next 1");
unterschiedlich.
Es wäre für die helfenden mit Sicherheit einfacher wenn du selbst die Logausgaben dem richtigen notify zuordnen könntest.
Ratespiele machen mit der Zeit nämlich keinen Spaß mehr.
Sorry,
ich hatte das aus den vorherigen Threats kopiert. Ich habe nun nochmal alles in der Testumgebung eingespielt und hier die Ausgaben:
Das Log:
2016.02.15 09:33:34 5: Triggering RemovalCheck
2016.02.15 09:33:34 4: RemovalCheck exec {
my $RemovalBlack = "off";;
my $RemovalBrown = "off";;
my $RemovalBlue = "off";;
my $RemovalYellow = "off";;
my $RemovalToxic = "off";;
my $RemovalPaper = "off";;
my $RemovalGreen = "off";;
my $rcal = "";;
my $rcal= fhem("get Abfall text next 4,1");;
my @events = split ("\n", $rcal);;
my $tomorrow = strftime "%d.%m.%y", localtime(time + 86400);;
foreach my $event (@events)
{
my RemovalCheckvalues = split(" ", $event);;
if ($values[0] eq $tomorrow)
{
if ($values[3] eq "Restmüll") {$RemovalBlack = "on"}
elsif ($values[3] eq "Biomüllabfuhr") {$RemovalBrown = "on"}
elsif ($values[3] eq "Papiertonne") {$RemovalBlue = "on"}
elsif ($values[3] eq "Gelber") {$RemovalYellow = "on"}
elsif ($values[3] eq "Schadstoffsammlung") {$RemovalToxic = "on"}
elsif ($values[3] eq "Papiersammlung") {$RemovalPaper = "on"}
elsif ($values[3] eq "Grünabfallsammlung") {$RemovalGreen = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");;
fhem("set RemovalBrown $RemovalBrown");;
fhem("set RemovalBlue $RemovalBlue");;
fhem("set RemovalYellow $RemovalYellow");;
fhem("set RemovalToxic $RemovalToxic");;
fhem("set RemovalPaper $RemovalPaper");;
fhem("set RemovalGreen $RemovalGreen");;
return;;
}
2016.02.15 09:33:34 1: PERL WARNING: "my" variable $rcal masks earlier declaration in same scope at (eval 11278) line 11.
2016.02.15 09:33:34 3: eval: {
my $RemovalBlack = "off";
my $RemovalBrown = "off";
my $RemovalBlue = "off";
my $RemovalYellow = "off";
my $RemovalToxic = "off";
my $RemovalPaper = "off";
my $RemovalGreen = "off";
my $rcal = "";
my $rcal= fhem("get Abfall text next 4,1");
my @events = split ("\n", $rcal);
my $tomorrow = strftime "%d.%m.%y", localtime(time + 86400);
foreach my $event (@events)
{
my RemovalCheckvalues = split(" ", $event);
if ($values[0] eq $tomorrow)
{
if ($values[3] eq "Restmüll") {$RemovalBlack = "on"}
elsif ($values[3] eq "Biomüllabfuhr") {$RemovalBrown = "on"}
elsif ($values[3] eq "Papiertonne") {$RemovalBlue = "on"}
elsif ($values[3] eq "Gelber") {$RemovalYellow = "on"}
elsif ($values[3] eq "Schadstoffsammlung") {$RemovalToxic = "on"}
elsif ($values[3] eq "Papiersammlung") {$RemovalPaper = "on"}
elsif ($values[3] eq "Grünabfallsammlung") {$RemovalGreen = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");
fhem("set RemovalBrown $RemovalBrown");
fhem("set RemovalBlue $RemovalBlue");
fhem("set RemovalYellow $RemovalYellow");
fhem("set RemovalToxic $RemovalToxic");
fhem("set RemovalPaper $RemovalPaper");
fhem("set RemovalGreen $RemovalGreen");
return;
}
2016.02.15 09:33:34 3: RemovalCheck return value: No such class RemovalCheckvalues at (eval 11278) line 17, near "{
my RemovalCheckvalues"
syntax error at (eval 11278) line 17, near "my RemovalCheckvalues ="
Global symbol "@values" requires explicit package name at (eval 11278) line 19.
Global symbol "@values" requires explicit package name at (eval 11278) line 21.
Global symbol "@values" requires explicit package name at (eval 11278) line 22.
Global symbol "@values" requires explicit package name at (eval 11278) line 23.
Global symbol "@values" requires explicit package name at (eval 11278) line 24.
Global symbol "@values" requires explicit package name at (eval 11278) line 25.
Global symbol "@values" requires explicit package name at (eval 11278) line 26.
Global symbol "@values" requires explicit package name at (eval 11278) line 27.
Kopie des notify aus dem Webinterface:
RemovalCheck {
my $RemovalBlack = "off";
my $RemovalBrown = "off";
my $RemovalBlue = "off";
my $RemovalYellow = "off";
my $RemovalToxic = "off";
my $RemovalPaper = "off";
my $RemovalGreen = "off";
my $rcal = "";
my $rcal= fhem("get Abfall text next 4,1");
my @@events = split ("\n", $rcal);
my $tomorrow = strftime "%%d.%%m.%%y", localtime(time + 86400);
foreach my $event (@@events)
{
my @values = split(" ", $event);
if ($values[0] eq $tomorrow)
{
if ($values[3] eq "Restmüll") {$RemovalBlack = "on"}
elsif ($values[3] eq "Biomüllabfuhr") {$RemovalBrown = "on"}
elsif ($values[3] eq "Papiertonne") {$RemovalBlue = "on"}
elsif ($values[3] eq "Gelber") {$RemovalYellow = "on"}
elsif ($values[3] eq "Schadstoffsammlung") {$RemovalToxic = "on"}
elsif ($values[3] eq "Papiersammlung") {$RemovalPaper = "on"}
elsif ($values[3] eq "Grünabfallsammlung") {$RemovalGreen = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");
fhem("set RemovalBrown $RemovalBrown");
fhem("set RemovalBlue $RemovalBlue");
fhem("set RemovalYellow $RemovalYellow");
fhem("set RemovalToxic $RemovalToxic");
fhem("set RemovalPaper $RemovalPaper");
fhem("set RemovalGreen $RemovalGreen");
return;
}
und hier die Ausgabe für get Abfall text next 4
15.02.16 06:00 Abfuhrtermin Biomüllabfuhr am 15.02.2016
22.02.16 06:00 Abfuhrtermin Restmüll am 22.02.2016
23.02.16 06:00 Abfuhrtermin Papiertonne am 23.02.2016
29.02.16 06:00 Abfuhrtermin Biomüllabfuhr am 29.02.2016
Und nochmal:
LOG
my RemovalCheckvalues = split(" ", $event);;
notify:
Es fehlt diese Zeile
Ergo: Die Logausgabe passt immer noch nicht zum gezeigten notify.
Edith: Im notify sieht die Zeile so
my @values = split(" ", $event);
aus und hat mit der Logausgabe aber immer noch nichts zu tun.
Es bleibt dabei - das notify passt nicht zum Log.
Edith1: Abgesehen davon wird $rcal zweimal mit my deklariert - das sagt auch ein Teil der Meldung.
@Puschel,
ich sitze gerade direkt vor der Maschine. Ich hatte vorher das gesammte Log gelöscht, damit nur die richtige Ausgabe drin ist und wie soll die Logausgabe nicht zum Notify passen ?
Am Anfang des Logs steht doch der auslösende Trigger
Dazu der passende Screenshot
Ich hab dir die Unterschiede gezeigt.
Wenn die Logausgabe zum notify unterschiedliche Codes zeigt passen die beiden einfach nicht zusammen.
Der auslösende Trigger ist kein Beweis das es anders ist.
Edith: Aber extra für dich nochmal das "Fehler-Suchbild":
Logausgabe:
foreach my $event (@events)
{
my RemovalCheckvalues = split(" ", $event);;
if ($values[0] eq $tomorrow)
Notify:
foreach my $event (@@events)
{
my @values = split(" ", $event);
if ($values[0] eq $tomorrow)
Wer findet als erster den Unterschied 8)
Ich habe mal das rcal entfernt und values in werte geändert. Hier das Ergebnis:
Webinterface:
RemovalCheck {
my $RemovalBlack = "off";
my $RemovalBrown = "off";
my $RemovalBlue = "off";
my $RemovalYellow = "off";
my $RemovalToxic = "off";
my $RemovalPaper = "off";
my $RemovalGreen = "off";
my $rcal= fhem("get Abfall text next 4,1");
my @events = split ("\n", $rcal);
my $tomorrow = strftime "%%d.%%m.%%y", localtime(time + 86400);
foreach my $event (@events)
{
my @werte = split(" ", $event);
if ($werte[0] eq $tomorrow)
{
if ($werte[3] eq "Restmüll") {$RemovalBlack = "on"}
elsif ($werte[3] eq "Biomüllabfuhr") {$RemovalBrown = "on"}
elsif ($werte[3] eq "Papiertonne") {$RemovalBlue = "on"}
elsif ($werte[3] eq "Gelber") {$RemovalYellow = "on"}
elsif ($werte[3] eq "Schadstoffsammlung") {$RemovalToxic = "on"}
elsif ($werte[3] eq "Papiersammlung") {$RemovalPaper = "on"}
elsif ($werte[3] eq "Grünabfallsammlung") {$RemovalGreen = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");
fhem("set RemovalBrown $RemovalBrown");
fhem("set RemovalBlue $RemovalBlue");
fhem("set RemovalYellow $RemovalYellow");
fhem("set RemovalToxic $RemovalToxic");
fhem("set RemovalPaper $RemovalPaper");
fhem("set RemovalGreen $RemovalGreen");
return;
}
Log:
2016.02.15 10:17:54 5: Triggering RemovalCheck
2016.02.15 10:17:54 4: RemovalCheck exec {
my $RemovalBlack = "off";;
my $RemovalBrown = "off";;
my $RemovalBlue = "off";;
my $RemovalYellow = "off";;
my $RemovalToxic = "off";;
my $RemovalPaper = "off";;
my $RemovalGreen = "off";;
my $rcal= fhem("get Abfall text next 4,1");;
my RemovalCheckevents = split ("\n", $rcal);;
my $tomorrow = strftime "%d.%m.%y", localtime(time + 86400);;
foreach my $event (RemovalCheckevents)
{
my RemovalCheckwerte = split(" ", $event);;
if ($werte[0] eq $tomorrow)
{
if ($werte[3] eq "Restmüll") {$RemovalBlack = "on"}
elsif ($werte[3] eq "Biomüllabfuhr") {$RemovalBrown = "on"}
elsif ($werte[3] eq "Papiertonne") {$RemovalBlue = "on"}
elsif ($werte[3] eq "Gelber") {$RemovalYellow = "on"}
elsif ($werte[3] eq "Schadstoffsammlung") {$RemovalToxic = "on"}
elsif ($werte[3] eq "Papiersammlung") {$RemovalPaper = "on"}
elsif ($werte[3] eq "Grünabfallsammlung") {$RemovalGreen = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");;
fhem("set RemovalBrown $RemovalBrown");;
fhem("set RemovalBlue $RemovalBlue");;
fhem("set RemovalYellow $RemovalYellow");;
fhem("set RemovalToxic $RemovalToxic");;
fhem("set RemovalPaper $RemovalPaper");;
fhem("set RemovalGreen $RemovalGreen");;
return;;
}
2016.02.15 10:17:54 3: RemovalCheck return value: No such class RemovalCheckevents at (eval 12614) line 11, near ";
my RemovalCheckevents"
syntax error at (eval 12614) line 11, near "my RemovalCheckevents ="
No such class RemovalCheckwerte at (eval 12614) line 16, near "{
my RemovalCheckwerte"
syntax error at (eval 12614) line 16, near "my RemovalCheckwerte ="
Global symbol "@werte" requires explicit package name at (eval 12614) line 18.
Global symbol "@werte" requires explicit package name at (eval 12614) line 20.
Global symbol "@werte" requires explicit package name at (eval 12614) line 21.
Global symbol "@werte" requires explicit package name at (eval 12614) line 22.
Global symbol "@werte" requires explicit package name at (eval 12614) line 23.
Global symbol "@werte" requires explicit package name at (eval 12614) line 24.
Global symbol "@werte" requires explicit package name at (eval 12614) line 25.
Global symbol "@werte" requires explicit package name at (eval 12614) line 26.
Bareword "RemovalCheckevents" not allowed while "strict subs" in use at (eval 12614) line 14.
Tja, so wie es aussieht wird das @ durch RemovalCheck ersetzt.
aber das sage ich doch schon die ganze Zeit :'(
Benutzt Du noch Featurelevel 5.6, das würde das Verhalten auf den ersten Blick erklären.
Lager den Code in die 99_myUtils aus.
Zitat von: dev0 am 15 Februar 2016, 10:42:02
Benutzt Du noch Featurelevel 5.6, das würde das Verhalten auf den ersten Blick erklären.
Das wäre jetzt auch meine Vermutung gewesen.
Danke Euch beiden, genau das war es. Ich hatte das Attribut Featurelevel auf 5.6 wegen einem anderen Problem gesetzt und es einfach vergessen zu löschen. Mein Fehler :(