E-Mail versenden / SMS aufs Handy

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

?>
 

classsmtp.zip (5.78 KB)

Hallo

Ist das denn jetzt möglich?
Und wenn ja, wie.

Ich besitze Gigaset SX440 + M34 USB-Adapter.

Danke

Gruß, Andreas

Kein Tipp?

Dann geht´s wohl nicht? SMS über´s Festnetz :confused:

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.

Grüße, paresy

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.

Gruß, Andreas

Hallo Andreas

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.

Gruß MST

Hallo Kappe_Online, Hallo Steiner,

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.

  • Download unter:
    http://www.telekom.de/etelco/downloads_navi/1,18139,979_1373-1,00.html

  • 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).

Gruß Stefan

SENDSMS.zip (218 KB)

sendsms.ips.zip (1.17 KB)

Hallo,

als SMS Gateway kann ich http://www.clickatell.com/.

Die bieten vielen Schnittstellen auch ein COM Objekt inkl. Logging etc.

Läuft bei mir seit 2 Jahre sehr zuverlässig.

Gruss Jürgen

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.

Gruß MST

Hallo,

ja um aus IPS zusenden nutze ich die Email Schnittstelle (Stukturierte EMail).

Es gibt auch ein PHP Script http://www.clickatell.com/brochure/sms_scripts.php

Für das Com Object gibt es eine gute Doku und Beispiel Code…Ist für mich einfacher als PHP.

Achtung die 4,4 Cent sind pro „Credit“ für eine SMS an D1 oder D2

zahlt man 2 Credits --> 4,4 x 2x Credits = 8,8 Cent.

http://www.clickatell.com/brochure/coverage.php?country_id=96&mo=

Gruss

Jürgen

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

Da sollte doch eine SMS drin sein :confused:

sms@messaging.clickatell.com
user:xxxxx
password:xxxxx
api_id:xxxxx
to:xxxxxxxxx
text:meet me at home

Gruß MST

…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.:wink: .

Gruss Jürgen

… mit dem „COM Api“ alles OK, mit „Outlook“ nicht :confused:

Outlook verbaselt die E-Mail-Header. Microsoft hat da einen „eigenen Standard“ entwickelt. Vielleicht kommt Clickatell damit nicht klar…

Toni

Hallo Toni

Outlook scheint zudem noch alles zu verwrumzeln und die Weckstaben zu verbuchseln.

Das folgende Skript funktioniert tadellos mit „Clickatell“. Infos unter: http://www.clickatell.com/

Der Aufruf erfolgt z.B. mit:


SetValueString("SMS_Meldetext", "Schatz, bring Batterien für die FHZ Komponenten mit!");
IPS_RunScript("SMS_Clickatell");


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : SMS_Clickatell.ips.php
Trigger  : 
Interval : 
*/
//Mail konfiguration
$mailserver = "mail.ipsymcon.de";
//Benutzername/Passwort
$username = "web123";
$password = "pw456";
//Absender
$sendermail = " ipsymcon@meine_domain.de";
$sendername = "";
//Empänger
$receivemail = "sms@messaging.clickatell.com";
$receivename = "";
//Betreff
$subject = "";
//Meldung
$message ="user:XXX
";
$message.="password:YYYYYY
";
$message.="api_id:123456
";
//$message.="to:491751234567890
";
$mtext = GetValueString("SMS_Meldetext");
$message.="text:$mtext
";
   //--- 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!";
           }
      }
   }
?>

MST

Seltsam das mit Outlook…

Schön wäre noch eine Funktion die automatisch Umlaute und nicht erlaubte Zeichen entfernt bzw, „Replace“.

Es gibt bei Clickatell auch die Möglichkeit mit einen speziellen Schalter XXL SMS (> 160 Zeichen) zu versenden.

Gruss Jürgen

Hier noch zwei Icons für den Designer / © by www.enjoygraphics.de

icon_sms.gif

icon_sms1.gif

Hallo,

wenn ich das Script mit IPS_RunScript(„SMS_Clickatell“) aufrufe, bekomme ich folgende Fehlermeldung:

CompileError: Cannot redeclare class smtp in line 25

Beim direkten Aufruf mit „Execute“ kommt die Meldung allerdings nicht. In beiden Fällen wird 'ne Mail verschickt.

Hat jemand 'ne Idee woran es liegt?

Gruß
kdtk

der wird 2x gleichzeitig getriggert ?? Erliche ahnunglose antwort

Fredje

es war 'ne Schleife…

Gruß
kdtk