Hauptmenü

DOIF Fehler

Begonnen von karpate, 26 Juni 2017, 11:12:34

Vorheriges Thema - Nächstes Thema

karpate

Hallo,
ich habe bereits einige DOIFs im Einsatz. Daher dachte ich kein Problem, ich bastele mir schnell ein Neues für folgendes Szenario:
Vor Kurzem habe ich mir ein LG-TV angeschafft, auf welchem ich bei Anruf Nummer und Anrufer anzeigen lassen möchte (Modul LGTV_WebOS und FB CallMonitor ist eingerichtet). Wenn der TV aus ist, soll per Pushbullet die Info verschickt werden. Folgendes DOIF habe ich daher definiert (aus DEF kopiert):


([FB7390CallMonitor:event] eq "connect" and [WZ_TV_LG55:state] eq "on") (set WZ_TV_LG55 screenMsg Nummer:[FB7390CallMonitor:external_number] Anrufer:[FB7390CallMonitor:external_name]) DOELSEIF( ([FB7390CallMonitor:event] eq "connect" and [WZ_TV_LG55:state] eq "off") (set PB_Ingo message [FB7390CallMonitor:external_number] / [FB7390CallMonitor:external_name] | Anruf) )


Beim Ausführen des DOELSEIF kommt error: condition c02: Syntax error, ("

Kann mir jemand auf die Sprünge helfen, sehe den Fehler nicht.

Sorry und Danke
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

Damian

steht doch alles da:

error: condition c02: Syntax error, ("

DOELSEIF( ([FB73

zu dieser Klammer sehe ich keine geschlossene Klammer.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

karpate

ich stehe wohl auf dem Schlauch, die Klammer ist doch geschlossen...

...DOELSEIF( ([FB7390CallMonitor:event] eq "connect" and [WZ_TV_LG55:state] eq "off") (set PB_Ingo message [FB7390CallMonitor:external_number] / [FB7390CallMonitor:external_name] | Anruf) )
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

CoolTux


...external_number] Anrufer:[FB7390CallMonitor:external_name]) DOELSEIF( ([FB7390CallMonitor:event] eq "connect" and [WZ_TV_LG55:state] eq "off"...

DOELSEIF( ([FB73



Ich bin mal so frei und ziehe Dir den Schlauch unter den Füßen weg
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

amenomade

Syntax ist
( Bedingung ) ( Kommando )

und NICHT
( (Bedingung ) ( Kommando ) )
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

karpate

als zusätzliche Info: beim manuellen Ausführen von cmd_2 steht im Reading ein Warning
außerdem steht im Log noch: PERL WARNINGN: Bareword found where Operator expected at (eval 10006719) line 1, near "message ReadingValDoIf"
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

amenomade

Nochmal:
ZitatSyntax ist
( Bedingung ) ( Kommando )

und NICHT
( (Bedingung ) ( Kommando ) )
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

CoolTux


([FB7390CallMonitor:event] eq "connect" and [WZ_TV_LG55:state] eq "on") (set WZ_TV_LG55 screenMsg Nummer:[FB7390CallMonitor:external_number] Anrufer:[FB7390CallMonitor:external_name]) DOELSEIF ([FB7390CallMonitor:event] eq "connect" and [WZ_TV_LG55:state] eq "off") (set PB_Ingo message [FB7390CallMonitor:external_number] / [FB7390CallMonitor:external_name] | Anruf)


Probiere mal so
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

karpate

kurze Rückmeldung: es lag am Klammersyntax

Syntax ist
( Bedingung ) ( Kommando )

und NICHT
( (Bedingung ) ( Kommando ) )


Vielen Dank an alle und für die Geduld
Grüße
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

Damian

Tipp für die Zukunft.

Wenn du ein DOIF definierst, dann mache es im WEB-Browser und nicht über das Editieren von fhem.cfg, dann wirst du bereits bei der Definition vom Modul auf solche Fehler hingewiesen und nicht erst zur Laufzeit, was immer mit unerwartetem Frust im Nachhinein verbunden ist.

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

karpate

Zitat von: Damian am 26 Juni 2017, 19:36:31
Tipp für die Zukunft.

Wenn du ein DOIF definierst, dann mache es im WEB-Browser und nicht über das Editieren von fhem.cfg, dann wirst du bereits bei der Definition vom Modul auf solche Fehler hingewiesen und nicht erst zur Laufzeit, was immer mit unerwartetem Frust im Nachhinein verbunden ist.

Danke für den Hinweis. Bin zwar so vorgegangen beim "define", aber die eigentlichen Bedingungen habe ich in Notepad++ erstellt.
Fazi: muß noch mehr DOIFs erstellen ;)
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

Neuhier

#11
Habe das auch, wenn ich das so eingebe:
DOELSEIF [b]([/b][{sunrise("REAL",0,"04:00","07:30")}]) (set GWomi off)[b])[/b]

Gebe ich so ein:
DOELSEIF [{sunrise("REAL",0,"04:00","07:30")}] (set GWomi off)

kommt der Fehler:
no left bracket of condition:  [{sunrise("REAL",0,"04:00","07:30")}] (set GWomi off)

10min später:
nimmt man einfach DOELSE, nicht DOELSEIF, dann geht es problemlos.

Per

Zitat von: Neuhier am 28 Mai 2018, 11:31:26
kommt der Fehler:
Logisch, fehlen ja auch die Klammern. Einfacher Syntaxfehler.


Zitat von: Neuhier am 28 Mai 2018, 11:31:26nimmt man einfach DOELSE, nicht DOELSEIF, dann geht es problemlos.
Dann hast du allerdings völligen Murx, eine Bedingung nach DOELSE wird als Commando ausgeführt (bzw. versucht auszuführen). Der Teil in [] wird dann wahrscheinlich einfach nur ignoriert bzw. durch den Inhalt der nicht existierenden Variable ("0" oder "1", je nachdem, was sunrise zurückliefert) ersetzt -> NUL.

Neuhier

Unverständlich ist mir, daß ein Fehler aufpoppt, wenn eine Klammer darum ist.
Und ein Fehler, wenn keine Klammer darum ist.

Egal, habe ja einen Ausweg gefunden.

nils_

Zitat von: Neuhier am 28 Mai 2018, 13:19:05
Unverständlich ist mir, daß ein Fehler aufpoppt, wenn eine Klammer darum ist.
Und ein Fehler, wenn keine Klammer darum ist.
na wenn du die öffnendes und schließenden Klammern mal gezählt hättest, wäre dir bestimmt was aufgefallen.

Zitat von: Neuhier am 28 Mai 2018, 13:19:05
Egal, habe ja einen Ausweg gefunden.
ich hoffe du hast hinter dem DOELSE _keine_ Bedingung stehen (siehe dazu auch die Antwort von Per!)
viele Wege in FHEM es gibt!