Das folgende Beispiel zeigt, wie man eine E-Mail versendet.
Aufgabe:
Bei Ausfall der Zentralheizung, soll eine Alarmmeldung auf ein Handy geschickt werden.
Lösung:
Im folgenden Skript wird die Vorlauftemperatur einer Zentralheizung überwacht.
Fällt diese während der Heizperiode unter 30°C wird eine E-Mail generiert und an ein Handy versandet.
Das Skript die durch die Variable vom HMS 100 T, der am Vorlauf der Zentralheizung
(mit etwas Wärmeleitpaste) befestigt ist, getriggert.
Vorraussetzung:
Der E-Mail Empfang des Handy muss mit erlaubt sein (bei T-Mobile: SMS Text „OPEN“ an die 8000) und Alias einrichten z.B.: ipsuser@t-mobile-sms.de
Achtung nicht vergessen ein Empfangslimit einzustellen! Die Kosten pro empfangene Mail betragen € 0,19
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
//(C) bY CSS - M&M April 2005
//File: EMail.ips.php
//Trigger: TEMP_Vorlauf
//*** Achtung ***
//Wenn das Script per Execute aus den Event Scripts gestartet wird
//kann ein Script Timeout vorkommen
//Das beeinflusst aber nicht die Funktion im Timer Modus,
//sondern nur die fehlende Ausgabe im "Output" Fenster
//------------------------------------------------------------------------------
//Mail konfiguration
$mailserver = "mail.ipsymcon.de";
//Benutzername/Passwort
$username = "web123";
$password = "pw456";
//Absender
$sendermail = "info@ipsymcon.de";
$sendername = "IP-SYMCON";
//Empänger
$receivemail = "mail@mein-name.de";
$receivename = "Martin Mustermannn";
//Betreff
$subject = "IPS-ALARM";
//Meldung
$message ="ALARM von IP-Symcon,
";
$message.="Die Zentralheizung ist ausgefallen.
";
//Status - Vorlauf Temperatur
$temperatur = GetValueFloat("TEMP_Vorlauf");
//Status - Heizung an
$z_heizung = GetValueBoolean("OUT_Heizung");
//Letzte aktualisierung Variable "Heizung An"
$wann_an = IPS_GetUpdateTime("OUT_Heizung");
//Ist die Heizung an, aber nicht warm > Alarm
//ACHTUNG: Der Heizung noch etwas Zeit (hier 15 Minuten) zum Aufwärmen geben !!
if (($z_heizung == True) && ($temperatur <= 30) && (time() >= $wann_an + 60 * 15)) {
//--- Script für Mailversand ---
//* Keine weitere Konfiguration nötig
//Klasse für Mailversand importieren
//(c) by http://phpmailer.sourceforge.net/
include("scripts/class.smtp.php");
//Object erstellen
$mail = new SMTP();
//Zum SMTP Server verbinden
if(!$mail->Connect($mailserver)) {
echo "Error connecting to MAIL SERVER";
exit;
}
//Handshake
if(!$mail->Hello()) {
echo "Error in HELO";
exit;
}
//Anmelden
if(!$mail->Authenticate($username, $password)) {
echo "Error in AUTH";
exit;
}
//Mail generieren
$CRLF = "
";
$header ="From: \"$sendername\" <$sendermail>".$CRLF;
$header.="To: \"$receivename\" <$receivemail>".$CRLF;
$header.="Subject: $subject".$CRLF;
$header.=$CRLF;
//Absender angeben
if(!$mail->Mail($sendermail)) {
echo "Sender not Accepted";
} else { //empänger
if(!$mail->Recipient($receivemail)) {
echo "Receptor not accepted!";
} else {
if(!$mail->Data($header.$message)) {
echo "Error Sending MAIL!";
}
}
}
} // Heiung-Überwachung
?>
Es ist möglich. Jedoch kostet eine SMS über das Festnetz mehr als, wenn man eine SMS über das Internet verschickt. Wir wägen deshalb zur Zeit ab, ob es Sinn macht diese Möglichkeit anzubieten.
Ja, das stimmt sicherlich.
Mir kommt´s darauf an, daß mir eine Störung, hoffentlich sehr selten bis gar nicht, sicher gemeldet wird und dabei kommt es nicht darauf an wieviel eine SMS kostet, sondern das es funktioniert.
Die Erfahrung der vergangenen Jahre hat gezeigt, das der direkte Weg immer der ist, der am besten funktioniert. Entweder über´n Modemzugang oder jetzt über´s Festnetz. Der Umweg über´s Internet hat bisher immer zu Verzögerungen in der Übertragung geführt. Obwohl, ich bin Kunde bei Strato und der UMS-Dienst funktioniert ziemlich gut. Dazu kommt noch, daß ich bisher ´ne höhere Verfügbarkeit vom ISDN als vom DSL hatte.
Wenn der Provider die Übertragung aus technischen Gründen verzögert, hat man sowieso Pech gehabt, da hilft nur ein professioneller Dienst.
Ich würde es begrüßen wenn ich T-COM SMS im Festnetz benutzen könnte, wem´s zu teuer ist weil er, warum auch immer, viele SMSn verschicken möchte, der kann ja einen anderen Weg gehen.
Du hast vollkommen Recht, dass das HMS System & IP-Symcon bei Feuer, Einbruch usw. zuverlässig die Alarm-Meldung übermitteln muss und dass hier nicht an der falschen Seite gespart werden soll.
Wir werden kurzfristig eine Lösung bereitstellen.
ich hatte das Problem hier gesehen und habe gestern mal was mit
dem T-Online Programm versucht.
Folgende „Quick and dirty“- Lösung ließ sich ohne großen Aufwand
realisieren:
VORBEREITUNGEN:
ISDN Anschluß mit CAPI 2.0 muß vorhanden sein
Das Programm „T-Com MMS“ muss ständig auf dem IPS Rechner laufen,
es muss bereits konfiguriert sein.
sollte man testen und per Hand schon mal SMSe verschicken können
Um die Eingaben automatisieren zu können habe ich ein Tool in Delphi geschrieben, das die Tastertur Codes an T-Com MMS schickt.
Das Tool „sendsms.exe“ muss in dem festzulegenden Pfad liegen.
z.B. „C:/Dokumente und Einstellungen/der User/SMS/“;
Das Programm „T-Com MMS“ muß zu laden von Entwürfen auch
auf diesen Pfad eingestellt werden.
Dazu mit „Datei/Neue SMS“ Button „Entwurf laden“ einmal im Dateiselktor
eine Datei im festgelegten Pfad laden.
SMS-DATEI:
Im Prinzip sendet das „sendsms.exe“ die notwendigen Tastendrücke
an das „T-Com MMS“ Programm um eine SMS zu verschicken.
Dazu liest es die Textdatei mit dem Namen „neu.sms“ ein,
erzeugt temporär für „T-Com MMS“ einen SMS-Entwurf und
sendet dann die Tastendrücke zum verschicken der SMS.
Die SMS-Datei muß in der ersten Zeile die Telefonmummer enthalten,
sonst nichts in der ersten Zeile.
Danach kommen Zeilen mit dem SMS-Inhalt.
DAS-TOOL siehe Anhang
das Progrämmchen „sendsms.exe“ ist ohne alle Absicherungen, das heißt, es wird nicht geprüft ob die sms-Datei existiert, die SMS-Länge (max 160 Zeichen) wird nicht geprüft. Es läuft ein kleiner Counter von 0 bis 10, ab 5
wird die SMS Übertragen sodass man in der Testphase per „Abbruch“ evtl. den Versand noch abbrechen kann. Wegen der Verzögerung tritt allerdings ein
„Script Queue Timeout“ auf. Was aber weiter nicht stört.
Beispiel Script: Siehe Anhang
?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
//File: sendsms.ips.php
// "quick and dirty" Lösung !!
// um mit dem T-Com Programm "T-Com MMS" SMSe zu versenden.
// VORBEREITUNGEN:
// - Das Programm "T-Com MMS" muss auf dem IPS Rechner laufen,
// es muss bereits konfiguriert sein.
// - Download:
// http://www.telekom.de/etelco/downloads_navi/1,18139,979_1373-1,00.html
// - Das Tool "sendsms.exe" muss in dem festzulegenden Pfad liegen.
// z.B. "C:/Dokumente und Einstellungen/der User/SMS/";
// - Das Programm "T-Com MMS" muß zu laden von Entwürfen auch
// auf diesen Pfad eingestellt werden.
// Mit "Datei/Neue SMS" Button "Entwurf laden" einmal im Dateiselktor eine
// Datei im festgelegten Pfad laden.
// SMS-DATEI:
// - Im Prinzip sendet das "sendsms.exe" die notwendigen Tastendrücke
// an das "T-Com MMS" Programm um eine SMS zu verschicken.
// Dazu liest es die Textdatei mit dem Namen "neu.sms" ein,
// erzeugt temporär für "T-Com MMS" einen SMS-Entwurf und
// sendet dann die Tastendrücke zum verschicken der SMS.
// - Die SMS-Datei muß in der ersten Zeile die Telefonmummer enthalten,
// sonst nichts in der ersten Zeile.
// - Danach kommen Zeilen mit dem SMS-Inhalt.
// DAS-TOOL
// - das Progrämmchen "sendsms.exe" ist ohne alle
// eingerichteter Pfad z.B.
$path = "C:/Dokumente und Einstellungen/der User/SMS/";
// die Telefonnummer ohne Leerzeichen oder Binde- bzw. Schrägstriche
$telnr = '01701234567';
// Nachricht erzeugen
$smsmessage = 'test: '.date("j M Y - H:i:s");
// und dann versenden
$dir = getcwd(); // aktuellen Pfad merken
// zu SMS pfad wechseln
chdir($path );
// die datei für neue SMS erzeugen
// !! Der Dateiname darf nicht geändert werden
// sendsms.exe liest nur die Datei mit diesem Naemn ein
$fh = fopen('neu.sms','w');
fwrite($fh,$telnr); // erste Zeile mit Telefonnummer schreiben
fwrite($fh,"
");
fwrite($fh,$smsmessage); // die Nachricht schreiben
fclose($fh);
// sendsms-tool aufrufen
exec("sendsms.exe");
// zurück zum aktuellen Pfad
chdir($dir);
?>
An das Auswerten der empfangenen SMS-im-Festnetz über dieses „T-Com MMS“ werde ich mich in den nächsten Tagen versuchen. Wie ich gesehen habe ist das Datenbank Format simpel und sollte sich per PHP auswerten lassen.
Ich hoffe, daß das bei euch auch so problemlos läuft wie bei mir (getestet unter XP-Pro und WIN2000).
Hallo Jürgen,
was kostet eine SMS aufs Handy (T-Com: 15 Cent) bei Clickatell - 4,4 Cent?
Und hast Du schon eine aus IP-Symcon heraus gesendet?
Das „Com Object“ scheint recht komplex zu sein.
Hallo Jürgen,
ich habe noch eine Frage: bekommt man per Mail eine Meldung zurück?
Bei mir scheit es nicht zu funktionieren. Credits Left in your account: 10.0
…wichtig ist bei der Nummer keine „0“ und „+“ Verwenden Z.B 4917222222.
Ein Rückmeldung bei Mail erfolgt nicht, du kannt aber im Userbereich
Reports erzeugen inkl. Statusmeldungen.
Tip: Downloade mal die COM Api, das ist ein Fertiges Programm dabei mit Rückmeldungen. .