Geschachtelte IF-Statements mit mehreren Befehlen - Syntax fehlerhaft

Begonnen von Yil, 11 Dezember 2016, 16:50:07

Vorheriges Thema - Nächstes Thema

Yil

Ich habe folgende Befehlsfolge innerhalb eines DOIF, die Fehler verursacht (auf dem FHEM-Editor kopiert):

IF ([Garten.Bewegung:1.BRIGHTNESS] > 165)
  (set Licht.EZ.Stehleuchte dim50%,set Licht.EZ.Klavier dim50%,set ZWAVE_Schalter_8:FILTER=STATE!=on on,
  IF ([TV] ne 'an') (set Licht.WZ.Stehleuchte dim50%))
ELSE (set Licht.EZ.Stehleuchte dim75%,set Licht.EZ.Klavier dim75%,
  IF ([TV] ne 'an') (set Licht.WZ.Stehleuchte dim75%))


Fehler lautet: Bad name after an' at (eval 134306) line 1.

Kann jemand das Rätsel auflösen, was da falsch ist? Ich komm nicht drauf, vermute aber, dass es in der Kombination einzelner Befehle und des geschachtelten IF liegt.
HM CCU3 und HCU mit ca. 50 HM-Komponenten inkl. Bausätzen
fhem auf RPi mit Sonos, EnOcean-CUL, ZWAVE-CUL und Bluetooth,
HUE, UniFi

viegener

Vielleicht kannst Du mal den ganzen DOIF reinstellen, vielleicht hängt es mit dem Rest zusammen?

Was passiert denn wenn Du den Teil direkt in FHEM als Kommando absendest?

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Damian

Zitat von: Yil am 11 Dezember 2016, 16:50:07
Ich habe folgende Befehlsfolge innerhalb eines DOIF, die Fehler verursacht (auf dem FHEM-Editor kopiert):

IF ([Garten.Bewegung:1.BRIGHTNESS] > 165)
  (set Licht.EZ.Stehleuchte dim50%,set Licht.EZ.Klavier dim50%,set ZWAVE_Schalter_8:FILTER=STATE!=on on,
  IF ([TV] ne 'an') (set Licht.WZ.Stehleuchte dim50%))
ELSE (set Licht.EZ.Stehleuchte dim75%,set Licht.EZ.Klavier dim75%,
  IF ([TV] ne 'an') (set Licht.WZ.Stehleuchte dim75%))




Fehler lautet: Bad name after an' at (eval 134306) line 1.

Kann jemand das Rätsel auflösen, was da falsch ist? Ich komm nicht drauf, vermute aber, dass es in der Kombination einzelner Befehle und des geschachtelten IF liegt.


Nimm statt 'an' "an" in doppelten Anführungszeichen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ollir


viegener

Zitat von: ollir am 12 Dezember 2016, 10:32:36
sollten mehrere set-Befehle nicht mit ; getrennt werden.

Nein, im IF command werden die Befehle mit , getrennt
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Yil

ZitatNimm statt 'an' "an" in doppelten Anführungszeichen.

Ok, wird ausprobiert - gibt's ne Erklärung, warum?




Nachtrag: Fehler ist bei mir behoben, es waren tatsächlich die Hochkommas. Danke, Damian!
HM CCU3 und HCU mit ca. 50 HM-Komponenten inkl. Bausätzen
fhem auf RPi mit Sonos, EnOcean-CUL, ZWAVE-CUL und Bluetooth,
HUE, UniFi

Damian

Zitat von: Yil am 12 Dezember 2016, 14:28:42
Ok, wird ausprobiert - gibt's ne Erklärung, warum?

Ja, IF baut intern perl-if zur Ausführung auf, da IF selbst intern einfache Anführungszeichen für den String-Aufbau benutzt, müssen die User doppelte nehmen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

viegener

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können