Raspberry Pi – SMS per Kommandozeile versenden
Da ich den Raspberry Pi häufig für Monitoringzwecke o.ä. einsetze, möchte ich bei Problemen oder kritischen Events schnellstmöglich benachrichtigt werden. Um im Problemfall nicht auf die (möglicherweise unterbrochene) Internetverbindung angewiesen zu sein, setze ich für kritische Status-Benachrichtigungen im Serverbereich gerne auf SMS. Da ich damit in den vergangenen Jahren sehr positive Erfahrungen im geschäftlichen Umfeld gemacht habe, wollte ich dies nun auch bei meinen Projekten rund um den Raspberry Pi einsetzen.
Dazu benötigen wir Folgendes:
- Raspberry Pi mit ausreichend dimmensioniertem Netzteil
- unterstützer UMTS-Surfstick (Tipp: HUAWEI E303 / HUAWEI E169 oder HUAWEI E173)
- ggf. aktiven USB-Hub (z.B. Anker Ultra Slim 4 Port USB 3.0 Hub)
Die ideale SIM-Karte
Um die SMS für möglichst kleines Geld versenden zu können, setze ich auf Prepaid Anbieter mit günstigem SMS-Preis. Dabei setze ich jedoch nur Prepaid-Anbieter ein, die auch eine automatische Guthaben-Aufladung anbieten. Sobald das Kartenguthaben unter einen bestimmten Betrag fällt wird dann per Abbuchung das Guthabenkonto automatisch wieder aufgeladen. Dadurch muss ich mir um das Kartenguthaben nie Gedanken machen und dem SMS-Versand steht nichts im Wege.
Ich habe folgende Anbieter bei mir im Einsatz:
Schwierigkeitsgrad:
UMTS-Stick unter Raspbian einrichten
Ist der UMTS-Stick mit der SIM-Karte bestückt, sollte dieser am Besten über einen aktiven USB-Hub am Raspberry Pi angeschlossen werden. Besonders dann, wenn zusätzlich noch ein WLAN-Stick oder ein anderes USB-Gerät direkt am Raspberry Pi angeschlossen ist, reicht die Stromversorgung direkt über den USB-Port nicht mehr aus.
Sobald der Stick angeschlossen wurde, wird er von Raspbian auch schon erkannt. Dies kann einfach mit folgendem Befehl überprüft werden:
$ lsusb
Bei mir sieht die Ausgabe dann folgendermaßen aus:
Die mir bekannten UMTS-Sticks stellen meist zwei oder drei serielle Schnittstellen zur Verfügung. Die erste fungiert dabei meist als herkömmliches Modem, die anderen können zur Abfrage von Statusinformationen (Netz, Signalstärke, …) verwendet werden. Diese serielle Schnittstellen findet man unter /dev:
Hinweis zu Modem- und Datenmodus
Da UMTS-Sticks zusätzlich einen microSD Steckplatz zur Bereitstellung der Windows-Treiber besitzen, werden manche Sticks unter Linux nur als USB Speicher erkannt. Sollte also kein neues serielles Device auftauchen, muss zusätzlich noch das Paket usb-modeswitch und usb-modeswitch-data installiert werden. USB-Switchmode bringt eine recht große Datenbank mit Daten zu allen gängigen Sticks mit und aktiviert damit den Modemmodus des UMTS-Sticks. Bei mir war dies aber nicht erforderlich.
Gammu SMS Daemon
Um über die Konsole einfach SMS versenden zu können, benötigen wir einen Daemon, der den UMTS-Stick entsprechend anspricht. Diesen installieren wir mit folgendem Befehl:
$ sudo apt-get install gammu-smsd
Ist die Installation fertig, muss die Konfigurationsdatei (/etc/gammu-smsdrc) editiert werden. Der Inhalt sollte wie folgt aussehen, lediglich die Pin sollte natürlich entsprechend angepasst werden:
# Configuration file for Gammu SMS Daemon # Gammu library configuration, see gammurc(5) [gammu] # Please configure this! port = /dev/ttyUSB0 connection = at # Debugging logformat = textalldate # SMSD configuration, see gammu-smsdrc(5) [smsd] pin = 1234 service = files #logfile = syslog logfile = /var/log/gammu-smsd # Increase for debugging information debuglevel = 4 ReceiveFrequency = 300 # Paths where messages are stored inboxpath = /var/spool/gammu/inbox/ outboxpath = /var/spool/gammu/outbox/ sentsmspath = /var/spool/gammu/sent/ errorsmspath = /var/spool/gammu/error/
Anschließend starten wir nun den SMS Daemon neu. Startet dieser ohne Fehlermeldungen (siehe Ausgabe und ggf. Logfile /var/log/gammu-smsd), steht einer ersten Test-SMS nichts mehr im Wege.
$ sudo /etc/init.d/gammu-smsd restart
SMS-Versand
Um nun eine SMS über die Konsole zu versenden, kommt folgender Befehl zum Einsatz:
echo "Ich bin eine Test-SMS, versandt vom Raspberry Pi" | sudo gammu-smsd-inject TEXT "+491741234567"
Hi,
erschlagt mich nicht gleich :(
wie bearbeite ich die Konfigurationsdatei?
Hey,
sudo nano namederdatei
Hoffe Ich konnte die helfen:)
Hallo,
habe nach der Anleitung gearbeitet und funktioniert soweit super.
Bei mir funktioniert es folgendermassen:
Der Ras-Pi versendet soweit alles über eMial, brauche also keinen SMS-Versand dafür.
Extrem wichtige Meldungen versende ich aber per SMS, da die erstens am Handy schneller wahrgenommern werden als emails, die man ja zu Hauf bekommt und zweitens die SMS auch sehr sicher bei Stromausfällen funktionieren.
Ich hatte jetzt nur das folgendes Problem:
Ich musste den RasPi mal neu starten. Dabei hat sich leider irgendwie einen anderen tty-port zugewiesen. Somit konnten keine SMS mehr versendet werden. Das ist mir aber erst aufgefallen, als ich eine Störmeldung “verpasst” habe :-(
Nun meine Frage:
Gibt es die Möglichkeit, eine Meldung auszugeben (z.B. Email oder ähnlich) bzw. ein Script zu starten, wenn es Probleme mit der Anbindung zum Mobilen Netz gibt.
Vielleicht kann mir da jemand helfen.
Das geht sicher. Mit einem Bashscript welches die Rückgabe von
$ sudo /etc/init.d/gammu-smsd status
prüft. Musst halt ein bischen googeln
Wichtig : Ich habe ein Huawai E3531-2
Diser Belegt die Plätze ttyUSB0-2
Dieser Greift auf Port ttyUSB 2
anstelle von ttyUSB 2 greife ich direkt auf die ID zu dann können weitere USB-Geräte verwende werden. ($ ls /dev/serial/by-id/)
port = /dev/serial/by-id/usb-HUAWEI_HUAWEI_Mobile_FFFFFFFFFFFFFFFF-if03-port0
Hi, die Anleitung ist echt super und ich möchte das System auch als Alarm bei Stromausfall einsetzten. Allerdings bekomme ich in ca. 20% der Fälle einen unknown Error. Das asuwerten der Logdatei ergab, dass beim senden der CMS ERROR 500 auftritt, was nach etwas google recherche auf folgendes Hinweist:
– The phone number you try to send your message to is invalid
– There is no network coverage
– You don’t have enough money on a prepaid subscription
– The short message service center of the GSM network operator is temporarily out of service
– The GSM cell is overloaded
Die Handynummer an die ich sende ist immer die selbe und funktioniert somit ja in 80% der Fälle. Der UMTS Stick sagt er hat 70% Empfangsstärke und Geld ist auch auf der Karte. Der Dienstanbieter ist auch nicht mal eben spontan down und ich glaube nicht dass in 20% der Fälle das Netz überlastet ist, oder tritt das bei euch auch öfter auf?
Ich habe jetzt versucht das ganze mit einer Schleife aufzufangen, allerdings klappt es dann oft zig mal hintereinader nicht und das ganze dauert ewig. So ist das definitiv zu unzuverlässig und zu langsam um als Alarmierung zu funktionieren. Kann das an dem Stick (HUAWEII E169) liegen, oder habe ich etwas nicht richtig bedacht? Klappt bei euch der SMS Versand in über 90% der Fälle Problemlos?
Guten Tag,
reicht für das Projekt ein älteres Modell (Raspberry Pi Model B+) aus?
Viele Grüße,
Klar, kann auch irgendein älter Raspberry Pi sein.
Hallo Leute,
Vielleicht kann mir jemand helfen:
Ich habe ein Hauwei E3353 Stick, welcher bei mir unter /dev/serial nicht gefunden wird. Selbst der Usb-Modeswitch bringt nichts
Markus
Habe einene eigenen Sim adapter für den Pi gekauft der über gpio angeschlossen wird.
Findem man auf amazon mit „Raspberry Pi SMS800)
Wie kann ich den anstelle des usb ansteuern?
Lg