In het zevende artikel in deze reeks over KNX IoT leggen Bruno Johnson en Wouter van der Beek de open source KNX IoT stack uit.
Digitale transformatie is de laatste jaren één van de belangrijkste strategiethema’s op de agenda’s van bestuursvergaderingen. De mogelijkheid om digitale diensten te ontwikkelen vanuit cloud-gebaseerde applicaties vereist op Internet Protocol (IPv6) gebaseerde netwerkverbindingen met randapparatuur die de interface wordt voor de klant. Bedrijven van alle soorten en maten in de commerciële gebouwautomatisering hebben gevraagd naar draadloze IoT-oplossingen om dit te realiseren, en KNX Association heeft hierop gereageerd door KNX IoT Point API (KNX IoT) uit te brengen, inclusief een open-source stack.
Waarom een open-source stack uitbrengen?
Het implementeren van een nieuwe stack is een dure zaak. KNX Association maakte van de gelegenheid gebruik om de implementatie van KNX IoT open-source stack te financieren, en deze stack werd geïmplementeerd door Cascoda in naam van KNX Association. De open-source licentie is zo gekozen dat iedereen de stack in zijn producten kan gebruiken. Aangezien de stack generiek is, betekent dit dat er een portlaag naar het onderliggende systeem nodig is. Het betekent ook dat de toepassingslaag ontbreekt, bijvoorbeeld wat het apparaat moet doen. Om dit te ondersteunen is er echter een portlaag en een applicatielaag zodat functionele apparaten kunnen worden gemaakt. Het hebben van een open-source stack betekent dus dat veel lagen al geïmplementeerd en klaar voor gebruik zijn.
Portlaag
De definitie van de stack is dat er een portlaag is naar het onderliggende besturingssysteem. Hierdoor kan het naar elk ander systeem worden overgezet. De stack ondersteunt twee poorten voor besturingssystemen: Windows en Linux. Beide besturingssystemen worden gebruikt om de implementatie te valideren en kunnen gebruikt worden om de stack aan te tonen.
Bij het draaien van de stack op Thread-gebaseerde apparaten zijn er momenteel twee poorten beschikbaar: een van Cascoda op de Chili Module en een van Nordic op de zephyr-gebaseerde modules.
Applicatieniveau
Het applicatieniveau heeft een API om de datapunten aan te maken. De datapunten hebben een dpt- en dpa-waarde en gebruiken een API om callbacks te registreren voor het afhandelen van de GET- (en PUT-) functies die moeten worden geïmplementeerd voor het eigenlijke datapunt. Het codefragment om een datapunt te maken is als volgt:
De functieprototypes voor de GET en PUT callbacks zijn hetzelfde, maar het gedrag is anders. De GET-functie retourneert alleen de gegevens. De functie om een globale Booleaanse variabele terug te sturen als payload wordt weergegeven in de volgende functie:
De PUT-functie heeft een payload voor de invoer die moet worden gebruikt om een actie uit te voeren; meestal heeft de PUT-functie geen payload voor de terugkeer, daarom wordt de functie om een Booleaans in de invoer te parsen weergegeven in de volgende functie:
Alle andere mechanica maakt al deel uit van de stack:
- Alle verplichte tabellen implementeren.
- Veilig onboarding met spake.
- OSCORE beveiliging.
KNX IoT Virtueel
Er zijn ook twee voorbeeldtoepassingen waarmee je met KNX IoT kunt spelen. Hoewel ze virtuele apparaten worden genoemd, implementeren ze echte KNX IoT-toepassingen die op een pc draaien en kunnen ze worden gezien als een digitale tweeling. De virtuele applicaties kunnen worden geconfigureerd met ETS.
De knx_iot_virtual_pb is een drukknopapplicatie met feedback. Het implementeert een knop die na configuratie een s-mode bericht kan verzenden.
De knx_iot_virtual_sa is een toepassing voor schakelactuators. Het implementeert een actuator die na configuratie de ontvangen waarde van een s-mode bericht kan weergeven.
Beide voorbeeldapplicaties zijn als code beschikbaar op GitHub en GitLab.
Samenvatting
KNX IoT kan draaien op elk OS en elk IPv6 netwerk. KNX IoT werkt bijvoorbeeld met Wi-Fi b tot Wi-Fi 6 en alle versies van Thread.
De open-source KNX IoT stack is vrij beschikbaar en kan gebruikt worden om KNX busdeelnemers te creëren.
Voor Thread-gebaseerde apparaten is een portlaag nodig Thread-gebaseerde KNX IoT ontwikkelingskits zijn momenteel verkrijgbaar bij Cascoda die een dergelijke poort implementeren, evenals een router voor Wi-Fi en Ethernet. Dit laat toe om fysieke KNX IoT busdeelnemers te bouwen en te testen tegen elkaar of tegen virtuele KNX IoT busdeelnemers, en voorbeeldapplicaties zijn vrij beschikbaar voor iedereen om te gebruiken.
Bruno Johnson en Wouter van der Beek zijn respectievelijk CEO en COO van Cascoda Limited. Cascoda is een communicatiebedrijf dat veilige IoT-halfgeleiderradio’s en -modules produceert en de ontwikkeling van veilige IoT-communicatiestandaarden voor slimme gebouwen en slimme steden leidt. De producten lossen problemen op met bereik, betrouwbaarheid, beveiliging, vermogen en schaalbaarheid voor industrieel en commercieel IoT door middel van gepatenteerde innovaties en de meest recente veilige standaarden, allemaal geïntegreerd in goedkope IoT-modules met ultralaag vermogen.
Screen shots by Cascoda
Figures by Cascoda (on GitHub, as part of the stack documentation)