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 ==
Was ist denn "int"?
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
Danke.
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.