FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: iron.eagle am 31 März 2019, 15:03:14

Titel: DOIF mit Funktionsaufruf in myutils
Beitrag von: iron.eagle am 31 März 2019, 15:03:14
Hallo,

in einem DOIF würde ich neben Geräten auch das Ergebnis einer Funktion in myutils testen und dann entsprechend schalten. Das DOIF lautet:

{if ([10:30|0123456] and [?dummy_WlanAus] eq "nein" and [?::isWeekend($we)] eq "1") {fhem_set "wz.SD.echo on"} }


Jeden Tag um 10.30 Uhr, falls der Dummy auf "nein" steht und die Funktion isWeekend eine "1" zurückgibt, soll geschaltet werden. Leider wird nicht geschaltet. Zu dem Zeitpunkt wird die Funktion aufgerufen, das besagen Logeinträge in der Funktion und per Return wird eine "1" zurückgegeben. Der Dummy steht auch auf "nein"; ich habe ihn aber auch schon weggelassen und es wurde nicht geschaltet.
Was mache ich falsch?

Torsten
Titel: Antw:DOIF mit Funktionsaufruf in myutils
Beitrag von: CoolTux am 31 März 2019, 15:12:42
Hallo Torsten,

Gibt es einen besonderen Grund warum Du nicht die FHEM eigene Routine IsWe verwendest?
Titel: Antw:DOIF mit Funktionsaufruf in myutils
Beitrag von: KernSani am 31 März 2019, 15:27:37
Zudem macht ein Funktionsaufruf in eckigen Klammern kein Sinn. Da gehören Readings oder Events rein.


Kurz, weil mobil
Titel: Antw:DOIF mit Funktionsaufruf in myutils
Beitrag von: CoolTux am 31 März 2019, 15:34:15
Zitat von: KernSani am 31 März 2019, 15:27:37
Zudem macht ein Funktionsaufruf in eckigen Klammern kein Sinn. Da gehören Readings oder Events rein.


Kurz, weil mobil

Würde ich jetzt so nicht unterschreiben. Sinn würde es machen den Rückgabewert einer Funktion innerhalb einer Abfrage aus zu werten.
Titel: Antw:DOIF mit Funktionsaufruf in myutils
Beitrag von: KernSani am 31 März 2019, 15:55:19
Zitat von: CoolTux am 31 März 2019, 15:34:15
Würde ich jetzt so nicht unterschreiben. Sinn würde es machen den Rückgabewert einer Funktion innerhalb einer Abfrage aus zu werten.
Ich habe nichts dagegen Funktionen auszuwerten, aber die Bedingung bei DOIF ist quasi Perl, da kann man einfach die Funktion aufrufen und auswerten und muss nichts mit Klammern und ? basteln.


Kurz, weil mobil
Titel: Antw:DOIF mit Funktionsaufruf in myutils
Beitrag von: iron.eagle am 31 März 2019, 16:28:22
Zitat von: CoolTux am 31 März 2019, 15:12:42
Gibt es einen besonderen Grund warum Du nicht die FHEM eigene Routine IsWe verwendest?

Ja, meine Funktion wertet noch einen Dummy aus, welcher von einem Onlinekalender geändert wird.

Torsten
Titel: Antw:DOIF mit Funktionsaufruf in myutils
Beitrag von: iron.eagle am 31 März 2019, 16:30:38
Zitat von: KernSani am 31 März 2019, 15:55:19
Ich habe nichts dagegen Funktionen auszuwerten, aber die Bedingung bei DOIF ist quasi Perl, da kann man einfach die Funktion aufrufen und auswerten und muss nichts mit Klammern und ? basteln.

Hallo KernSani,

das war der Tipp, den ich brauchte. So funktioniert es.


{if ([16:24|0123456] and [?dummy_WlanAus] eq "nein" and ::isWeekend($we) eq "1") {fhem_set "wz.SD.echo on"} }


Ist mein erstes DOIF  :)

Torsten
Titel: Antw:DOIF mit Funktionsaufruf in myutils
Beitrag von: CoolTux am 31 März 2019, 16:34:46
Zitat von: iron.eagle am 31 März 2019, 16:30:38
Hallo KernSani,

das war der Tipp, den ich brauchte. So funktioniert es.


{if ([16:24|0123456] and [?dummy_WlanAus] eq "nein" and ::isWeekend($we) eq "1") {fhem_set "wz.SD.echo on"} }


Ist mein erstes DOIF  :)

Torsten

::isWeekend($we) eq "1"

Entweder == 1 benutzen oder einfach nur
::isWeekend($we)

1 wieder immer als wahr genommen und 0 als nicht wahr.
::isWeekend($we) ist wahr?
not ::isWeekend($we) ist nicht wahr?
Titel: Antw:DOIF mit Funktionsaufruf in myutils
Beitrag von: Damian am 31 März 2019, 20:18:46
Zitat von: iron.eagle am 31 März 2019, 16:30:38
Hallo KernSani,

das war der Tipp, den ich brauchte. So funktioniert es.


{if ([16:24|0123456] and [?dummy_WlanAus] eq "nein" and ::isWeekend($we) eq "1") {fhem_set "wz.SD.echo on"} }


Ist mein erstes DOIF  :)

Torsten

also [16:24|0123456] entspricht [16:24], da du alle Tage der Woche aufgezählt hast.
Titel: Antw:DOIF mit Funktionsaufruf in myutils
Beitrag von: iron.eagle am 03 April 2019, 21:12:26
Danke an alle für Tipps. Wie schon geschrieben, habe ich es umgesetzt und es funktioniert.  :)

Torsten