Nachdem ich nun endlich das Test-Mail absetzen konnte und damit die Funktion dieser Instanz bestätigen konnte, möchte ich nun ein Script basteln, welches mir 1 x pro Tag alle Sensorvariablen (Temperaturen, Luftfeuchte etc.) per mail schickt.
Wie muss das Script hierfür aussehen ? Bisher habe ich es nur geschafft, mir eine mail zu senden wenn der Bewegungsmelder Alarm gegeben hat.
BestenDank
Gregor
ralf
20. August 2010 um 23:05
2
Als Gedankenanstoß mal mein Script zum Statusversand.
<?
$debug = TRUE;
function boolStringAufZu($bValue = false) { // returns string
return ($bValue ? 'geschlossen ' : 'geöffnet ');
}
function boolStringEinAus($bValue = false) { // returns string
return ($bValue ? 'ein ' : 'aus ');
}
function VarAktTime($varID) {
$var = IPS_GetVariable($varID);
$akt = date("d.m.Y H:i:s", $var['VariableChanged']);
return ($akt);
}
$fname = 'anrufliste.html';
$fh_file = fopen ("../media/".$fname, "wb");
fwrite($fh_file,GetValueString(23324 /*[.Kommunikation\Anrufe\Anrufliste]*/));
fclose( $fh_file);
$betreff = "Hausstatus ".date("Y.m.d")." ".date("H:i:s");
$message = "Haustür - " .boolStringAufZu(GetValueBoolean(57727 /*[Flur_Windfang_GästeWC\Haustür\Haustür Status]*/)). " - " . VarAktTime(57727 /*[Flur_Windfang_GästeWC\Haustür\Haustür Status]*/) .chr(13);
$message .= "Garagentor - " .boolStringAufZu(GetValueBoolean(15928 /*[Garage\Garagentor\Status]*/)). " - " . VarAktTime(15928 /*[Garage\Garagentor\Status]*/).chr(13);
$message .= "Gartenpumpe - " .boolStringEinAus(GetValueBoolean(22282 /*[Aussen\Pumpensteckdose\Status]*/)). " - " . VarAktTime(22282 /*[Aussen\Pumpensteckdose\Status]*/).chr(13);
$message .= "Lüftungsstufe - " . GetValueInteger(20978 /*[.Steuerung\Lüftung\Lüftungsstufe auswerten\Lueftungsstufe]*/). " - " . VarAktTime(20978 /*[.Steuerung\Lüftung\Lüftungsstufe auswerten\Lueftungsstufe]*/).chr(13);
$message .= "Licht KG - " .boolStringEinAus(GetValueBoolean(12530 /*[.Visualisierung\LichtAnKeller\LichtAnKeller]*/)). " - " . VarAktTime(12530 /*[.Visualisierung\LichtAnKeller\LichtAnKeller]*/).chr(13);
$message .= "Licht EG - " .boolStringEinAus(GetValueBoolean(15794 /*[.Visualisierung\LichtAnEG\LichtAnEG]*/)). " - " . VarAktTime(15794 /*[.Visualisierung\LichtAnEG\LichtAnEG]*/).chr(13);
$message .= "Licht OG - " .boolStringEinAus(GetValueBoolean(11140 /*[.Visualisierung\LichtAnOG\LichtAnOG]*/)). " - " . VarAktTime(11140 /*[.Visualisierung\LichtAnOG\LichtAnOG]*/).chr(13);
$message .= "Licht Aussen - " .boolStringEinAus(GetValueBoolean(20085 /*[.Visualisierung\LichtAnAussen\LichtAnAussen]*/)). " - " . VarAktTime(20085 /*[.Visualisierung\LichtAnAussen\LichtAnAussen]*/).chr(13).chr(13);
$message .= "Regenwarnung - " .boolStringEinAus(GetValueBoolean(47938 /*[.Wetter\Unwetterzentrale\Unwetterzentrale\Regenwarnung]*/)). " - " . VarAktTime(47938 /*[.Wetter\Unwetterzentrale\Unwetterzentrale\Regenwarnung]*/).chr(13);
$message .= chr(13)."Logfile".chr(13)."--------------------------------------------------".chr(13).GetValueString(16906 /*[.Visualisierung\LogMyMessages.VIS]*/);
if ($debug)
IPS_LogMessage(IPS_GetName($IPS_SELF), "verschickt");
SMTP_SendMailAttachment(54174 /*[.Steuerung\E-Mail senden (SMTP) an ...]*/, $betreff, $message, IPS_GetKernelDir()."/media/".$fname);
?>
Das Ergebnis sieht dann z.B. so aus
Haustür - geöffnet - 17.08.2010 16:02:05
Garagentor - geschlossen - 18.08.2010 07:36:13
Gartenpumpe - aus - 12.08.2010 06:35:22
Lüftungsstufe - 2 - 18.08.2010 06:20:16
Licht KG - ein - 18.08.2010 07:46:05
Licht EG - aus - 18.08.2010 07:39:45
Licht OG - aus - 18.08.2010 07:57:38
Licht Aussen - aus - 12.08.2010 21:27:18
Regenwarnung - aus - 18.08.2010 05:45:02
Logfile
--------------------------------------------------
18.08. 06:20 :: Lüftung Auto - Stufe 2
...
Hallo Ralf,
super, Danke, hat geklappt !
Gregor