Im siebten Artikel dieser Serie über KNX IoT erklären Bruno Johnson und Wouter van der Beek den Open Source KNX IoT Stack.
Die digitale Transformation ist seit einigen Jahren eines der wichtigsten Strategiethemen auf den Tagesordnungen von Unternehmensvorständen. Die Möglichkeit, digitale Dienste aus Cloud-basierten Anwendungen zu entwickeln, erfordert auf dem Internetprotokoll (IPv6) basierende Netzwerkverbindungen zu Edge-Geräten, die die Kundenschnittstelle bilden. Unternehmen aller Formen und Größen in der kommerziellen Gebäudeautomation haben nach drahtlosen IoT-Lösungen gefragt, um dies zu ermöglichen, und die KNX Association hat mit der Veröffentlichung der KNX IoT Point API (KNX IoT), einschließlich eines Open-Source-Stacks, reagiert.
Warum einen Open-Source-Stack bereitstellen?
Die Implementierung eines neuen Stacks ist eine kostspielige Angelegenheit. Die KNX Association nutzte die Gelegenheit, um die Implementierung des KNX IoT Open-Source-Stacks zu finanzieren, und dieser Stack wurde von Cascoda im Namen der KNX Association implementiert. Die Open-Source-Lizenz wurde so gewählt, dass jeder den Stack in seinen Produkten verwenden kann. Da es sich um einen generischen Stack handelt, ist eine Portierungsschicht für das unterliegende System erforderlich. Es bedeutet auch, dass die Anwendungsschicht fehlt, z. B. das, was das Gerät tun muss. Allerdings gibt es zur Unterstützung eine Portierungsschicht und eine Anwendungsschicht, so dass funktionale Geräte erstellt werden können. Folglich bedeutet ein Open-Source-Stack, dass viele Schichten bereits implementiert und einsatzbereit sind.
Portierungsschicht
Die Definition des Stacks besagt, dass es eine Portierungsschicht für das unterliegende Betriebssystem gibt. Dies ermöglicht die Portierung auf jedes andere System. Der Stack unterstützt zwei Betriebssystemanschlüsse: Windows und Linux. Beide Betriebssysteme werden zur Validierung der Implementierung verwendet und können für die Präsentation des Stacks genutzt werden.
Wenn der Stack auf Thread-basierten Geräten läuft, stehen derzeit zwei Ports zur Verfügung: einer von Cascoda auf seinem Chili-Modul und einer von Nordic auf seinen Zephyr-basierten Modulen.
Applikationsebene
Die Applikationsebene verfügt über eine API zur Erstellung der Datenpunkte. Die Datenpunkte haben einen dpt- und einen dpa-Wert und verwenden eine API zur Registrierung von Callbacks, um die GET- (und PUT-) Funktionen zu handhaben, die für den eigentlichen Datenpunkt implementiert werden sollten. Der Codeschnipsel zur Erstellung eines Datenpunkts lautet wie folgt:
Die Funktionsprototypen für die GET- und PUT-Callbacks sind identisch, aber das Verhalten ist unterschiedlich. Die Funktion GET gibt nur die Daten zurück. Die Funktion zum Zurücksenden einer globalen booleschen Variablen als Nutzlast wird in der folgenden Funktion dargestellt:
Die PUT-Funktion hat eine Eingabe-Nutzlast, die für die Durchführung einer Aktion verwendet werden muss. Meistens hat die PUT-Funktion keine Rückgabe-Nutzlast, daher wird die Funktion zum Parsen eines Boolean in der Eingabe in der folgenden Funktion dargestellt:
Alle anderen Mechanismen sind bereits Teil des Stacks:
- Implementierung aller obligatorischen Tabellen.
- Sicheres Onboarding mit spake.
- OSCORE Sicherheit.
KNX IoT Virtuell
Es gibt auch zwei Beispielanwendungen, mit denen Sie mit KNX IoT experimentieren können. Obwohl sie als virtuelle Geräte bezeichnet werden, implementieren sie tatsächliche KNX IoT-Anwendungen, die auf einem Rechner laufen, und können als digitaler Zwilling betrachtet werden. Die virtuellen Anwendungen können mit ETS konfiguriert werden.
Die knx_iot_virtual_pb ist eine Drucktastenanwendung mit Rückmeldung. Es implementiert eine Schaltfläche, die nach der Konfiguration eine S-Mode-Nachricht versenden kann.
Der knx_iot_virtual_sa ist eine Schaltaktoranwendung. Es implementiert einen Aktor, der nach der Konfiguration den empfangenen Wert einer s-mode Nachricht anzeigen kann.
Beide Beispielanwendungen sind als Programmcode auf GitHub und GitLab verfügbar.
Fazit
KNX IoT kann auf jedem Betriebssystem und jedem IPv6-Netzwerk laufen. Zum Beispiel funktioniert KNX IoT mit Wi-Fi b bis Wi-Fi 6 und allen Versionen von Thread.
Der Open-Source KNX IoT Stack ist frei verfügbar und kann zur Erstellung von KNX Geräten verwendet werden.
Für Thread-basierte Geräte ist eine Portierungsschicht erforderlich. Thread-basierte KNX IoT-Entwicklungskits sind derzeit von Cascoda erhältlich, die einen solchen Port implementieren, ebenso wie einen Router für Wi-Fi und Ethernet. Damit können physische KNX IoT Geräte gebaut und gegeneinander getestet werden oder gegen virtuelle KNX IoT Geräte, und Beispielanwendungen sind für jedermann frei verfügbar.
Bruno Johnson und Wouter van der Beek sind der CEO bzw. COO von Cascoda Limited. Cascoda ist ein Kommunikationsunternehmen, das sichere IoT-Halbleiter-Funkgeräte und -Module herstellt und die Entwicklung von sicheren IoT-Kommunikationsstandards für intelligente Gebäude und intelligente Städte vorantreibt. Die Produkte des Unternehmens lösen Probleme in Bezug auf Reichweite, Zuverlässigkeit, Sicherheit, Stromverbrauch und Skalierbarkeit für industrielles und kommerzielles IoT durch patentierte Innovationen und die neuesten, sichersten Standards, die alle in kostengünstige IoT-Module mit extrem geringer Stromaufnahme integriert sind.
Screen shots by Cascoda
Figures by Cascoda (on GitHub, as part of the stack documentation)