DOIF mit einem Fehler und einer weiteren Frage

Begonnen von moonsorrox, 21 November 2015, 18:11:31

Vorheriges Thema - Nächstes Thema

moonsorrox

ich habe ein DOIF welches mir folgenden Fehler zeigt:
2015.11.21 17:55:07 1: PERL WARNING: Argument "15:40" isn't numeric in subtraction (-) at (eval 210964) line 1.
2015.11.21 17:55:07 1: PERL WARNING: Argument "07:25" isn't numeric in subtraction (-) at (eval 210964) line 1.


das DOIF arbeitet nur eben diese Meldung im logfile, fehlt da etwas..?

DEF Code:
(([BWM_Terrasse:?motion] and [?BWM_Terrasse:brightness] < 70 ) and ([du_begin]-[du_end])) (set Dachlicht_02 on-for-timer 10)

zu dem Code habe ich eine Frage, weil ich den aus einem Wiki habe.
Es geht um die beiden Fragezeichen vor den Bewegungsmelder einmal vor "motion" und einmal vor dem ganzen Befehl. Mir ist nicht ganz klar warum diese da sind..?
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

krikan

Könntest Du bitte den Link zum Code im Wiki angeben. Ich kann das nicht finden.

Zu den ? aus der Commandref:
ZitatZeitintervalle, Readings und Stati ohne Trigger. Angaben in eckigen Klammern, die mit einem Fragezeichen beginnen, führen zu keiner Triggerung des Moduls, sie dienen lediglich der Abfrage.

ZitatEine Alternative zur Auswertung von Stati oder Readings ist das Auswerten von Ereignissen (Events) mit Hilfe von regulären Ausdrücken, wie beim notify. Eingeleitet wird die Angabe eines regulären Ausdrucks durch ein Fragezeichen. Die Syntax lautet: [<devicename>:?<regexp>]

moonsorrox

Zitat von: krikan am 21 November 2015, 18:46:32
Zu den ? aus der Commandref:
das ist klar, dass es zu keiner Triggerung führt... ;)
Ich hätte es etwas deutlicher sagen müssen, dass es mir um genau diese Positionen der "?" geht einmal vor dem gesamten und einmal nur vor motion

Zitat von: krikan am 21 November 2015, 18:46:32
Könntest Du bitte den Link zum Code im Wiki angeben. Ich kann das nicht finden.
ja gerne hier und beginnt bei dem Abschnitt  "Aktor bei Bewegung einschalten (inkl. weiterer Gimmicks)"
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

krikan

OK, der Code stammt so nicht aus dem Wiki. Du hast das umgearbeitet und dabei mMn Fehler eingebaut. Wirklich helfen kann ich mangels präziser DOIF-Kenntnis nicht, aber Ideen:

Zeitintervalle, die Du vermutlich haben willst, gehören in [ ]. So ist es auch im Wiki.

ZitatPositionen der "?" geht einmal vor dem gesamten und einmal nur vor motion
Aus den Commandref-Auszügen ergibt sich das mMn. Es werden 2 Varianten der ? beschrieben. Mit je nach Position verschiedenen Bedeutungen/Auswirkungen.

Hoffe es hilft ein wenig. Ansonsten bitte auf die DOIF-Experten warten.

moonsorrox

Zitat von: krikan am 21 November 2015, 19:03:28
OK, der Code stammt so nicht aus dem Wiki. Du hast das umgearbeitet und dabei mMn Fehler eingebaut. Wirklich helfen kann ich mangels präziser DOIF-Kenntnis nicht, aber Ideen:

Zeitintervalle, die Du vermutlich haben willst, gehören in [ ]. So ist es auch im Wiki.

ja ich habe es abgeändert..!  ;)
Auf den Code bezogen war das eben mit den "?" gemeint

...und du hast Recht ich habe bei den Klammern geschlafen in der commandref zum DOIF steht ja eindeutig
[[du_begin]-[du_end]]

der Fehler ist jetzt beseitigt... :D

was ich eben noch nicht begriffen habe ist dieses mit den Fragezeichen an den verschiedenen Positionen..!
Ist ja nicht so das ich es nicht ausprobiert habe, aber irgendwie habe ich keinen Unterschied festgestellt...! Deshalb eben die Frage hier...

Ich arbeite noch dran...  ;)
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

Damian

#5
Zitat von: moonsorrox am 21 November 2015, 19:13:14
ja ich habe es abgeändert..!  ;)
Auf den Code bezogen war das eben mit den "?" gemeint

...und du hast Recht ich habe bei den Klammern geschlafen in der commandref zum DOIF steht ja eindeutig
[[du_begin]-[du_end]]

der Fehler ist jetzt beseitigt... :D

was ich eben noch nicht begriffen habe ist dieses mit den Fragezeichen an den verschiedenen Positionen..!
Ist ja nicht so das ich es nicht ausprobiert habe, aber irgendwie habe ich keinen Unterschied festgestellt...! Deshalb eben die Frage hier...

Ich arbeite noch dran...  ;)

Das Fragezeichen hat, wie Krikan schon festgestellt hat, unterschiedliche Bedeutung, abhängig davon wo es steht.

Beispiele:

[my_device:temp] hier wird das Reading "temp" ausgewertet, die Abfrage liefert den Inhalt des Readings "temp", die Abfrage wird ausgewertet, wenn "my_device" ein Event erzeugt.

[?my_device:temp] hier wird ebenfalls das Reading "temp" ausgewertet, die Abfrage liefert den Inhalt des Readings "temp", Events von diesem Device triggern allerdings nicht das DOIF-Modul.

[my_device:?temp] dieser Ausdruck ist nur in dem Augenblick wahr (1), wenn my_device ein Event liefert, bei dem die Zeichenkette "temp" vorkommt. Im Gegensatz zu notify braucht man nicht .* am Ende anzugeben. Zu jedem anderen Zeitpunkt ist dieser Ausdruck nicht wahr.

Gruß

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