Hallo
Ich habe seit neustem das Problem, dass ich folgenden perl Code nicht mehr ausführen kann:
my @stubeFenster=("a", "b");
Ich erhalte dann im Log folgende Fehlermeldung:
No such class stubeFenster at (eval 6811) line 5, near ";
my stubeFenster"
syntax error at (eval 6811) line 5, near "my stubeFenster="
Ich habe keine Ahnung was ich da falsch mache. Zudem ist der Code in der Vergangenheit gelaufen. Ich weiss aber nicht was ich genau gemacht habe zwischen dem Zeitpunkt an dem es funktioniert hat und von da an, ab dann es nicht mehr funktioniert.
Gedanken: Ich habe vor einen paar Tag fhem seit langem wieder mal aktualisiert, den Raspberry pi habe ich aber erst vor kurzem neu gestartet. Das Problem tritt ca. seit da auf als ich ihn neu gestartet habe.
Weiss jemand was ich falsch mache, oder wie ich das Problem beheben kann?
Fhem hat aktuell die Revision: 22694 und läuft auf einem Raspberry pi
Besten Dank für die Hilfe.
Gruss
jack_uf
Ach da schau her - die Fehlerquelle steht doch schon in der Fehlermeldung...
near "my stubeFenster="
Wenn Du da tatsächlich ein array definieren möchtest, solltest Du halt auch das @ vor den Variablennamen schreiben 8)
my @stubeFenster=
Hallo betateilchen
Besten Dank für Deine schnelle Antwort.
Das verwirrt mich eben noch zusätzlich im Code ist das @ drin
hier einen Auszug direkt aus dem fhem.cfg
\
my @stubeFenster=("a", "b");;\
Das Log spricht fhem dann aber nicht mehr davon. Es scheit als würden die @ verschluckt.
Zeig doch mal den ganzen Code, ich glaube nur, was ich sehe...
sehr gerne :)
Hier der echte Code. Es handelt sich hier um ein at.
+*00:10:00 {
my @allFenster = ("FensterBad", "FensterDachzimmer", "FensterDachzimmerNord", "FensterElternZimmer", "FensterElternZimmerNord", "FensterSchlafzimmerOst", "FensterSpielzimmer", "FensterStube", "FensterSchlafzimmerSued", "FensterFirstkammer", "FensterElternZimmer", "FensterElternZimmerNord", "FensterKueche", "FensterTreppenhaus");
foreach my $fenster (@allFenster){
if(Value($fenster) eq "opened" or Value($fenster) eq "open"){
fhem("set einFensterOffenLastState ".Value("einFensterOffen"));
fhem("set einFensterOffen true");
return 0;
}
}
fhem("set einFensterOffen false");
fhem("set einFensterOffenLastState false");
}
Im Log steht nun dies
Zitat
2023.01.12 06:26:31 1: ERROR evaluating {
my allFenster = ("FensterBad", "FensterDachzimmer", "FensterDachzimmerNord", "FensterElternZimmer", "FensterElternZimmerNord", "FensterSchlafzimmerOst", "FensterSpielzimmer", "FensterSt$
foreach my $fenster (allFenster){
if(Value($fenster) eq "opened" or Value($fenster) eq "open"){
fhem("set einFensterOffenLastState ".Value("einFensterOffen"));
fhem("set einFensterOffen true");
return 0;
}
}
fhem("set einFensterOffen false");
fhem("set einFensterOffenLastState false");
}: No such class allFenster at (eval 20554) line 2, near "{
my allFenster"
syntax error at (eval 20554) line 2, near "my allFenster ="
Bareword "allFenster" not allowed while "strict subs" in use at (eval 20554) line 4.
Vielen Dank für Deine Bemühungen.
update wenn ich zwei @@ im Code hin mache, dann scheint es zu funktionieren. Hat sich da was geändert? Kann das sein?
{
my @@allFenster = ("FensterBad", "FensterDachzimmer", "FensterDachzimmerNord", "FensterElternZimmer", "FensterElternZimmerNord", "FensterSchlafzimmerOst", "FensterSpielzimmer", "FensterStube", "FensterSchlafzimmerSued", "FensterFirstkammer", "FensterElternZimmer", "FensterElternZimmerNord", "FensterKueche", "FensterTreppenhaus");
foreach my $fenster (@@allFenster){
if(Value($fenster) eq "opened" or Value($fenster) eq "open"){
fhem("set einFensterOffenLastState ".Value("einFensterOffen"));
fhem("set einFensterOffen true");
return 0;
}
}
fhem("set einFensterOffen false");
fhem("set einFensterOffenLastState false");
}
Zitat von: jack_uf am 12 Januar 2023, 08:07:44
update wenn ich zwei @@ im Code hin mache, dann scheint es zu funktionieren.
Bearbeitest Du die fhem.cfg in einem externen Editor, anstatt die Frontend-Funktion "Edit files" dafür zu verwenden?
Wenn es irgendwas damit zu tun hat wie die fhem.cfg bearbeitet wird, dann sollte doch in der Kommandozeile
{my @stubeFenster=("a", "b");;return $stubeFenster[0]}
ausgeführt, nicht zu der Meldung führen ? Ist das so ?
Hast dich jetzt mal schnell an jack_ufs System gebeamt und selbst ausprobiert, das du die Antwort geben kannst ?
Nein, ich wollte einfach den von Dir mit Deiner völlig sinnlosen Frage begonnenen Holzweg hier im Thread möglichst schnell wieder beenden.
Außerdem hattest Du nicht dazugeschrieben, WEM Du die Frage stellst.
Zitat von: TomLee am 12 Januar 2023, 10:48:52
Wenn es irgendwas damit zu tun hat wie die fhem.cfg bearbeitet wird, dann sollte doch in der Kommandozeile
...
ausgeführt, nicht zu der Meldung führen ? Ist das so ?
Die Antwort auf meine sinnlose Frage würde einfach deine Vermutung bestätigen.
Wenn du im Hintergrund die fhem.cfg schon so bearbeitet hast das du die Meldung nachvollziehen kannst ist ja gut.
Ich habe hiermit fertig und sag nix mehr, spar dir bitte einen weiteren Kommentar.
Zitat von: TomLee am 12 Januar 2023, 11:18:52
Ich habe hiermit fertig und sag nix mehr,
Danke.
Zu Eurer Frage wie ich den das fhem.cfg bearbeite: Ich mache dies über den Browser (Firefox). Also nicht mit einem Editor.
Ich habe jetzt alle Arrays von @eineVariable auf @@eineVariable umgestellt und so wie es aussieht funktioniert nun alles wieder bei mir. Warum das so bei mir ist weiss ich nicht.
Ich Danke Euch für Eure Unterstützung
ZitatGedanken: Ich habe vor einen paar Tag fhem seit langem wieder mal aktualisiert, den Raspberry pi habe ich aber erst vor kurzem neu gestartet. Das Problem tritt ca. seit da auf als ich ihn neu gestartet habe.
Weiss jemand was ich falsch mache, oder wie ich das Problem beheben kann?
Fhem hat aktuell die Revision: 22694 und läuft auf einem Raspberry pi
Unabhängig vom geschilderten Problem, irgendwas muss bei deinem update-Vorgang schief gelaufen sein, Revision 22694 bezieht sich auf eine Änderung der mqtt2.template-Datei im Jahr 2020.
Zitat von: jack_uf am 12 Januar 2023, 19:56:57
Zu Eurer Frage wie ich den das fhem.cfg bearbeite: Ich mache dies über den Browser (Firefox). Also nicht mit einem Editor.
Edit Files?
Attribut editConfig auf 1 ?
Das ist wie in einem Editor bearbeiten -> also auch "manuelles bearbeiten"...
Hat zumindest dieselben "Auswirkungen" etc.
(manche Module nehmen ein manuelles bearbeiten "übel" bzw. das nachfolgende rereadcfg)
Bei Eingabe ins DEF wird geprüft usw.
Auch RawDef wird geprüft...
Ebenso beim Auslagern in eine myUtils...
Gruß, Joachim