FHEM Forum

FHEM => Automatisierung => Thema gestartet von: newby am 24 Juni 2015, 08:55:46

Titel: E-Mail Statusmeldung mit Zeitangabe der Änderung
Beitrag von: newby am 24 Juni 2015, 08:55:46
Hallo,

ich würde gerne eine E-Mail mit folgendem Inhalt versenden.

-Thermostatname Templistname Status und Zeit der Änderung

Diese soll versendet werden nachdem ich über einen Dummy Schalter die Heizung ein- bzw. ausgeschaltet habe.
Dabei wird an jedes Thermostat eine Templist übertragen (Winter/Sommer)
Da dieses aber nicht immer funktioniert die Statusmail.

Soweit bin ich bereits

Dummy Heizung Status on off
Readingsgroup Templiststatus
Ankleide_TH:R_tempList_State     verified   2015-06-22 18:41:01

notify templistchk
Heizung:on.* { if ($EVENT eq "on") {
  { FB_mail('xxx@xxxxx.de', 'FHEM Templist', $NAME.': '.$EVENT)};
   Log 3, "$NAME : Templist $EVENT";
  }
}


Wie bekomme ich es hin das die Mail nach jeder Änderung des Status von Heizung mir Infos aus der Readingsgroup Templiststatus mit den Infos übergibt?
Ich steh auf dem Schlauch, welche Variable muss ich eingeben für die Zeit der Änderung zu bekommen?

Gruß
Sven


Titel: Antw:E-Mail Statusmeldung mit Zeitangabe der Änderung
Beitrag von: dev0 am 24 Juni 2015, 10:31:48
Die Funktion ReadingsTimestamp('Ankleide_TH','R_tempList_State','') liefert den gesuchten Timestamp.
Titel: Antw:E-Mail Statusmeldung mit Zeitangabe der Änderung
Beitrag von: newby am 25 Juni 2015, 11:17:29
Ja super wusste doch das ich blind bin :-[
also die Zeit ist schon mal da jetzt fehlt mir nur noch der Rest.

Habe das ganze mal etwas erweitert
n_heizung {
   my $verified=0;
   my $set=0;
   my $heizung_status=ReadingsVal("Heizung","state","off");
   my @@hmths=devspec2array("chanNo=04");
  foreach(@@hmths) {
    my $state=ReadingsVal($_,"R_tempList_State", "incorrect");
    my $name=InternalVal($_,"NAME", "unbekannt");
    my $time=ReadingsTimestamp($_,"R_tempList_State", "?");
    if ($state eq "verified") {
      $verified++
    }
    if ($state ne "verified") {
      $set++
    }
  if ($set != 0) {
    Log(3,"Statusänderung: " . $name . $state . $time);
      print "Verified\n"
  }
  else {
    if ($verified == @@hmths) {
      Log(3,"Alle Änderungen erfolgreich: " . $name . $state . $time . " von " . @@hmths)
    }
     else {
      Log(3,"Statusfehler: " . $set . " of " . @@hmths . " sind nicht geändert.")
    }
  }
}
}


Klappt aber  noch nicht so wie ich es möchte

die Ausgabe dazu ist folgende

2015.06.24 16:03:05 3: Statusfehler: 0 of 9 sind nicht geändert.
2015.06.24 16:03:05 3: Statusfehler: 0 of 9 sind nicht geändert.
2015.06.24 16:03:05 3: Statusfehler: 0 of 9 sind nicht geändert.
2015.06.24 16:03:05 3: Statusfehler: 0 of 9 sind nicht geändert.
2015.06.24 16:03:05 3: Statusfehler: 0 of 9 sind nicht geändert.
2015.06.24 16:03:05 3: Statusfehler: 0 of 9 sind nicht geändert.
2015.06.24 16:03:05 3: Statusfehler: 0 of 9 sind nicht geändert.
2015.06.24 16:03:05 3: Statusfehler: 0 of 9 sind nicht geändert.
2015.06.24 16:03:05 3: Alle Änderungen erfolgreich: Wohnen_THverified2015-06-22 18:41:40 von 9