Raspberry PI – SMS senden mit smsd

Nach fast einem Jahr Laufzeit habe ich mich da zu entschieden nun auch das Senden auf smsd umzustellen. Der Weg über gsmsendsms hat bei etwas höherer Last doch zu oft zu Problemen geführt, welche nur mit einem Neustart behoben werden konnten. Schließlich gelingt es mir in einem anderen raspberry-Projekt (Heizungssteuerung) quasi eine unendliche Uptime zu erreichen. Mein Ziel ist es das auch für den SMS-Gateway zu erreichen. Bis jetzt habe ich ca. 50.000 SMS gesendet und 5.000 empfangen. Die Probephase für das Senden über smsd (ca. 1000 SMS) ist bis jetzt ohne Probleme verlaufen.

raspberry pi sms-gateway
raspberry pi sms-gateway

Zum Senden mittels smsd muss einfach pro SMS eine Textdatei mit belibigen Namen im Ausgangsverzeichnis erstellt werden. Ich habe als Namen die Id des Datensatzes benutzt, wodurch ich dann einfach nach der Verarbeitung den Status in der SQL Datenbank aktualisieren kann.
Raspberry PI – SMS senden mit smsd weiterlesen

Raspberry PI – SMS empfangen

Für den Empfang habe ich mich für den smsd entschieden. Das Program gehört zu den SMS Server Tools. Mit diesem kann man senden und empfangen. Ich benutze es aber nur zum Empfangen. Damit sich gsmsendsms und smsd nicht in die Quere kommen beende ich den Daemon während des Sendens.

<?php
system("pkill smsd");
...
...
system("/usr/sbin/smsd &");
?>

Die Einrichtung des Deamons läuft ein ein config File im etc Verzeichnis. Ich habe dazu am Ende der Datei smsd.conf folgende Zeilen hinzugefügt: Raspberry PI – SMS empfangen weiterlesen

Raspberry PI – SMS senden

Zum Senden der SMS verwende ich das Programm gsmsendsms. Die Daten werden hierbei einfach als Parameter angehängt. Wichtig ist das der Text nicht über 160 Zeichen lang ist. Wenn man eine SMS über 160 Zeichen versenden möchte, so muss man den Text in mehrere Teile zerlegen und mit Tags verlinken. Die ersten Teile müssen mit LONG# beginnen und der letzte mit LAST# was die Länge der einzelnen SMS auf 155 verkürzt. Leider funktioniert das nicht bei allen Providern. Ich setze O2 ein, da geht das leider nicht. Wenn gsmsendsms die Nachricht erfolgreich gesendet hat, so bekommt man 0 als Returncode zurück. Weitere Meldungen werden nur auf der Console ausgeben. Deshalb schreibe ich den gesamten Output des cronjobs in ein Logfile. Ich rufe den Programmteil zum Senden und Empfangen der SMS jede Minute einmal per cronjob auf.

Ausschnitt aus meinem PHP Programm zu Senden:

<?php
if ($Nummer != "" && $Nachricht != ""){
	system("gsmsendsms -d /dev/ttyUSB0 ".$Nummer." '".$Nachricht."'",$ret);
}
if ($ret == 0){
	$query = "update SMSLOG set erledigt=1,Versuch=Versuch+1 where";
	$query .= "SysSMSLOG=".$SysSMSLOG;
	mysql_query($query);
	$gesendet ++;
}else{
	$query = "update SMSLOG set Versuch=Versuch+1 where SysSMSLOG=".$SysSMSLOG;
	mysql_query($query);
}
?> Raspberry PI – SMS senden weiterlesen 

Raspberry PI – Projekt SMS Gateway

Heute habe ich mit einem neuen Projekt für den Raspberry Pi begonnen. Ein Raspberry Pi soll per Webservice Inhalt und Empfänger für eine SMS empfangen und diese dann per UMTS Stick an einen Mobilfunkprovider übermitteln. Die SMS Nachrichten werden in einer MySQL Datenbank zwischengespeichert und nach erfolgreicher Übergabe als erledigt gekennzeichnet. Ein Cronjob wird dann die Datenbank regelmäßig aufräumen, um Datenmüll zu vermeiden. Mit diesem System sollen im Monat ca. 5000 SMS versendet werden.

Hardware

  • Raspberry Pi – Model B 512 MB
  • SD Karte 8 GB Sandisk Ultra
  • Huawei E173 Umts Stick
  • Edimax WLan Stick
  • 2A 5V Netzteil

Software

  • Debian
  • MySQL + PhpMyAdmin
  • Apache Webserver
  • gsm-utils
  • smstools
  • PHP

Temerpaturüberwachung – Erfahrungsbericht nach zwei Monaten

Als erstes möchte ich gleich vornweg stellen, das Projekt Temperaturüberwachung ist ein voller Erfolg. Das System läuft absolut stabil, ohne jeglichen Aussetzter. Selbst die Installation einer neuen Fritzbox war kein Problem für das System. Als ich nach über einer Woche die defekte FritzBox durch eine neue ersetzt hatte, begann der Raspberry ohne Neustart nach ca. 5 Minuten mit der Übertragung der in der Zwischenzeit gesammelten Daten an den Webserver. Ich habe schon lange kein System mehr gesehen, welches ab dem ersten Tag so stabil gelaufen ist. Vor der Inbetriebnahem habe ich mehrere Versuche zum Thema Stromausfall und Abruch der WLAN- bzw. Internetverbindung gemacht. Das ganze System verhält sich wie fast ein Föhn. Rein in die Steckdose eine Minute warten und alles läuft wie gewollt. Macht keine Geräuche, Gerüche und der Stromverbrauch hält sich wirklich in Grenzen.

raspberry pi

Raspberry PI – Projekt Temperaturüberwachung

Ziel des Projektes soll es sein Gerät zu haben, mit dem ich aus der Ferne, Temperatur und Luftfeuchtigkeit überwachen kann. Es soll eine permanente Aufzeichnung stattfinden, aber auch beim Überschreiten von Grenzwerten ein Alarm per Email oder SMS ausgelöst werden können. Das ganze soll kostengünstig werden und natürlich genau so funktionieren wie ich mir das vorgestellt habe, also kommt eine Fertiglösung nicht in Frage. Weiterhin sollen keinen all zu hohen Betriebskosten anfallen. Aus diesen Gründen habe ich mich für einen Kleinstrechner mit Linux entschieden. Der Raspberry PI ist mit ca. 4 Watt Leistungsaufnahme und ausreichend Schnittstellen genau der richtige Kandiat.

Raspberry PI – Projekt Temperaturüberwachung weiterlesen

Raspberry PI – System – Software installieren

Für die hier beschriebene Projekte müssen auf auf dem raspberry pi einige Software Pakete installiert werden. Im Schritt eins (sudo bash) erst einmal eine neue shell mit root Rechten öffnen, danach könne dann die einzelnen Packete installiert werden. Vorausetztung ist natührlich eine Verbindung zum Internet.

#sudo bash

#apt-get install mc

#apt-get install apache2

#apt-get install php5

#apt-get install libapache2-mod-php5 libapache2-mod-perl2 php5 php5-cli php5-common php5-curl php5-dev php5-domxml php5-gd php5-imap php5-mysql

#apt-get install mysql-server mysql-client php5-mysql
 

Die installierten Pakete sollten auch von Zeit zu Zeit mal aktualisiert werden. Mit update wird die Liste der vorhandenen Pakete erneuert. Die Funktion upgrade installiert dann die neuste im Paket verfügbare Version  für bereits installierte Pakete. Dieser Vorgang kann je nach Anzahl und Größe einige Zeit in Anspruch nehmen. Bei meinen Systemen hat das zwischen 30 Minuten und einer Stunde gedauert.

#sudo bash

#apt-get update

#apt-get upgrade

Raspberry PI – Temperaturüberwachung – Software anpassen

Download der Software von http://www.emsystech.de/raspi-sht21/   Nach dem Entpacken muss zuerst mal ein neues Binary des Programms erstellt werden.  Dazu habe ich mir als erstes ein Verzeichnis Namens „temper“ erstellt und in dieses das ZIP-File entpackt. Dann noch schnell die Sourcen neu kompilieren.

>sudo bash

#cd temper

#cd source

#make

Danach das neu erstellte File sht21 in das temper Verzeichnis kopieren.

#cp sht21 ../

Nun kann man das Programm schon mal testen. Einfach über den Startscript start-sht21-service.sh aufrufen. Damit der Service aber bei jeden Neustart des RaspberryPI automatisch gestartet wird, muss noch ein Eintrag in der /etc/rc.local gemacht werden.

cd /home/pi/temper
./start-sht21-service.sh
cd /

Nun werden alle Messdaten in der Datei sht21-data.csv gepeichert. Um diese per Browser in einem Diagramm darzustellen sind die Dateien aus dem temper/www Verzeichnis nach /var/www zu kopieren. Dann noch die JavaScript Bibliotheken von http://www.flotcharts.org/ downloaden und im Verzeichnis /var/www/js speichern.

Jetzt muss noch in der Datei index.php die Lage der CSV-Datei angepasst werden.

alt   –   $lines = file(„sht21-data.csv“);
neu –   $lines = file(„/home/pi/temper/sht21-data.csv“);

Im Moment überarbeite ich die PHP-Seite und den Service etwas, so das diese Einstellungen dann per Konfig-Datei vorgenommen werden können. Sobald ich damit fertig bin, werde ich die Änderungen veröffentlichen.

Raspberry PI – Gehäuse anpassen

Beim Gehäuse habe ich mich für das „TEK-BERRY :: Design-Gehäuse“ von Reichelt entschieden. Für den Preis 4,95 EUR plus Versand darf man sicher keine Wunder erwarten, aber für den Zweck ist es allemal ausreichend. Durch den weichen Kuststoff war es auch sehr einfach das Loch für das Kabel des Sensors zu bohren. Ich habe mir nicht einmal die Mühe gemacht die Bohrmaschiene zu holen. Mit Bohrer und Senker mit per Hand war die Arbei in zwei Minuten erledigt. Einziger kleiner Nachteil des Gehäuses ist, das der USB-Stecker für den Stromanschluss nicht immer gleich einzustecken geht. Manchmal muss man etwas auf die SD-Karte drücken, damit der Stecker rein geht.

 

8 mm Loch für die Durchführung des Kabels