IoT NoT cursus: verschil tussen versies
| (20 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
| Regel 1: | Regel 1: | ||
=Welkom= | =Welkom= | ||
Deze cursus is de handleiding bij de opleiding IoT op | Deze cursus is de handleiding bij de opleiding IoT op 27 maart 2025 van Steven Mertens. Ze dient vooral als een leidraad voor een aantal oefeningen. | ||
=Afbakening= | =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. | 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 | Ik kan ChatGPT geen ongelijk geven, maar in deze cursus kunnen we niet op alles ingaan. We gaan een aantal beperkingen toepassen op deze cursus zodat we de bomen door het bos kunnen blijven zien. We gaan eerst kort kijken naar welke componenten IoT nodig heeft en daarna maken we zelf een aantal eenvoudige voorbeelden. | ||
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" ([[IoT conversatie met chatgpt|lees hier]] hoe ik dit geleerd heb van chat GPT) | 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" ([[IoT conversatie met chatgpt|lees hier]] hoe ik dit geleerd heb van chat GPT) | ||
| Regel 14: | Regel 14: | ||
*monitoring van een fleet | *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 ([https://www.drive.com.au/news/tesla-battery-hurricane/ artikel]). We kennen ook enkele negatieve voorbeelden waar bepaalde oudere toestellen 'kapot' worden gemaakt zodat er nieuwe toestellen moeten gekocht worden ([https://nypost.com/2023/09/19/iphone-users-say-new-ios-17-drains-battery-what-to-do/ artikel]). Soms kan het ook gebeuren omdat de constructeur (bijna) faliet gaat ([https://www.nieuwsblad.be/cnt/dmf20230718_93773573| artikel]). Normaal gaan contructeurs dit niet bewust doen, maar iedereen kent wel de term 'planned obsolescence'. | :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 ([https://www.drive.com.au/news/tesla-battery-hurricane/ artikel]). We kennen ook enkele negatieve voorbeelden waar bepaalde oudere toestellen 'kapot' worden gemaakt zodat er nieuwe toestellen moeten gekocht worden ([https://nypost.com/2023/09/19/iphone-users-say-new-ios-17-drains-battery-what-to-do/ artikel]). Soms kan het ook gebeuren omdat de constructeur (bijna) faliet gaat ([https://www.nieuwsblad.be/cnt/dmf20230718_93773573| artikel]). Normaal gaan contructeurs dit niet bewust doen, maar iedereen kent wel de term 'planned obsolescence'. | ||
*bijhouden van metadata | *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 | :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 om achteraf het onderhoud en R&D te doen. Zeker als je op de metadata AI kan loslaten. Maar hier gaan we niet op ingaan. | ||
==Waar gaan we wel 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. Dus eerst een stukje theorie en daarna vooral praktijk. Dus we gaan vooral proberen om te kijken hoe je die micro elektronica in een netwerk kan steken en daaruit verschillende interessante gegevens kan halen. | |||
*Welk materiaal bestaat er | |||
*Hoe verloopt de communicatie: | *Hoe verloopt de communicatie: | ||
**We kunnen de micro-elektronica rechtstreeks tegen elkaar laten praten. (P2P) | **We kunnen de micro-elektronica rechtstreeks tegen elkaar laten praten. (P2P) | ||
| Regel 31: | Regel 34: | ||
===draadloos=== | ===draadloos=== | ||
[[file:Iot-protocols-1.jpeg|600px]] | [[file:Iot-protocols-1.jpeg|600px]] | ||
We bespreken niet alle protocollen, maar dit zijn denk ik de belangrijkste | We bespreken niet alle protocollen, maar dit zijn denk ik de belangrijkste | ||
| Regel 41: | Regel 45: | ||
*'''ethernet''': Het goed betrouwbare UTP cat5e en hoger kabeltje, natuurlijk moet deze dan aan een netwerk hangen. | *'''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, ... | *'''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 | *'''PLC''': Power line communicatie (en niet programmable logical controller). We kennen het van een gemakkelijke manier om internet over je huis te verspreiden. | ||
===protocollen=== | ===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. | *'''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. Volgende youtube filmpjes geven meer uitleg | ||
**Uitleg: https://www.youtube.com/watch?v=NXyf7tVsi10 | |||
**How To met Node Red: https://www.youtube.com/watch?v=tQmXWNd1pNk (wel op een betalende hardware) | |||
**How To met Home Assistant: https://www.youtube.com/watch?v=NjKK5ab0-Kk | |||
*'''HTTP''': Een heel gemakkelijk protocol om een status pagina weer te geven | *'''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 | *'''Websocket/API''': Een heel gemakkelijke manier om boodschappen uit te wisselen tussen client en server | ||
| Regel 100: | Regel 107: | ||
noten: pinda's | noten: pinda's | ||
snoep: rozijnen | snoep: rozijnen | ||
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. | 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". | In het bovenstaande voorbeeld vertegenwoordigen "groenten" en "fruit" items die deel uitmaken van de lijst met de naam "voedsel". | ||
==conclusie== | ==conclusie== | ||
| Regel 120: | Regel 119: | ||
=Mega disclaimer= | =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. | 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. Als je aan elektriciteit werkt zijn er 8 gouden regels die je moet volgen om veilig te werken, de gouden 8. Je kan alles hierover [https://volta-org.be/media/3effhwri/informatiefiche-11-gouden-acht.pdf hier] (https://volta-org.be/media/3effhwri/informatiefiche-11-gouden-acht.pdf) lezen | ||
Bedenk ook iedere keer met welk vermogen je aan het werk bent | Bedenk ook iedere keer met welk vermogen je aan het werk bent | ||
| Regel 132: | Regel 131: | ||
[[file:IoTNoT_shelly_1.jpg|200px]] | [[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 | 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 of een SSR (solid state relais) 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. | 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. | ||
| Regel 161: | Regel 160: | ||
**Internet & Security - Restrict Login: Als het netwerk door andere bezocht wordt, zet je natuurlijk best een wachtwoord | **Internet & Security - Restrict Login: Als het netwerk door andere bezocht wordt, zet je natuurlijk best een wachtwoord | ||
*Doe dit nu ook voor je andere shelly's | *Doe dit nu ook voor je andere shelly's | ||
Enkele voorbelden wat je hiermee kan doen: | |||
*de timer kan je gebruiken om iets na een tijdje aan of uit te laten gaan. Vb: het licht wordt vaak vergeten uit te doen in het serverkot. Je plaatst een shelly in de schakelaar en stelt in dat deze max 1 uur blijft branden. | |||
*Het Weekly Schedule kan je gebruiken om iets te laten gebeuren. Onze groet lichten op de speelplaats bleven vaak branden na 8:30 in de winter of na een oudercontact. Met een dagelijkse actie wordt de uitgang altijd af gezet om 8:30h en 24:00h 's nachts. | |||
Je hebt nu de shellys bediend via HTTP. Al deze commando's blijven op het toestel. Het voordeel: eenvoudig en simpel. Nadeel: je moet elk toestel apart instellen. | |||
==zorg ervoor dat de ene shelly de andere doet aan en uitgaan== | ==zorg ervoor dat de ene shelly de andere doet aan en uitgaan== | ||
*je weet welke IP's de verschillende shelly's hebben | |||
*surf naar http://IP-shelly/status en analiseer wat je te zien krijgt. | |||
{"wifi_sta":{"connected":true,"ssid":"badeendjes","ip":"192.168.2.153","rssi":-72},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":false},"time":"23:33","unixtime":1710023602,"serial":66,"has_update":true,"mac":"E8DB84D70387","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"relays":[{"ison":false,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"source":"http"}],"meters":[{"power":0.00,"is_valid":true}],"inputs":[{"input":0,"event":"","event_cnt":0}],"ext_sensors":{},"ext_temperature":{},"ext_humidity":{},"update":{"status":"pending","has_update":true,"new_version":"20230913-112003/v1.14.0-gcb84623","old_version":"20210909-144114/v1.11.4-DNSfix-ge6b2f6d","beta_version":"20231107-162940/v1.14.1-rc1-g0617c15"},"ram_total":50872,"ram_free":38908,"fs_size":233681,"fs_free":151102,"uptime":10206742} | |||
Dit is een serialised array met de status van de Shelly. Via deze weg kunnen we shelly ook bedienen: | |||
*surf naar http://IP-shelly/relay/0?turn=on | |||
{"ison":true,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"source":"http"} | |||
*surf naar http://IP-shelly/relay/0?turn=off | |||
{"ison":false,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"source":"http"} | |||
*surf naar http://IP-shelly/relay/0?turn=toggle | |||
{"ison":false,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"source":"http"} | |||
Je kan nog zaken gaan doen via deze weg. De volledige documentatie kan je [https://shelly-api-docs.shelly.cloud/gen1/#shelly1-shelly1pm hier] nalezen. | |||
*Surf nu naar het IP van de eerste shelly en stel bij de I/O URL actions, bij de Output switched On URL het commando in om de andere shelly te laten aangaan. Doe hetzelfde bij Output switched off URL om de andere shelly te laten uitgaan. | |||
Wat kan je hiermee doen? Stel je wil dat de lamp op je bureau mee aangaat als het licht aangaat. Dan kan je een shelly 1 een api commando geven aan de shelly plug van je bureaulamp om aan te gaan. | |||
We moeten hier wel een belangrijke asterix geven. Stel dat je het commando geeft om iets aan te zetten en daarna verdwijnt het netwerk... Als je dan een licht schakelde is er niet zo'n groot probleem, maar als je net de verwarming aanschakelde, kan je toch voor dure rekeningenkomen te staan. Daarom is het altijd goed om een timer mee in te stellen. | |||
*surf naar http://IP-shelly/relay/0?turn=on&timer=5 (werkt niet bij toggle) | |||
{"ison":true,"has_timer":true,"timer_started":1710028490,"timer_duration":5,"timer_remaining":5,"source":"http"} | |||
Deze vorm is dus API schakelen | |||
==laat een lamp aangaan als de temperatuur hoger dan 22 graden wordt== | ==laat een lamp aangaan als de temperatuur hoger dan 22 graden wordt== | ||
*Als je op je shelly een uitbreidingsmodule zet, kan je hierop een temperatuurssensor of vochtigheidssensor plaatsen | |||
[[file:IoTNoT_shelly_addon.jpg|400px]] | |||
:als je naar de home pagina surft van de shelly heb je enkele extra tegels: Sensor URL action, External sensor en Temperature Automation | |||
[[file:IoTNoT_shelly_met_addon.PNG|400px]] | |||
*maak de instelling om de uitgang te laten schakelen bij 22 graden. Verwarm de sensor met je handen om de uitgang te triggeren. | |||
De volgende vraag is nu hoe je hiervan kunt worden verwittigd? | |||
*je kan via de URL actions een lamp op je bureau laten aangaan. | |||
*je kan via de URL actions een website triggeren die je een boodschap stuurt | |||
==installeer je Home Assistant server== | ==installeer je Home Assistant server== | ||
We hebben nu onze toestellen lokaal gebruikt. We hebben dus nog geen gebruik gemaakt van de I in IoT. Daar gaan we nu mee beginnen. We gaan gebruik maken van een server, voor onze lessen kiezen we voor een Home Assistant server. Ik kies voor deze server omdat ik het bij mij heel snel in orde kreeg en omdat ik de indruk heb dat er een grote community rond zit. Ik heb voor jullie een installatie klaarstaan zodat we hier geen tijd mee verliezen. Als je een Home Assistant server thuis of op school wil installeren ga je dit even moeten onderzoeken en doen. Het is echt niet moeilijk. Alles wat je nodig hebt staat goed uitgelegd op hun website https://www.home-assistant.io/installation/. Ik overloop met jullie wel nog even de verschillende manieren dat je een HA server kan installeren omdat er wel een paar opmerkingen zijn: | |||
===mogelijke installaties=== | |||
*HA voorgeïnstalleerd op een server: Je kan hardware kopen waarop HA al is geïnstalleerd. Volgens hun website kost dit ongeveer 100 dollar en krijg je een embedded device van 1,8 Ghz CPU, 4Gb RAM en 32 Gb eMMC HDD. Dit is zeker niet verkeerd, maar zeker voor een school te zwak. | |||
*HA op een Raspberry PI: Dit is een beetje zoals de vorige categorie, een beetje te zwak voor een school en je moet er ook voor zorgen dat je HA op een SSD draaid en niet op een SD kaartje, door het vele schrijven gaan deze snel kapot. | |||
*HA rechtstreeks op hardware | |||
**Op x86 hardware: Als je nog een oude computer hebt liggen, kan je het hierop installeren. Je kan ook voor een NUC. | |||
**Op ODDROID: Je kan voor andere soort hardware kiezen. Het grootste voordeel is dat deze toestellen vaak veel minder energie kosten om mee te werken. | |||
*HA gevirtualiseerd: Dit kan je doen op Windows, OS X, Linux of een bare metal server (zo draai ik het nu op mijn school en thuis) | |||
*HA als en container in een docker omgeving (dit gebruik ik nu voor deze cursus) | |||
Het is belangrijk om een beetje op voorhand na te denken wat je allemaal met HA wil doen omdat niet elke installatiemethode alles van HA toelaat: | |||
[[file:IoTNoT_HA_installatie_01.PNG|400px]] | |||
Enkel als je HA draait als een OS, kan je alle functies van HA gebruiken. Als je HA als docker draait kan je geen addons gebruiken. Dus voor je productieomgeving raad ik zeker aan om een volledige HA te installeren. In de cursus gaan we gebruik maken van een docker container omdat ik deze snel kon klaarzetten. | |||
Ik moet nog een kleine alinea schrijven rond de updates van HA. Dit kunnen er heel veel zijn. Dus dat is echt wel een min puntje van HA. Ik heb geen idee hoeveel updates de andere servers hebben, maar het is wel belangrijk om elke update te installeren. | |||
===HA tijdens de cursus=== | |||
Jullie hebben allemaal een WIFI netwerk gekregen. In dit netwerk kan je naar je persoonlijke HA surfen via http://10.x.0.2:8123, dus het 2de IP adres van het subnet en op poort 8123. | |||
normaal krijg je deze pagina | |||
[[file:IoTNoT_HA_installatie_02.png|500px]] | |||
Klik op de "CREËER MIJN SMART HOME" | |||
[[file:IoTNoT_HA_installatie_03.png|500px]] | |||
Vul alles in en klik op account aanmaken | |||
[[file:IoTNoT HA installatie 04.png|500px]] | |||
Vul je adres in en druk op enter om het te zoeken | |||
[[file:IoTNoT_HA_installatie_05.png|500px]] | |||
Kies de instellingen die je wil. (voor de cursus zetten we niets aan omdat ons gebruik de statistieken vervuilen) | |||
[[file:IoTNoT_HA_installatie_06.png|500px]] | |||
Klik op voltooien | |||
[[file:IoTNoT_HA_installatie_07.png|500px]] | |||
==maak een knop die de lamp laat branden== | ==maak een knop die de lamp laat branden== | ||
*Normaal krijg je via de meldingen of de initiële setup de Shelly's geregistreerd op je HA server. Via de Instellingen - Apparaten & Diensten ga je een tegels met Shelly krijgen. Als je hierop klikt krijg je de verschillende shelly's die in je netwerk staan. | |||
*klik eens op de verschillende menu's om te kijken wat er allemaal is. | |||
*maak een extra dashbord aan via de instellingen | |||
*op het dashbord kan je nu een knop maken voor de shelly's te laten branden of uitgaan | |||
*probeer ook een automation te bouwen | |||
==laat de lamp branden met Node-Red== | |||
In jullie netwerk is er ook een Node-Red Server aan het draaien. Deze draait op http://10.x.0.3:1880. Hierop gaan we ook eens een automatisatie maken. Hoe dit in elkaar steeks heb ik tijdens de les laten zien. Op you tube kan je heel veel hierover vinden. De video's in het theoretische gedeelte geven al een goed begin. Als ik volgend jaar de cursus opnieuw zou geven, ga ik dit meer uitschrijven. | |||
=extra's= | |||
==alternatieven voor Shelly== | |||
Naast shelly zijn er nog andere producten die op dezelfde manier werken, we bekijken hier een aantal: | |||
*ESPHome: je kan op een ESP32 een firmware zetten waardoor deze intergreerd met ESPHome (https://esphome.io/index.html). Dit stelt je in staat om heel veel elektronica te integreren in je netwerk. Met deze tutorial (https://esphome.io/guides/getting_started_hassio.html) kan je ESPHome op je HA server installeren. | |||
*Tasmota (https://tasmota.github.io/docs/) is ook een open source alternatief en werkt zoals de shelly firmware. Heel vaak kan je bepaalde toestelen flashen met deze firmware | |||
*Sonof (https://sonoff.tech/) is een merk zoals shelly. Hun producten werken soms ook via Zigbee | |||
==praktijkvoorbeelden== | |||
Ik laat een paar zaken zien die ik op school heb lopen | |||
==Een dockerserver bouwen== | |||
Even een kleine alinea van hoe ik de dockerserver heb gebouwd: | |||
*Zoek een oude laptop met min 8Gb RAM en steek er een SSD is | |||
*Installeer Ubuntu server, tijdens de installatie geen opties aanduiden, maar wel de fat installatie gebruiken, niet de minimal | |||
*docker te installeren: https://www.zdnet.com/article/docker-101-how-to-install-docker-on-ubuntu-server-22-04/ | |||
*portainer te installeren: https://docs.portainer.io/start/install-ce/server/docker/linux | |||
*Home Assistant te installeren: https://www.wundertech.net/how-to-install-home-assistant-on-portainer/ | |||
*Volg daarna deze howto om macvlan te configureren voor je extra containers: https://www.youtube.com/watch?v=o7nn6Tv-PAw&t=624s | |||
*Volg daarna deze howto om VLAN's te begrijpen: https://www.youtube.com/watch?v=XMcf5lnM9VU&t=824s | |||
Huidige versie van 28 mrt 2025 om 00:45
Welkom
Deze cursus is de handleiding bij de opleiding IoT op 27 maart 2025 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 een aantal beperkingen toepassen op deze cursus zodat we de bomen door het bos kunnen blijven zien. We gaan eerst kort kijken naar welke componenten IoT nodig heeft en daarna maken we zelf een aantal eenvoudige voorbeelden.
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 om achteraf het onderhoud en R&D te doen. 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. Dus eerst een stukje theorie en daarna vooral praktijk. Dus we gaan vooral proberen om te kijken hoe je die micro elektronica in een netwerk kan steken en daaruit verschillende interessante gegevens kan halen.
- Welk materiaal bestaat er
- 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 een gemakkelijke manier om internet over je huis te verspreiden.
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. Volgende youtube filmpjes geven meer uitleg
- Uitleg: https://www.youtube.com/watch?v=NXyf7tVsi10
- How To met Node Red: https://www.youtube.com/watch?v=tQmXWNd1pNk (wel op een betalende hardware)
- How To met Home Assistant: https://www.youtube.com/watch?v=NjKK5ab0-Kk
- 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
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".
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. Als je aan elektriciteit werkt zijn er 8 gouden regels die je moet volgen om veilig te werken, de gouden 8. Je kan alles hierover hier (https://volta-org.be/media/3effhwri/informatiefiche-11-gouden-acht.pdf) lezen
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 of een SSR (solid state relais) 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
- sluit de shelly aan zodat deze kan opstarten. De shelly gaat een open WIFI netwerk maken waar je op moet inloggen.
- zoek met de WIFI naar het shelly toestel en verbind ermee. Je krijgt een IP adres in de scoop 192.168.33.0/24.
- surf naar de configuratiepagina van de shelly: http://192.168.33.1
- klik op Internet & Security en verbind de shelly met jou WIFI netwerk. Het is gemakkelijk om ineens een vast IP te kiezen omdat we later dit toestel willen kunnen terugvinden. Als je op save klikt, verdwijnt het start WIFI netwerk en kan je terug verbinding maken met je eigen wifi netwerk. Als het start WIFI netwerk terug komt, is er iets mis met je WIFI instellingen.
- Als je geen vast IP hebt gekozen, moet je met een ip scanner het IP adres zoeken van de shelly
- Nu kan je naar het IP adres van de shelly surfen en rondkijken wat je allemaal kan doen. Ik ga hier niet alles 1 voor 1 overlopen, het meeste spreekt voor zichzelf. De volgende zaken zijn wel belangrijk
- Settings - Button Type: hiermee kan je instellen welke schakelaar aan de shelly hangt, een drukknop of een schakelaar
- Settings - firmware update: als je de shelly wil bedienen vanaf een ander punt, moet je altijd zorgen dat je op de laatste firmware werkt
- Settings - device name: het is handig als je de shelly een naam geeft
- Internet & Security - Restrict Login: Als het netwerk door andere bezocht wordt, zet je natuurlijk best een wachtwoord
- Doe dit nu ook voor je andere shelly's
Enkele voorbelden wat je hiermee kan doen:
- de timer kan je gebruiken om iets na een tijdje aan of uit te laten gaan. Vb: het licht wordt vaak vergeten uit te doen in het serverkot. Je plaatst een shelly in de schakelaar en stelt in dat deze max 1 uur blijft branden.
- Het Weekly Schedule kan je gebruiken om iets te laten gebeuren. Onze groet lichten op de speelplaats bleven vaak branden na 8:30 in de winter of na een oudercontact. Met een dagelijkse actie wordt de uitgang altijd af gezet om 8:30h en 24:00h 's nachts.
Je hebt nu de shellys bediend via HTTP. Al deze commando's blijven op het toestel. Het voordeel: eenvoudig en simpel. Nadeel: je moet elk toestel apart instellen.
zorg ervoor dat de ene shelly de andere doet aan en uitgaan
- je weet welke IP's de verschillende shelly's hebben
- surf naar http://IP-shelly/status en analiseer wat je te zien krijgt.
{"wifi_sta":{"connected":true,"ssid":"badeendjes","ip":"192.168.2.153","rssi":-72},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":false},"time":"23:33","unixtime":1710023602,"serial":66,"has_update":true,"mac":"E8DB84D70387","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"relays":[{"ison":false,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"source":"http"}],"meters":[{"power":0.00,"is_valid":true}],"inputs":[{"input":0,"event":"","event_cnt":0}],"ext_sensors":{},"ext_temperature":{},"ext_humidity":{},"update":{"status":"pending","has_update":true,"new_version":"20230913-112003/v1.14.0-gcb84623","old_version":"20210909-144114/v1.11.4-DNSfix-ge6b2f6d","beta_version":"20231107-162940/v1.14.1-rc1-g0617c15"},"ram_total":50872,"ram_free":38908,"fs_size":233681,"fs_free":151102,"uptime":10206742}
Dit is een serialised array met de status van de Shelly. Via deze weg kunnen we shelly ook bedienen:
- surf naar http://IP-shelly/relay/0?turn=on
{"ison":true,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"source":"http"}
- surf naar http://IP-shelly/relay/0?turn=off
{"ison":false,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"source":"http"}
- surf naar http://IP-shelly/relay/0?turn=toggle
{"ison":false,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"source":"http"}
Je kan nog zaken gaan doen via deze weg. De volledige documentatie kan je hier nalezen.
- Surf nu naar het IP van de eerste shelly en stel bij de I/O URL actions, bij de Output switched On URL het commando in om de andere shelly te laten aangaan. Doe hetzelfde bij Output switched off URL om de andere shelly te laten uitgaan.
Wat kan je hiermee doen? Stel je wil dat de lamp op je bureau mee aangaat als het licht aangaat. Dan kan je een shelly 1 een api commando geven aan de shelly plug van je bureaulamp om aan te gaan.
We moeten hier wel een belangrijke asterix geven. Stel dat je het commando geeft om iets aan te zetten en daarna verdwijnt het netwerk... Als je dan een licht schakelde is er niet zo'n groot probleem, maar als je net de verwarming aanschakelde, kan je toch voor dure rekeningenkomen te staan. Daarom is het altijd goed om een timer mee in te stellen.
- surf naar http://IP-shelly/relay/0?turn=on&timer=5 (werkt niet bij toggle)
{"ison":true,"has_timer":true,"timer_started":1710028490,"timer_duration":5,"timer_remaining":5,"source":"http"}
Deze vorm is dus API schakelen
laat een lamp aangaan als de temperatuur hoger dan 22 graden wordt
- Als je op je shelly een uitbreidingsmodule zet, kan je hierop een temperatuurssensor of vochtigheidssensor plaatsen
- als je naar de home pagina surft van de shelly heb je enkele extra tegels: Sensor URL action, External sensor en Temperature Automation
- maak de instelling om de uitgang te laten schakelen bij 22 graden. Verwarm de sensor met je handen om de uitgang te triggeren.
De volgende vraag is nu hoe je hiervan kunt worden verwittigd?
- je kan via de URL actions een lamp op je bureau laten aangaan.
- je kan via de URL actions een website triggeren die je een boodschap stuurt
installeer je Home Assistant server
We hebben nu onze toestellen lokaal gebruikt. We hebben dus nog geen gebruik gemaakt van de I in IoT. Daar gaan we nu mee beginnen. We gaan gebruik maken van een server, voor onze lessen kiezen we voor een Home Assistant server. Ik kies voor deze server omdat ik het bij mij heel snel in orde kreeg en omdat ik de indruk heb dat er een grote community rond zit. Ik heb voor jullie een installatie klaarstaan zodat we hier geen tijd mee verliezen. Als je een Home Assistant server thuis of op school wil installeren ga je dit even moeten onderzoeken en doen. Het is echt niet moeilijk. Alles wat je nodig hebt staat goed uitgelegd op hun website https://www.home-assistant.io/installation/. Ik overloop met jullie wel nog even de verschillende manieren dat je een HA server kan installeren omdat er wel een paar opmerkingen zijn:
mogelijke installaties
- HA voorgeïnstalleerd op een server: Je kan hardware kopen waarop HA al is geïnstalleerd. Volgens hun website kost dit ongeveer 100 dollar en krijg je een embedded device van 1,8 Ghz CPU, 4Gb RAM en 32 Gb eMMC HDD. Dit is zeker niet verkeerd, maar zeker voor een school te zwak.
- HA op een Raspberry PI: Dit is een beetje zoals de vorige categorie, een beetje te zwak voor een school en je moet er ook voor zorgen dat je HA op een SSD draaid en niet op een SD kaartje, door het vele schrijven gaan deze snel kapot.
- HA rechtstreeks op hardware
- Op x86 hardware: Als je nog een oude computer hebt liggen, kan je het hierop installeren. Je kan ook voor een NUC.
- Op ODDROID: Je kan voor andere soort hardware kiezen. Het grootste voordeel is dat deze toestellen vaak veel minder energie kosten om mee te werken.
- HA gevirtualiseerd: Dit kan je doen op Windows, OS X, Linux of een bare metal server (zo draai ik het nu op mijn school en thuis)
- HA als en container in een docker omgeving (dit gebruik ik nu voor deze cursus)
Het is belangrijk om een beetje op voorhand na te denken wat je allemaal met HA wil doen omdat niet elke installatiemethode alles van HA toelaat:
Enkel als je HA draait als een OS, kan je alle functies van HA gebruiken. Als je HA als docker draait kan je geen addons gebruiken. Dus voor je productieomgeving raad ik zeker aan om een volledige HA te installeren. In de cursus gaan we gebruik maken van een docker container omdat ik deze snel kon klaarzetten.
Ik moet nog een kleine alinea schrijven rond de updates van HA. Dit kunnen er heel veel zijn. Dus dat is echt wel een min puntje van HA. Ik heb geen idee hoeveel updates de andere servers hebben, maar het is wel belangrijk om elke update te installeren.
HA tijdens de cursus
Jullie hebben allemaal een WIFI netwerk gekregen. In dit netwerk kan je naar je persoonlijke HA surfen via http://10.x.0.2:8123, dus het 2de IP adres van het subnet en op poort 8123. normaal krijg je deze pagina
Klik op de "CREËER MIJN SMART HOME"
Vul alles in en klik op account aanmaken
Vul je adres in en druk op enter om het te zoeken
Kies de instellingen die je wil. (voor de cursus zetten we niets aan omdat ons gebruik de statistieken vervuilen)
Klik op voltooien
maak een knop die de lamp laat branden
- Normaal krijg je via de meldingen of de initiële setup de Shelly's geregistreerd op je HA server. Via de Instellingen - Apparaten & Diensten ga je een tegels met Shelly krijgen. Als je hierop klikt krijg je de verschillende shelly's die in je netwerk staan.
- klik eens op de verschillende menu's om te kijken wat er allemaal is.
- maak een extra dashbord aan via de instellingen
- op het dashbord kan je nu een knop maken voor de shelly's te laten branden of uitgaan
- probeer ook een automation te bouwen
laat de lamp branden met Node-Red
In jullie netwerk is er ook een Node-Red Server aan het draaien. Deze draait op http://10.x.0.3:1880. Hierop gaan we ook eens een automatisatie maken. Hoe dit in elkaar steeks heb ik tijdens de les laten zien. Op you tube kan je heel veel hierover vinden. De video's in het theoretische gedeelte geven al een goed begin. Als ik volgend jaar de cursus opnieuw zou geven, ga ik dit meer uitschrijven.
extra's
alternatieven voor Shelly
Naast shelly zijn er nog andere producten die op dezelfde manier werken, we bekijken hier een aantal:
- ESPHome: je kan op een ESP32 een firmware zetten waardoor deze intergreerd met ESPHome (https://esphome.io/index.html). Dit stelt je in staat om heel veel elektronica te integreren in je netwerk. Met deze tutorial (https://esphome.io/guides/getting_started_hassio.html) kan je ESPHome op je HA server installeren.
- Tasmota (https://tasmota.github.io/docs/) is ook een open source alternatief en werkt zoals de shelly firmware. Heel vaak kan je bepaalde toestelen flashen met deze firmware
- Sonof (https://sonoff.tech/) is een merk zoals shelly. Hun producten werken soms ook via Zigbee
praktijkvoorbeelden
Ik laat een paar zaken zien die ik op school heb lopen
Een dockerserver bouwen
Even een kleine alinea van hoe ik de dockerserver heb gebouwd:
- Zoek een oude laptop met min 8Gb RAM en steek er een SSD is
- Installeer Ubuntu server, tijdens de installatie geen opties aanduiden, maar wel de fat installatie gebruiken, niet de minimal
- docker te installeren: https://www.zdnet.com/article/docker-101-how-to-install-docker-on-ubuntu-server-22-04/
- portainer te installeren: https://docs.portainer.io/start/install-ce/server/docker/linux
- Home Assistant te installeren: https://www.wundertech.net/how-to-install-home-assistant-on-portainer/
- Volg daarna deze howto om macvlan te configureren voor je extra containers: https://www.youtube.com/watch?v=o7nn6Tv-PAw&t=624s
- Volg daarna deze howto om VLAN's te begrijpen: https://www.youtube.com/watch?v=XMcf5lnM9VU&t=824s