SMS Messageboard

19 March 2016

Vor ein paar Jahren habe das erste mal ein SMS MessageBoard auf einer Party gesehen.

Auf zwei Leinwänden zu beiden Seiten der Bühne wurden SMS Nachrichten dargestellt, wenn man an eine bestimmte Nummer schrieb. Auf der Projektion stand ganz unten „made by fritz“. Den nächsten Tag verbrachte ich damit das Netz nach „fritz“ und dem Messageboard zu durchsuchen, aber das einzige was ich finden konnte waren Eventfirmen, die soetwas als Partygag ziemlich teuer vermieten. Also beschloss ich so etwas selbst zu bauen und bestellte mir bei Alibaba 2 sim900 module.

Das sim900 ist ein ziemlich cooles, unglaublich billiges Modul, aber aus china bestellt kommt es mit einer asiatischen Firmware. Ich bekam die Flasher Software von ein Freund von mir, der schon andere Projekte damit gemacht hat, und konnte so recht einfach die europäische version der Firmware einspielen. Da die Software Windows only ist und ich einen Arduino Serialconverter verwende sollte man jedoch aufpassen, dass es noch eine weitere Baudrate Einstellung in den Treibereinstellungen in der Windows Systemsteuerung gibt. Diese muss auf den gleichen Wert gestellt sein wie die Baudrate der Flasher Software.

Die eigentliche webapp habe ich in node.js gebaut. Ich wollte node einmal ausprobieren, und ich fand es unglaublich lustig. Verglichen mit PHP oder C++ war Server seitiges programmieren in JavaScript ca so wie wenn man sich als kleiunes Kind im Gatsch gespielt hat =D

Für die Kommunikation mit dem sim900 habe ich nodes serialport modul verwendet, für das Zwischenspeichern der Nachrichten lowdash, für das Update in den Clientbrowsern socket.io und für css-sprite basierende emoji emojize. (sonst unterscheidet sich die Darstellung unter OSX und Windows).

Für die emoji musste ich außerdem das character encoding des Moduls auf UCS2 (UTF-16) setzen, da bei GSM codierung jede Nachricht mit einem emoji auf UCS2 zurückfällt. So musste ich nur noch eine Funktion einbauen die UCS2 zu UTF8 parst.

Das ganze Projekt steht übrigens auf Github.

Für die Installation einmal „npm install“ ausführen, Telefonnummer, Pincode und Serialport in die config.json eintragen und fertig.

Mein SimModul: