FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: CottonIJo am 14 November 2023, 12:32:46

Titel: DebianMail über DOIF funktioniert mit "set" nicht
Beitrag von: CottonIJo am 14 November 2023, 12:32:46
Ich habe ein DOIF welches uns vor Abholung von Müll/Recycling per eMail erinnern soll.

nachfolgende Syntax funktioniert, beide Empfäger erhalten eine Mail:
( [12:00] and [?Muellabfuhr:next_days] == 6) {DebianMail('Empfänger1@mail.de,Empfänger2@gmail.com','Morgen wird [Muellabfuhr:next_text] abgeholt')}


Wird das DOIF mit "set" ergänzt,
( [12:10] and [?Muellabfuhr:next_days] == 6) ([b]set[/b] {DebianMail('Empfänger1@mail.de,Empfänger2@gmail.com','Morgen wird [Muellabfuhr:next_text] abgeholt')})
wird keine Mail verschickt, es kommt nachfolgende Fehlermeldung im Log bzw. im DOIF:

2023.11.14 12:10:00 2: Abfall_Recycling_morgen: set {DebianMail('Empfänger1@mail.de,Empfänger2@gmail.com','Morgen wird Restmülltonne abgeholt')}: Please define {DebianMail('Empfänger1@mail.de,Empfänger2@gmail.com','Morgen first

Ich würde gerne wissen, warum funktioniert es mit "set" nicht? Falsche Klammersetzung?

Grüße Joachim
Titel: Aw: DebianMail über DOIF funktioniert mit "set" nicht
Beitrag von: MadMax-FHEM am 14 November 2023, 12:49:08
Zitat von: CottonIJo am 14 November 2023, 12:32:46Ich würde gerne wissen, warum funktioniert es mit "set" nicht? Falsche Klammersetzung?
Da fehlt wohl fhem/Perl/... Grundwissen...

{Befehl(e)} -> in geschweiften Klammern (denke auch bei DOIF) ist Perl also es wird in deinem Fall eine Perl-Funktion/-Sub namens DebianMail aufgerufen (verm. in einer deiner Utils.pm)

set ist ein fhem Kommando/Befehl: set Devicename Befehl/Kommando/...

Daher auch die Fehlermeldung: define {DebianMail... first...

fhem versucht nach deiner "Eingabe" von set beim Device {DebianMail... eben den set auszuführen kann aber (nat.) das angegebene Device nicht finden...

EDIT: ergänzende Frage: wenn es doch geht, warum (unbedingt) das "set" davor (haben wollen)?

Gruß, Joachim
Titel: Aw: DebianMail über DOIF funktioniert mit "set" nicht
Beitrag von: CottonIJo am 14 November 2023, 14:34:10
Hintergrund meiner Frage ist, dass ich bis jetzt jedes DOIF im Ausführungsteil mit "set" versehen habe und mich wunderte das es auch ohne geht.

Da die Funktion "DebianMail" in der 99_myUtils.pm als "sub DebianMail" steht (und somit nach m.M. eine Perl Funktion ist) bin ich davon ausgegangen, dass hier geschweifte Klammern nötig sind.
Das mache ich bei userReadings auch, Bsp.

userReadings intensity.av {movingAverage("50_Aussen_Sensor_SuedSeite","brightness",1800)}
Die Funktion movingAverage steht als sub auch in der 99_myUtils.pm

Nein, ich brauche das "set" nicht, es funktioniert ja offensichtlich auch ohne, habe mich nur gewundert, dass dem so ist.
Und nachdem es mit den geschweiften Klammern nicht funktioniert hat, ist mir nicht klar, wie sieht (bei DebianMail) die korrekte Syntax beim "set" Aufruf aus.

Grüße Joachim
Titel: Aw: DebianMail über DOIF funktioniert mit "set" nicht
Beitrag von: Otto123 am 14 November 2023, 15:34:57
Zitat von: CottonIJo am 14 November 2023, 14:34:10wie sieht (bei DebianMail) die korrekte Syntax beim "set" Aufruf aus.
set ist an der Stelle sinnlos.
Der Syntax ist z.B. set Device Wert - Device und Wert hast Du hier nicht.
Titel: Aw: DebianMail über DOIF funktioniert mit "set" nicht
Beitrag von: CottonIJo am 14 November 2023, 15:49:27
@Otto123, jetzt leuchtet die Lampe der Erleuchtung, danke.