Hauptmenü

Müllvisualisierung

Begonnen von raspklaus, 07 Dezember 2015, 12:34:40

Vorheriges Thema - Nächstes Thema

raspklaus

Ok Marvin, das habe ich jetzt durch Lektüre begriffen. Scheint auch jetzt etwas besser zu funktionieren. Trotzdem noch etwas unerklärliche Fehlermeldungen nach einem trigger.

2015.12.07 19:15:12 5: Triggering RemovalCheck
2015.12.07 19:15:12 4: RemovalCheck exec {
my $RemovalBlack = "off";;
my $RemovalBrown = "off";;
my $RemovalGreen = "off";;
my $RemovalYellow = "off";;

my $rcal= fhem("get Abfall text all 4",1);;
my RemovalCheckevents = split ("\n", $rcal);;
my $tomorrow = strftime "%d.%m.%y", localtime(time + 86400);;

foreach my $event (RemovalCheckevents)
{
my RemovalCheckvalues = split(" ", $event);;

if (RemovalCheckvalues[0] eq $tomorrow)
{
  if (RemovalCheckvalues[3] eq "Restmüll") {$RemovalBlack = "on"}
  elsif (RemovalCheckvalues[3] eq "Biotonne") {$RemovalBrown = "on"}
  elsif (RemovalCheckvalues[3] eq "Papiertonne") {$RemovalGreen = "on"}
  elsif (RemovalCheckvalues[3] eq "Gelber") {$RemovalYellow = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");;
fhem("set RemovalBrown $RemovalBrown");;
fhem("set RemovalGreen $RemovalGreen");;
fhem("set RemovalYellow $RemovalYellow");;
return;;
}
2015.12.07 19:15:12 3: RemovalCheck return value: No such class RemovalCheckevents at (eval 291) line 8, near ";
my RemovalCheckevents"
syntax error at (eval 291) line 8, near "my RemovalCheckevents ="
No such class RemovalCheckvalues at (eval 291) line 13, near "{
my RemovalCheckvalues"
syntax error at (eval 291) line 13, near "my RemovalCheckvalues ="
syntax error at (eval 291) line 15, near "RemovalCheckvalues["
Global symbol "$RemovalGreen" requires explicit package name at (eval 291) line 19.
Global symbol "$RemovalYellow" requires explicit package name at (eval 291) line 20.
Global symbol "$RemovalBrown" requires explicit package name at (eval 291) line 24.
Global symbol "$RemovalGreen" requires explicit package name at (eval 291) line 25.
Global symbol "$RemovalYellow" requires explicit package name at (eval 291) line 26.
syntax error at (eval 291) line 28, near ";
}"
(eval 291) has too many errors.


marvin78

#16
Hast du den Logeintrag mal gelesen? Daraus geht eindeutig hervor, wo der Fehler zu finden ist:

my RemovalCheckevents = split ("\n", $rcal);;
->

my @RemovalCheckevents = split ("\n", $rcal);;

Bitte versuche zu verstehen, was du da machst. Das hier ist wieder der gleiche Fehler, nur in einer anderen Ausprägung. Der Fehler setzt sich dann im weitern Verlauf des Codes fort (soll heißen, es gibt noch mehr Fehler, die das Array RemovalCheckvalues angehen). Lese die Perl Grundlagen, die dir vorgeschlagen wurden.

raspklaus

Hi,

so gut ich das jetzt verstanden habe ist es geändert

2015.12.07 19:30:05 5: Triggering RemovalCheck
2015.12.07 19:30:05 4: RemovalCheck exec {
my $RemovalBlack = "off";;
my $RemovalBrown = "off";;
my $RemovalGreen = "off";;
my $RemovalYellow = "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 (RemovalCheckvalues[3] eq "Restmüll") {$RemovalBlack = "on"}
  elsif (RemovalCheckvalues[3] eq "Biotonne") {$RemovalBrown = "on"}
  elsif (RemovalCheckvalues[3] eq "Papiertonne") {$RemovalGreen = "on"}
  elsif (RemovalCheckvalues[3] eq "Gelber") {$RemovalYellow = "on"}
}
}
fhem("set RemovalBlack $RemovalBlack");;
fhem("set RemovalBrown $RemovalBrown");;
fhem("set RemovalGreen $RemovalGreen");;
fhem("set RemovalYellow $RemovalYellow");;
return;;
}
2015.12.07 19:30:05 3: RemovalCheck return value: syntax error at (eval 311) line 17, near "RemovalCheckvalues["
syntax error at (eval 311) line 18, near "RemovalCheckvalues["
Global symbol "$RemovalYellow" requires explicit package name at (eval 311) line 20.
Global symbol "$RemovalBrown" requires explicit package name at (eval 311) line 24.
Global symbol "$RemovalGreen" requires explicit package name at (eval 311) line 25.
Global symbol "$RemovalYellow" requires explicit package name at (eval 311) line 26.
syntax error at (eval 311) line 28, near ";
}"



Er springt jetzt also in die Schleife aber ????

marvin78

Zitat von: marvin78 am 07 Dezember 2015, 19:22:11
(soll heißen, es gibt noch mehr Fehler, die das Array RemovalCheckvalues angehen)

Bitte. Beschäftige dich mit dem Code (und mit Perl). Lese in der Perl-Doku (pah hat sie verlinkt) den Abschnitt über Arrays (am besten aber von vorne bis hinten).

Da ich sehr nett bin, korrigiere ich dir noch einen der Fehler

RemovalCheckvalues[3]

->

$value[3]

Den Rest schaffst du selbst.