Hallo zusammen,
ich habe mir hier aus dem Forum das Skript zum auslesen der HomeMatic Meldungen installiert und das funktioniert auch zuverlässig wenn ich es im Webfront in eine HTML Box packe.
Ich möchte das ganze jetzt aber mit dem E-Mail Modul versenden, dann sieht das ganze aber so aus wie im Bild gezeigt.
Klar da fehlt jetzt der <html> Tag aber ich habe keine Ahnung wo ich den einfügen muss damit mein Mail Programm die Tabelle anzeigt.
Vielleicht könnt ihr ja helfen.
Hier das Skript:
<?
//Erstellt eine Variable die im WebFront alle ServiceMeldungen anzeigt. Einfach in ein Skript kopieren und ausführen.
//Ab hier nichts mehr ändern
$object = IPS_GetObject($IPS_SELF);
$parentID = $object['ParentID'];
//Installer
if ($IPS_SENDER == "Execute")
{
IPS_SetHidden($IPS_SELF, true);
IPS_SetName($IPS_SELF, "Auslese-Skript");
$parentObject = IPS_GetObject($parentID);
if ($parentObject['ObjectType'] !== 1)
{
$instanceID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetParent($instanceID, $parentID);
$parentID = $instanceID;
IPS_SetParent($IPS_SELF, $parentID);
IPS_SetName($instanceID, "Servicemeldungen");
}
IPS_SetScriptTimer($IPS_SELF, 300);
}
$texte = Array(
"CONFIG_PENDING"=>"Konfigurationsdaten stehen zur Übertragung an",
"LOWBAT"=>"Batterieladezustand gering",
"STICKY_UNREACH"=>"Gerätekommunikation war gestört",
"UNREACH"=>"Gerätekommunikation aktuell gestört"
);
$str = "<table width='90%' align='center'>"; // Farbe anpassen oder style entfernen
$str .= "<tr><td><b>Gerätname</b></td><td><b>GeräteID</b></td><td><b>Meldung</b></td></tr>";
$ids = IPS_GetInstanceListByModuleID("{A151ECE9-D733-4FB9-AA15-7F7DD10C58AF}");
if(sizeof($ids) == 0)
die("Keine HomeMatic Socket Instanz gefunden!");
$msgs = HM_ReadServiceMessages($ids[0]);
if($msgs === false)
die("Verbindung zur CCU fehlgeschlagen");
if(sizeof($msgs) == 0)
$str .= "<tr><td colspan=3><br/>Keine Servicemeldungen!</td></tr>";
foreach($msgs as $msg)
{
if(array_key_exists($msg['Message'], $texte)) {
$text = $texte[$msg['Message']];
} else {
$text = $msg['Message'];
}
$id = GetInstanceIDFromHMID($msg['Address']);
if(IPS_InstanceExists($id)) {
$name = IPS_GetLocation($id);
} else {
$name = "Gerät nicht in IP-Symcon eingerichtet";
}
$str .= "<tr><td>".$name."</td><td>".$msg['Address']."</td><td>".$text."</td></tr>";
}
$str .= "</table>";
$vid = CreateVariableByName($parentID, "Meldungen", 3);
IPS_SetIcon($vid, "Information");
IPS_SetVariableCustomProfile($vid, "~HTMLBox");
SetValue($vid, $str);
function GetInstanceIDFromHMID($sid)
{
$ids = IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");
foreach($ids as $id)
{
$a = explode(":", HM_GetAddress($id));
$b = explode(":", $sid);
if($a[0] == $b[0])
{
return $id;
}
}
return 0;
}
function CreateVariableByName($id, $name, $type)
{
global $IPS_SELF;
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
}
return $vid;
}
?>
Das ist das Mail versand Modul:
<?
// ++++++++++++++++ Konfig ++++++++++++++++++++++++++++++++
$zustand = GetValue(41454 /*[Keller\Netzwerk und Systeme\System-intern\Servicemeldungen\Meldungen]*/ );
$uhrzeit = date("H:i.s");
$sendmail = 54301 /*[Skripte\E-Mail System versand\E-Mail senden]*/;
$mailsubject = "IP-Symcon - HM-Systemstatus !";
$mailcontend = "Der HomeMatic Systemstatus: $zustand" ;
// +++++++++++++++++Konfig Ende ++++++++++++++
SMTP_SendMail($sendmail, $mailsubject, $mailcontend);
?>
und so sieht der Mail Inhalt aus: