$NAME wird nicht an "system" übergeben

Begonnen von hobbyprovider, 28 Dezember 2015, 14:36:28

Vorheriges Thema - Nächstes Thema

hobbyprovider

Hallo,
ich hatte bisher ein Notify:

define Mail_HS_UP_test notify HS_UP_test_Btn_02:trigger:.Short.* {system('/usr/local/bin/mailnotify.sh "fhem@@xxxxxxxxxx.de" "%NAME" "%EVENT"')}

Nach Update auf 5.7 habe ich @@ gegen @ und % gegen $ getauscht. $NAME und $EVENT sind in der Mail aber leer.
Sieht jetzt so aus:

define Mail_HS_UP_test notify HS_UP_test_Btn_02:trigger:.Short.* {system ('/usr/local/bin/mailnotify.sh "fhem@xxxxxxxxxx.de" "$NAME" "$EVENT"')}

testweise habe ich noch

define testdummyN dummy
define Mail_HS_UP_test2 notify HS_UP_test_Btn_02:trigger:.Short.* set testdummyN "$NAME"


eingerichtet. Der Dummy wird entsprechend gesetzt.
Mein "mailnotify.sh" funktioniert aber grundsätzlich.

define Mail_HS_UP_test notify HS_UP_test_Btn_02:trigger:.Short.* {system('/usr/local/bin/mailnotify.sh "fhem@@xxxxxxxxxx.de" "Betreff" "Email Text"')}

kommt korrekt an und mit FHEM 5.6 hat %NAME und %EVENT auch funktioniert.

Hat jemand 'nen Tipp für mich ?
mein System:
2 vernetzte FHEM auf RPi
1.: mit Cul 868 und 433
2.: mit 1Wire-Adapter DS9490R

marvin78

Du hast vergessen, zu posten, wie Mail_HS_UP_test nach deiner Änderung aussieht.

hobbyprovider

mein System:
2 vernetzte FHEM auf RPi
1.: mit Cul 868 und 433
2.: mit 1Wire-Adapter DS9490R

marvin78

Und jetzt wären noch entsprechende Fehlermeldungen interessant (Log etc).

Ich nehme aber an, dass das Problem ist, dass $NAME und $EVENT nicht innerhalb von ' aufgelöst werden.

hobbyprovider

#4
sollst Du haben:
(verbose 5)

2015.12.28 15:19:00 4: HS_UP_test: CUL_HM HS_UP_test battery: ok
2015.12.28 15:19:00 5: Triggering HS_UP_test (1 changes)
2015.12.28 15:19:00 5: Notify loop for HS_UP_test battery: ok
2015.12.28 15:19:00 4: HS_UP_test: CUL_HM HS_UP_test CMDs_done
2015.12.28 15:19:00 5: Triggering HS_UP_test (1 changes)
2015.12.28 15:19:00 5: Notify loop for HS_UP_test CMDs_done
2015.12.28 15:19:00 4: HS_UP_test: CUL_HM HS_UP_test HS_UP_test_Btn_02 Short
2015.12.28 15:19:00 5: Triggering HS_UP_test (1 changes)
2015.12.28 15:19:00 5: Notify loop for HS_UP_test HS_UP_test_Btn_02 Short
2015.12.28 15:19:00 4: HS_UP_test_Btn_02: CUL_HM HS_UP_test_Btn_02 Short (to vccu)
2015.12.28 15:19:00 5: Triggering HS_UP_test_Btn_02 (1 changes)
2015.12.28 15:19:00 5: Notify loop for HS_UP_test_Btn_02 Short (to vccu)
2015.12.28 15:19:00 4: HS_UP_test_Btn_02: CUL_HM HS_UP_test_Btn_02 trigDst_vccu: noConfig
2015.12.28 15:19:00 5: Triggering HS_UP_test_Btn_02 (1 changes)
2015.12.28 15:19:00 5: Notify loop for HS_UP_test_Btn_02 trigDst_vccu: noConfig
2015.12.28 15:19:00 4: HS_UP_test_Btn_02: CUL_HM HS_UP_test_Btn_02 trigger: Short_56
2015.12.28 15:19:00 5: Triggering HS_UP_test_Btn_02 (1 changes)
2015.12.28 15:19:00 5: Notify loop for HS_UP_test_Btn_02 trigger: Short_56
2015.12.28 15:19:00 5: Triggering Mail_HS_UP_test
2015.12.28 15:19:00 4: Mail_HS_UP_test exec {system ('/usr/local/bin/mailnotify.sh "fhem@xxxxxxxxx.de" "$NAME" "$EVENT"')}
2015.12.28 15:19:00 5: Cmd: >{system ('/usr/local/bin/mailnotify.sh "fhem@xxxxxxxxx.de" "$NAME" "$EVENT"')}<
Reading message body from STDIN because the '-m' option was not used.
If you are manually typing in a message:
  - First line must be received within 60 seconds.
  - End manual input with a CTRL-D on its own line.

Dec 28 15:19:02 fhem-net-v2 sendEmail[19539]: Message input complete.
Dec 28 15:19:03 fhem-net-v2 sendEmail[19539]: Email was sent successfully!
2015.12.28 15:19:03 3: Mail_HS_UP_test return value: -1
2015.12.28 15:19:03 4: HS_UP_test_Btn_02: CUL_HM HS_UP_test_Btn_02 trigger_cnt: 56
2015.12.28 15:19:03 5: Triggering HS_UP_test_Btn_02 (1 changes)
2015.12.28 15:19:03 5: Notify loop for HS_UP_test_Btn_02 trigger_cnt: 56


die Meldung "Reading message body...." kommt weil "Betreff" leer ist wenn ich was rein schreibe kommt die Meldung nicht.
mein System:
2 vernetzte FHEM auf RPi
1.: mit Cul 868 und 433
2.: mit 1Wire-Adapter DS9490R

marvin78


hobbyprovider

nein - nicht verstanden.... :o

wie soll ich das denn einfassen ?
mein System:
2 vernetzte FHEM auf RPi
1.: mit Cul 868 und 433
2.: mit 1Wire-Adapter DS9490R

marvin78

define Mail_HS_UP_test notify HS_UP_test_Btn_02:trigger:.Short.* {system ("/usr/local/bin/mailnotify.sh fhem@xxxxxxxxxx.de $NAME $EVENT")}

oder qx

define Mail_HS_UP_test notify HS_UP_test_Btn_02:trigger:.Short.* {qx (/usr/local/bin/mailnotify.sh fhem@xxxxxxxxxx.de "$NAME" "$EVENT")}

hobbyprovider

Hallo marvin78
erstmal Danke für Deine Hilfe. Ich mußte gestern kurzfristig abbrechen.
Ich habe verschiedene Varianten probiert
Offensichtlich wird die Email-Adresse nicht als eine Variable erkannt. Ich bekomme dann solche Meldungen:
Zitat2015.12.29 10:55:30 3: Mail_HS_UP_test return value: Global symbol "@xxxxxxxxxx" requires explicit package name at (eval 743) line 1.

Ich habe dann diese Variante probiert:
define Mail_HS_UP_test notify HS_UP_test_Btn_02:trigger:.Short.* {system ("/usr/local/bin/mailnotify.sh dummy $NAME $EVENT")}

und in meiner mailnotify.sh die Email-Adresse fest eingetragen und "dummy" einfach verworfen. Damit kam zumindest eine Email mit dem Gerätenamen und einem Teil des Events. Da der Event typisch so lautet:
Zitattrigger: Short_1
und ein Space enthält wird auch er in 2 Stücken übergeben.
Jetzt weiss ich zwar, dass $NAME und $EVENT grundsätzlich übergeben werden (wie Du vermutet hast, aber nicht innerhalb von 2x ') und ich könnte mir die mailnotify.sh hinbasteln. Aber wirklich toll ist das nicht. Zumal das mit ' schon mal funktioniert hat. Da muss doch schon mal jemand drüber gestolpert sein.
mein System:
2 vernetzte FHEM auf RPi
1.: mit Cul 868 und 433
2.: mit 1Wire-Adapter DS9490R

marvin78

Was passiert, wenn du es so machst?

HS_UP_test_Btn_02:trigger:.Short.* {system ("/usr/local/bin/mailnotify.sh 'fhem@xxxxxxxxxx.de' $NAME $EVENT")}

(Code für den DEF Bereich)

Für das Aufteilen von $EVENT gibt es ja $EVTPART.

hobbyprovider

die Variante hatte ich auch schon. Das ' wird scheinbar nicht erkannt. Die Fehlermeldung ist mit oder ohne die gleiche

Zitat2015.12.29 12:27:59 3: Mail_HS_UP_test return value: Global symbol "@xxxxxx" requires explicit package name at (eval 34) line 1.
mein System:
2 vernetzte FHEM auf RPi
1.: mit Cul 868 und 433
2.: mit 1Wire-Adapter DS9490R

marvin78

Du kanst system() auch so verwenden:

HS_UP_test_Btn_02:trigger:.Short.* {
  my @cmd = ('/usr/local/bin/mailnotify.sh'); 
  push @cmd, 'fhem@xxxxxxxxxx.de';
  push @cmd, $NAME;
  push @cmd, $EVENT;
  system (@cmd);
}

hobbyprovider

wow !!!!!

tut geh'n

Vielen Dank


Dann kann ich mich weiter durch das Update kämpfen - ich habe noch ein paar %xxx-Leichen im Keller - mal sehen wo ich noch drüber stolpere
mein System:
2 vernetzte FHEM auf RPi
1.: mit Cul 868 und 433
2.: mit 1Wire-Adapter DS9490R

hobbyprovider

#13
Hier noch ein kleiner Nachtrag für Mitleser:

hier die angepasste "DEF" für den entsprechenden notify:
maildummy {
  my @cmd = ('/usr/local/bin/mailnotify.sh'); 
  push @cmd, 'fhem@ulfreinhardt.de';
  push @cmd, "$NAME";
  push @cmd, "Geraet: $NAME \n Event: $EVENT";
  system (@cmd);
}


man kann Text und Variablen in " zusammenfassen und so übergeben (siehe Zeile 5)
Dann wird eine richtige Email draus (\n veranlasst einen Zeilenumbruch in der Email)
Die Emailadresse muss in ' eingefasst werden sonst wird sie am @ und . geteilt.
mein System:
2 vernetzte FHEM auf RPi
1.: mit Cul 868 und 433
2.: mit 1Wire-Adapter DS9490R

marvin78

Eine Bitte von mir:

Anfänger sollen möglich nicht direkt die Config editieren. Könntest du also bitte dein Beispiel so abändern, dass es für den DEF Bereich im Frontend passt? Danke.


maildummy {
  my @cmd = ('/usr/local/bin/mailnotify.sh');
  push @cmd, 'fhem@xxxxxxxx.de';
  push @cmd, $NAME;
  push @cmd, "Geraet: $NAME \n Event: $EVENT";
  system (@cmd);
}