Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 

Im Folgenden wird beschrieben wie man auf einer Raspberry mit dem ZTE ML190 USB Stick SMS empfangen und an eine andere Telefonnummer weiterleiten kann. Natürlich kann man die SMS auch per eMail weiterschicken oder sonstige Dinge damit anstellen. Z.B. kann man damit irgendwelche Dinge steuern lassen wie z.B. Geräte ein-und ausschalten und vieles mehr.

 

 

Hardwaredetails

Die folgende Beschreibung gilt für den ZTE ML190 USB Stick von 1&1

lsusb
Bus 001 Device 009: ID 19d2:0117 ZTE WCDMA Technologies MSM
usb-devices
T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=03 Dev#=  9 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=19d2 ProdID=0117 Rev=00.00
S:  Manufacturer=ZTE,Incorporated
S:  Product=1&1 Surf-stick
S:  SerialNumber=MF190xxxxxxxxxxx
C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 3 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

 

SMS relay server Übersicht

gammu ist das Tool welches auf eingehende SMS wartet und sie lokal speichert.  Ein kleines Script überwacht das Verzeichnis in welchen gammu den SMS Text ablegt. Sobald eine neue SMS enkommt wird der SMS Text gelesen und als SMS an ein anderes Mobiltelefon weitergeleitet. Natürlich ist es recht einfach andere Aktionen auf Basis der empfangenen SMS zu initieren und das Script entsprechend anzupassen.

 

Installation der Infrastruktur und Test

sudo apt-get install usb-modeswitch usb-modeswitch-data

 Danach sieht man die ttyUSB Geräte mit

ls -la /dev/serial/by-id/
total 0
drwxr-xr-x 2 root root 100 Jan 12 19:38 .
drwxr-xr-x 4 root root  80 Jan 12 19:38 ..
lrwxrwxrwx 1 root root  13 Jan 12 19:54 usb-ZTE_Incorporated_1_1_Surf-stick_MF19001MOD010000-if00-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root  13 Jan 12 19:54 usb-ZTE_Incorporated_1_1_Surf-stick_MF19001MOD010000-if01-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root  13 Jan 12 19:54 usb-ZTE_Incorporated_1_1_Surf-stick_MF19001MOD010000-if02-port0 -> ../../ttyUSB2

Als nächstes muss gammu installiert werden mit

sudo apt-get install gammu

Mit dem Aufruf von gammu-config wird gammu konfiguriert.  Dabei ist wichtig den Port /dev/tty/USB2 und die Connection als at zu definieren. Anschliessend kann man die korrekte Konfiguration testen mit

gammu --identify
Device               : /dev/ttyUSB2
Manufacturer         : ZTE
Model                : MF190 (MF190)
Firmware             : BD_MF190V1.0.0B09
IMEI                 : xxxxxxxxxxxxxxx
SIM IMSI             : yyyyyyyyyyyyyyy

 Nun kann man eine SMS an eine Telefonnummer +4947114712 schicken mit

sudo -i -- bash -c 'echo "Das ist eine SMS von gammu" | gammu --sendsms TEXT +494711472'

 

Installation und Konfiguration des gammu-smsd

sudo apt-get install gammu-smsd

 Die Installation startet auch den Service - wird aber nicht starten da die Konfiguration noch angepasst werden muss.

sudo vi /etc/gammu-smsdrc

Darin muss folgendes stehen:

# Configuration file for Gammu SMS Daemon
[gammu]
port = /dev/ttyUSB2
connection = at
[smsd]
service = files
logfile = syslog
# Increase for debugging information
debuglevel = 0
# 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/

Der gammu-smsd muss jetzt noch mal nach der Änderung gestartet und geprüft werden:

sudo systemctl start gammu-smsd
sudo systemctl status gammu-smsd.service

Prüfung ob jetzt über den gammu-smsd eine SMS gesendet werden kann:

sudo -i -- bash -c 'echo "Das ist eine SMS von gammu" | gammu-smsd-inject TEXT +4917147114711

 

Aktivierung und Steuerung des Relay Servers

Die Aufgabe des Relayservers ist eingehende SMS zu lesen und an eine andere Telefonnummer wieder als SMS weiterzuschicken. Dazu habe ich ein kleines bash Script watchGammu.sh geschrieben welches genau dieses tut. Dieses Script muss in /usr/local/sbin kopiert, dann in /etc/rc.local aufgenommen und wie folgt beim Booten gestartet werden:

/usr/local/sbin/watchGammu.sh start &

Möchte man den relayserver stoppen geht das mit

sudo watchGammu.sh stop

Möchte man den gammu-smsd stoppen bzw starten geht das mit

sudo systemctl stop gammu-smsd
bzw
sudo systemctl stop gammu-smsd

 

Fehlersuche

Klappt der Verbindungsaufbau nicht kann man testen ob eine PIN erforderlich ist:

echo -e 'AT+CPIN?\r' > /dev/ttyUSB2
cat /dev/ttyUSB2

Wenn ja muss man die pin noch in der Konfigurationsdatei setzen

[smsd]
pin = 4711

Weiterhin kann man im gammu-daemon den Debuglevel hochsetzen. debuglevel 3 reicht i.d.R. Dazu muss dann folgendes in der Konfigurationsdatei stehen:

[smsd]
service = files
logfile = /var/log/gammu-smsd.log
# Increase for debugging information
debuglevel = 3

 

Referenzen

The Gammu Manual

Gammu smsd man page

Gammu man page

yxcyxc

Kommentar schreiben

Hinweis

Ein jeder Kommentar wird wegen Spamposts manuell überprüft und es dauert in der Regel bis zu einem Tag bis der Kommentar veröffentlicht wird.
Um Spamkommentare von Spambots zu minimieren kann ein weiterer Kommentar erst nach 15 Minuten erstellt werden. Weiterhin wird ein Kommentar mit dem Text http sofort zurückgewiesen.
Tut mir leid wegen der Unannehmlichkeiten.