[gelöst] Wie rufe ich eine eigene Funktion (99_My_Utils) mit Parameter

Begonnen von tklein, 18 April 2017, 17:55:00

Vorheriges Thema - Nächstes Thema

tklein

Hallo,

folgende Funktion habe ich:


sub alarmmail() {

my ($alarm_von) = @_;
fhem("set Dummy_test alarmmail");

my $subject = " Alarm von: " . $alarm_von;
my $text = "Das oben genannte Gerät hat Alarm ausgelöst";

DebianMail('max.mustermann@test.de',$subject,$text);
fhem("set Pushover_Client msg $subject $text '' 0 '' ");

return $subject;

}


Im DOIF steht:


([Alarmanlage] eq "an" and [PIR433_1] eq "on") ((set Pushover_Client msg 'Bewegung' 'Bewegung im Flur' '' 0 '') (set PIR433_1 off) (set alarm an) (alarmmail(PIR Flur)))


Log sagt mir: alarmmail(PIR Flur): Unknown command alarmmail("PIR, try help.

Wie bekomme ich die Fehlermeldung weg bzw. wie sollte der Aufruf erfolgen?

Grüße Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

MadMax-FHEM

Ich nutze zwar kein DOIF sondern notify aber mache es wie folgt:

statt:

(alarmmail(PIR Flur)

mal folgendes versuchen:

{alarmmail(\"PIR Flur\")}

EDIT: deine sub-Definition muss dann aber auch so lauten: sub alarmmail($)

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)

tklein

Hi Joachim,

jetzt bekomme ich:
{alarmmail(\"PIR Flur\")}: Can't find string terminator '"' anywhere before EOF at (eval 3333) line 1.

bei:

([Alarmanlage] eq "an" and [PIR433_1] eq "on") ((set Pushover_Client msg 'Bewegung' 'Bewegung im Flur' '' 0 '') (set PIR433_1 off)(set alarm an)({alarmmail(\"PIR Flur\")}))

ZitatEDIT: deine sub-Definition muss dann aber auch so lauten:
Code: [Auswählen]

sub alarmmail($)
watn blöder copy&paste Fehler :-)

Grüße
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

MadMax-FHEM

Hi,

sorry ich dachte (warum auch immer) ich müsste die Anführungszeichen maskieren...
...vielleicht einfach mal so:

([Alarmanlage] eq "an" and [PIR433_1] eq "on") ((set Pushover_Client msg 'Bewegung' 'Bewegung im Flur' '' 0 '') (set PIR433_1 off)(set alarm an)({alarmmail("PIR Flur")}))

EDIT: Wobei ich wie geschrieben DOIF nicht verwende, kann also gut sein, dass da noch irgendwo ein Strichpunkt etc. zum Trennen zwischen den set-Befehlen und dem Perl-Aufruf rein muss...

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)

tklein

FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

MadMax-FHEM

Bitte gerne!

Viel Spaß!

Achja, den Thread  mal als gelöst "kennzeichnen": z.B. umbenennen in "[gelöst] Wie rufe ich eine eigene Funktion (99_My_Utils) mit Parameter in einem DOIF auf?"

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)

tklein

schon längst geschehen. Mache ich bei meinen gelösten Threads eigentlich immer. :-)
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

MadMax-FHEM

Ups, hab ich wohl übersehen...
...bzw. ist ja nicht jeder ein Forumsprofi wie du ;)

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)

automatisierer

Funktioniert es denn wirklich?

Zumindest, wenn du von deiner Sub einen Rückgabewert erwartest oder eine Berechnung machst, musst du den Perl Befehl in den geschweiften Klammern nochmal zusätzlich in runde Klammern setzten.

Zitat Commandref:
ZitatBerechnungen können in geschweiften Klammern erfolgen. Aus Kompatibilitätsgründen, muss die Berechnung unmittelbar mit einer runden Klammer beginnen. Innerhalb der Perlberechnung können Readings, Status oder Internals wie gewohnt in eckigen Klammern angegeben werden.

Bei mir funktioniert dieser Aufruf zum Beispiel nicht ohne runde Klammern:
(set pushover msg title=Warnung {(checkWindowOpen("msg"))} device=Ingo priority=2 sound=siren retry=30 expire=3600)
wohlgemerkt ist das DOIF Kram und hat nix mit der Sub zu tun. Ohne die runden Klammern wird nur der Aufruf selber per Pushover versendet und nicht der Rückgabewert.

tklein

@ Joachim:

Wenn schon nicht FHEM etc. dann das Forum ein bißchen. :-)

@ automatisierer:

Danke für den Hinweis. Werde ich ausprobieren. Während ich bastel habe ich so meine Werte überprüft. Im DOIF brauche ich keinen Rückgabewert. Daher wird es mir nicht aufgefallen sein.

Grüße & Dake für die Hilfe!
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2