DOIF: Perlfunktionen in DOIF-Bedingung lösen Fehlermeldung aus

Begonnen von rrr, 14 Oktober 2015, 20:41:44

Vorheriges Thema - Nächstes Thema

rrr

Ich erhalte neuerdings bei Verwendung von Perlfunktionen innerhalb einer DOIF-Bedingung eine Fehlermeldung.

define di_test DOIF ({ceil(ReadingsVal('wz_test','counter',0))} >= 900)

Error messages while initializing FHEM: configfile: di_test DOIF: no trigger in condition: {ceil(ReadingsVal('wz_test','counter',0))} >= 900

Dies passiert bei sämtlichen Perl-Funktionen.
Hat sich die Syntax von Perlfunktionen innerhalb von DOIF-Bedingungen geändert?

Damian

#1
Zitat von: rrr am 14 Oktober 2015, 20:41:44
Ich erhalte neuerdings bei Verwendung von Perlfunktionen innerhalb einer DOIF-Bedingung eine Fehlermeldung.

define di_test DOIF ({ceil(ReadingsVal('wz_test','counter',0))} >= 900)

Error messages while initializing FHEM: configfile: di_test DOIF: no trigger in condition: {ceil(ReadingsVal('wz_test','counter',0))} >= 900

Dies passiert bei sämtlichen Perl-Funktionen.
Hat sich die Syntax von Perlfunktionen innerhalb von DOIF-Bedingungen geändert?

Eine Perl-Funktion allein in der Bedingung löst keinen Trigger aus und ohne Trigger macht ein DOIF-Modul keinen Sinn. Auch geschweifte Klammern gehören so nicht in die Bedingung.

Du musst schon etwas in eckigen Klammern angeben, was das Modul auch triggert. All das steht aber in der Commanderf zu DOIF. Du meinst dann eher so etwas:

define di_test DOIF (ceil([wz_test:counter]) >= 900)...

Gruß

Damian

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

rrr

Trotz mehrfachem Lesen des DOIF-Abschnitts der Commandref ist mir wohl nicht aufgefallen, dass Fhem und Perl-Befehle so schamlos gemischt werden dürfen.

Ich hatte zusätzlich zu den Perl-Funktionen noch Readings in der Bedingung welche dann wohl getriggert haben. Trotzdem  bin ich der Meinung, dass meine Notierung mit geschweiften klammern bis vor kurzem funktioniert hat. Naja egal, jetzt halt ich mich an die Syntax.

Vielen Dank für die Hilfe.

Damian

Zitat von: rrr am 15 Oktober 2015, 00:23:53
Trotz mehrfachem Lesen des DOIF-Abschnitts der Commandref ist mir wohl nicht aufgefallen, dass Fhem und Perl-Befehle so schamlos gemischt werden dürfen.

Ich hatte zusätzlich zu den Perl-Funktionen noch Readings in der Bedingung welche dann wohl getriggert haben. Trotzdem  bin ich der Meinung, dass meine Notierung mit geschweiften klammern bis vor kurzem funktioniert hat. Naja egal, jetzt halt ich mich an die Syntax.

Vielen Dank für die Hilfe.

Die Syntax war vom Anfang an so und nicht anders.

Man kann sagen:

In der Bedingung:

ist 100 % Perl mit etwas DOIF-Spezifischem in eckigen Klammern und 0 % FHEM-Befehle

Im Ausführungsteil:

sind 100 % FHEM-Befehle mit etwas DOIF-Spezifischem in eckigen Klammern und
100 % Perl in geschweiften Klammern mit etwas DOIF-Spezifischem in eckigen Klammern.

Gruß

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

KernSani

Alter thread aber: 3mal-mit-dem-Kopf-auf-den-Tisch-knall - Ich habe mir gerade eine Stunde lang einen Wolf gesucht, warum mein DOIF zwar funktioniert, aber immer eine PERL WARNING ins Log schreibt... Die Lösung war: Keine geschweiften Klammern in der Bedingung...  Ich habe schon viele DOIFs gebaut, aber scheinbar noch nie eines mit perl in der Bedingung... Man lernt nie aus. Ich plädiere dafür, unten stehendes Zitat irgendwo in roten Großbuchstaben in die commandref zu packen. Irgendwie steht's zwar verklausuliert in der Einleitung, aber die liest man ja nicht, wenn man schon zig DOIFs gebaut hat...

Zitat von: Damian am 15 Oktober 2015, 08:59:35
In der Bedingung:

ist 100 % Perl mit etwas DOIF-Spezifischem in eckigen Klammern und 0 % FHEM-Befehle

Im Ausführungsteil:

sind 100 % FHEM-Befehle mit etwas DOIF-Spezifischem in eckigen Klammern und
100 % Perl in geschweiften Klammern mit etwas DOIF-Spezifischem in eckigen Klammern.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...