Zo komt een connected IoT-kampeerbus tot stand

Als je aan het Internet of Things denkt, lijkt een oude Volkswagen Westy T3 Joker kampeerbus uit 1982 niet het meest logische project. De 38-jarige IT'er Rob Brinkman slaagde daar wel in, en PCM sprak hem er over.

Lees ook: Zelf bier brouwen met BrewPi.

De ombouw tot een heuse IoT-kampeerbus kun je zien als een uit de hand gelopen geintje. “Het begon met het idee om gps-tracking aan de bus toe te voegen,” vertelt Rob, “zodat ik onze uitstapjes eenvoudig kon bijhouden en om familie en vrienden ons live te laten volgen. Om te voorkomen dat het een groot knutselproject werd, bestelde ik voor ongeveer twintig dollar een kant-en-klare gps-tracker in China. Je stopt er een simkaart in en configureert het een en ander via sms.” 

Vervolgens was het de uitdaging om in plaats van de bijbehorende standaardserver in China te gebruiken, alle datapakketjes via het mobiele datanetwerk naar een eigen server in de cloud door te sturen. “Ik stopte er een regulier sim-only kaartje met een goedkope databundel in en vervolgens ben ik mijn server gaan implementeren. De eerste en meteen ook leukste stap, was reverse enginering van het protocol van de gps-tracker.”

Data decoderen

Om analyses op de locatiedata los te laten en zijn familie-uitstapjes netjes in realtime op een plattegrond in te tekenen, moest hij de ontvangen datapakketjes wel eerst zien te decoderen. “Beroepsmatig heb ik veel te maken met de interactie tussen systemen onderling en tussen systemen en gebruikers. Die berichten zijn doorgaans goed leesbaar omdat er standaardprotocollen zoals xml of json voor gebruikt worden.

Ditmaal was dat anders,” vertelt Rob. “Vanwege de hoge datakosten verstuurt de gps-tracker zo min mogelijk data. Het is niet meer dan een rijtje enen en nullen. Zie daar maar eens wijs uit te worden.” Uiteindelijk kreeg Rob documentatie van de leverancier. “Alleen was dat een soort Chinees met Engelse woorden, oftewel een zeer slechte vertaling waarin ook nog eens grove fouten zaten.”

© PXimport

Uiteindelijk besloot Rob het kastje gewoon maar in de bus te bouwen en er een dag mee rond te rijden. Daarna probeerde hij te achterhalen hoe de ontvangen datapakketjes in elkaar staken. “Op basis van een lichtgewicht framework uit de Java-wereld genaamd Vert.x heb ik vervolgens software voor de serverkant ontwikkeld. Die kan de gegevens van één, honderd, of desnoods duizend van dit soort gps-trackers verwerken. De pakketjes worden op basis via een eigen geschreven bibliotheek vertaald naar begrijpbare data.”

Het systeem is volledig event-driven opgezet. Dus zodra de pakketjes zijn uitgepakt, worden er events gepubliceerd. “Ook gaan de gegevens een Redis-database in, zodat historische gegevens verzameld worden over waar we allemaal naartoe geweest zijn.” 

Vervolgens wordt de data geanalyseerd. “Staan we bijvoorbeeld een bepaalde tijd stil, dan wordt dat geïnterpreteerd als het einde van een reis. Zodra we weer in beweging komen, is dat het teken dat we aan het volgende stuk van onze reis zijn begonnen.” Alle data stroomt via websockets door naar een website. “Daarmee kunnen familie en vrienden onze kampeerbus in realtime op een kaart volgen. Omdat de route wordt ingetekend, kun je ook zien waar we allemaal al geweest zijn.”

© PXimport

ESP8266 en MQTT

Op een gegeven moment vroeg Rob zich af wat hij nog meer met de bus kon doen. Het leek hem wel leuk om er een connected device van te maken door allerlei sensoren in de kampeerbus te bouwen. Staat de bus bijvoorbeeld waterpas, wat is de olietemperatuur, hoeveel water zit er nog in de watertank en wat is de spanning en capaciteit van de accu. 

“Het was vooral bedoeld om te laten zien wat je in het kader van Internet of Things allemaal met eenvoudige en goedkope chips en sensoren voor elkaar kunt krijgen. Ik heb bijvoorbeeld gekozen voor de ESP8266. Die is oorspronkelijk bedoeld als wifi-modem voor een Arduino of Raspberry Pi. Maar er zit zoveel rekenkracht op die chip, dat je de firmware prima kunt vervangen door firmware waaraan je een stukje eigen logica toevoegt.”

Media has no description

© PXimport

Zelf gebruikt Rob wel een iets uitgebreidere variant. Het is een ontwikkelaarsbordje dat je via usb kunt programmeren zoals een Arduino en waarbij je de sensoren rechtstreeks op de chip aansluit. “De chip maakt via wifi-verbinding met een MQTT message broker. Een temperatuursensor publiceert vervolgens periodiek zijn sensordata door een bericht te versturen, terwijl de tilt-sensor pas reageert zodra de hoek van de bus verandert en die gegevens dan meteen doorstuurt en daarmee interrupt-driven is.” 

De sensoren communiceren via wifi met een Raspberry Pi. Die is geconfigureerd als access point en er zit een Raspberry Pi Display op. “Het geheel wordt tijdens de reis als basisstation aan het dashboard vastgeklemd. Er draait een stukje eigen software en een message broker op.” Rob koos voor MQTT als messaging protocol.

“Voor mij was nog wel de grootste eyeopener in dit project dat MQTT, dat een relatief oud messaging protocol is, perfect bij IoT toepassingen past,” vervolgt Rob. “De manier waarop verbindingen worden opgezet en data verzonden wordt is erg simpel, maar toch krachtig. Het is een licht protocol en er zitten uitstekende features in voor IoT.” Zo kun je per bericht opgeven welke betrouwbaarheid vereist is.

Problemen oplossen

“Accepteer je dat berichten verloren kunnen gaan, mogen ze eventueel dubbel aankomen, of moet elk bericht gegarandeerd en exact één keer aankomen. Dat zijn ook essentiële zaken voor bijvoorbeeld messaging bij banken en verzekeraars. Ook is het makkelijk om een abonnement op een bepaalde soort data te nemen. Via een string die veel op een directorynaam lijkt kun je zeer krachtige dingen doen. Laat mij bijvoorbeeld alleen alle data zien die met olie te maken heeft, of met temperatuur.”

In een kampeerbus is de ruimte beperkt, er is maar een paar vierkante meter aan leefruimte. Alle sensoren via wifi laten lopen is daarom meer gedaan omdat het leuk is om te doen. “Het gave aan een ESP8266-chip is dat je voor ongeveer vijftien euro al iets met internet kunt verbinden,” vertelt Rob. 

© PXimport

“Nadeel is wel dat ze enorm veel stroom verbruiken. Je kunt ze dus niet ergens inbouwen en op 2 knoopcellen laten draaien. Die worden heel warm en na één keer temperatuur meten zijn ze op.” Uiteindelijk moet je er toch een stroomkabel naartoe trekken. “Dus had ik de sensoren net zo goed meteen met een centraal punt in de bus kunnen verbinden. Kijk, het is misschien minder praktisch om een kampeerbus in een draadloos connected device te veranderen, maar als experiment om een gave architectuur voor Internet of Things neer te zetten was het perfect.”

ESP8266-toepassingen

Een ESP8266 kun je ook thuis gebruiken voor home automation. Deze chip wordt niet voor niets in veel IoT-oplossingen gebruikt. “Thuis kun je ze prima gebruiken omdat je overal stopcontacten hebt. Ik gebruik ze bijvoorbeeld om op een aantal plaatsen in mijn aquarium de temperatuur te meten. Als die op bepaalde plekken te veel afwijkt, wordt automatisch een waarschuwing verstuurd.” Een ESP8266 kun je op meerdere manieren programmeren, zoals in C met behulp van de Arduino IDE. 

“Je kunt er ook firmware genaamd NodeMCU op zetten. Dan is de chip supereenvoudig te programmeren via de scripttaal LUA. Dus op een zeer laagdrempelige manier kun je echt iets leuks in elkaar zetten. Een sensor uitlezen, de data via wifi versturen en die weer ergens opvangen en verwerken. Dat is een erg leuk project waar elke hobbyist zich heerlijk op kan uitleven.” 

Heeft Rob nog meer plannen voor zijn kampeerbus? “Ja, vakantieplannen voor komende zomer. We gaan de bus nu echt gebruiken waar hij oorspronkelijk voor bedoeld was en dat is voor gezinsuitjes en vakanties.”

Tekst: Kees Krick

Deel dit artikel
Voeg toe aan favorieten