DOIF Fehler oder FeatureRequest?

Begonnen von habnefrage, 21 Februar 2016, 16:10:44

Vorheriges Thema - Nächstes Thema

habnefrage

Hi,
mir ist aufgefallen, dass ich im BedingungsTeil von DOIF nicht gen auso auf UserReadings zugreifen kann, wie auf "normale" Readings.

Im folgenden CodeSchnipsel prüfe ich nacheinander Event, Internal, Reading und dann ein UserReading. Sinn oder Unsinn dieser Abfrage sollte nicht in Frage gestellt werden, es geht mir darum, ob und wie ich auf die einzelnen Daten zugreifen kann.
define di_anyWindow2 DOIF (\
([$DEVICE] eq "opened") and \
([$DEVICE:&type] eq "ShutterContact") and \
([$DEVICE:firmware] eq "1.4") and \
([FK_EG_WZ_Tuer:alermWhenOpen10] eq "NEIN"))\
({Log 3,"OPEN $DEVICE [FK_EG_WZ_Tuer:alermWhenOpen10]"})\
DOELSE({Log 3,"ENDE $DEVICE"})

alermWhenOpen20 ist UserReading.


Solange ich mit dem ItemNamen direkt darauf zugreife, klappt es einwandfrei.
Wenn ich das ganze nun aber generischer haben will, müsste ich FK_EG_WZ_Tuer durch $DEVICE ersetzen. das funktioniert aber nicht. dann gibt es Fehlermeldungen beim speichern der ConfigDatei.

define di_anyWindow2 DOIF (\
([$DEVICE] eq "opened") and \
([$DEVICE:&type] eq "ShutterContact") and \
([$DEVICE:firmware] eq "1.4") and \
([$DEVICE:alermWhenOpen10] eq "NEIN"))\
({Log 3,"OPEN $DEVICE [FK_EG_WZ_Tuer:alermWhenOpen10]"})\
DOELSE({Log 3,"ENDE $DEVICE"})



Woran liegt das?
Ist das so gewollt, geht es nicht anders oder wurde es in der Entwicklung lediglich nicht berücksichtigt?

Gruß,
Christian

Puschel74

Und was hat das mit der CUL_Entwicklung zu tun?
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

habnefrage

Die Frage sollte sein: "Was hat das Thema in der CUL-Entwicklung zu suchen?"

Da muss ich wohl verrutscht sein. Kannst du das Thema verschieben?
Oder weiß du wie es geht und würdest es mir sagen?

Ellert

Zitat von: habnefrage am 21 Februar 2016, 16:10:44
Hi,
mir ist aufgefallen, dass ich im BedingungsTeil von DOIF nicht gen auso auf UserReadings zugreifen kann, wie auf "normale" Readings.

Im folgenden CodeSchnipsel prüfe ich nacheinander Event, Internal, Reading und dann ein UserReading. Sinn oder Unsinn dieser Abfrage sollte nicht in Frage gestellt werden, es geht mir darum, ob und wie ich auf die einzelnen Daten zugreifen kann.
define di_anyWindow2 DOIF (\
([$DEVICE] eq "opened") and \
([$DEVICE:&type] eq "ShutterContact") and \
([$DEVICE:firmware] eq "1.4") and \
([FK_EG_WZ_Tuer:alermWhenOpen10] eq "NEIN"))\
({Log 3,"OPEN $DEVICE [FK_EG_WZ_Tuer:alermWhenOpen10]"})\
DOELSE({Log 3,"ENDE $DEVICE"})

alermWhenOpen20 ist UserReading.


Solange ich mit dem ItemNamen direkt darauf zugreife, klappt es einwandfrei.
Wenn ich das ganze nun aber generischer haben will, müsste ich FK_EG_WZ_Tuer durch $DEVICE ersetzen. das funktioniert aber nicht. dann gibt es Fehlermeldungen beim speichern der ConfigDatei.

define di_anyWindow2 DOIF (\
([$DEVICE] eq "opened") and \
([$DEVICE:&type] eq "ShutterContact") and \
([$DEVICE:firmware] eq "1.4") and \
([$DEVICE:alermWhenOpen10] eq "NEIN"))\
({Log 3,"OPEN $DEVICE [FK_EG_WZ_Tuer:alermWhenOpen10]"})\
DOELSE({Log 3,"ENDE $DEVICE"})



Woran liegt das?
Ist das so gewollt, geht es nicht anders oder wurde es in der Entwicklung lediglich nicht berücksichtigt?

Gruß,
Christian

Siehe http://fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil

Der Log-Befehl enthält ein Komma, daher kann das Komma nicht als Befehlstrenner eingesetzt werden und es gilt:
ZitatFalls ein Komma nicht als Trennzeichen zwischen FHEM-Befehlen gelten soll, so muss der FHEM-Ausdruck zusätzlich in runde Klammern gesetzt werden: ...((set lamp1,lamp2 on),set switch on)

habnefrage

Danke für den Hinweis, diesen Satz hatte ich nicht wahrgenommen.

Habe es eben mal angepasst, bekomme aber weiterhin noch die Fehlermeldung:
Zitatdi_anyWindow2 DOIF: no trigger in condition: ([$DEVICE] eq "opened") and ([$DEVICE:&type] eq "ShutterContact") and ([$DEVICE:firmware] eq "1.4") and ([$DEVICE:alermWhenOpen10] eq "NEIN")

Der Code sieht jetzt folgendermaßen aus:define di_anyWindow2 DOIF (\
([$DEVICE] eq "opened") and \
([$DEVICE:&type] eq "ShutterContact") and \
([$DEVICE:firmware] eq "1.4") and \
([$DEVICE:alermWhenOpen10] eq "NEIN"))\
(({Log 3,"OPEN $DEVICE"}))\
DOELSE(({Log 3,"ENDE $DEVICE"}))

habnefrage

Wenn ich das UserReading nicht abfrage, läufts.

define di_anyWindow2 DOIF (\
([$DEVICE] eq "opened") and \
([$DEVICE:&type] eq "ShutterContact") and \
([$DEVICE:firmware] eq "1.4") and \
([".*:alermWhenOpen10: NEIN"]))\
(({Log 3,"OPEN $DEVICE"}))\
DOELSE(({Log 3,"ENDE $DEVICE"}))


Hast du noch einen Tipp?

Ellert