Deel 8: Laat je ‘things’ met elkaar praten via MQTT

Het versturen en ontvangen van data is de basis van het Internet of Things. Zou dat niet kunnen, dan kunnen de apparaten niet op elkaar reageren. Zoals ik in de blauwdruk al schreef zijn er veel manieren om data te versturen. Naast het versturen van data via radiosignalen (433 MHz) is het ook mogelijk om gebruik te maken van je bestaande wifi-netwerk. Maar: welk protocol gebruik je daar dan voor?

Protocollen

Er zijn honderden manieren om data over het wifi-netwerk te versturen. Je kunt bijvoorbeeld een e-mail sturen of een webpagina opvragen. Het zijn allebei manieren om een stuk data over te brengen van het ene apparaat naar het andere. Maar: wat is nu de simpelste manier, die bovendien zo min mogelijk energie en geld kost? Een van die oplossingen is MQTT.

MQTT

MQTT is al in 1999 ontwikkeld door onder andere IBM. Het is een voorbeeld van communicatie tussen apparaten (M2M-communicatie). Het protocol werd (en wordt) vaak gebruikt voor telemetrie. De afkorting MQTT stond dan ook voor Message Queue Telemetry Transport. Het protocol is ‘lichtgewicht’ en uitermate geschikt voor het versturen van kleine hoeveelheden data (en het maakt niet uit wat voor soort data!). Bovendien is het ontwikkeld met onbetrouwbare verbindingen in het achterhoofd. Ideaal voor het Internet of Things dus!

In 2013 werd MQTT open source gemaakt en sindsdien waakt OASIS over deze open standaard. Met de snelle groei van het Internet of Things kwam ook MQTT opnieuw in de aandacht. Omdat MQTT inmiddels niet meer alleen wordt gebruikt voor telemetrie, is de naam niet langer een afkorting.

Hoe werkt MQTT?

In een notendop: MQTT werkt met een ‘broker’ (een server) en clients. Die clients kunnen data versturen naar een ‘topic’ of zich abonneren op een topic. Zo kan data worden uitgewisseld. Bovendien is er een aantal slimme foefjes bedacht, zoals het bewaren van berichten en het instellen van QoS (Quality of Service).  Voor een uitgebreidere uitleg over het protocol kun je hier terecht of op de Github-pagina van MQTT.

MQTT gevisualiseerd
MQTT gevisualiseerd door HiveMQ, een commerciële aanbieder van MQTT-diensten. Via: http://www.hivemq.com/wp-content/uploads/publish_flow.png

Waarom MQTT zo nuttig is, komt in een andere post aan de orde. Dan leg ik uit hoe je sensors kunt toevoegen aan Homebridge.

Installeren

Het installeren van MQTT op een Raspberry Pi Zero is uitermate eenvoudig. Er zijn meerdere programma’s beschikbaar, maar ik heb gekozen voor Mosquitto.

Stap 1: Voeg Mosquitto toe aan de repositories. De laatste versie van Mosquitto zit niet in de repositories (simpel gezegd: de database met programma’s) van Raspbian Jessie. Om toch de laatste versie te kunnen installeren voegen we de ‘repository’ van Mosquitto toe. Daartoe moeten we eerste de gpg-sleutel toevoegen. Als dat is gebeurd verversen we de lijst met repositories op de Pi. Let op: iedere regel is een commando dat moet worden afgesloten met een Enter.

Stap 2: Installeer Mosquitto. Naast de server voegen we ook de clients toe en de Python-bindings.

Stap 3: Configureer Mosquitto. Om dat te doen moet de server (die meteen na het installeren wordt gestart) eerst worden gestopt.

Dan pas je het configuratiebestand aan:

Voeg na de regel log_dest topic de volgende regels toe:

Stap 4: Sla het configuratiebestand op.

Sla het bestand op met Ctrl + X, Y en Enter.

Stap 5: Start de Mosquitto-broker.

Voila: Mosquitto draait nu en kan gebruikt worden.

Authenticatie

Standaard hoef je je niet aan te melden met een gebruikersnaam en wachtwoord op een MQTT-broker. Vanuit het oogpunt van de veiligheid is dat wel gewenst. Daarom is het verstandig om dit in te schakelen. Dat doe je als volgt:

Stap 1: Stop de Mosquitto-broker.

Stap 2: Maak een wachtwoord-bestand aan. Let op: pas onderstaande voorbeeld aan met je eigen gebruikersnaam. In dit geval is gekozen voor gebruiker pi. Er wordt twee keer gevraagd om een wachtwoord. Wil je meerdere gebruikers aanmaken? Herhaal dan het commando met een andere gebruikersnaam.

Stap 3: Pas de configuratie van Mosquitto aan.

Voeg de volgende regels toe aan het configuratiebestand:

De laatste regel maakt het onmogelijk in te loggen zonder gebruikersnaam en wachtwoord.

Stap 4: Sla het configuratiebestand op.

Sla het bestand op met Ctrl + X, Y en Enter.

Stap 5: Herstart de Mosquitto-broker.

Mosquitto draait nu met ingeschakelde authenticatie. Om te testen of alles werkt kun je gebruikmaken van een MQTT-app op bijvoorbeeld je telefoon. Ik gebruik daarvoor MQTT Tool voor iOS.

Side note: echt veilig is de combinatie gebruikersnaam/wachtwoord allang niet meer. Het zou beter zijn om bijvoorbeeld met certificaten te werken. Dat is met MQTT ook mogelijk, maar let op: niet elke client kan met certificaten overweg. Het is bijvoorbeeld ingewikkelder als je een ESP8266 gebruikt.

Lees verder in Deel 9: Het gebruik van de sensors in HomeKit.

Deel 7: De TSL2561-sensor aansluiten op een Raspberry Pi Zero

De tweede sensor die ik wilde aansluiten was een sensor die de lichtintensiteit meet. Ik heb gekozen voor de digitale I2C-sensor, de TSL2561 van Adafruit.

Hardware

De TSL2561 is een kleine sensor die het zichtbare licht meet én het licht in het infraroodspectrum. De sensor wordt gemaakt door AMS, voorheen TAOS (datasheet). Ik heb toevallig voor het board van Adafruit gekozen, maar dezelfde sensor wordt ook door Sparkfun aangeboden en is te koop via Chinese webshops.

De sensor kan op verschillende gevoeligheden worden ingesteld, zodat je de sensor ook kunt gebruiken bij veel of juist heel weinig licht. De TSL2561 werkt via I2C.

 

TSL2561 sensor

 

Het aansluiten is relatief eenvoudig:

Fritzing TSL2561 en Raspberry Pi Zero

De pinnen op de TSL2561 van links naar rechts gezien:

  • Vin: Voeding (3.3V) → Pin 1
  • GND: Ground (GND) → Pin 6
  • 3vo: Niet in gebruik
  • Addr: Niet in gebruik
  • Int: Niet in gebruik
  • SDA: Seriële data → Pin 3
  • SCL: Seriële klok → Pin 5

Voor een handig overzicht van de ‘pinout’ op Raspberry Pi Zero kun je dit diagram gebruiken.

Ter referentie: Pin 1 (het oranje vierkantje linksboven), is de meest linker pin van de onderste rij als je de Pi Zero voor je hebt liggen met de USB-aansluitingen naar je toe.

Pinout Raspberry Pi Zero
Pinout Raspberry Pi Zero, afbeelding via The Pi4J Project: http://pi4j.com/images/j8header-zero-large.png

 

I2C

I2C (meestal gewoon geschreven als I2C) is een manier om te kunnen communiceren tussen microprocessors en andere IC’s. Om met I2C te werken moet er een aantal zaken worden ingesteld.

Stap 1: Inschakelen I2C

Standaard staat I2C niet aan op de Raspberry Pi Zero. Om I2C in te schakelen, start je raspi-config.

Ga naar Advanced Options → I2C en schakel deze in.

Stap 2: Installeer i2c-tools

Om vervolgens aan de slag te kunnen met I2C en te controleren of de sensor goed is aangesloten, is het handig om i2c-tools te installeren. Dat doe je als volgt:

Stap 3: Test of de sensor zichtbaar is

Om te controleren of de sensor wordt herkend door de Pi geef je het volgende commando:

Als je vervolgens een overzicht krijgt met het nummer 39 (het standaard I2C-adres van de TSL2561) dan zit je goed. Verschijnt de sensor niet, dan is er iets niet goed gegaan met het aansluiten.

Voorbeeldscript

Stap 1: Installeer smbus

Om de sensor uit te kunnen lezen met Python heb je een script nodig. Dit script maakt gebruik van smbus, een stukje software om via Python en de System Management Bus het I2C-apparaat aan te sturen. Dat onderdeel moet dus eerst worden geïnstalleerd.

Side note: eigenlijk is dit een omweg om de sensor uit te lezen. Het is ook mogelijk om de sensor direct via i2c uit te lezen. Waarom geef ik daar dan geen voorbeeld van? Simpel: ik kon geen geschikt script vinden om de sensor op de juiste manier aan te sturen. Er bestaat ook een smbus-versie van de sensor, dat is de TSL2560. Meer informatie in deze datasheet van AMS.

Stap 2: Open een nieuw document in Nano

Je opent nu een nieuw document met de naam tsl2561voorbeeld.py in de Nano-editor.

Stap 3: Kopieer en plak het script

Kopieer en plak de volgende code.

Stap 4: Opslaan

Sla het script op met Ctrl + X, Y en Enter.

Stap 5: Draai het script

Het script kun je uitvoeren met het volgende commando:

 

Lees verder in Deel 8: Laat je ‘things’ met elkaar praten via MQTT

Deel 6: De DHT22-sensor aansluiten op de Raspberry Pi Zero

De eerste sensor die ik wilde aansluiten was de DHT22, een digitale sensor die de temperatuur en de vochtigheid meet. De DHT22 is voor iets meer dan 2 dollar te koop in China en is het grote broertje van de DHT11.

Hardware

De DHT22 wordt soms geleverd op een speciaal bordje, een breakout board, maar in mijn geval heb ik gewoon gekozen voor de sensor, zonder breakout board. De sensor wordt ook wel de AM2302 genoemd en wordt gemaakt door Aosong in China (datasheet). De DHT11 kan ook gebruikt worden, maar meet een stuk minder nauwkeurig.

DHT22 sensor

Het aansluiten is relatief eenvoudig:

Fritzing DHT22 en Raspberry Pi Zero
Fritzing diagram DHT22 en Raspberry Pi Zero

De pinnen op de DHT22 van links naar rechts gezien:

  • Pin 1: Voeding (3.3V) → Pin 17
  • Pin 2: Data input → Pin 15
  • Pin 3: Niet in gebruik
  • Pin 4: Ground (GND) → Pin 9

Ik heb een weerstand van 10kΩ gebruikt, zoals wordt geadviseerd. Die zet je tussen de voeding en de datapin als pull-up. Het is letterlijk een kwestie van minuten om de sensor aan te sluiten.

Library

Om de sensor te kunnen uitlezen met de Raspberry Pi is een ‘library’ vereist. Adafruit (de elektronicaspecialist uit de Verenigde Staten) heeft die voor de DHT22 al gemaakt. Je kunt die vinden op GitHub. Bovendien moet de programmeertaal Python geïnstalleerd zijn. Dat laatste is overigens standaard het geval bij Raspbian.

Stap 1: Installeer de Python ontwikkeltools

Voordat je de libraries kunt installeren, moet je eerst de Python ontwikkeltools installeren. Dat doe je als volgt:

Is dat al gedaan? Dan zal het systeem dat netjes aangeven en verandert er niks. Is dat nog niet gedaan, toets Y en Enter.

Stap 2: Installeer de libraries

Je kunt op twee manieren de libraries installeren:

Met behulp van ‘git’

 

Handmatig, door de bestanden te downloaden van GitHub met wget.

Let op: de bestanden worden gedownload in de folder waar je je op dat moment bevindt!

 

Voorbeeldscript

Als de installatie voltooid is, kun je met een Python-script de sensor uitlezen. Adafruit heeft een voorbeeldscript gemaakt, dat je als volgt kunt aanmaken:

Stap 1: Open een nieuw document in Nano

Je opent nu een nieuw document met de naam DHT22voorbeeld.py in de Nano-editor.

Stap 2: Kopieer en plak het script

Kopieer en plak de volgende code. In het script wordt uitgegaan van de aansluiting van de DHT22 op GPIO pin 4.

Stap 3: Opslaan

Sla het script op met Ctrl + X, Y en Enter.

Stap 4: Draai het script

Het script kun je uitvoeren met het volgende commando:

 

Lees verder in Deel 7: De TSL2561-sensor aansluiten op de Raspberry Pi Zero.

Deel 5: De blauwdruk voor mijn ‘Things’ en sensors

Het Internet of Things bestaat grotendeels uit apparaten die iets meten. Met behulp van sensors dus. Die sensors kunnen licht meten, temperatuur, vochtigheid, de hoeveelheid regen, en ga zo maar door. Het IoT bestaat ook uit apparaten die zelfstandig iets kunnen: een twitterbericht uitprinten via een bonnenprinter, een slot openen, een kachel aanzetten of bijvoorbeeld de rolluiken sluiten. Voordat je hiermee aan de slag gaat, is het slim om de vraag te stellen: wat wil je precies doen?

De blauwdruk

Voordat ik dieper inga op het aansluiten van de sensors en slimme apparaten die ik heb gebruikt of wil gaan gebruiken, leg ik uit welke sensors ik heb gekozen en waarom. Een soort blauwdruk dus van mijn plannen.

Sensors

Om te beginnen: de sensors. Een aantal zaken is niet alleen nuttig of leuk om te weten, het is ook de basis voor de automatisering van je huis. Ik wilde de volgende dingen weten:

  • De temperatuur
  • De luchtvochtigheid
  • De lichtintensiteit
  • De hoeveelheid koolmonoxide
  • Beweging in huis

Ik heb voor de temperatuur en de luchtvochtigheid voor een gecombineerde sensor gekozen. Het is de DHT22, een digitale sensor, die vrij nauwkeurig metingen verricht. Voor de lichtintensiteit heb ik gekozen voor de TSL2561, een sensor die niet alleen zichtbaar licht meet, maar ook infrarood licht. Ook dit is een digitale sensor.

Voor de koolmonoxide heb ik nog geen sensor in huis en ook de bewegingssensor is nog niet besteld. Ik wilde het niet meteen te ingewikkeld maken.

Automatisering

Als je sensors hebt die dingen meten, wil je ook dat op basis van die metingen iets wordt gedaan (een ‘proces’ wordt aangestuurd). In mijn geval is dat vrij eenvoudig: ik wil dat de lichten in mijn werkkamer aangaan, zodra de hoeveelheid licht onder een bepaalde lux-waarde komt. Aangezien ik geen Philips Hue-lampen wil aanschaffen – vanwege de pittige prijs voor alleen al een startset – moest ik een oplossing verzinnen voor mijn bestaande lampen.

Die oplossing heb ik gevonden in de KlikAanKlikUit-systemen (KaKu). Het systeem werkt vrij simpel: met een afstandsbediening kun je een speciale stekker aan- en uitzetten (en dus ook een lamp in- of uitschakelen). Ook zijn er bepaalde stekkers die lampen kunnen dimmen. Daarmee zijn je lampen ineens iets slimmer geworden. Maar hoe stuur je zo’n signaal naar een lamp als je geen afstandsbediening hebt? Sterker nog: hoe doe je dit geautomatiseerd? KaKu zelf heeft een speciaal basisstation (een bridge) die dit mogelijk maakt. Maar ik wil niet weer een apparaat erbij kopen dat niet met de andere apparaten praat.

Om toch de stekkers (en dus de verlichting) te kunnen bedienen kun je met de Raspberry Pi het signaal versturen naar de stekker. Dat signaal wordt op een bepaalde golflengte uitgestuurd. In het geval van de KaKu (en in heel veel andere gevallen, maar daarover later meer) is dat 433 Mhz. Voor de Pi heb je daar een handig setje voor: een 433 MHz-zender die je voor een prikkie kunt aanschaffen.

Platforms

Naast het 433 Mhz-platform waarop veel KaKu-producten werken, zijn er nog andere platforms. KaKu is eenrichtingsverkeer: een apparaat geeft niet aan of hij aan of uit staat. Wil je dat wel, dan is er ook tweerichtingsverkeer mogelijk. Dat werkt op een andere frequentie, 866 MHz. KaKu heeft deze producten ook, maar die zijn wel wat duurder.

Daarnaast is er het Z-Wave-platform, dat op weer een andere frequentie werkt (2,4 GHz). Ook zijn er platforms op basis van bluetooth, NFC, RFiD,  en ZigBee. En daarmee is de lijst nog lang niet compleet. Wederom: om het niet te moeilijk te maken, richt ik me in eerste instantie op het 433 Mhz-platform. Andere platforms komen misschien later aan bod.

ESP8266

Naast het zenden van signalen via speciale frequenties, is het ook mogelijk om via het wifi-netwerk signalen te versturen. En naast het 433 MHz-platform, wil ik me daar ook op richten. De reden: de apparaten waarmee je dit kunt doen zijn spotgoedkoop. Voor een paar dollar heb je een apparaat dat met je wifi-netwerk verbonden is en opdrachten kan ontvangen of versturen.

De basis is de ESP8266-chip: een chip met ingebouwde wifi-mogelijkheden. Een van mijn plannen is het namaken van een Philips Hue-lamp met behulp van deze chip en een LED-strip. Dat maakt het mogelijk om mijn zelfgebouwde Hue-lamp aan te sturen via HomeKit en Homebridge.

Tips en inspiratie

Hoe kun je voor jezelf bepalen wat je nodig hebt en beter nog: hoe kom je achter mogelijkheden die je zelf nog niet had bedacht? Hieronder een aantal websites die je inspiratie kunnen geven of waar je producten kunt bestellen. Het belangrijkste is eigenlijk dat er geen grenzen zijn en dat je je fantasie gebruikt. En dat is eigenlijk alleen maar heel erg leuk!

  • Kiwi Electronics – een uitstekende webwinkel met een ruim assortiment.
  • Adafruit – maker van veel producten, met veel aandacht voor projecten.
  • Hackaday – verzameling van projecten die tot de verbeelding spreken.
  • Raspberry Pi Foundation – verzameling van projecten op basis van de Pi.
  • Hackster.io – verzameling van projecten, van robots tot smart meubilair.

Lees verder in Deel 6: De DHT22-sensor aansluiten op de Raspberry Pi Zero.

Deel 4: Installeren Homebridge op Raspberry Pi Zero

Als je mijn eerdere blogs hebt gevolgd (deel 1 en 2) dan heb je nu een Pi die draait op Raspbian, goed geconfigureerd is en verbonden is met je wifi-netwerk. En dan kun je pas echt aan de slag.

Allereerst: toegang via SSH

Het is altijd fijner om vanaf je ‘echte’ computer te kunnen werken op je Raspberry Pi. Open Terminal als je een Mac gebruikt, als je Windows gebruikt, download dan Putty, en tik onderstaande commando in. Pas het ip-adres aan naar het ip-adres van je Pi. Heb je de username veranderd op je Pi, pas die dan ook aan (in dit voorbeeld is pi de user).

Er wordt nu gevraagd om je wachtwoord. Let op: er verschijnen geen tekens of sterretjes!

Zodra de verbinding is opgezet werk je ‘van afstand’ op de Pi.

Homebridge installeren

Op een ‘gewone’ Raspberry Pi is het enorm simpel om Homebridge te installeren, maar op een Pi Zero is het net even wat ingewikkelder. Voor dit stappenplan heb ik gebruik gemaakt van de tutorial van de maker van Homebridge. Waar nodig heb ik deze aangepast voor de Pi Zero (W).

Stap 1: Installeer ‘git’ en ‘make’:

Stap 2: Installeer de laatste versie van Node.js. Ga hiervoor naar de website van Node.js en zoek de laatste versie voor ARMv6 op. Kopieer de link naar de laatste versie (download het bestand dus niet) en tik wget in en plak vervolgens de link. Voorbeeld:

Pak het gedownloade bestand (de tarball) vervolgens uit. Maak een nieuwe directory /opt/node aan en kopieer de bestanden naar die directory. Elke regel is een nieuw commando dat gevolgd moet worden door Enter! 

Zorg er vervolgens voor dat updates goed verwerkt worden:

Stap 3: Installeer de vereiste pakketten:

Stap 4: Installeer Homebridge. Dit kan een behoorlijke tijd in beslag nemen. Blijf geduldig wachten en zet bijvoorbeeld even koffie. Ook hier geldt: elke regel is een nieuw commando dat gevolgd moet worden door Enter! 

Stap 5: Start Homebridge.

Na een aantal waarschuwingen (die je kunt negeren) start Homebridge op. Nu is het tijd om je iPad of iPhone te pakken en de Woning-app op te starten. Je kunt nu Homebridge a.k.a. je Raspberry Pi toevoegen.

Aangezien er nog geen plugins geïnstalleerd zijn, zul je er nog niet veel mee kunnen, maar de basis is gelegd. Alvast bekijken welke plugins er zijn? Dat kan hier!

Lees verder in Deel 5: De blauwdruk voor mijn ‘Things’ en sensors.

Deel 3: Home automation (domotica) met een Raspberry Pi Zero

Zoals ik al in de introductie schreef had ik altijd zo mijn bedenkingen bij zelfdenkende koelkasten of slimme thermometers die je een push-bericht sturen als de kip in de oven gaar is. Tot ik bij een vriend langs ging die nuttige toepassingen had bedacht. Home automation, ook wel domotica genoemd.

De toepassing van slimme apparaten in huis

Slimme apparaten kunnen het leven makkelijker maken. Ze kunnen bijvoorbeeld met één klik op de knop je hele huis ‘instellen’ als je lekker een filmpje wil kijken. Maar het draait niet alleen om home automation. Slimme apparaten kunnen je huis veiliger maken of zorgen voor energiebesparing. De basis voor al die apparaten wordt gelegd met sensors.

Sensors meten bijvoorbeeld de lichtintensiteit (lux-waarde) en het systeem kan vervolgens op basis daarvan besluiten de lichten in huis aan of uit te zetten. Zo blijft er nooit een lamp branden als de zon fel schijnt. Een ander voorbeeld is het inschakelen van de centrale verwarming als een sensor registreert dat de temperatuur in huis onder de 19°C is én een andere sensor registreert dat er mensen in het huis zijn. En dit is nog maar het topje van de ijsberg.

Nest Thermostaat
Persfoto van de Nest Thermostaat, via: https://nest.com/nl/press/#product-images

Ik besloot dat ik ook wel eens wilde kijken hoe ik mijn huis ‘smart’ kon maken.

Welk systeem kies je?

Er zijn allerlei verschillende systemen om je huis slim te maken. Als Apple-liefhebber was ik op de hoogte van HomeKit – een app van Apple die het mogelijk maakt om vanaf je iPhone of iPad de home automation aan te sturen. Het is met HomeKit bijvoorbeeld mogelijk om de Hue-lampen van Philips te gebruiken.

Er zijn tientallen aanbieders van slimme producten die je met een app op je telefoon kan aansturen. Om er een paar te noemen: Elgato, Philips, KlikAanKlikUit en bijvoorbeeld NEST.

Er is echter een aantal grote nadelen. De wirwar van aanbieders zorgt ook voor een wirwar van apps op je telefoon. Bovendien ‘praten’ niet alle systemen met elkaar, omdat ze met verschillende protocollen werken. Daarnaast zijn deze systemen vaak niet goedkoop en in sommige gevallen worden ze niet (volledig) ondersteund door HomeKit.

Enter Homebridge. Homebridge is een gratis softwarepakket dat ontwikkeld is om met HomeKit slimme apparaten aan te sturen. En dan hebben we het niet alleen over de slimme lampen van Philips of de schakelaars van KlikAanKlikUit of Toon, de slimme thermostaat. We hebben het dan ook over zelfgebouwde apparaten of sensors. Bovendien maakt Homebridge het mogelijk om apparaten die eigenlijk niet door HomeKit worden ondersteund tóch te gebruiken. En dan wordt home automation plots erg interessant.

Mijn eigen Internet of Things

Ik besloot de Raspberry Pi Zero, die ik in een opwelling had gekocht toen ik de Zero W bestelde, te gaan gebruiken om mijn eigen Internet der Dingen op te tuigen en mijn huis – samen met mijn telefoon – ‘smart’ te maken. Nu woon ik een huis uit begin 20e eeuw, waardoor ik bijvoorbeeld geen centrale verwarming heb. Dat beperkt mijn mogelijkheden. Anderzijds is het een extra uitdaging om zelfs een oud huis slimmer te maken door zelf nieuwe oplossingen te bedenken.

Ik heb de keuze gemaakt voor een Raspberry Pi Zero, Homebridge en Apple’s HomeKit, maar er zijn natuurlijk diverse andere softwarepakketten en minicomputers waarmee je hetzelfde kunt bereiken. In deze serie blogs wil ik laten zien hoe ik mijn eigen Internet der Dingen vormgeef. Tegelijkertijd fungeert het blog als een soort logboek waarin ik vastleg tegen welke problemen ik aanloop en welke oplossingen ik heb gevonden. Ik hoop dat ik daarmee ook anderen kan helpen die tegen dezelfde problemen aanlopen.

Lees verder in Deel 4: Installeren Homebridge op Raspberry Pi Zero

Deel 2: Installeren Raspbian op Raspberry Pi Zero

Je hebt een Raspberry Pi gekocht en wil er mee aan de slag. Hoe ga je te werk?

Een computer kan niks zonder een besturingssysteem. Dat moet je er dus op installeren. En dat gaat net even wat anders dan op een Windows-computer of een Mac. Het besturingssysteem voor een Pi staat namelijk op een micro sd-kaart.

Kopieer image naar sd-kaart

Allereerst: er zijn diverse ‘smaken’ besturingssystemen die je op de Pi kunt zetten.  De uitgebreide uitleg daarvan kun je vinden op de website van de Raspberry Pi Foundation. Omdat ik het niet nodeloos ingewikkeld wil maken beperk ik me tot Raspbian. Dat is een versie van het Linux-OS Debian en is het officiële besturingssysteem van de Raspberry Pi Foundation.

Raspbian heb je in twee smaken: een mét een grafische interface en eentje zonder. Begin je net met een Pi? Kies dan voor Raspbian met Pixel (de grafische interface). Ben je wat meer ervaren, kies dan voor Raspbian Jessie Lite (alleen een command line interface, CLI).

Ik heb gekozen voor Raspbian Jessie Lite, omdat ik de Pi toch zonder beeldscherm en toetsenbord ga gebruiken en dus ook geen grafische interface nodig heb. Download de image en zet vervolgens deze image op de sd-kaart (dit wordt ook wel ‘flashen’ genoemd). Ik heb gebruik gemaakt van Etcher, een eenvoudige, gratis tool waarmee je dit snel en simpel kunt doen.

Volg eenvoudigweg de stappen die Etcher aangeeft. Als het kopiëren de image voor elkaar is, haal je de sd-kaart uit je computer en steek je die in de Pi. Sluit een toetsenbord, een beeldscherm en de voeding aan en je zal zien dat de Pi opstart. Heb je gekozen voor Raspbian Jessie Lite dan is het handig om de volgende configuratiestappen te doorlopen.

Configuratie van Raspbian

Stap 1: Start de configuratie van Raspbian vanaf de command line:

Stap 2: Stel je toetsenbord, tijdzone en taal in.

Stap 3: Activeer de toegang via SSH. Ga naar Advanced Options → SSH. Hiermee kun je vanaf een andere computer inloggen op je Pi. Dat is bijvoorbeeld handig als je je Pi – zoals ik – zonder monitor en toetsenbord/muis wil gebruiken.

Stap 4: Maak alle beschikbare ruimte op je sd-kaart beschikbaar. Kies voor optie 1: Expand filesystem. Dit zorgt ervoor dat je alle ruimte op je sd-kaart kunt benutten.

Stap 5: Verander het standaardwachtwoord. Vanuit veiligheidsoverwegingen is dit altijd verstandig.

Stap 6: Verander de hostname. De hostname is de naam waarop de Pi in je netwerk zichtbaar is. Als je meerdere Pi’s hebt is het handig om ze op deze manier uit elkaar te kunnen houden.

Stap 7: Finish → Reboot.

Als de Pi opnieuw is opgestart is het tijd voor het aansluiten van de Pi op je wifi-netwerk.

Configureer toegang via wifi

Stap 1: Controleer of je wifi-dongle herkend wordt (sla deze stap over als je een Zero W hebt):

Als je iets als onderstaande terugkrijgt, dan is de dongle herkend. Let op de tekst: wlan0.

Stap 2: Pas het bestand aan waar de wifi-instellingen zijn opgeslagen:

Ga helemaal naar beneden en voeg vervolgens de volgende regels toe. Vul daar de juiste naam van je netwerk in en je wachtwoord:

Stap 3: Sla het bestand op: Ctrl + X → Y → Enter.

Stap 4: Herstart. Start de Pi opnieuw met het volgende commando. Nadat de Pi is opgestart zul je zien dat je verbinding hebt gemaakt met je wifi-netwerk.

Om te controleren of de verbinding daadwerkelijk tot stand is gekomen kun je controleren met dit commando. Bij ESSID zie je – als alles goed is gegaan – de naam van je netwerk.

Voor uitgebreidere informatie over het instellen van wifi op je Pi kun je hier kijken.

Updaten en bijwerken

Voordat je met de Pi aan de slag kunt is het verstandig eerste de laatste updates te installeren. Dat doe je met de volgende commando’s:

Met dit commando ververs je de lijsten met wijzigingen.

Met dit commando installeer je de laatste updates. Type ‘Y’ wanneer je gevraagd wordt of je deze updates wil installeren.

Als dit proces is afgerond is het verstandig je Pi even opnieuw te starten. Daarna is je Pi klaar voor gebruik.

Lees verder in Deel 3: Home automation (domotica) met een Raspberry Pi Zero.

Deel 1: Raspberry Pi Zero (W)

Eind februari kwam de Raspberry Pi Foundation met een nieuwe minicomputer: de Raspberry Pi Zero W. Een computer die kleiner is dan een bankpasje, maar tegelijkertijd krachtig genoeg is voor een enorme diversiteit aan taken. Bovendien heeft de Zero W nu ook de beschikking over wifi en bluetooth.

Op de dag dat de Raspberry Pi Zero W uitkwam heb ik er meteen eentje besteld. Ik had al een wat oudere Raspberry Pi B+ waar ik wat mee had geëxperimenteerd, maar die uiteindelijk vooral dienst deed als VPN-server. Ik wilde wel verder met experimenteren, maar vond een paar tientjes voor een beetje aanrommelen toch wat te duur. Tot de Zero W uitkwam.

Raspberry Pi Zero
Afbeelding: jsmith7342 – Eigen werk, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=45334481

Al eerder was er een Zero uitgekomen, maar daar was nauwelijks aan te komen, omdat de vraag enorm was. Dat was mede te danken aan de prijs van slechts 5 euro. Toch was er een veelgehoorde klacht: die versie van de Zero had niet de beschikking over wifi en bluetooth. Dat beperkte de mogelijkheden van de Pi behoorlijk.

En toen kwam er een nieuwe Zero. De Zero W. Iets duurder (10 euro), maar nog steeds een stuk interessanter dan ruim 40 euro voor een ‘echte’ Pi. Ik heb er direct eentje besteld. En ook maar meteen een Zero (zonder W.) in het kader van: waarom niet?

Voor de Zero W had ik al direct een project in gedachten: een MagicMirror. Een spiegel waarop je bijvoorbeeld het weer, de reistijd naar je werk of het laatste nieuws kunt laten zien. Voor de andere Zero had ik nog geen plannen. Totdat ik bij een vriend was die bezig was met domotica, kort gezegd: het automatiseren van je huis. Dat was het ideale project voor de Pi Zero.

Lees verder in Deel 2: Installeren Raspbian op Raspberry Pi Zero.

Voor het volledigheid volgen hieronder de specificaties van de Raspberry Pi Zero W. De ‘gewone’ Zero (die in 2017 een kleine update kreeg) is praktisch hetzelfde, maar heeft geen wireless en bluetooth.

  • 802.11 b/g/n wireless LAN
  • Bluetooth 4.1
  • Bluetooth Low Energy (BLE)
  • 1GHz, single-core CPU
  • 512MB RAM
  • Mini HDMI and USB On-The-Go ports
  • Micro USB power
  • HAT-compatible 40-pin header
  • Composite video and reset headers
  • CSI camera connector

Het Internet of Things – een introductie

Internet of Things

Het Internet of Things ontwikkelt zich stormachtig, maar wat is het nu precies? Hoe werkt het? En wat kun je er eigenlijk mee?

De term Internet of Things (IoT) stamt al uit 1985. Volgens Wikipedia werd de term voor het eerst gebruikt door Peter Lewis, die een toespraak hield bij de Amerikaanse FCC, de telecomwaakhond. In zijn toespraak zegt hij dat het Internet of Things…

… de integratie is tussen mensen, processen en technologie, met behulp van apparaten die met elkaar verbonden zijn en met sensoren die dergelijke apparaten kunnen aansturen en monitoren’. Peter Lewis

Dat klinkt nogal vaag, maar met een concreet voorbeeld wordt al snel duidelijk wat Lewis hiermee bedoelde. Stel je voor dat je een koelkast hebt die met het internet verbonden is. Je pakt een pak melk uit de koelkast, schenkt een glas in en gooit het lege pak vervolgens weg. De koelkast registreert dat de melk op is en bestelt via internet zelfstandig een nieuw pak melk bij bijvoorbeeld de supermarkt. 

De koelkast (de technologie, het ‘ding’) bestelt zelfstandig (het proces) een pak melk, omdat je de laatste melk hebt opgemaakt (mens).

Nu is dat nogal een triviaal voorbeeld. Waarom zou je dit willen? Wat is de toegevoegde waarde? Die vraag heb ik mezelf ook meermaals gesteld. Daar kwam bij dat de technologie enkele jaren terug nog best prijzig was en mijn kennis van hardware beperkt was.

Toch heb ik besloten me eens te verdiepen in de wereld van het Internet of Things, nadat de Raspberry Pi Foundation een nieuwe ‘minicomputer’ op de markt bracht, die slechts 5 euro kost. In een reeks blogs leg ik uit wat ik heb gedaan en hoe ik mijn eigen ‘Internet der Dingen’ heb opgezet. Bovendien ga ik in op de praktische toepassing ervan. Ook geef ik bij elk onderwerp de noodzakelijke codes, commando’s, configuratie-instellingen en links naar handige websites.