Tweets sammeln mit Hashtags

Das „Internet der Dinge“ ist im Augenblick groß im kommen und erweckt viele Menschen zum basteln, programmieren, ausprobieren und vieles mehr. Vor ein paar Jahren hat IBM das quell offenen Tool mit dem Namen „Node-RED“ veröffentlicht. Die Software ist auf vielen Einplatinen Computer sehr performant und läuft beispielsweise auf Cubieboard, BeagleBone und wie soll es auch anders sein, auch auf dem Raspberry Pi B/B+/2 und andere Modelle.

Node-Red basiert auf einem Ereignis gesteuerten, nicht blockierenden Javascript Framework node.js. Die Software ist mit einem visuellen Editor wie man ihn zum Beispiel in vielen Content-Management-Systeme findet, ausgestattet.  In sehr kurzer Zeit lassen sich anhand vieler Beispiele im Netz komplette Anwendungen programmieren. Die Einarbeitungszeit ist sehr niedrig und das Erfolgserlebnis stellt sich relativ kurz ein. Dies könnte viele Menschen, die keine Programmierer sind, Dinge für das Internet zu entwickeln.

Die Benutzeroberfläche ist mit Objekten bestückt die man per Drag-and-Drop einfach ins Programmfenster zieht. Es können verschiedene Workspaces (Arbeitsflächen) erstellt werden, für mehrere Programme die parallel und unabhängig arbeiten können. Es gibt keine Einschränkungen in der Erweiterung von Funktionen, denn diese können mit Native-Javascripts programmiert werden.

Tweets-speichern-mit-Node-red-raspberry

Der Code selbst steht unter Apache 2 Lizenz und kann über die GitHub-Seite heruntergeladen werden, wo sich auch eine Installationsanleitung für den Raspberry PI befindet. Hiermit sind die Einstiegshürden relativ gering gehalten und sehr schnell stellen sich Erfolgserlebnisse ein.

Nun habe auch ich etwas gebastelt, um ein paar einfache Dinge bewerkstelligen zu können.

Der hier vorgestellte Code, kann einfach kopiert werden und per Import in das Clipboard von Node-RED hinzugefügt werden. Einfach mal probieren und testen.

Da wir beim Thema „Internet der Dinge“ sind, dachte ich mir alle Tweets bei Twitter mit dem Hashtag #IOT in eine Datenbank zu speichern. Diese Daten werden in eine MongoDB gespeichert. MongoDB hat den Vorteil dass man die Daten einfach in die Datenbank schreiben kann ohne dass man Tabellen und Spalten anlegen muss.  Daten können dann jederzeit ausgelesen werden, welches auch in den Programmcode enthalten ist.

Eine MongoDB Datenbank auf dem Raspberry zu installieren benötigt doch etwas Aufwand da es noch kein fertiges Package im Raspberry Repository gibt. Ich bin die einfachere Lösung gegangen und hab mir eine MongoDB auf einen anderen PC mit Linux OpenSuSE installiert. Eine kostenlose SaaS Lösung gibt es bei https://mongolab.com/. Dort bekommt man  500MB und bis zu 8 Datenbanken für 0 Euro.

Gehe jetzt nicht auf die Installation von MongoDB und Node-RED in diesem Artikel ein. Wir beginnen hier und gleich mit dem Programm-Code.

Dieser Programm-Code ist zum erfassen von Tweets mit dem Hashtag #IOT und speichern in der Datenbank:

[{"id":"661a5da7.dc51ec","type":"mongodb","hostname":"localhost","port":"27017","db":"twitter","name":"tweets"},{"id":"a78022d2.cdcfc","type":"twitter in","twitter":"","tags":"#iot","user":"false","name":"iot","topic":"tweets","x":218.08331298828125,"y":198.08334350585938,"z":"66e7de90.cbe6a","wires":[["efdea660.2b7988"]]},{"id":"efdea660.2b7988","type":"mongodb out","mongodb":"661a5da7.dc51ec","name":"","collection":"tweets","payonly":true,"upsert":false,"multi":false,"operation":"store","x":529.0833282470703,"y":239.0833282470703,"z":"66e7de90.cbe6a","wires":[]}]

Nun haben wir die Daten in der Datenbank und möchten diese auslesen über eine API bzw. mit dem Webbrowser

[{"id":"661a5da7.dc51ec","type":"mongodb","hostname":"localhost","port":"27017","db":"twitter","name":"tweets"},{"id":"a22bb0da.cddb98","type":"function","name":"Content-Type-json","func":"msg.headers = {\"Content-Type\" : \"application/json\"}\nreturn msg;","outputs":1,"x":521.0833129882812,"y":181.08334350585938,"z":"f8ed1d3.796e06","wires":[["1f5c9aa8.1cb175"]]},{"id":"b0f5e48d.5e79e","type":"mongodb in","mongodb":"661a5da7.dc51ec","name":"twitter","collection":"twitter","operation":"find","x":348.08331298828125,"y":100.08333587646484,"z":"f8ed1d3.796e06","wires":[["a22bb0da.cddb98"]]},{"id":"1f5c9aa8.1cb175","type":"http response","name":"","x":701.0833129882812,"y":104.08333587646484,"z":"f8ed1d3.796e06","wires":[]},{"id":"ce75531d.62f36","type":"http in","name":"api/twitter/list","url":"/api/twitter/list","method":"get","x":177.0833282470703,"y":99.08332824707031,"z":"f8ed1d3.796e06","wires":[["b0f5e48d.5e79e"]]}]

Abgerufen werden die Daten mit http://<IP-Adresse-PI>:1880/api/twitter/list

Das ist alles und schon werden alle Public Tweets mit dem Hashtag #IOT in die Datenbank gespeichert, während der Raspberry Pi mit dem Node-RED läuft.

Viel Spass beim Daten sammeln wünscht Dir Joachim

 

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*