[gelöst] Fehlermeldung mit DebianMail innerhalb eines DOIF

Begonnen von Fusssel, 01 März 2022, 15:07:58

Vorheriges Thema - Nächstes Thema

Fusssel

Ich möchte gerne aus einem DOIF Emails versenden, wenn ein Device eine schwache Batterie meldet. Die Email Routine DebianMail funktioniert bei mir in einem notify oder direkt in der FHEM Kommandozeile mit
{DebianMail('meineAdresse@web.de','FHEM: Batterie schwach','Vielleicht mal tauschen')}

in dem folgenden DOIF aber nicht:
{if([":^battery: low"])
{DebianMail('hechinger@web.de','FHEM: Batterie schwach','Vielleicht mal tauschen')}
}

ich bekomme dann in dem Reading eine Fehlermeldung
block_01  condition c01: Undefined subroutine &DOIF::DebianMail called, line 2.
und keine Email

Dies wundert mich, da die Routine ja wie gesagt, aus anderer Stelle aufgerufen, funktioniert und die subroutine in Ordnung sein müsste!

Hat irgendjemand eine Idee, was ich noch versuchen kann?

Damian

Zitat von: Fusssel am 01 März 2022, 15:07:58
Ich möchte gerne aus einem DOIF Emails versenden, wenn ein Device eine schwache Batterie meldet. Die Email Routine DebianMail funktioniert bei mir in einem notify oder direkt in der FHEM Kommandozeile mit
{DebianMail('meineAdresse@web.de','FHEM: Batterie schwach','Vielleicht mal tauschen')}

in dem folgenden DOIF aber nicht:
{if([":^battery: low"])
{DebianMail('hechinger@web.de','FHEM: Batterie schwach','Vielleicht mal tauschen')}
}

ich bekomme dann in dem Reading eine Fehlermeldung
block_01  condition c01: Undefined subroutine &DOIF::DebianMail called, line 2.
und keine Email

Dies wundert mich, da die Routine ja wie gesagt, aus anderer Stelle aufgerufen, funktioniert und die subroutine in Ordnung sein müsste!

Hat irgendjemand eine Idee, was ich noch versuchen kann?

Du befindest dich hier DOIF-Package, daher musst du ::DebianMail angeben

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

Fusssel

Danke Damian,

jetzt funktioniert es. Ganz verstanden habe ich es aber wohl noch nicht. Ist denn ein Notify kein Packet und braucht deshalb kein ::?

Besten Gruß
Martin

Damian

Zitat von: Fusssel am 01 März 2022, 15:43:29
Danke Damian,

jetzt funktioniert es. Ganz verstanden habe ich es aber wohl noch nicht. Ist denn ein Notify kein Packet und braucht deshalb kein ::?

Besten Gruß
Martin

ja, DOIF arbeitet im Perl-Modus im eigenen package namens DOIF, das hat den Vorteil, dass man eigene Funktionen definieren kann, die nicht mit anderen des System kollidieren können. Notify wie FHEM selbst arbeitet im package main, daher die Doppelpunkte.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF