[gelöst] error: the function "isday(int)" must return a timespec and not 1.

Begonnen von ujaudio, 16 Januar 2018, 17:26:01

Vorheriges Thema - Nächstes Thema

ujaudio

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 ==


Einen lieben Gruß
Jürgen

KernSani

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ujaudio

Einen lieben Gruß
Jürgen

Per

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 schwer bei diesen Namen), bekommst du auch kein sinnvolles Ergebnis.