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
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
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
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.
@Otto123, jetzt leuchtet die Lampe der Erleuchtung, danke.