1978540

SMS-Dienst mit dem Raspberry Pi einrichten

27.03.2015 | 08:00 Uhr |

Die Idee war, die Mitglieder einer Freiwilligen Feuerwehr mit Gruppen- und Einzel-SMS zu erreichen. Mit dem Raspberry Pi lässt sich dazu ein kleiner Miniserver betreiben, der per DynDNS auch übers Internet erreichbar ist.

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.

Video: Quadcore-CPU & 1 GB RAM - der Raspberry Pi 2

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.

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/<disk# from diskutil>
 
dd bs=1m if=2013-02-09-wheezy-raspbian.img
of=/dev/<disk# from diskutil>
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 MC35i Terminal und Netzteil
Vergrößern Siemens MC35i Terminal und Netzteil
© 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.

 

Konfiguration der Hardware
Vergrößern Konfiguration der Hardware

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: <password>

 

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://<ip adresse>/phpmyadmin

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

wget http://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 <Benutzer> <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: < $2`
 TEXT=`formail -I "" < $2`
 
 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.

0 Kommentare zu diesem Artikel

Smart Home - darum geht es.

Smart Home umschreibt einen der vermutlich am stärksten wachsenden Trends der Zukunft: Intelligente Geräte und Haus-Steuerungssysteme, die Ihnen Ihr Leben erleichtern sollen. Denkbar und vielfach bereits erhältlich sind dabei Lösungen wie Einbruchschutz oder Sets zum Stromsparen. Oder Intelligente Systeme zur Hausbelüftung oder Heizungssteuerung. Smart TVs bringen das Internet ins Wohnzimmer und Waschmaschinen lassen sich per App steuern. Über intelligente Stromzähler haben Sie mit einem Blick aufs Smartphone den aktuellen Stromverbrauch im Griff. Sie sehen, die möglichen Anwendungen sind vielfältig. In diesem Themenbereich widmen wir uns dem Thema Smart Home, erklären, wie die Technik funktioniert und wie intelligent vorhandene Lösungen am Markt wirklich sind.

1978540