Hoe we onze gezondheid verbeteren dankzij het IoT en digitale kanaries
Het Internet of Things (IoT) draait rond het idee dat alledaagse objecten voorzien worden van sensoren, software en een draadloze verbinding om data over zichzelf en hun omgeving. In deze blogpost vertellen we je hoe we IoT-technologie gebruikten om een digitale transformatie te verzorgen voor één van onze klanten en zo de gezondheid van mensen op werkplekken te verbeteren.
Een kanarietje uit de koolmijnen in een modern jasje
Onze klant IDEWE is een externe dienst voor preventie en bescherming op het werk. IDEWE richt zich op het verbeteren van de werkomgeving van haar klanten. Om IDEWE daarbij te helpen, hebben we een applicatie voor hen gebouwd die hen helpt met het onderzoeken van externe blootstellingen. De applicatie, die gebaseerd is op IoT, verzamelt data van sensoren op verschillende locaties om zo maatregelen op lange termijn te visualiseren en genomen acties in kaart te brengen. IDEWE had immers een oplossing nodig waarbij er sensoren konden geplaatst worden op een niet-invasieve manier, en een dashboard dat gemakkelijk uitgelezen kon worden zonder al te veel configuratie.
Met onze applicatie is IDEWE in staat om continu metingen te doen en aanbevelingen te formuleren om de gezondheid van mensen te verbeteren in real-time. Hoe werkt het precies? IDEWE maakt gebruik van een toestel met de naam 'Little Lilly' in de vorm van een klein geel vogeltje. Dankzij sensoren is een Little Lilly in staat om CO₂-waarden, temperatuur, luchtvochtigheid en toxische stoffen te meten. Het vogeltje beschikt ook over een indicatieledje om aan te geven of de gemeten CO₂-waarden hoog (rood licht) of laag (groen licht) zijn. De vorm van het toestel is een knipoog naar de kanaries die vroeger in koolmijnen werden ingezet om mijnwerkers te waarschuwen wanneer de luchtkwaliteit daalde.
Onze applicatie verzamelt de data uit Little Lilly's en visualiseert deze data in een dashboard dat kan filteren op locatie, periode of sensor. Als er acties worden uitgevoerd, zoals het openen van een raam of het aanzetten van de airconditioning wanneer een Little Lilly een hoge CO₂-waarde rapporteert, worden deze ook in het dashboard weergegeven. Op die manier kunnen gebruikers steeds onmiddellijk zien welk effect hun acties hebben op de metingen.
De rest van deze blogpost beschrijft de technische kant van de zaken, namelijk hoe we ervoor zorgden dat we de data van Little Lilly's veilig in een dataplatform kunnen pompen met de nodige analytische dashboards voor gebruik van onze klant IDEWE.
MQTT als een lichtgewicht communicatieprotocol
In sommige situaties waarin (IoT) toestellen worden ingezet, zijn de communicatiekanalen of netwerken onbetrouwbaar terwijl er nog steeds nood is aan betrouwbare communicatie. Je kan bijvoorbeeld denken aan een auto vol sensoren die door een tunnel rijdt en tijdelijk de verbinding verliest. Bovendien zijn IoT-toestellen gewoonlijk klein en beperkt in resources zoals opslag en batterijcapaciteit, waardoor er nood is aan een lichtgewicht communicatieprotocol.
Omwille van deze redenen wordt MQTT gebruikt als communicatieprotocol. MQTT is een OASIS standard messaging protocol voor IoT en is ontworpen als een lichtgewicht publish/subscribe berichtgeving om kleine toestellen met lage netwerkbandbreedte en beperkte capaciteiten toch mogelijk te maken. MQTT schaalt naar miljoenen toestellen. Met persistent sessies zorgt MQTT voor betrouwbare berichtgeving op onbetrouwbare netwerken. De oplossing is een protocol bovenop TCP dat onafhankelijk is van het type netwerk dat wordt gebruikt (Wi-Fi, 4G/5G, LoRaWAN, ...).
De onderstaande afbeelding laat zien hoe MQTT gebruikmaakt van een broker om de publish/subscribe communicatie mogelijk te maken. Let er wel op dat deze MQTT-broker niet het single point of failure wordt, een hoge beschikbaarheid kent en goed kan schalen. Voor ons project bij IDEWE gebruikten we de Google IoT Core oplossing, die standaard een volledig beheerde MQTT-broker aanbiedt. IoT Core draait op Googles automatisch schalende serverless infrastructuur.
Security is van het grootste belang
Met meer en meer data dat elke dag wordt vergaard door meer en meer toestellen in ons dagelijkse leven, is security een onderwerp dat belangrijker is dan ooit bij het opzetten van een IoT-oplossing.
- IoT-toestellen zijn verspreid over heel wat verschillende soorten ongecontroleerde omgevingen, waardoor ze kwetsbaar zijn voor aanvallen.
- Sensoren van IoT-toestellen verzamelen heel wat data over de auto's, huizen, werkplekken of openbare plekken. Niet al deze data is bedoeld voor de ogen van Jan en alleman en moet dus beschermd worden als gevoelige data.
- Datalekken kunnen enorme schade toebrengen aan de reputaties van getroffen bedrijven.
Op vlak van security is het altijd zaak om maatregelen te treffen op verschillende niveaus, zodat het zo moeilijk mogelijk wordt gemaakt om met succes een aanval uit te voeren. Er zijn 3 niveaus waarop een IoT-oplossing beveiligd kan worden:
- Netwerkniveau: Eén manier om een veilige en betrouwbare verbinding te voorzien is om een fysiek beveiligd netwerk of een VPN te gebruiken voor de communicatie tussen clients en brokers. Deze oplossing is geschikt voor gatewayapplicaties waarbij de gateway verbonden is met toestellen aan de ene kant en de MQTT-broker aan de andere kant. In een meer openbare omgeving is een fysiek beveiligd netwerk of VPN niet altijd een optie. In dat geval zijn de andere niveaus van beveiliging des te belangrijker.
- Transportniveau: Als het vertrouwelijk houden van informatie een belangrijk doel is, wordt er vaak gebruikgemaakt van TLS/SSL voor de versleuteling van het transport van de informatie. Deze methode is een veilige en bewezen manier om er zeker van te zijn dat de informatie niet uitgelezen of veranderd kan worden tijdens de verzending ervan. Bovendien biedt het client-certificate authenticatie om de identiteit van beide kanten te verifiëren.
- Applicatieniveau: Op het transportniveau wordt communicatie versleuteld en identiteiten bevestigd. Het MQTT-protocol biedt ook een clientidentificatie en gebruikersnaam/paswoord combinaties om toestellen te authenticeren op applicatieniveau. Deze eigenschappen worden door het protocol zelf voorzien. De autorisatie of het beheren van wat elk toestel mag doen, wordt gedefinieerd door de specifieke implementatie van de broker.
Door het gebruik van het MQTT-protocol kunnen zowel de versleuteling op transportniveau als de authenticatie op niveau van de applicatie met protocollen zoals OAuth worden toegepast. Specifiek bij het gebruik van de MQTT-broker van Google IoT Core is het vereist om alle communicatie te versleutelen met TLS, clients te authenticeren met wederzijdse TLS-certificaten en tijdens elke communicatie te authenticeren met een geldig JWT-token dat is ondertekend door het juiste certificaat. Verder kunnen enkel toestellen die gekend zijn binnen de device manager van IoT Core en verbonden zijn aan een gateway (indien je hiervan gebruikmaakt) hun data publiceren.
Dit alles leidt tot een streng beveiligde IoT-omgeving om data vanuit the edge naar de cloud te pushen.
Standardiseer protocollen en berichtformaten voor meer flexibiliteit
Het uitproberen van meerdere types van toestellen en netwerktechnologieën is belangrijk tijdens het ontwerpen en verder laten groeien van een IoT-oplossing. Toestellen evolueren immers voortdurend. Niet vastzitten aan een bepaald toestel of een bepaalde techniek laat je toe om nieuwe mogelijkheden toe te voegen of legacy devices toe te voegen wanneer het nodig is. Sommige types van toestellen of netwerktechnologieën kunnen perfect geschikt zijn voor een specifieke omgeving, maar dan weer totaal niet werken in een andere omgeving. In een kantooromgeving is er bijvoorbeeld wellicht een Wifi of 4G/5G-verbinding beschikbaar, maar in afgelegen gebieden is dit (nog) geen optie. Netwerktechnologieën die zich richten op langeafstandscommunicatie, zoals LoRaWAN, zijn dan nodig.
Dankzij LoRaWAN kan een enkel toestel communiceren over een afstand van 10 tot 20 km (het wereldrecord staat zelf op 700 km). In andere gevallen beschikken toestellen misschien niet over genoeg stroom om Wifi- of 4G/5G-verbindingen mogelijk te maken. In zulke gevallen kan LoRaWAN ook helpen, omdat deze technologie slechts weinig stroom verbruikt tijdens het communiceren. Voor legacy devices die heel oude of eigen communicatietechnologieën gebruiken, kan een oplossing die toestellen en een gateway combineert de juiste zijn. De gateway is dan verantwoordelijk voor het vertalen van de oude communicatie-informatie naar een standaardprotocol zoals MQTT.
Voor het Little Lilly project bij IDEWE, standaardiseerden we enkel het communicatieprotocol en het format van het bericht dat wordt opgenomen. We behielden volledige flexibiliteit wat betreft het type toestel en de netwerktechnologie, met als enige voorwaarde het gebruik van MQTT en een vooraf afgesproken berichtenstructuur. Hieronder staat een voorbeeld van een berichtenstructuur:
{
"version": "2.0.0",
"deviceId": "Li074726",
"timestampEpoch": "1643100924.268599987",
"timestampUtc": "2022-01-25T08:55:24.268600Z",
"metrics": [
{
"name": "co2",
"value": 805,
"unit": "ppm"
},
{
"name": "temperature",
"value": 78,
"unit": "celsius"
},
{
"name": "humidity",
"value": 29,
"unit": "percent"
},
{
"name": "tvoc",
"value": 78,
"unit": "ppb"
}
]
}
Merk op dat dit maar een eenvoudig voorbeeld is. Afhankelijk van de use cases die je wil ondersteunen is een ander formaat misschien aangewezen. Deze voorbeeldboodschap bevat de gerapporteerde CO₂-waarde, het tijdstip waarop deze waarde werd gemeten, en een identificatie om te weten waar of op welke Little Lilly de waarde werd gemeten.
Bovenop de eigenlijke structuur van de boodschap vereist MQTT ook een topic waarop de boodschappen gepubliceerd moeten worden. De manier waarop topics gestructureerd zijn, noemen we een topic namespace. Deze topic namespace moet ook onderdeel zijn van de vooraf afgesproken structuur. Bij gebruik van Google IoT Core kan een toestel zijn meetdata bijvoorbeeld publiceren op een topic met de structuur `/devices/Li074715/events` en zijn statusdata op een topic met de structuur `/devices/Li074715/state`. Google legt zelf geen boodschapstructuur op aan gebruikers.
Vernieuw je business inzichten en diensten door IoT-data en bedrijfsgegevens te combineren
Een IoT-oplossing laat ons toe om IoT-toestelling te plaatsen waar je maar wil en bijvoorbeeld de huidige CO₂-waarden te meten door met een mobiel toestel te 'luisteren' naar de MQTT-broker. Als we daar stoppen, benutten we echter niet het volle potentieel van IoT. Een volgende stap is om inzicht te krijgen in metingen over de tijd heen. Daarvoor hebben we persistente data nodig en toegang tot de historische data van CO₂-metingen.
MQTT is een lichtgewicht protocol en ontworpen voor een hoge mate van schaalbaarheid. Daarom biedt MQTT geen blijvende persistentie van MQTT-boodschappen aan, maar worden de boodschappen onmiddellijk doorgeduwd naar de toestellen die de boodschappen consumeren. Er wordt slechts een beperkte buffer ondersteund zodat er steeds betrouwbare communicatie mogelijk is.
Google IoT Core lost dit probleem op aan de hand van een MQTT-brug, die automatisch alle MQTT-boodschappen op een blijvende pub/sub-oplossing publiceert, zijnde Google Pub/Sub. Dit is een pub/sub-component voor algemeen gebruik en kan dus gemakkelijk gekoppeld worden aan andere software die je gebruikt.
Voor het project bij IDEWE liet de MQTT-brug ons toe om de meetdata in een dataplatform over te hevelen. Deze data wordt dan gevisualiseerd in een dashboard om de evolutie van CO₂-waarden te bekijken in scholen, kantoren, restaurants en andere werkplekken.
We gebruikten een combinatie van Google Dataflow, gebaseerd op het Apache Beam programmeermodel, Google BigQuery en Google Data Studio om dit dashboard op te bouwen. Dankzij deze volledig managed services van Google is het opzetten van een toekomstvaste IoT en data-architectuur vrij eenvoudig. Het is ook niet zo moeilijk om uitbreidingen op te zetten voor bijkomende metingen en sensoren (temperatuur, vochtigheid, licht, geluid, ...), of zelfs andere IoT-toestellen.
De IoT-data als onderdeel van een bedrijfsdataplatform laat het bedrijf toe om een volgende stap te zetten en deze data te combineren met andere datasets uit het bedrijf. Het ontwerpen van de data als een product of groep van producten in een data mesh wordt dan belangrijk, maar dat is een onderwerp voor een andere keer. ;)
Conclusie
Dankzij de bovenstaande oplossing heeft ACA Group IDEWE geholpen om hun bestaande diensten te verbeteren of zelfs volledig nieuwe diensten te introduceren aan hun klanten. Het eindresultaat is een digitale transformatie waarbij het welzijn en de gezondheid van medewerkers verbeterd worden dankzij nieuwe technologieën. Het gebruik van IoT voor het monitoren van onze gezondheid staat nog in de kinderschoenen, en er zullen heel wat nieuwe toestellen beschikbaar zijn in de toekomst. Wat wel al een feit is, is dat deze toestellen een gemakkelijke manier zijn voor mensen om hun gezondheid in de gaten te houden en te verbeteren zonder continu aanwezig te moeten zijn. We hebben uit onze verzamelde data kunnen zien dat mensen hun gewoontes aanpassen gebaseerd op deze data en zo hun gezondheidstoestand verbeteren.
Het Internet of Things verandert hoe we wonen, werken en ons ontspannen. Wil je meer weten over deze fascinerende technologie? Neem dan zeker contact met ons op! We zorgen er met plezier voor dat jij een geïnformeerde beslissing kan maken over jouw noden op vlak van IoT.