Absturz von fhem auf RasPi nach Einfügen einer DOIF Anweisung

Begonnen von MichaelO, 02 Oktober 2015, 18:22:28

Vorheriges Thema - Nächstes Thema

MichaelO

Hallo.

bei mir stürzt fhem auf dem RasPi reproduzierbar ab, wenn ich diese (wohl irgendwo fehlerhafte) DOIF-Anweisung mit dem modify-Button übernehmen will:

( [WZ_Dekobeleuchtung] eq "Herbst" and
[([18:13]+int(rand(600)))] and [WZ_Rolladen] ne "closed") (set WZ_Fenstersteckdose on) DOELSEIF ([WZ_Fenstersteckdose] eq "on" and [WZ_Rolladen] eq "closed") (set WZ_Fenstersteckdose off)


Es sollte ein Test werden, wie ich die Zeit verschieben kann (Syntax), da ich 1 Stunde vor Twilight ss_weather schalten wollte. RasPi meldet nach Druck auf modify:

Unmatched [ in regex; marked by <-- HERE in m/ ([ <-- HERE 18 / at ./FHEM/98_DOIF.pm line 178.

und dann ist fhem weg.

Gruß
Michael

Damian

Zitat von: MichaelO am 02 Oktober 2015, 18:22:28
Hallo.

bei mir stürzt fhem auf dem RasPi reproduzierbar ab, wenn ich diese (wohl irgendwo fehlerhafte) DOIF-Anweisung mit dem modify-Button übernehmen will:

( [WZ_Dekobeleuchtung] eq "Herbst" and
[([18:13]+int(rand(600)))] and [WZ_Rolladen] ne "closed") (set WZ_Fenstersteckdose on) DOELSEIF ([WZ_Fenstersteckdose] eq "on" and [WZ_Rolladen] eq "closed") (set WZ_Fenstersteckdose off)


Es sollte ein Test werden, wie ich die Zeit verschieben kann (Syntax), da ich 1 Stunde vor Twilight ss_weather schalten wollte. RasPi meldet nach Druck auf modify:

Unmatched [ in regex; marked by <-- HERE in m/ ([ <-- HERE 18 / at ./FHEM/98_DOIF.pm line 178.

und dann ist fhem weg.

Gruß
Michael
Hast du ein Leerzeichen hinter dem and in der ersten Zeile?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

3dmanipulator

[([18:13]+int(rand(600)))]

wozu sind denn die beiden äußeren eckigen klammern, ohne die müßte es doch laufen?

...und was hat das ganze mit (18:30) ss_weather zu tun?
raspberry pi, razberry, fibaro sensor, fibaro dimmer,  nodon fb, tkb dual dimmer Switch, milight e27 + stripe, hmlan, hm-TC, hm-RT

MichaelO

@Damian: Nein, kein Leerzeichen. Ich hatte im Editor hinter "and" Enter gedrückt, um alles besser lesen zu können. Dann per copy/paste ins DEF-Fenster der Internals. Bei Druck auf "modify" erfolgt dann der Absturz.

@3dmanipulator: Ich habe noch ziemliche Probleme mit dem Syntax. Schalten wollte ich 1 Stunde vor ss_weather. Also habe ich aus der commandref das Beispiel "Zeitsteuerung mit Berechnung" genommen, um dies später zu modifizieren. Da stehen die eckigen Klammern auch so. Der Plan war, wenn es um eine feste Uhrzeit + berechnete Verschiebung klappt, dann ersetze ich die Zeit in den eckigen Klammern [18:13] gegen [LichtWetter:ss_weather]. Leider kam ich nicht so weit, da fhem beim Einfügen ja jedes mal abschmierte.

Ich denke, es liegt nicht zwingend am Syntax, sondern an irgend einem Zeichen, welches da nicht hin gehört und durch das Einfügen aus dem Mac-Programm TextEditor mitwandert.

Damian

Zitat von: MichaelO am 03 Oktober 2015, 19:01:43
@Damian: Nein, kein Leerzeichen. Ich hatte im Editor hinter "and" Enter gedrückt, um alles besser lesen zu können. Dann per copy/paste ins DEF-Fenster der Internals. Bei Druck auf "modify" erfolgt dann der Absturz.

@3dmanipulator: Ich habe noch ziemliche Probleme mit dem Syntax. Schalten wollte ich 1 Stunde vor ss_weather. Also habe ich aus der commandref das Beispiel "Zeitsteuerung mit Berechnung" genommen, um dies später zu modifizieren. Da stehen die eckigen Klammern auch so. Der Plan war, wenn es um eine feste Uhrzeit + berechnete Verschiebung klappt, dann ersetze ich die Zeit in den eckigen Klammern [18:13] gegen [LichtWetter:ss_weather]. Leider kam ich nicht so weit, da fhem beim Einfügen ja jedes mal abschmierte.

Ich denke, es liegt nicht zwingend am Syntax, sondern an irgend einem Zeichen, welches da nicht hin gehört und durch das Einfügen aus dem Mac-Programm TextEditor mitwandert.

Das Enterzeichen hinter and wird eliminiert, damit klebt and am folgenden Kommando, daher entweder hinter and ein Leerzeichen eingeben oder am besten erst am Ende der Bedingung "closed")  Zeilenumbruch setzen.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MichaelO

Auch wenn ich nerve, aber ich habe heute weiter versuch, diverse Dinge per DOIF zu automatisieren. Irgendwann hat eine Anweisung nicht hingehauen und ich musste fhem wieder neu starten. Nach ein paar Sekunden schrieb der Raspberry in die Konsole

Use of uninitialized value $item in regexp compilation at ./FHEM/98_DOIF.pm line 178, <$fh> line 244.
Use of uninitialized value $item in concatenation (.) or string at ./FHEM/98_DOIF.pm line 179, <$fh> line 244.
Use of uninitialized value $item in regexp compilation at ./FHEM/98_DOIF.pm line 178, <$fh> line 244.
Use of uninitialized value $item in concatenation (.) or string at ./FHEM/98_DOIF.pm line 179, <$fh> line 244.

Zumindest in fhem erkenne ich nicht, dass etwas hängt. Ob alles schaltet, sehe ich erst morgen. Wie bekomme ich diese Meldung denn wieder weg, und was verursacht sie?

Danke
Michael