My IoT Hello World Setup

The internet of things (IoT) is everywhere now. And of course I’m into connecting all sort of electronic stuff to the internet as well. I think the equivalent of the famous “Hello World!” programming language example is the “Temperature Sensor” for IoT. And of course I’m interested in Temperature, Humidity and Pressure as well. Not only because I want to know how cold it is outside. I also want to know the temperature and especially the historical temperature in every room.

In the long term I’d hope to derive some learnings from these data to optimize our heating schedule and eventually control the heating from an automated systems.

To get started I wanted to build some cheap wireless sensors whose data are collected in a central place. Sure you can buy that stuff readymade. But where’s the fun in that?

To keep the wireless transfer part as low profile as possible (also in terms of power consumption) I picked the 868MHz Radio band that’s free to use and has a good range. Alternatives are LoRa Packet radio at 900Mhz which seems to emerge as a new standard for IoT connections. There is an affordable breakout module from Adafruit for this with the well supported RFM69HCW chipset. 

As Sensor node I picked the Adafruid Feather M0 with the RFM69HCW module integrated. That’s a tiny Arduino-compatible Micro-Controller which has the packet radio module integrated on the same PCB. In addition it has a JTAG header and Lithium-Polymer battery loader circuit. This makes it flexible on the  power supply.

For temperature and humidity I chose the really cheap Adafruit Si7021 breakout board with I2C interface. This allows to connect more sensors to the Feather M0 if needed.

On the receiver side I first tried to connect the RFM68HCW to the RaspberryPi. But I couldn’t find any reliable libraries talking to the chipset to get proper readings. And for things rather close to hardware the MicroControllers seems to be the weapon of choice. So I got myself a Gertduino. This is a full fledged Arduino UNO (and some other neat stuff) on a PCB that sits on top of a RaspberryPi and connects to its GPIO headers. You can program the Arduino from the RapsberryPi and read/write data from it via Serial line. So much on the hardware side. 

On the software side my first goal was to collect and visualize the data. Recently I had to look into ElasticSearch and figured that it’s actually quite simple to setup. It also comes with a usual visualization web frontend named Kibana. ElasticSearch prefers JSON documents as input. So I configured the collector nodes to emit their sensor readings in JSON format.

The ElasticSearch and Kibana I raised with this simple Docker setup (docker-compose.yml):

version: '2'
services:
 elasticsearch:
 image: elasticsearch
 ports:
 - "9200:9200"
 volumes:
 - /home/fzurell/elastic/esdata:/usr/share/elasticsearch/data
 kibana:
 image: kibana
 ports:
 - "127.0.0.1:5601:5601"
 links:
 - elasticsearch

Adafruit Feather nodes on the input side and ElasticSearch/Kibana on the visualization. But how to connect the dots? First I thought of writing myself some python code to read from the Gertduino serial line on the RaspberryPi and send it to the ElasticSearch. But my local IoT guru Chaosblog brought some new stuff to the table – Node Red

This is a Node.js application which helps do the plumbing described above. It’s got little building blocks that you can drag to a canvas and connect with wires. Messages travel the wires and can be consumed and manipulated by the blocks. There are many predefined blocks which offer easy solutions to common problems.

My workflow in Node Red looks like this:

  • read data from serial port
  • try to parse as JSON object
  • insert timestamp into JSON object
  • HTTP POST document to ElasticSearch

There was hardly any coding needed. The only little piece of JavaScript I had to write was the insert timestamp function. All other blocks are stock Node Red elements. 

Some things I learned along the way:

  • do a Serial.flush(); to make sure data is written to the serial line
  • The Feather M0 has a realtime clock than can be used in the power saving setup
  • You can’t program the Gertduino from the RaspberryPi when using the serial connection (hardware jumpers … )
  • The RFM69HCW needs an exactly 16 byte encryption key
  • the RFM69HCW modules has got it’s own temperature sensor
  • the RFM69HCW can only send packets of app. 61 bytes (might need to split messages)
  • Interrupt Service Routines (ISR) are tricky:
    • don’t use delay(); it will make your code hang
    • you might not need any code in the ISR at all.

Source Code for the Weather Nodes (make sure you give each node a different Node: #define NODEID 1)

Source Code for the Weather Hub (on the Gertduino)

Ein Stück Wiese

K1 hat zum Geburtstag letzte Woche ein Stück Wiese aus dem Garten seines Freundes bekommen. Das ist eine sehr coole Idee. K1 liebt den Garten und hat selbst auch ein bisschen einen grünen Daumen. Die kleinen Dinge sind es die die größte Freude machen.

Ein Stück Wiese

Ein Stück Wiese

Endlich Frühling

Frost statt Frust

Irgendwie kam mir in diesem Jahr der Winter sehr lange vor. Also nicht einmal unbedingt die Zeit in der es kalt und schneeig war. Aber die Zeit in der draußen alles grau ist weil die Bäume und Sträucher kein grün tragen.

Doch seit dem letzten Wochenende geht es ja nun endlich voran. Natürlich auch mit den bekannten Nebenwirkungen wie z.B. Pollenflug und Allergie. Aber ich niese gerne und reibe mir die Augen wenn man dafür endlich wieder auf dem Balkon sitzen kann, alles so schön grün wird und auch die Anzahl der Tierstimmen im Wald wieder zunimmt.

 

Frost statt Frust

Frost statt Frust

Runtastic – How to drive off customers effectively

Screencast Runtastic to Strava

Runtastic was one of the first usable Sports tracking app available for Smartphones. I’ve started using it in 2009 and used to be quite happy with the features and overall user experience. I had used it on the iPhone, on Windows Mobile and Android smartphones. Since a little more than a year I’m using it on an iPhone 6 Plus on a daily basis to track my commute and other sport activities.

What drove me really crazy about Runtastic is that fact the app is nagging me about feedback and rating. About twice a week I’m getting a pop up when finishing an activity that asks me to provide a rating in the app store. About every other week I get an additional pop up screen which asks for an NPS style rating. One can’t turn those pop ups off. And one has to acknowledge them actively.

To me this is super annoying. I was a Runtastic Premium member. Means I’ve paid for the Runtastic Pro app itself (on multiple devices) and I had a premium member subcriptions with a yearly payment. I’ve uploaded multiple activities a day. So Runtastic should be able to tell that I’m quite fine with using the app on a regular basis. Still they’re nagging me far too often to provide feedback.

I had reached out to them on Twitter and asked them to fix this at least for paying members. Their social media person of course said they’re looking into it. But did something change? No.

This week my frustration about this has reached a level that drove me off the Runtastic Platform. I searched the Internet how to best migrate my data off to another platform. Runtastic themselves don’t offer an export functionality. But thanks to some skilled people you can easily find some JavaScript code to fetch the data from their web interface. To show how easy that really is I made a short video showing the process.

It’s really a simple 6 step process:

  1. Login to Runtastic website
  2. go to your activities overview
  3. Open the JavaScript Console of your browser
  4. Paste the JavaScript Code from Github into it and press enter – Download of all activities starts
  5. Login to your Strava Account
  6. Import the individual activities in batches of 25 files (the Strava import limit)

 

You’re welcome!

Die letzten 3 Wochen haben wir im Urlaub in Süd Afrika verbracht. Eines ist mir dort (neben den sommerlichen Temperaturen) besonders aufgefallen: die Menschen sind alle ausgesprochen freundlich. Jeder scheint sofort bereit zu sein einem zu helfen. Sei es den richtigen Weg zu finden, einem zu erklären wie Dinge funktionieren oder auch Dinge auszuborgen etc. Es scheint so als ob die Leute noch an das Gute im Menschen glauben und generell ersteinmal von einer positiven Wendung der Dinge ausgehen.

Soetwas kenne ich von Deutschland leider nicht. Hier ist gefühlt jeder erst einmal sich selbst der Nächste und auf seinen Vorteil bedacht. Fremde oder auch einfach nur anderen Menschen werden hier als Bedrohung oder Konkurrenz gesehen. Und auf keinen Fall gönnt man denen Erfolg.

 

 

Wir waren im Urlaub teilweise in der riesigen Luxus-Villa unserer Freunde. Vom Balkon könnten wir auf die Straße sehen. Alle Leute die dort vorbei gingen bewunderten das Haus und winkten uns anerkennend freundlich zu. Soetwas ist hier in Deutschland unvorstellbar. Bestenfalls würde man hier missgünstige Blicke ernten, wahrscheinlicher müsste man jedoch mit Vandalismus rechnen.

 

Was ist los mit uns Deutschen? Warum sind wir so Scheiße drauf? Warum können wir anderen keinen Erfolg oder Glück gönnen?

 

Urlaub

Kann nicht so viel schreiben heute. Wir sitzen gerade mit der ganzen Familie am Flughafen und starten gleich Richtung Kapstadt. Die letzten Tage waren voll mit Organisationsstress. 5 Personen fliegen und dann auch noch über Weihnachten & Silvester inkl. Geschenke besorgen, Unterkunft besorgen usw. ist schon ne Aufgabe. 
   
 

Good bye NOKIA

In dieser Woche war mein letzter Arbeitstag bei NOKIA. Diesem einstmals blauen Riesen aus Finnland. Als ich vor ca. 6 Jahren hier Berlin bei NOKIA angefangen habe war NOKIA gerade auf dem Höhepunkt seines Erfolgs mit Mobiltelefonen. Es war der Inbegriff von robusten und funktionsvielfältigen Telefonen. Viele Innovationen in diesem Bereich verband man mit dem Namen.

Aber mit all dem hatte der Standort in Berlin nur mittelbar zu tun. Statt dessen wurden hier die Angebote rund um digitale Landkarten gemacht. Anfangs nur für NOKIA Geräte, später dann als Webservices für alle zugänglich.

Während es der Handysparte immer schlechter ging, konnte der Kartenbereich weiter wachsen. Heute stellen wir Kartenservices für Kunden in aller Welt zur Verfügung. Darunter bekannte Namen wie z.b. Yahoo, Microsoft, Amazon und viele weitere.

Vor ca. Jahren entschied sich NOKIA dann die Handysparte an Microsoft zu verkaufen. Übrig blieben NOKIA Networks, die Technologie Sparte, die Patente und der Kartenbereich – inzwischen unter der Marke HERE bekannt.

Im Frühjahr diesen Jahres nun entschied sich NOKIA auch für HERE einen neuen Besitzer zu suchen. Nach einem halbwegs spannenden Bieterwettkampf ging ein Konsortium aus drei großen deutschen Automobilherstellern als Gewinner hervor. In einer bisher einmaligen Aktion entschieden sich Audi, BMW und Daimler zusammen HERE zu erwerben und als eigenständige Firma durch ein Konsortium weiterzuführen.

Dieser Transfer wurde nun am 05. Dezember 2015 offiziell abgeschlossen. Damit gehört HERE nicht mehr zu NOKIA sondern ist jetzt eine eigenständige Firma im Besitz des Konsortiums.

Ab jetzt segeln wir sozusagen unter eigener Flagge. Ich freue mich drauf 🙂

Roter Backstein

Ich liebe Gebäude aus rotem Backstein. Wahrscheinlich ist es ein Trauma aus meiner Kindheit, in der ich zehn Jahre lang in die Johann Wolfgang von Goethe Schule ging. Ein recht imposanter Bau aus rotem Backstein. Oder aber der Umstand dass fast alle der roten Backstein welche in Berlin verbaut wurden aus den Ziegeleien in der Nähe meiner Heimatstadt stammen.

Wie auch immer, ich mag dieses rote Gemäuer. Und just in dieser Woche habe ich durch Zufall wieder eine sehr imposante Ansammlung solcher Gebäude gefunden. Das Oberstufenzentrum in Friedrichshain:

    
Ein ziemlich großer Komplex aus mehreren Gebäuden verborgen auf dem Hinterhof.

Die Hölle friert zu – ich benutzte freiwillig Windows

Naja, ganz so schlimm wird es wohl nicht kommen. Aber es stimmt das ich mir in der vergangenen Woche zuerst an einer Windows 10 virtuellen Maschine zu schaffen gemacht habe und dann auch noch direkt auf ein Stück alte Hardware (Lenovo X220) gepackt habe. Und ich muss sagen, es gefällt mir ehrlich gesagt nich schlecht. Na dem unsäglichen Touch-Ausflug mit Windows 8 hat Microsoft endlich mal wieder einer benutzbare und tolerierbare Benutzeroberfläche geschaffen. Die meisten Funktionen findet man dort wo man sie erwartet oder aber über die System-weite Suche. Damit kam ich als Mac User sofort zurecht.

Auch die Performance scheint gegenüber Windows 8 gestiegen zu sein. Aber vielleicht kommt mir das auch nur so vor, da man nun wieder viele Dinge direkt machen kann, ohne sich erst einmal durch irgendwelche Touch Bedienelemente zu wursteln.

Also theoretisch könnte ich mit Windows 10 als Beteiebssystem für normale Bürodinge und Websurfen gut leben. Aber schon am zweiten Tag vermisste ich eine brauchbare Shell. Für meinen Job muss ich in der Lage sein mich auf entfernte Maschinen per SSH einloggen zu können außerdem benötige ich diverse Unix/Linux Tools und natürlich die Möglichkeit Scriptsprachen with Python oder Ruby ausführen zu können. Ab und an muss ich auch mal etwas in C/C++ kompilieren. All dass ist nun aber leider unter Windows mit größeren Umständen verbunden. Natürlich findet man für all das auch irgendwo eine Lösung in den Weiten des Internets. Aber das ist mir ehrlich gesagt zu viel Aufwand. Unter Linux oder auf dem Mac funktionieren diese Sachen einfach so, bzw. lassen sich mit einem Kommando nachinstallieren.

Der nächste No-Go Moment ereilte mich dann, also ich versucht habe auf einem relativ neuen Lenovo B50-70 Windows 10 neu zu installieren. Der Setup Program behauptete das Teile der Hardware nicht unterstützt werden und verweigerte daher seinen Dienst. Laut Support Webseite von Lenovo wird das Gerät ohne weiteres unterstützt. Es läuft sogar ein von Windows 8.1 upgegradetes Windows 10 darauf. Dennoch verweigerte das Setup eine Neuinstallation.

Alles in allem also ein gemischtes Fazit: Ja, Windows 10 sieht gut aus und lässt sich auch gut benutzen für Standard Anwendungen. Aber wehe man braucht eine Shell oder muss irgendwas mit Hardware machen. Dann fängt es (wie alle anderen Windows Versionen auch) sehr schnell an extrem zu nerven. Ich bleibe definitiv beim Mac.

Gute Musik

Vor ein paar Wochen habe ich in einem der Magazine die hier im Haushalt so rumliegen eine Musiktipp gelesen. Nur eine ganz kurze Erwähnung und ich kann mich auch nicht einmal mehr an den Namen der Zeitschrift erinnern.

Dort stand jedoch ein für mich entscheidender Satz mir den beschriebenen Künstler einmal anzuhören: “Eric Clapton bezeichnet ihn als den besten Gitarristen der Welt.”

Wer sich ein Fitzelchen in der populären Musik der letzten 50 Jahre auskennt, sollte von dem Namen Clapton schon einmal etwas gehört haben. Wenn nun eben jener Eric Clapton, der mit den Yardbirds weltberühmt und mit Cream unsterblich geworden ist, von jemandem behauptet er sei der beste Gitarrist der Welt – dann kann man sich den schon mal anhören.

Also Spotify angeworfen und nach Gary Clark Jr. gesucht und zum Glück gefunden.

Und dann: eine Offenbarung. Der Typ hat’s wirklich drauf. Er erinnert mich sehr stark an Jimi Hendrix mit seinem Spiel. Ungezügelt, emotional und immer kurz davor ausser Kontrolle zu geraten. Dann aber virtuos eben wieder doch nicht.

Eine kurze Recherche im Netz ergab das auch andere Leute offenbar einen Narren an dem Mann gefressen haben. So sind sowohl Alicia Keys als auch Barack Obama sehr begeisterte Fans dieses noch recht jungen Ausnahmetalentes. Und deren musikalischem Geschmack traue ich durchaus.

 

Auf Spotify unbedingt sein Live Album “Gary Clark Jr. Live” anhören: