IoT NoT cursus: verschil tussen versies
| Regel 128: | Regel 128: | ||
Het vermogen P is gelijk aan het product van spanning (U) en stroom (I) | Het vermogen P is gelijk aan het product van spanning (U) en stroom (I) | ||
Een vermogen van bijvoorbeeld 60 W is al iets (de gloeilamp van 60 W, kan al heel warm worden). Als je dit vermogen gaat schakelen, moet je iedere keer nakijken dat de schakelaar het vermogen aankan. Op alle toestelletjes staat een kenplaatje waarop je kan lezen hoeveel de maximale stroom is welke erdoor kan lopen. Als je meer vermogen moet schakelen kan je gebruik maken van een relais en SSR die wel de stroom kan schakelen. | Een vermogen van bijvoorbeeld 60 W is al iets (de gloeilamp van 60 W, kan al heel warm worden). Als je dit vermogen gaat schakelen, moet je iedere keer nakijken dat de schakelaar het vermogen aankan. Op alle toestelletjes staat een kenplaatje waarop je kan lezen hoeveel de maximale stroom is welke erdoor kan lopen. | ||
[[file:IoTNoT_shelly_1.jpg|200px]] | |||
Het bovenste toestelletje kan max 16A schakelen. Praktisch zou ik hier ook nooit de volledige stroom mee schakelen, maar eerder max 10 A. Als je meer vermogen moet schakelen kan je gebruik maken van een relais en SSR die wel de stroom kan schakelen. | |||
Niet elke verbruiker is gelijk: een lamp van 500W is niet hetzelfde als een ventilator van 500W. De ventilator zal je met een stevigere schakelaar moeten schakelen omdat dit een inductieve last is. ALs je zelf geen kennis hebt op dit domein, werk samen met iemand die dit wel heeft. | |||
De oefeningen hieronder zijn niet veilig voor studenten onder 18 jaar. Ik geef deze cursus enkel aan volwassenen. | De oefeningen hieronder zijn niet veilig voor studenten onder 18 jaar. Ik geef deze cursus enkel aan volwassenen. | ||
Het loont de moeite om op voorhand een schema te maken van wat je wil bereiken. Hieronder staat het voorbeeld schema van een Shelly | Het loont de moeite om op voorhand een schema te maken van wat je wil bereiken. Hieronder staat het voorbeeld schema van een Shelly | ||
=Oefeningen= | =Oefeningen= | ||
Versie van 9 mrt 2024 23:18
Welkom
Deze cursus is de handleiding bij de opleiding IoT op 12 maart 2024 van Steven Mertens. Ze dient vooral als een leidraad voor een aantal oefeningen.
Afbakening
IoT of Internet of Things is een enorm studiedomein. Alles wat maar enigszins aan het internet hangt en communiceert met een server kan je al als IoT apparaat bekijken.
CHat GPT heeft er het volgende over te zeggen: IoT heeft de potentie om onze huizen, steden, industrieën en zelfs onze gezondheidszorg te transformeren door objecten en apparaten te verbinden en hen in staat te stellen gegevens te verzamelen, te communiceren en te handelen op een manier die voorheen ondenkbaar was.
Ik kan ChatGPT geen ongelijk geven, maar in deze cursus kunnen we niet op alles ingaan. We gaan eerst kort kijken naar welke componenten IoT nodig heeft en daarna maken we zelf een aantal eenvoudige voorbeelden. We een aantal beperkingen toepassen op deze cursus zodat we de bomen door het bos kunnen blijven zien.
NoT heb ik zelf uitgevonden en staat voor Netwerk of Things. IoT zonder internet maar met een eigen local server en local netwerk. Ik vind het niet leuk dat de schakelaars die de verwarming bedienen, geconnecteerd zijn met het internet of dat de host van de server kan zien wanneer je in huis bent. Blijkbaar staat sit ook gekend als "Local IoT" of "Private IoT" (lees hier hoe ik dit geleerd heb van chat GPT)
Waar gaan we niet op ingaan
- monitoring van een fleet
- Tegenwoordig zijn bijvoorbeeld (bijna) alle nieuwe auto's verbonden met de servers van hun constructeurs. Naast de simpele (rit)data voor de chauffeurs wordt er ook heel veel andere data meegestuurd. Constructeurs kunnen zo sneller reageren met terugroepacties en de auto's van de toekomst verbeteren. IoT kan ook het gedrag van de fleet beïnvloeden: Tesla heeft met de orkaan Florence in 2018, de capaciteit van de batterijen vergroot zodat de Teslas sneller konden evacueren (artikel). We kennen ook enkele negatieve voorbeelden waar bepaalde oudere toestellen 'kapot' worden gemaakt zodat er nieuwe toestellen moeten gekocht worden (artikel). Soms kan het ook gebeuren omdat de constructeur (bijna) faliet gaat (artikel). Normaal gaan contructeurs dit niet bewust doen, maar iedereen kent wel de term 'planned obsolescence'.
- bijhouden van metadata
- Metadata speelt een belangrijke rol bij het begrijpen, beheren en gebruiken van de enorme hoeveelheid gegevens die door IoT-apparaten worden gegenereerd. Het biedt een belangrijk kader het gebruik van IoT-gegevens. Zeker als je op de metadata AI kan loslaten. Maar hier gaan we niet op ingaan.
Waar gaan we wel op ingaan
- de micro-elektronica bied de mogelijkheid om eenvoudig inputs en outputs aan een netwerk te koppelen. Inputs zijn analoge en digitale sensoren, outputs kunnen lampen, verwarmingen of programma's zijn die iets doen.
- Hoe verloopt de communicatie:
- We kunnen de micro-elektronica rechtstreeks tegen elkaar laten praten. (P2P)
- We kunnen gebruik maken van een eigen server om alles te beheren. (NoT)
- We kunnen een publieke server gebruiken om alles aan elkaar te binden. (IoT)
- Praktisch een keertje de toestelletjes installeren en iets mee maken.
Theorie
Hoe gaat de communicatie
Zonder een volledige cursus datacommunicatie te schrijven, moeten we wel even stilstaan bij hoe de communicatie verloopt. Hoe je het draait of keert IoT en NoT moet kunnen communiceren. In eerste instantie overlopen we de kanalen die ik ken. Daarna gaan we even kort in op de verschillende protocollen.
draadloos
We bespreken niet alle protocollen, maar dit zijn denk ik de belangrijkste
- WIFI: recentelijk zijn er verschillende apparaten op de markt gekomen die verbonden worden met Wifi. Voordeel is dat WIFI een gekend en open protocol is. Je moet meestal ook geen extra infrastructuur voorzien, meestal kan je je de eigen AP's gebruiken. Je moet wel opletten voor de verschillende WIFI snelheden. Niet elk apparaat ondersteund bijvoorbeeld de 5G band.
- Zigbee: (van wikipedie) Zigbee is een open standaard voor draadloze verbindingen tussen apparaten op korte afstand. Het is bedoeld als aanvulling op Bluetooth en Wi-Fi. Het wordt gebruikt voor het doorsturen van sensorgegevens bijvoorbeeld betreffende de gezondheid van een patiënt, of beweging/aanwezigheid van mensen in een ruimte en voor besturing van apparaten. Een Zigbee-verbinding is zeer robuust maar de bandbreedte en de transmissiesnelheid zijn in vergelijking met Bluetooth-, Wi-Fi- en andere draadloze verbindingen, gering. Zigbee is ontworpen voor toepassingen in de domotica, bijvoorbeeld om in een woning of een gebouw met minimale middelen op afstand de dimmers en de aan/uit-schakelaars van de verlichting te bedienen.
- Z-wave: (van wikipedie) Z-Wave is een protocol voor draadloze communicatie dat voornamelijk wordt gebruikt voor domotica. Het is een energiezuinig mesh-netwerk dat gebruik maakt van radiogolven om van apparaat naar apparaat te communiceren waardoor draadloze bediening van huishoudelijke apparaten en andere apparaten mogelijk is, zoals lichtregeling, beveiligingssystemen, thermostaten, ramen, sloten en garagedeuropeners. Net als andere protocollen en systemen die zijn gericht op de markt voor huis- en kantoorautomatisering, kan een Z-Wave-systeem worden bediend via internet vanaf een smartphone, tablet of computer, en lokaal via een slimme luidspreker, draadloze sleutelhanger of een wandschakelaar met een Z-Wave gateway of centraal besturingsapparaat dat zowel als hubcontroller en als portaal naar buiten dient.
- GSM (3G, 4G, 5G): Tegenwoordig kan je redelijk goedkoop een SIM kaart krijgen (zoek op google naar iot SIM card). Een SIM card ondersteund meerdere protocollen, zo kan je eenvoudig sms'en versturen of je kan gebruik maken van de data om een netwerkverdinding te krijgen.
bedraad
- ethernet: Het goed betrouwbare UTP cat5e en hoger kabeltje, natuurlijk moet deze dan aan een netwerk hangen.
- twisted pair bus kabel: hier kunnen verschillende protocolen doorgaan: KNX, RS486, I²C, ISA, Profibus, ...
- PLC: Power line communicatie (en niet programmable logical controller). We kennen het van en gemakkelijke manier om internet over je huis te verspreiden. Maar het kan ook bestaan zonder dat er een IP protocol doorgaat.
protocollen
- MQTT: (van wikipedie) (Message Queuing Telemetry Transport) is een lichtgewicht netwerkprotocol dat berichten tussen apparaten transporteert. Het is gebaseerd op het "publiceer-abonneer" concept. Het protocol werkt meestal via TCP/IP, maar elk netwerkprotocol dat geordende, verliesvrije, bidirectionele verbindingen biedt, kan MQTT ondersteunen. het belangrijkste van MQTT is dat het een soort van postkantoor is. ALs de server een opdracht heeft gegeven en de ontvanger kon niet luisteren, houdt het postkantoor het bericht vast tot de ontvanger het wel leest. Ver in de cursus proberen we erop in te gaan
- HTTP: Een heel gemakkelijk protocol om een status pagina weer te geven
- Websocket/API: Een heel gemakkelijke manier om boodschappen uit te wisselen tussen client en server
- SMS: Heel gemakkelijk om boodschappen te versturen over een GSM netwerk. Heeft ook een groter bereik in vergelijking met dataverkeer.
- OCPP: (van wikipedie) The Open Charge Point Protocol (OCPP) is an application protocol for communication between Electric vehicle (EV) charging stations and a central management system, also known as a charging station network, similar to cell phones and cell phone networks. The original version was written by Joury de Reuver and Franc Buve.
Servers
open source
- Home Assistant: (van wikipedie) een open source platform voor centrale aansturing van slimme apparaten en domotica, met focus op vrijheid en privacy. De software kan zowel als losse software, binnen een container of met een bijbehorend besturingssysteem gebruikt worden.
- openHAB: OpenHab is het meest vergelijkbare alternatief voor Home Assistant. OpenHab is ook een gratis en open-source domotica-oplossing. De releases van OpenHab zijn minder frequent en richten zich op stabiliteit. Het nadeel is dat ze niet altijd de nieuwste producten of moderne UI hebben (bron).
- Homebridge: (van chatGPT) Homebridge is een open-source project dat het mogelijk maakt om slimme apparaten die niet standaard compatibel zijn met het HomeKit-ecosysteem van Apple, toch te integreren en te bedienen via de HomeKit-app op iOS-apparaten zoals iPhones, iPads, en via Siri-spraakopdrachten. HomeKit is het smart home-framework van Apple, maar niet alle slimme apparaten ondersteunen het protocol van HomeKit rechtstreeks. Homebridge fungeert als een brug tussen deze niet-compatibele apparaten en het HomeKit-ecosysteem. Het draait op een computer of Raspberry Pi binnen je thuisnetwerk en biedt een interface waarmee externe plugins kunnen worden toegevoegd om communicatie met verschillende slimme apparaten mogelijk te maken.
- Domoticz: Domoticz is net als Home Assistant en OpenHab gratis en open-source. Het wordt geprogrammeerd in C++ en gebruikt Blockly voor events te behandelen.
closed source
- Homey: (van chatGPT) Homey is een smart home-hub die wordt ontwikkeld door het Nederlandse bedrijf Athom. Het is een apparaat dat fungeert als een centrale hub voor het beheren en automatiseren van verschillende slimme apparaten en systemen binnen je huis. Homey integreert draadloze technologieën zoals Z-Wave, Zigbee, Bluetooth, Wi-Fi en Infrarood, waardoor het compatibel is met een breed scala aan slimme apparaten, waaronder verlichting, thermostaten, beveiligingscamera's, deursloten, sensoren en meer.
- Homekit: HomeKit is het domotica-initiatief van Apple. HomeKit is een standaard voor communicatie tussen apparaten die worden ondersteund door de grotere producenten van "slimme producten". Om de domotica-installatie met HomeKit te laten werken, moet je een Apple TV of iPad in huis hebben die als hub kan fungeren. Een van de kenmerken van HomeKit is dat het lokaal werkt. Hierdoor kunnen apparaten met HomeKit rechtstreeks communiceren met een HomeKit-hub op het lokale netwerk. Om een HomeKit-hub te krijgen, kun je thuis ook de HomeBridge-software op een computer installeren. HomeBridge is ook beschikbaar als add-on voor Home Assistant waarmee Home Assistant kan functioneren als een lokale HomeKit-hub die apparaten rechtstreeks bedient. (bron)
- Google Home: Dit is Google's oplossing voor domotica waarbij de cast-apparaten zoals Chromecast en Google Home-speakers de centrale component zijn. Je kunt veel van de belangrijkste smart home-producten aansluiten en ze bedienen met je stem of hun app. Google Home heeft ook een aantal mogelijkheden om automatiseringen of routines in te stellen. Hun ecosysteem groeit langzaam en werkt over het algemeen erg goed. Het enige nadeel is de privacy en de afhankelijkheid van hun cloudservice. Google Home is nauw geïntegreerd met hun stemassistent Google Assistant, wat redelijk goed is. Hierdoor kun je bijna alles bedienen met alleen je stem. (bron).
- IFTTT: (van wikipedie) IFTTT is een website (en app) die verschillende webapplicaties en websites koppelt met elkaar met het doel bepaalde acties te automatiseren. IFTTT werd gelanceerd in 2010 door Linden Tibbets. De letters IFTTT staan voor If this, then that, wat Engels is voor Als dit, dan dat.
Programmeer talen
Node Red
(van chatGPT) Node-RED is een open-source visuele programmeertool die wordt gebruikt voor het creëren van automatiseringen en het verbinden van verschillende apparaten en services in het Internet of Things (IoT)-landschap. Het is gebaseerd op Node.js en wordt vaak ingezet als een flow-gebaseerde programmeeromgeving voor het bouwen van slimme toepassingen en workflows.
Met Node-RED kunnen gebruikers visuele flows maken door nodes te slepen en neer te zetten en vervolgens te verbinden om de logica van een applicatie te definiëren. Nodes kunnen verschillende taken uitvoeren, zoals het verwerken van gegevens, het maken van HTTP-verzoeken, het communiceren met databases, het aansturen van hardwareapparaten en nog veel meer. Node-RED biedt een eenvoudige interface waarmee gebruikers complexe IoT-toepassingen kunnen ontwikkelen zonder diepgaande programmeerkennis.
Node-RED wordt vaak gebruikt in combinatie met platforms voor het bouwen van slimme toepassingen en IoT-oplossingen, zoals Home Assistant, IBM Watson IoT, Microsoft Azure IoT, en vele anderen. Het wordt ook gebruikt in industriële automatisering, domotica, en in verschillende onderzoeksdomeinen waar IoT-gegevensverwerking en -automatisering nodig zijn.
Het vermogen om snel visuele flows te maken en de brede ondersteuning voor integratie met verschillende services en apparaten maken Node-RED een krachtige tool voor het bouwen van geavanceerde IoT-toepassingen en automatiseringsscenario's.
Yaml
YAML staat voor "YAML Ain't Markup Language" en is een opmaaktaal die vaak wordt gebruikt voor configuratiebestanden in verschillende softwaretoepassingen. YAML is een eenvoudig te lezen opmaaktaal die wordt gebruikt voor het schrijven van gestructureerde gegevens in platte tekstbestanden. Het wordt vaak gebruikt voor configuratiebestanden vanwege de menselijke leesbaarheid en de mogelijkheid om complexe gegevensstructuren te definiëren met minimale syntaxis.
De meeste configuraties in Home assistant staan in yaml.
YAML-bestanden gebruiken een .yml- of .yaml-extensie en volgen specifieke syntaxisregels.
YAML heeft functies die afkomstig zijn uit Perl, C, XML, HTML en andere programmeertalen. YAML is ook een superset van JSON, dus JSON bestanden zijn geldig in YAML.
Er zijn geen gebruikelijke opmaaksymbolen, zoals accolades, vierkante haakjes, afsluitende tags of aanhalingstekens. En YAML bestanden zijn eenvoudiger te lezen omdat ze Python-stijl inspringing gebruiken om de structuur te bepalen en nesting aan te geven. Tab-tekens zijn niet toegestaan om de overdraagbaarheid tussen systemen te behouden, dus in plaats daarvan worden whitespaces - letterlijke spaties - gebruikt.
Commentaar kan worden geïdentificeerd met een pond of hash symbool (#). Het is altijd een goede gewoonte om commentaar te gebruiken, omdat het de bedoeling van de code beschrijft. YAML ondersteunt geen commentaar van meerdere regels, elke regel moet worden voorafgegaan door het pond teken.
Een veelgestelde vraag voor YAML beginners is "Wat betekenen de 3 streepjes?". 3 streepjes (---) worden gebruikt om het begin van een document aan te geven, terwijl elk document eindigt met drie puntjes (...).
Dit is een heel eenvoudig voorbeeld van een YAML-bestand:
#Commentaar: Dit is een supermarktlijst met behulp van YAML
#Merk op dat het teken - staat voor de lijst
---
voedsel:
- groenten: tomaten #eerste lijstitem
- fruit: #tweede lijst item
citrusvruchten: sinaasappels
tropisch: bananen
noten: pinda's
snoep: rozijnen
Merk op dat de structuur van een YAML-bestand een map of een lijst is, en het volgt een hiërarchie afhankelijk van de inspringing en hoe je je sleutelwaarden definieert. Maps staan je toe om sleutel-waarde paren te associëren. Elke sleutel moet uniek zijn en de volgorde maakt niet uit. Denk aan een Python woordenboek of een variabele toewijzing in een Bash script.
Een map in YAML moet worden opgelost voordat het kan worden gesloten, en een nieuwe map wordt aangemaakt. Een nieuwe map kan worden gemaakt door het inspringniveau te verhogen of door de vorige map op te lossen en een aangrenzende map te starten.
Een lijst bevat waarden in een specifieke volgorde en kan een willekeurig aantal items bevatten. Een lijstsequentie begint met een streepje (-) en een spatie, terwijl inspringing de sequentie scheidt van de ouder. Je kunt een lijst zien als een Python lijst of een array in Bash of Perl. Een lijst kan worden ingesloten in een map.
In het bovenstaande voorbeeld vertegenwoordigen "groenten" en "fruit" items die deel uitmaken van de lijst met de naam "voedsel".
YAML bevat ook scalars, dat zijn willekeurige gegevens (gecodeerd in Unicode) die kunnen worden gebruikt als waarden zoals strings, gehele getallen, datums, getallen of booleans.
Wanneer je een YAML-bestand maakt, moet je ervoor zorgen dat je deze syntaxregels volgt en dat je bestand geldig is. Om dit te bereiken kun je een linter gebruiken-een applicatie die de syntax van een bestand controleert. Het yamllint commando kan helpen om er zeker van te zijn dat je een geldig YAML bestand hebt gemaakt voordat je het aan een applicatie geeft.
conclusie
Zoals je ziet (en dit is nog maar een klein deeltje) is er heel veel dat IoT kan bieden. Het is vind ik belangrijk om zicht te hebben op hoe de IoT gaat en je moet er vooral voor zorgen dat je niet het slachtoffer wordt van jou eigen data. Probeer dus iedere keer goed na te denken wat ze precies doen en vooral hoe ze hun geld verdienen... Niets is gratis en iedereen mag zijn centen ook verdienen, maar eerst geld vragen om een toestel te hebben dat de CO² waarde meet in een gebouw en daarna nog eens geld vragen om die waardes te mogen zien vind ik een brug te ver. Als je data laat verzamelen door een externe partner wil ik goed weten wat ermee gebeurd en moet ik niet twee keer langs de kassa gaan.
In het volgende stuk gaan we aan de slag met een klein netwerkje en verbinden we een aantal toestelletjes met ons netwerk. Ik heb ervoor gekozen om met Shelly toestelletjes en Home Assistant te werken. Ik ben geen aandeelhouder van Shelly, het zijn gewoon eenvoudige toestellen die snel te configureren zijn. Ze hebben ook een open API die goed gedocumenteerd is.
Mega disclaimer
We gaan aan de slag met elektriciteit. Vanaf 72 V kan een spanning gevaarlijk zijn voor een mens (en schadelijk). In deze oefeningen gaan we met 240 V werken. Let dus iedere keer op als je een stekker insteekt dat je geen delen kan aanraken waarop spanning staat.
Bedenk ook iedere keer met welk vermogen je aan het werk bent
P = U x I Het vermogen P is gelijk aan het product van spanning (U) en stroom (I)
Een vermogen van bijvoorbeeld 60 W is al iets (de gloeilamp van 60 W, kan al heel warm worden). Als je dit vermogen gaat schakelen, moet je iedere keer nakijken dat de schakelaar het vermogen aankan. Op alle toestelletjes staat een kenplaatje waarop je kan lezen hoeveel de maximale stroom is welke erdoor kan lopen.
Het bovenste toestelletje kan max 16A schakelen. Praktisch zou ik hier ook nooit de volledige stroom mee schakelen, maar eerder max 10 A. Als je meer vermogen moet schakelen kan je gebruik maken van een relais en SSR die wel de stroom kan schakelen.
Niet elke verbruiker is gelijk: een lamp van 500W is niet hetzelfde als een ventilator van 500W. De ventilator zal je met een stevigere schakelaar moeten schakelen omdat dit een inductieve last is. ALs je zelf geen kennis hebt op dit domein, werk samen met iemand die dit wel heeft.
De oefeningen hieronder zijn niet veilig voor studenten onder 18 jaar. Ik geef deze cursus enkel aan volwassenen.
Het loont de moeite om op voorhand een schema te maken van wat je wil bereiken. Hieronder staat het voorbeeld schema van een Shelly
Oefeningen
- Verbind de shelly's met je netwerk
- zorg ervoor dat de ene shelly de andere doet aan en uitgaan
- laat een lamp aangaan als de temperatuur hoger dan 22 graden wordt
- installeer je Home Assistant server
- maak een knop die de lamp laat branden