[Gelöst] Fehler bei DOIF und DOELSEIF

Begonnen von raspklaus, 04 November 2015, 14:35:17

Vorheriges Thema - Nächstes Thema

raspklaus

Ich versuche mich gerade an DOIF steh aber irgendwie auf der Leitung

define z_advent DOIF ([06:00-22:00] and [ReadingsVal( "BM_Bewegungsmelder", "brightness", "") <= 100] and Advent==1) { fhem ("set advent on") }
DOELSEIF ([06:00-22:00] and [ReadingsVal( "BM_Bewegungsmelder", "brightness", "") > 100] and Advent==1) { fhem ("set advent off") }
DOELSEIF ([22:00]) (set advent off)


wenn ich dies über das Webinterface eingeben kommt:

z_advent DOIF: Wrong timespec ReadingsVal("BM_Bewegungsmelder","brightness","")<=100: either HH:MM:SS or {perlcode}: ReadingsVal("BM_Bewegungsmelder","brightness","")<=100

Zur Erkärung :

advent ist ein Dummy der die Zustände 0 und 1 annehmen kann

1 soll gesetzt werden wenn
Das Ganze zwischen 06:00 und 22:00
und wenn der HM Bewegungsmelder ein Brightness reading von <= 100 liefert und eine Berechnung der Variablen Advent 1 zugewiesen hat

0 soll gesetzt werden wenn
auch zwischen 06:00 und 22:00
und wenn der HM Bewegungsmelder ein Brightness reading von >100 liefert und eine Berechnung der Variablen Advent 1 zugewiesen hat

ansonsten wird um 22:00 immer der Wert 0 zugewiesen

Wo ist da der Knoten ?


moonsorrox

ich würde das so machen:

define z_advent DOIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] <= 100 and Advent==1) ("set advent on")
DOELSEIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] > 100 and Advent==1) ("set advent off")
DOELSEIF ([22:00]) (set advent off)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

raspklaus

Den Syntax frisst fhem jetzt aber es kommt eine Fehlermeldung im Log

2015.11.04 19:47:23 2: z_advent: perl error in condition: DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") and
ReadingValDoIf('BM_Bewegungsmelder','brightness','') <= 100 and Advent==1:
Bareword "Advent" not allowed while "strict subs" in use at (eval 267039) line 1.

kumue

Ist Advent eine sub aus 99_myUtils.pm ?

wenn ja, mit {} versuchen...
define z_advent DOIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] <= 100 and {Advent==1}) ("set advent on")
DOELSEIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] > 100 and {Advent==1}) ("set advent off")
DOELSEIF ([22:00]) (set advent off)

raspklaus

Ja, es ist die sub aus

http://forum.fhem.de/index.php/topic,42209.0.html

aber auch mit den Klammern tritt der Fehler auf

Ich bin nun am Ende von meinem Latein, da ich erst mit Perl angefangen habe

kumue

schade...
im Ausführungsteil bei DOIF muss perl-Code in { }.
Beim Ereignisteil scheint das wohl nicht zu funktionieren.

steht jetzt auch erstmal auf dem Schlauch  :(

raspklaus

Ich weiss dass es an dem use strict in der myUtils liegt, aber weiss nicht wie ich das zum Laufen bringe.

kumue


moonsorrox

Zitat von: raspklaus am 05 November 2015, 11:47:14
Ja, es ist die sub aus

http://forum.fhem.de/index.php/topic,42209.0.html

OK das wußte ich nicht.. da würde ich auch nur probieren..

hast du es so schon mal probiert:
([{Advent==1}])
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

raspklaus

moon,

dann kommt diese Meldung:

2015.11.05 12:19:33 2: z_advent: perl error in condition: DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"") and ReadingValDoIf('BM_Bewegungsmelder','brightness','') > 100 and {Advent==1}: Month '12' out of range 0..11 at ./FHEM/99_myUtils.pm line 231.

kumue

ich glaube so...

((Advent) == 1)

define z_advent DOIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] <= 100 and ((Advent)==1))) ("set advent on")
DOELSEIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] > 100 and ((Advent)==1))) ("set advent off")
DOELSEIF ([22:00]) (set advent off)

raspklaus

mit diesem Erfolg:

z_advent DOIF: expected DOELSEIF or DOELSE: ) ("set advent on") DOELSEIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] > 100 and ((Advent)==1))) ("set advent off") DOELSEIF ([22:00]) (set advent off

kumue

define z_advent DOIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] <= 100 and ((Advent)==1))) (set advent on)
DOELSEIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] > 100 and ((Advent)==1))) (set advent off)
DOELSEIF ([22:00]) (set advent off)


ohne die " " bei den set...

aber nun ..  :D

raspklaus

nun ......

_advent DOIF: expected DOELSEIF or DOELSE: ) (set advent on) DOELSEIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] > 100 and ((Advent)==1))) (set advent off) DOELSEIF ([22:00]) (set advent off)

???

kumue

zu viele Klammern  )

define z_advent DOIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] <= 100 and ((Advent)==1)) (set advent on)
DOELSEIF ([06:00-22:00] and [BM_Bewegungsmelder:brightness] > 100 and ((Advent)==1)) (set advent off)
DOELSEIF ([22:00]) (set advent off)