Reading-Wert eines Dummy in einer Mail versenden.

Begonnen von wilkens, 28 Juli 2015, 00:04:19

Vorheriges Thema - Nächstes Thema

wilkens

Hallo,

ich schalte meinen Trockner mit einem Zwischenstecker (HM-ES-PMSw1-Pl) mit Leistungsmessung.
Ich berechne mir hierüber den Preis der jeweiligen Trockengänge und schicke mir diese, nach Abschluss der Trocknung per pushover.
Das funktioniert so weit.

Nun möchte ich die Verbrauchsdaten allerdings in einer Mail gesendet haben.
Das senden einer Mail nach Abschluss des Waschgangs an sich funktioniert.
Allerdings bekomme ich die Kosten nicht in den Text der Mail rein.

Ich hänge im Moment an folgendem Punkt fest:

Es gibt einen Dummy "KG.wr.SD.Trockner.Betrieb" dieser hat ein Reading "AktuellerBetriebEur".
Die Berechnung passt soweit.

Das notify, welches die Mail senden soll sieht wie folgt aus:
   
   define KG.wr.SD.Trockner.Mail notify KG.wr.SD.Trockner.Betrieb:standby
   {
   my $Berechnung = ReadingsVal( "KG.wr.SD.Trockner.Betrieb", "AktuellerBetriebEur","0");
   Postfixmail('trockner@w-home.local', "Der Trockner ist fertig", $Berechnung);;
   GetHttpFile("192.168.167.235:8085", "/?Trockner_Fertig")
   }

Wenn ich das notify ausführe, indem ich KG.wr.SD.Trockner.Betrieb auf standby setze, passiert nichts.
Auch nichts im Log.

Lege ich das notify so an:

   define KG.wr.SD.Trockner.Mail notify KG.wr.SD.Trockner.Betrieb:standby
   {
   Postfixmail('trockner@w-home.local', "Der Trockner ist fertig", $NAME);;
   GetHttpFile("192.168.167.235:8085", "/?Trockner_Fertig")
   }

Dann bekomme ich eine Mail. Allerdings steht im Mailtext dann nur KG.wr.SD.Trockner.Betrieb
Irgendwo vermute ich das Problem bei dem Mailtext. Wenn ich statt $NAME nur einen Text schreibe, kommt die Mail auch nicht an.


Der Part in der 99_myUtils.pm sieht so aus:

  sub Postfixmail ($$$) {
  my ($rcpt, $subject, $text) = @_;
  system("echo \"$text\" | /usr/bin/mail -s \"$subject\" \"$rcpt\"");
  }

Ich hänge nun seit ein paar Abenden an diesem Problem fest und würde mich über Hilfe freuen.

JoWiemann

Hallo,

probiert doch bitte folgendes:

define KG.wr.SD.Trockner.Mail notify KG.wr.SD.Trockner.Betrieb:standby
   {
   my $Berechnung = ReadingsVal( "KG.wr.SD.Trockner.Betrieb", "AktuellerBetriebEur","0");
   Postfixmail('trockner@w-home.local', "Der Trockner ist fertig", "$Berechnung");;
   GetHttpFile("192.168.167.235:8085", "/?Trockner_Fertig")
   }

Damit wird der Wert aus $Berechnung in Anführungszeichen und somit als "echte" Zeichenkette der sub Postfixmail übergeben und nicht als Zahl.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

wilkens

Mit $Berechnung in "" (also "$Berechnung"), passiert gar nichts. Keine Mail aber auch nichts im Logfile.

Genau das Gleiche passiert, wenn ich nur Text statt $NAME reinschreibe.
Die Zweite Aktion des Notify "GetHttpFile..." wurde ausgeführt.

Es funktionieren nur:
$TYPE
$EVENT
$NAME
$EVTPART0

Die werte habe ich aus dem Log, als ich ein Komma falsch gesetzt (vergessen) hatte:
2015.07.22 01:04:13 1: PERL WARNING: Scalar found where operator expected at (eval 572) line 3, near "'Post im Postkasten' $NAME"
2015.07.22 01:04:13 3: eval: my $TYPE='dummy';my $EVENT='Post';my $NAME='EG.fl.TK.Briefkasten.Post';my $EVTPART0='Post';{ if ( Value("STATE") eq "Post")

Kann ich ein Log für das Postfix erstellen?

JoWiemann

Hallo,

über nehme doch mal bitte im Webfrontend von Fhem im DEF des notify folgendes:

KG.wr.SD.Trockner.Betrieb:standby
{
   my $Berechnung = ReadingsVal( "KG.wr.SD.Trockner.Betrieb", "AktuellerBetriebEur","0");
   Postfixmail('trockner@@w-home.local', "Der Trockner ist fertig", "$Berechnung");
   GetHttpFile("192.168.167.235:8085", "/?Trockner_Fertig");
}

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

wilkens

Ich werde verrückt, das doppelte @@ war es.
Jetzt bekomme ich die Mail. Zwar noch mit dem Wert 0, da beim einfachen ein- und ausschalten keine Kosten entstehen aber den Rest teste ich heut Abend mal, wenn ich wieder Zuhause bin.

Vielen Dank schon Mal.

JoWiemann

Hallo,

sobald Du:

$TYPE
$EVENT
$NAME
$EVTPART0

verwendest, bitte das @@ wieder zu @ zurück führen. Sie auch command.ref zum Thema maskieren. Deine Notify müsste dann so aussehen:

KG.wr.SD.Trockner.Betrieb:standby
{
   my $Berechnung = ReadingsVal( $NAME, "AktuellerBetriebEur","0");
   Postfixmail('trockner@w-home.local', "Der Trockner ist fertig", "$Berechnung");
   GetHttpFile("192.168.167.235:8085", "/?Trockner_Fertig");
}

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

wilkens

Hallo nochmal,

Berechnete Verbrauchswerte kommen auch in den Mails.
Zwar jeweils immer die, der vorigen Trocknung, das bekomme ich aber auch noch hin.

Auf Dauer werde ich mir wohl mal ein Pearl-Buch zulegen.
Bis dahin lasse ich mich aber erst mal von allem inspirieren und kopiere mir mit gefährlichem Halbwissen meine Programmschnipsel überall zusammen ;-)

Also Vielen Dank noch Mal für die schnelle Hilfe :-)