Teun de slimme thermostaat, workshop 4

Hoofdcategorie: Techniek Categorie: Arduino

Artikelindex

WEBTeun aan het werk

Inleiding

In Workshop 4 wordt Teun pas echt slim. We gaan de slimme thermostaat met het WWW laten praten. Nu hebben we een Internet of Things thermostaat.

Deze Workshop is een vervolg op Workshop 3. We maken voor het MQTT deel van deze workshop gebruik van een extra library "MQTTClient". 



Download hieronder de  MQTTClient library. De files hoeven niet te worden un-zipped! Installeren in de Arduino IDE gaat door middel van Sketch > Include library > Add .ZIP library.

In het laatste deel van deze workshop wordt programmacode besproken die gebruik maakt van het MQTT protocol. De code zelf kun je ook hier downloaden.


Wat is MQTT?

MQTT of: MQ Telemetry Transport is in 1999 bedacht door Dr Andy Stanford-Clark van IBM en Arlen Nipper van Arcom (tegenwoordig Eurotech).

MQTT is een lichtgewicht protocol voor berichten tussen apparaten. De werking is heel simpel: je hebt minimaal drie partijen (apparaten/programma’s) nodig: een zender, een ontvanger en daar tussenin een ‘broker’. De broker is een plek waar de zender de informatie aflevert en de ontvanger de informatie ophaalt. En natuurlijk kan een broker meer dan één zender aan en kunnen meerdere ontvangers dezelfde informatie ophalen. En het kan ook zijn dat één ontvanger de informatie van meerdere ontvangers verzamelt/combineert. De zender en ontvanger hoeven niets van elkaar te weten. Het kunnen verschillende hardwareplatformen zijn die met verschillende programmeertalen werken. Beide apparaten hoeven niet van elkaars bestaan te weten, ze hoeven niet in hetzelfde netwerk te zitten, als de ene er even niet is, dan heeft de andere er niet direct last van. Zolang de broker maar in de lucht is.

brokerMQTT principeWe maken voor de workshop gebruik van een gratis open source broker. Nadeel is dat deze niet altijd even snel is, maar voor de workshop functioneert dit prima. De broker waar we gebruik van maken heet mosquitto.

Wil je meer weten over hoe MQTT precies werkt, kijk dan eens op de webpagina van Mosquitto.

In ons geval hebben we 2 clients , de thermostaat en de webpagina.
Voor de thermostaat geldt:
  • De thermostaat publiceert de gemeten temperatuur en het op de thermostaat ingestelde setpoint.
  • De thermostaat is geabonneerd op het setpoint en de waarde van de button op de webpagina. Deze button kan de controle van de webpagina naar de thermostaat terug geven.
Voor de webpagina geldt:
  • De webpagina publiceert het setpoint en de waarde van de button op de webpagina.
  • De webpagina is geabonneerd op op het setpoint en de gemeten temperatuur van de thermostaat. De gemeten temperatuur wordt op de webpagina in een grafiek weergeven.
Verder geldt nog voor het setpoint:
  • Als de thermostaat de controle heeft wordt op zowel de webpagina als de thermostaat het met de potmeter ingestelde setpoint weergegeven.
  • Wanneer de webpagina de controle heeft wordt het op de webpagina ingestelde setpoint op zowel de thermostaat als op de webpagina weergegeven.
MQTTMQTT communicatie
De controle ligt ofwel bij de webpagina ofwel bij de thermostaat. Waar de controle ligt wordt als volgt bepaald:
  • Met een knop op de webpagina kan vanaf het internet de controle weer naar de thermostaat overgedragen worden.
  • Als de webpagina de controle heeft en er wordt aan de potmeter gedraaid dan neemt de thermostaat automatisch de controle over.
  • Als op de webpagina aan de knop gedraaid wordt neemt de webpagina de controle over.
Het klinkt nogal complex allemaal, maar speel er maar eens mee. Dan wordt het vanzelf duidelijker.

WebpageWebpagina

Lokale webpagina op je laptop.

in de map serverCode die je hier kunt downloaden staan een aantal bestanden die we nu nodig hebben. Kijk de bestanden eens rustig door als je tijd hebt, voor de workshop hoef je deze niet helemaal te begrijpen.

Open het bestand index.html door hierop te klikken. Je krijgt nu een scherm vergelijkbaar met de afbeelding hiernaast te zien.

De grafiek is nog leeg omdat de code nog niet op de Arduino geladen is en er dus geen data naar de broker is gestuurd. Met behulp van deze web pagina kunnen we Teun monitoren en bedienen.