SMS Gateway mit Raspberry Pi

Bisher hatte ich bereits mit Hilfe des Gammu Projekts und einem Huawei E220 Modem versucht, einen stabilen SMS Gateway zum Senden und Empfangen von Nachrichten zu schaffen. Das Problem dabei war allerdings, dass nach 2-3 Tagen das System nicht mehr funktioniert hat. Auch ein täglicher Neustart hat das Problem nicht verbessert. Vor kurzen habe ich einen Neuauflage des Projekts erwogen, es folgen nun die Umsetzungdetails.

Hardware:

  • RASPBERRY-PI/8GB-USD mit Gehäuse und Netzteil um 40€ bei Farnell
  • Ein gebrauchtes und entsperrtes Huawei E160 Modem um 13€ bei Ebay
  • Einen USB-Hub, konkret den D-Link DUB-H7 um 21€ bei Amazon

Bei der Auswahl des Modems sollte man aufpassen und z.B. diese Liste konsultieren, ist zwar eigentlich für die Installation von http://www.raspberry-asterisk.org gedacht aber bietet einen guten Anhaltspunkt. Auch bei der Auswahl des USB-Hubs sollte man beachten, dass Raspberry nicht alle USB-Hubs unterstützt, eine Liste dazu siehe z.B. hier. Gesamt sieht das Setup dann etwa so aus.
raspberry_smsgw

Installation:

  • Raspberry Pi kam bei mir schon mit einem vordefinierten Setup, sonnst einfach von hier das Paket auf die SD-Karte kopieren, eventuell wird dafür der Win32DiskImager oder ähnliches benötigt. Ich habe mich beim Betriebsystem für Raspbian, quasi dem Debian für Raspberry Pi entschieden
  • Das System auf den aktuellen Stand bringen und Tools zum Compilieren installieren
    apt-get update && apt-get upgrade -y
    apt-get install -y build-essential
  • SmsServerTools3 in neuester Version runterladen und compilieren/installieren
    wget http://smstools3.kekekasvi.com/packages/smstools3-3.1.15.tar.gz
    tar -zxvf smstools3-3.1.15.tar.gz -C /usr/local/src
    cd /usr/local/src/smstools3
    make
    make install
  • Hat alles geklappt könnte man die SmsServerTools (sms3) starten, wobei es fehlt noch die Konfiguration
    /etc/init.d/sms3 start bzw. /etc/init.d/sms3 stop

Konfiguration:

Die Konfiguration ist grundsätzlich unter /etc/smsd.conf zu finden. Hier meine aktuelle Konfiguration.

# sms3 config from /etc/smsd.conf

devices = huawei

#log an loglevel (use loglevel 8 for debug)
loglevel = 5
logfile = /var/log/smsd.log

#folder for messages
stats = /var/log/sms/stats
outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
failed = /var/spool/sms/failed
incoming = /var/spool/sms/incoming
sent = /var/spool/sms/sent

delaytime = 4
errorsleeptime = 4
blocktime = 180
autosplit = 3
receive_before_send = yes
national_prefixes = 0

# Modem configuration
[huawei]
smsc = 43XXXXXXXXXXX
device = /dev/ttyUSB0
incoming = yes
#baudrate = 115200
baudrate = 19200
rtscts = no
hangup_incoming_call = yes

#use internal memory for storing messages 
init = ATE0+CPMS="ME"
#turn off periodic status messages
init2 = AT^CURC=0

Die oben angegebenen Ordner und Pfade für Logs etc. müssen natürlich entsprechend eingerichtet werden.

Zwecks Debugging hier einige Tipps:

  • Ist das Modem grundsätzlich vorhanden, siehe z.B. lsusb bzw. ls /dev/*USB*, Raspberry USB Themen siehe hier
  • Können auf dem Modem AT Befehle abgesetzt werdnen, zB mit minicom
  • Loglevel in smsd.conf auf 8 und tail -f /var/log/smsd.log und prüfen welche AT Befehle er nicht mag
  • Ev. zuerst in smsd.conf incoming = no stellen und nur mal versuchen SMS zu senden
  • Ev. Baudrate anpassen
  • Ev. mit dem init = ATE0+CPMS=“ME“ Befehl anpassen wo die SMS ausgelesen/gespeichert werden sollen
  • Mit den Timing Settings spielen
  • Doku und Community fragen
  • Pin von Simkarte is aus und Sim geht grundsätzlich
  • Es ist GSM-Empfang und genügend Power für das Modem vorhanden

Echoscript für Test einrichten:

Um die Funktion und Stabilität des SMS-Gateways zu testen habe ich ein einfaches Script erstellt welches eine SMS-Ping Funktionalität zur Verfügung stellt. Ich sende also ein SMS an die Nummer meines Modems und erwarte innerhalb von etwa 30 Sekunden eine Antwort inklusive der Ursprünglich gesendeten Nachricht. Der Inhalt des Scriptes schaut in etwa so aus.

<?php
date_default_timezone_set('Europe/Vienna');
$income_sms_dir="/var/spool/sms/incoming/";

if (is_dir($income_sms_dir))
{
    if ($dh = opendir($income_sms_dir))
    {
        while (($file = readdir($dh)) !== false)
        {
            if($file!="." && $file!="..")
            {    
                echo "filename: ".$file." date: ".date("d.m.Y H:i:s")."\n";
                $content=file_get_contents($income_sms_dir.$file);
                $split_line=explode("\n",$content);
                $from=preg_replace("/[^0-9]+/","",substr($split_line[0],6));
                $message="Echo:".preg_replace("/[^a-zA-Z0-9]+/", "_", $split_line[12]);
                $exec="/usr/local/bin/sendsms ".$from." \"".$message."\"";
                echo $exec."\n";
                exec($exec);
                unlink($income_sms_dir.$file);
            }
        }
        closedir($dh);
    }
}
?>

Um das ganze aufzurufen habe ich einen Workaround für crontab -e benützt um alle 5 Sekunden das Script zu starten.

* * * * * php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 5; php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 10; php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 15; php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 20; php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 25; php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 30; php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 35; php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 40; php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 45; php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 50; php -f /root/echo.php >> /root/echolog.txt
* * * * * sleep 55; php -f /root/echo.php >> /root/echolog.txt

Weiterführende Links:

  • Wer nicht nur einen SMS sondern einen VOIP/GSM Gateway betreiben möchte findet hier oder auch hier weitere Installationsquellen / Anleitungen
  • Wer gern eine WebGUI zum SMS Senden hätte könnte PlaySMS verwenden, eine Installationsanleitung ist hier zu finden

Tauschmarkt Software

Liebe Tauschmarkt-Organisatoren und andere Interessenten an der Tauschmarkt Software,

Im Sommer 2013 sind wir zusammengesessen und haben darüber gesprochen wie man einen Tauschmarkt wohl am besten abwickeln könnte. Nach kurzer Diskussion hat sich gezeigt, dass wir den Tauschmarkt besser nicht mit Excel oder Zetteln abwickeln sollten, sondern dafür eine einfache Software geeigneter wäre.

Ich habe kurzerhand geprüft, welche Frameworks gerade aktuell sind und bin auf das Yii Framework gestoßen. Mich hat die Funktionalität aus Datenmodellen Klassen und Views zu generieren beeindruckt. Durch dieses Konzept kann man mit wenigen Handgriffen eine Softwarelösung auf die Beine stellen und hat dabei eine saubere Struktur und ist sehr flexibel. Ein umfangreiche Pool an Erweiterungen runden das Framework ab.

Aus dem Framework und anderen Tools ist innerhalb von wenigen Stunden die Software entstanden. Aktuell werden darin folgende Prozesse unterstützt: Annahme, Verkauf, Abholung und Reklamation. Details zur Software selbst oder zu den einzelnen Prozessen siehe Demo unter http://tauschmarkt.demo.schlucht.at bzw. http://vorerfassung.demo.schlucht.at. Die Hilfe bzw. Prozessbeschreibungen befinden sich unter dem Link „Home“. Sollte jemand in der Demo die Adminfunktionen benützen wollen, Benutzer und Passwort wären „admin“.

Ihr möchtet die Software auch für euren Tauschmarkt verwenden? Bitte gerne, hier die Beschreibungen und Download-Links zu den Versionen:

In Version 0.4 wurden folgende Dinge geändert:
Download Tauschmarkt_Software_v0.4
– Optimierung Artikelerfassung durch Parameter show_artikelnr_by_system_button
– Optimierung Artikelerfassung durch Veränderte Reihenfolge der Artikelattribute
– Optimierung Artikelerfassung durch Select mit Warengruppenname zu Beginn (statt ID)
– Bugfixing und Erweiterung Readme

In Version 0.3 wurden folgende Dinge geändert:
Download Tauschmarkt_Software_v0.3
– Bilderfassung zu Artikel am Handy unter Punkt Mobile
– Kundenstamm um eMail und PLZ erweitert
– Beim Verkauf wird beim klick auf das Bild ein JS-Popup angezeigt
– Verkäufe welche keinen Artikel finden werden auch in der Tabelle darunter rot hervorgehoben
– In Artikelliste zeige nur x wenn Bild vorhanden ist
– Annahmedruck und Abrechnungsdruck vom Pletz her optimiert
– Happyhour kann auf Annahmedruck und Abrechnungsdruck ausgeblendet werden (neuer Parameter happyhour_anzeigen)
– Freigabetext mit Unterschriftenfeld kann auf Abrechnung ausgeblendet werden (neuer Parameter abrechnung_disclaimer_show)
– Neuer Etikettentype „Standard_2018“ mit Andruck der KundenNr
– Unter dem Kunden kann man eine Voransicht der Abrechnung aufrufen
– Es können mehrere Kunden (aktuell 20) auf einmal abgerechnet werden
– Es gibt eine Auszahlungsliste um den Überblick der Auszahlungen zu behalten
– Artikel können als Admin gelöscht werden
– Diverse Erweiterungen in den Statistikansichten
– Diverse Bugfixes

In Version v0.2 wurden u.a. folgende Featuers hinzugefügt, Details siehe Demo’s oben:
Download Tauschmarkt_Software_v0.2
– Artikel haben Warengruppen
– Artikel haben Größe/Länge
– HappyHour Funktionalität
– Eigene Anwendung „Vorerfassung“ für Artikelerfassung im Internet vor dem Tauschmarkt

Version v0.1 wurde bei unserem letzten Tauschmarkt verwendet:
Download Tauschmarkt_Software_v0.1

Wenn ihr Infos über die Software weitergeben möchtet bitte den Permanenten Link http://tauschmarkt.schlucht.at verwenden.

LG,
Max

Friaul Juni 2013

Mit nur 2,5h Autofahrt von Salzburg entfernt ist in Friaul ein kleines Paradies an Schluchten vorhanden.  Die meisten Canyons finden sich rund um Tolmezzo. Als Unterkunft empfiehlt sich zentral gelegen das Hotel Carnia oder der Campingplatz am See. Hier eine grafische und tabellarische Übersicht der besser bewerteten Touren in der näheren Umgebung.

Schluchtenuebersicht_Friaul_von_LargoDiCavazzo  Schluchtenuebersicht_Friaul

Im Juni 2013 war ich wieder unten und habe dabei einige Highlights gemacht, hier die Schluchten im Detail.

Rio Pissanda:

Nachdem Regen angesagt war und der Bach unten genug Wasser hatte (ist normal fast trocken) sind wir eingestiegen. Das Verhältniss vom kurzen Zustieg zur dann doch längeren Tour hat mich beeindruckt. Die Tour selbst ist etwas moosig aber hat alles dabei, einige Rutschen, ein paar Sprünge und zum Schluss noch einige hohe Abseiler. Der ideale Canyon zum Anfangen oder wenn die Wettersituation nicht stabil ist.

Rio Simon:

Der Rio Simon kann getrost als eines der Highlights der Gegend bezeichnet werden. Er ist aquatisch, kann aber auch bei mehr Wasser gut bewältigt werden, da die Abseilstellen meist ausserhalb des Wasserlaufs angebracht sind. Nach 1,5h Zustieg folgt Schlag auf Schlag eine Attraktion der anderen, Abseiler und Sprünge stellen die Hauptattraktivität neben dem türkisen Wasser dar. Gehstrecken zwischen den Attraktionen sucht man hier vergeblich. Das Auto sollte man in der Hochsaison nicht direkt beim Ausstieg stehen lassen.

Rio Tralba:

Der Zustieg geht bei der Staumauer wo zum Rio Alba eingestiegen wird noch ca. 1h weiter nach oben. Oben angelangt geht es Schlag auf Schlag, Sprünge, Rutschen, Abseiler wechseln sich ab. Die Schlucht hatte bei der letzten Begehung relativ viel Wasser. Im Gegensatz zum Rio Simon seilt man hier meist durchs Wasser ab. Nach 2 hohen Abseilern endet dann der obere sehr interessante Teil. Als nächstes beginnt eine Bolderpassage, ca. 45min über große Blöcke klettern. Danach noch einige schönere Abseiler und dann erreicht man den Rio Alba. Dieser ist leider seit einigen Jahren ziemlich zugekiest, es gibt einige Sprünge und Abseiler, aber großteils sind einfach 3km zu laufen bis man wieder unten beim Parkplatz ankommt, dann ist noch ca. 30m Auto holen angesagt.

Rio Cuestis:

Was dem Rio Simon an Vertikalität fehlt bekommt man gleich bei dem Bach daneben. Zuerst etwas unspektakulär einige Abseiler zwischen 10 und 20m. Danach folgt etwas Gehgelände doch dann wird die Schlucht eingeschnitten, Abseiler im Wasser und Rutschen folgen. Dann öffnet sich die Schlucht und es beginnen einige hohe Abseiler. Diese Schlucht ist nichts für Leute mit Höhenangst. Highlight ist sicher der Zwischenstop unter dem Dach bei dem 80m Abseiler. Auch danach kommen noch einige höhere Abseiler bevor man wieder direkt unten beim Auto rauskommt.

Weitere Beiträge zu Friaul findet man unter dem Tag Friaul, weitere Beiträge zum Canyoning unter der Kategorie Canyoning.

 

Nextgen Gallery – Backup als Download bzw. Vollbild

Ich bin von den Funktionen der NextGEN Gallery für WordPress relativ begeistert, jedoch möchte ich zwischen den Bildern schnell blättern können (d.h. kleine Dateigröße erforderlich)  und andererseits auch die Originalbilder zur Verfügung stellen.

Nachdem diese Funktionalität bisher nicht verfügbar war habe ich einige kleinere Anpassungen an der NextGEN Gallery 2.0.17 vorgenommen um dies zu ermöglichen.

Grundsätzlich müssen unter den Optionen die beiden Einstellungen „Backup the original images“ und „Automatically resize images after upload“ aktiv sein. Erstellt man nun eine Gallery dann bekommt man eine verkleinerte Datei für die Ansicht und die Backup Datei zur Wiederherstellung.

Im ersten Schritt habe ich den Dateinamen der Backup Datei geändert indem ich dahinter immer nochmals die tatsächliche Dateiendung angehängt habe. Also konkret sucht man in den folgenden Dateien class.gallerystorage_driver_base.php, class.ngglegacy_gallerystorage_driver.php, functions.php, manage-images.php, manage.php, xmlrpc.php nach dem String „_backup“ und muss dort eine Ersetzung vornehmen.

Zum Beispiel wenn bisher dort $filepath=$image_path.’_backup‘; gestanden ist muss danach $filepath=$image_path.’_backup‘.‘.‘.substr( strrchr($image_path, ‚.‘), 1); stehen. Dadurch wird statt der Datei Filename.Endung_Backup die Datei Filename.Endung_Backup.Endung erstellt.

Im zweiten Schritt muss dann auch noch der Link zum Download der großen Originaldatei im Frontend angezeigt werden. Dazu habe ich bei mir in den Optionen die Fancybox aktiviert und in der Datei nextgen_fancybox_init.js eine Manipulation hinzugefügt damit der Downloadlink unter allen Konstellationen angezeigt wird.

Eine Sammlung der Anpassungen kann hier: ng_2.0.17_BackupMod_FilesOnly heruntergeladen werden. Ein fertiges Installationspaket inklusive der Anpassungen ist hier ng_2.0.17_BackupMod_Full verfügbar.

Offene Punkte:

  • Wenn man im Backend auf „Scan Folder for New Items“ drückt werden die Backupbilder als neue Bilder erkannt, dies muss noch unterbunden werden

Nachtrag: um bei einer NextGen-Gallerie den Albumnamen anzuzeigen ist folgende Modifikation in Datei album-compact.php nötig:

if($galleries[0]->gid)
{
    //ermittle erstes album welches diese galerie enthält
    $temp_albums=nggdb::find_all_album();
    foreach($temp_albums as $temp_album)
    {
        foreach($temp_album->galleries as $temp_galerie)
        {
            if((string)$temp_galerie==(string)$galleries[0]->gid)
                break;
        }
        if((string)$temp_galerie==(string)$galleries[0]->gid)
            break;
    }
    echo $temp_album->name;  //oder ähnliches   
}