Konfiguracja OpenWrt do wysyłania SMS
Ostatnia zmiana: 2019-10-12 15:10
Do czego można użyć SMSów wysyłanych z rutera z OpenWrt? Można wysyłać powiadomienia np. o zakończeniu pobierania torrentów, statystyki dzienne, informacje o kończącym się miejscu na dysku lub przekroczeniu transferu przez jednego z użytkowników. Zastosowań może być wiele.
Obecnie można za niewielką cenę uzyskać pakiet SMSów, więc może to być sensowny sposób powiadamiania. Potrzebny jest oczywiście modem, w tym przypadku był to Huawei E170 (USB). Niezbędne będzie także odpowiednie oprogramowanie, w tej roli świetnie sprawdzi się program
gnokii.
Program gnokii nie jest już dostępny w ostatnich wydaniach OpenWrt.
Instalacja
# opkg update
# opkg install gnokii
Następnie należy utworzyć plik konfiguracyjny. Może być on umieszczony w
/root/.gnokiirc lub
/etc/gnokiirc. Jego zawartość powinna wyglądać następująco:
[global]
model = AT
port = /dev/ttyUSB1
connection = serial
Port /dev/ttyUSB1 należy zmienić stosownie do własnego urządzenia.
Po instalacji dobrze jest sprawdzić czy
gnokii wykrywa poprawnie modem:
root@OpenWrt:# gnokii --identify
GNOKII Version 0.6.21
IMEI : xxxxxxxxxxxxxxx
Manufacturer : huawei
Model : E17X
Product name : E17X
Revision : 11.415.05.03.00
Jeżeli został wykryty to można już wysłać wiadomość.
Wysyłanie SMS
# echo "To dziala" | gnokii --sendsms numer_telefonu
Gdzie
numer_telefonu to numer na który ma być wysłany SMS. Jeżeli chcemy wysłać wiadomość bezpośrednio na ekran telefonu należy go wysłać jako SMS klasy 0, czyli:
# echo "To dziala" | gnokii --sendsms numer_telefonu -C 0
Odebranie SMSa
# gnokii --getsms SM 0 end
GNOKII Version 0.6.21
0. Inbox Message (read)
Date/time: 17/08/2010 22:02:45 +0200
Sender: +4866xxxxxxx Msg Center: +48790998290
Text:
W druga strone tez sie da
Skasowanie SMSa
# gnokii --deletesms SM 0
GNOKII Version 0.6.21
Deleted SMS SM 0
Wysyłanie i odbiór SMSów przez www
# mkdir -p /tmp/sms/cgi-bin
- umieszczamy tam skrypt do wysyłania smsów pod nazwą sms.sh o zawartości:
#!/bin/sh
echo "Content-type: text/html"
echo ""
echo "
<html>
<style type=\"text/css\">
#centered {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 50%;
height: 50%;
margin: auto;
text-align: center;
}
.label {
text-align: left;
}
.text {
width: 100%;
}
</style>
<head>
<title>SMS</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
</head>
<body>
"
if [ "$REQUEST_METHOD" = POST ]; then
read -t 3 QUERY_STRING
eval $(echo "$QUERY_STRING"|awk -F'&' '{for(i=1;i<=NF;i++){print $i}}')
action=`uhttpd -d $action`
tel=`uhttpd -d $msisdn`
msg=`uhttpd -d $msg`
else
action=""
tel=""
msg=""
fi
echo "<div id=centered>"
case "$action" in
send)
echo "[global]" > /tmp/gnokiirc
echo "model = AT" >> /tmp/gnokiirc
echo "port = /dev/ttyUSB1" >> /tmp/gnokiirc
echo "connection = serial" >> /tmp/gnokiirc
echo "$msg" | tr '+' ' ' | gnokii --config /tmp/gnokiirc --sendsms $tel
R=$?
if [ $R -eq 0 ]; then
echo "Wysłano wiadomość do $tel!<br />"
else
echo "Wystąpił problem z wysłaniem wiadomości!<br />"
fi
echo $tel": "$msg >> /tmp/sms.txt
rm /tmp/gnokiirc
;;
esac
echo "
<form method=\"post\">
<input type=\"hidden\" name=\"action\" id=\"action\" value=\"send\">
<div class=label>Numer telefonu:</div><input name=\"msisdn\" class=text><br />
<div class=label>Wiadomość:</div><textarea name=\"msg\" class=text></textarea><br /><br />
<input type=\"submit\" name=\"submit\" value=\"Wyślij\" text-align=center>
</form>
<hr />
"
echo "[global]" > /tmp/gnokiirc
echo "model = AT" >> /tmp/gnokiirc
echo "port = /dev/ttyUSB1" >> /tmp/gnokiirc
echo "connection = serial" >> /tmp/gnokiirc
echo "<pre style=\"text-align:left;\">"
gnokii --config /tmp/gnokiirc --getsms SM 0 end 2>/dev/null | sed -e 's/Msg Center.*//g'
rm /tmp/gnokiirc
echo "</pre>
</div>
</body></html>"
- uruchamiamy serwer www na porcie 81
# chmod 755 /tmp/sms/cgi-bin/sms.sh
# uhttpd -p 0.0.0.0:81 -h /tmp/sms
http://192.168.1.1:81/cgi-bin/sms.sh
Inna metoda wysyłania SMSów
Jeżeli docelowym odbiorcą jest telefon w sieci Plus, należy także pamiętać o możliwości nadania SMS wysyłając mejla na adres +48
numer_telefonu@text.plusgsm.pl