DebianMail über DOIF funktioniert mit "set" nicht

Begonnen von CottonIJo, 14 November 2023, 12:32:46

Vorheriges Thema - Nächstes Thema

CottonIJo

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

MadMax-FHEM

#1
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

CottonIJo

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

Otto123

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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

CottonIJo

@Otto123, jetzt leuchtet die Lampe der Erleuchtung, danke.