FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: ujaudio am 16 Januar 2018, 17:26:01

Titel: [gelöst] error: the function "isday(int)" must return a timespec and not 1.
Beitrag von: ujaudio am 16 Januar 2018, 17:26:01
Mein DOIF code ist
...DOELSEIF (...
   and [tr_aussensensor:temperature] < 26 ## Temperaturschutz
   and [{isday(int)}] == 0 ## nur wenn es dunkel ist   
   ...) ...

und liefert dann die Fehlermeldung "error: the function "isday(int)" must return a timespec and not 1."

Wo ist denn mein Denkfehler?
* isday(int) liefert doch nur 0 oder 1 --> so interpretiere ich das, was in der commandref lese
* die geschweifte Klammer benötige ich, da es eine perl-Funktion ist
* die eckige Klammer ist für DOIF die Information, hier  einen Wert zu bekommen
* Vergleich wie in perl bei Zahlen üblich mit ==


Titel: Antw:error: the function "isday(int)" must return a timespec and not 1.
Beitrag von: KernSani am 16 Januar 2018, 17:32:30
Was ist denn "int"?
Titel: Antw:error: the function "isday(int)" must return a timespec and not 1.
Beitrag von: Damian am 16 Januar 2018, 17:33:08
Zitat von: ujaudio am 16 Januar 2018, 17:26:01
Mein DOIF code ist
...DOELSEIF (...
   and [tr_aussensensor:temperature] < 26 ## Temperaturschutz
   and [{isday(int)}] == 0 ## nur wenn es dunkel ist   
   ...) ...

und liefert dann die Fehlermeldung "error: the function "isday(int)" must return a timespec and not 1."

Wo ist denn mein Denkfehler?
* isday(int) liefert doch nur 0 oder 1 --> so interpretiere ich das, was in der commandref lese
* die geschweifte Klammer benötige ich, da es eine perl-Funktion ist
* die eckige Klammer ist für DOIF die Information, hier  einen Wert zu bekommen
* Vergleich wie in perl bei Zahlen üblich mit ==

isday ist eine Perlfunktion, Bedingung beim DOIF sind außerhalb von eckigen Klammern Perl, daher reicht einfach:

and isday () == 0 ...

oder sogar nur

and !isday
Titel: Antw:error: the function "isday(int)" must return a timespec and not 1.
Beitrag von: ujaudio am 16 Januar 2018, 17:41:48
Danke.
Titel: Antw:[gelöst] error: the function "isday(int)" must return a timespec and not 1.
Beitrag von: Per am 17 Januar 2018, 12:03:11
Zitat von: ujaudio am 16 Januar 2018, 17:26:01
* die eckige Klammer ist für DOIF die Information, hier  einen Wert zu bekommen
Die eckige Klammer "zieht" den Wert aus dem Variablennamen. Dieser ist bei dir "0" oder "1". So du keine passende Variablen hast (ist außer bei Forth (https://de.wikipedia.org/wiki/Forth_(Programmiersprache)) schwer bei diesen Namen), bekommst du auch kein sinnvolles Ergebnis.