Ernst Eibensteiners Hobby ist die Feuerwehr. Beruflich ist der 28-jährige seit einigen Jahren im Softwarebereich tätig, seit Anfang des Jahres als System Administrator im Software Competence Center Hagenberg in Österreich. Hier beschreibt er sein Projekt für einen SMS-Dienst mit dem Raspberry Pi.
Wir hatten in unserer Freiwilligen Feuerwehr Langfirling eine selbst gebastelte Haussteuerung. Sie sollte auch SMS versenden können. Dazu haben wir einen kleinen Server betrieben (ca. 100 W) und eine kleine USV für Stromschwankungen und –ausfälle.
Da die Haussteuerung fehleranfällig und der Strombedarf relativ hoch war, haben wir sie nach fünf Jahren durch eine günstige Komplettlösung der Firma Loxone auf Basis eines Mikrocontrollers ersetzt. Die Hardware des SMS-Versands blieb dabei übrig.
Um dennoch SMS verschicken zu können, bin ich auf den Raspberry Pi gestoßen, um einen kleinen Miniserver mit wenig Strombedarf betreiben zu können, der per DynDNS auch übers Internet erreichbar ist. Wir haben durch den kompletten Umbau ca. 2000 kW pro Jahr eingespart, da wir nun für Haussteuerung und SMS-Versand auch auf die USV- Anlage verzichten und Stromunterbrechungen tolerieren.
Die Hardware, die ich für das Projekt gekauft habe:
- Raspberry Pi ( amazon.de, rund 40 Euro) (Stromverbrauch 3,5 W laut Hersteller)
- Gehäuse für den Raspberry (optional, rund 8 Euro)
- SD-Karte: Transcend SDHC, 16 GB, Class 10 ( www.e-tec.at, 13 Euro)
- Steckernetzteil Micro-USB 5 V 1200 mA für Raspberry Pi (amazon.de, 8 Euro)
- Siemens MC35i Terminal (GSM/GPRS-Modem) (amazon.de, 50 Euro)
- Siemens MC35i Netzteil (amazon.de, 24 Euro)
- Hirschmann Magnethaftantenne MCA 18 90 MH, Dualband (amazon.de, 15 Euro)
- Adapter USB auf COM ( www.conrad.at, 10 Euro)
- Serielles Kabel (www.conrad.at, 8 Euro)
Außerdem erforderlich:SIM-Karte (normale Größe) ohne PIN-Code – Betreiber ist egal, kostet monatlich 4 Euro für 1000 SMS.
Installation des Betriebssystems Raspbian
Das Betriebssystem (ein Debian-Derivat) wird nicht direkt am Raspberry installiert, sondern auf einem eigenen Rechner. Ob Windows, Mac, Linux ist dabei egal. Wichtig ist ein SD-Karten-Lesegerät.
- Download vom ISO Raspbian Debian Wheezy unter www.raspberrypi.org/downloads
- ISO auf SD Karte kopieren gemäß Beschreibung (je nach Betriebssystem unterschiedlich) https://elinux.org/RPi_Easy_SD_Card_Setup
Beispiel: Mac (Terminal)
unzip 2013-02-09-wheezy-raspbian.zip
diskutil list
Die “disk” identifizieren (nicht die Partition) der SD Karte – z.B.: disk4 (nicht disk4s1)
diskutil unmountDisk /dev/
dd bs=1m if=2013-02-09-wheezy-raspbian.img
of=/dev/
z.B.: dd bs=1m if=2013-02-09-wheezy-raspbian.img
of=/dev/disk4
(Das wird einige Minuten dauern – um die 18 min ist normal)
Hardware zusammensetzen und konfigurieren
– Raspberry inkl. Speicherkarte zusammenbauen
– USB-Adapter einstecken und serielles Kabel zu Siemens MC35i verbinden
– SIM-Karte bei Siemens MC35i einsetzen

©Siemens
Initiale Konfiguration:
IP Adresse herausfinden, beispielsweise über den Router (z.B. 192.168.0.3, DHCP Tabelle)
Beispiel eines Linksys-Routers unter“ Status -> Lokales Netzwerk“:
DHCP-Tabelle zur aktiven IP-Adresse : 192.168.1.1
Client-Hostname: raspberrypi
IP-Adresse: 192.168.0.3
MAC-Adresse: B8:27:EB:13:64:7A
Ablauf: 23:56:19
Verbindung auf den raspberry mit Benutzer pi und Passwort raspberry
ssh pi@192.168.0.3
sudo raspi-config
Uhrzeit und regionale Einstellungen, Password usw. einstellen
expand_rootfs inkl. reboot: Wichtig (!) um den vollen Speicher der SD-Karte zu bekommen.

Zusätzliche Software installieren (optional):
vim installieren
sudo apt-get update
sudo apt-get install vim
.bashrc anpassen
alias für ll: ll='ls –lh'
vim für vi: alias vi='vim'
Apache, PHP, MySQL installieren:
sudo aptitude install apache2 mysql-server mysql-client
php5-mysql php5 phpmyadmin
Passwort vergeben für MySQL, phpmyadmin, apache usw:
root:
PHP Source Code ins Verzeichnis /var/www kopieren:
ins Verzeichnis /var/www wechseln
cd /var/www
Datei SMS_Source.zip entpacken
unzip SMS_Source.zip
sudo chown –R www-data /var/www
Anpassen der Datenbank Verbindung config.php
phpmyadmin starten:
Probleme: SQL wird im phpmyadmin mehrfach ausgeführt
sudo ln -s /etc/phpmyadmin/apache.conf
/etc/apache2/conf.d/phpmyadmin.conf
sudo /etc/init.d/apache2 reload
Test durch Aufruf im Browser:
http://
Benutzer: root
Passwort: laut Installation oben
Tabellen und Datenbank erstellen durch Ausführen der SQL-Skripts:
·/var/www/SQL/sms.sql
Eigenen Benutzer, beispielsweise smsuser, für die Tabelle sms erstellen. Dieser soll nur Rechte auf die Datenbank sms haben.
Installation des SMS-Dienstes
(laut Anleitung von Stefan Frings )
Geben Sie den Befehl
grep :initdefault /etc/inittab
ein und notieren Sie sich die Zahl zwischen den beiden Doppelpunkten (meistens eine 3).
In meinem Fall: 2
Downloaden Sie die libmm von www.ossp.org/pkg/lib/mm/ und die SMS-Server-Tools von
https://smstools3.kekekasvi.com/packages/smstools3-3.1.15.tar.gz
cd /usr/local/src
tar -xvzf libmm*tar.gz
cd mm*
./configure
make
make install
Öffnen Sie die Datei /etc/ld.so.conf und fügen Sie das Verzeichnis include /usr/local/lib ein, falls nicht vorhanden. Geben Sie danach den Befehl ldconfig ein.
Installieren Sie die SMS-Server-Tools:
cd /usr/local/src
tar -xvzf smstools*.tar.gz
cd /usr/local/src/smstools
make
make install
cd /etc/rc2.d
sudo ln -s /etc/init.d/sms3 S82sms3
SMS-Dienst-konfigurieren
Verzeichnisse im Apache-Ordner anlegen:
cd /var/www
sudo mkdir outgoing incoming checked
sudo chown –R www-data /var/www
sudo vim /etc/smsd.conf
# Example smsd.conf. Read the manual for a description
devices = GSM1
logfile = /var/log/smsd.log
loglevel = 1
spool = /var/www/outgoing
checked = /var/www/checked
incoming = /var/www/incoming
[GSM1]
device = /dev/ttyUSB0 //USB Device
incoming = yes
#pin = 1111
Passwortschutz festlegen:
Zugriff vom internen Netzwerk zulassen (alles mit 192.168.0.*), extern jedoch nur mit Passwortabfrage
cd /var/www
sudo vim .htaccess
Order Allow,Deny
AuthType Basic
AuthName "Restricted Files"
AuthUserFile "/var/passwd/.password"
Require valid-user
Allow from 127.0.0.1 localhost
Allow from 192.168.0.0/24
Satisfy Any
sudo mkdir /var/passwd
sudo htpasswd –c /var/passwd/.password
sudo chown –R www-data /var/passwd
SMS Daemon starten:
sudo /etc/init.d/sms3 start
Installation Forward Script
Das Skript soll alle SMS vom Eingangs-Ordner zu einer definierten Nummer weiterleiten, indem die Original-SMS vom Eingangs- in den Ausgangs-Ordner kopiert wird. Zusätzlich wird die Nummer des Senders in den Text aufgenommen.
Installation von formail durch das Procmail-Paket:
sudo apt-get install procmail
forward.sh Skript im Ordner /usr/local/bin/forward.sh ablegen.
#!/bin/sh
if [ $1 = RECEIVED ]; then
FILE=`mktemp /var/www/outgoing/answer_XXXXXX`
DEST='4366412345679' #hier tel. Nr. eingeben
FROM=`formail -zx From: TEXT=`formail -I ""
echo "To: $DEST" >> $FILE
echo "" >> $FILE
echo "Von: +$FROM" >> $FILE
echo "$TEXT" >> $FILE
fi
Rechte anpassen:
chown www-data /usr/local/bin/forward.sh
chmod +x /usr/local/bin/forward.sh
Das Skript als Eventhandler in /etc/smsd.conf eintragen:
# Example smsd.conf. Read the manual for a description
devices = GSM1
logfile = /var/log/smsd.log
loglevel = 1
spool = /var/www/outgoing
checked = /var/www/checked
incoming = /var/www/incoming
eventhandler = /usr/local/bin/forward.sh
[GSM1]
device = /dev/ttyUSB0
incoming = yes
#pin = 1111
Troubleshooting
Problem: Passwort von phpmyadmin wird nicht angenommen
Lösung: SD-Karte voll -> raspi-config -> expand root fs
Problem: Nach Reboot werden die SMS nicht versendet
Lösung: Kleines s im Symbolic-Link unter /etc/rc2.d
smsd nicht gestartet /etc/init.d/smsd start
Mein Fazit zu unserem SMS-Dienst
Diese SMS-Lösung für den Versand von Gruppen- und Einzel-SMS an meine Feuerwehr-Kameraden verwende ich bereits seit über einem Jahr.
Vorteile:
- wenig Strombedarf
- relativ kostengünstig: derzeit rund 4 Euro monatlich für die SIM-Karte inkl. 1000 SMS
- Anschaffungskosten: unter 200 Euro
- über DynDNS können die SMS übers Internet versendet werden
- eingehende SMS werden an eine definierte Nummer weitergeleitet (bei Antworten)
ca. 15 SMS pro Minute
Erweiterungsmöglichkeiten:
SMS versenden bei GPIO oder Network Input (Haussteuerung)
Hinweis für alle Bastler:
Wenn auch Sie ein kreatives Projekt entwickelt haben, schreiben Sie uns. Wir würden Ihre Konstruktionen, nützlich oder einfach nur schräg, gern im Hacks-Bereich auf www.pcwelt.de vorstellen. Schreiben Sie an Birgit Götz - bgoetz@pcwelt.de.