Schlagwort-Archive: SMS senden

Raspberry PI – SMS senden mit smsd

Nach fast einem Jahr Laufzeit habe ich mich da zu entschieden nun auch das Senden auf smsd umzustellen. Der Weg über gsmsendsms hat bei etwas höherer Last doch zu oft zu Problemen geführt, welche nur mit einem Neustart behoben werden konnten. Schließlich gelingt es mir in einem anderen raspberry-Projekt (Heizungssteuerung) quasi eine unendliche Uptime zu erreichen. Mein Ziel ist es das auch für den SMS-Gateway zu erreichen. Bis jetzt habe ich ca. 50.000 SMS gesendet und 5.000 empfangen. Die Probephase für das Senden über smsd (ca. 1000 SMS) ist bis jetzt ohne Probleme verlaufen.

raspberry pi sms-gateway
raspberry pi sms-gateway

Zum Senden mittels smsd muss einfach pro SMS eine Textdatei mit belibigen Namen im Ausgangsverzeichnis erstellt werden. Ich habe als Namen die Id des Datensatzes benutzt, wodurch ich dann einfach nach der Verarbeitung den Status in der SQL Datenbank aktualisieren kann.
Raspberry PI – SMS senden mit smsd weiterlesen

Raspberry PI – SMS senden

Zum Senden der SMS verwende ich das Programm gsmsendsms. Die Daten werden hierbei einfach als Parameter angehängt. Wichtig ist das der Text nicht über 160 Zeichen lang ist. Wenn man eine SMS über 160 Zeichen versenden möchte, so muss man den Text in mehrere Teile zerlegen und mit Tags verlinken. Die ersten Teile müssen mit LONG# beginnen und der letzte mit LAST# was die Länge der einzelnen SMS auf 155 verkürzt. Leider funktioniert das nicht bei allen Providern. Ich setze O2 ein, da geht das leider nicht. Wenn gsmsendsms die Nachricht erfolgreich gesendet hat, so bekommt man 0 als Returncode zurück. Weitere Meldungen werden nur auf der Console ausgeben. Deshalb schreibe ich den gesamten Output des cronjobs in ein Logfile. Ich rufe den Programmteil zum Senden und Empfangen der SMS jede Minute einmal per cronjob auf.

Ausschnitt aus meinem PHP Programm zu Senden:

<?php
if ($Nummer != "" && $Nachricht != ""){
	system("gsmsendsms -d /dev/ttyUSB0 ".$Nummer." '".$Nachricht."'",$ret);
}
if ($ret == 0){
	$query = "update SMSLOG set erledigt=1,Versuch=Versuch+1 where";
	$query .= "SysSMSLOG=".$SysSMSLOG;
	mysql_query($query);
	$gesendet ++;
}else{
	$query = "update SMSLOG set Versuch=Versuch+1 where SysSMSLOG=".$SysSMSLOG;
	mysql_query($query);
}
?> Raspberry PI – SMS senden weiterlesen