The e-magazine for KNX home & building control

KNX IoT : 7e partie – la pile KNX IoT en source ouverte

Dans ce septième article de la série sur KNX IoT, Bruno Johnson et Wouter van der Beek expliquent la pile KNX IoT en source ouverte.

Depuis quelques années déjà, la transformation numérique est l’un des principaux sujets stratégiques à l’ordre du jour des conseils d’administration des entreprises. La possibilité de développer des services numériques à partir d’applications basées sur le cloud nécessite des connexions réseau basées sur le protocole Internet (IPv6) avec des périphériques qui deviennent l’interface client. Les entreprises de toutes formes et de toutes tailles dans le domaine de l’automatisation des bâtiments commerciaux ont demandé des solutions IoT sans fil pour y parvenir, et l’Association KNX a répondu en lançant l’API KNX IoT Point (KNX IoT), comprenant une pile en source ouverte.

Pourquoi une pile en source ouverte ?

La mise en œuvre d’une nouvelle pile est une entreprise coûteuse. L’Association KNX a profité de l’occasion pour financer la mise en œuvre de la pile KNX IoT en source ouverte, et cette pile a été implémentée par Cascoda au nom de l’Association KNX. La licence source ouverte a été choisie de manière à ce que chacun puisse utiliser la pile dans ses produits. Puisque la pile est générique, cela signifie qu’une couche de portage vers le système sous-jacent est nécessaire. Cela signifie également que la couche application est manquante (par exemple, ce que l’appareil doit faire). Cependant, pour prendre en charge cela, il existe une couche de portage et une couche d’application permettant de créer des périphériques fonctionnels. Par conséquent, disposer d’une pile en source ouverte signifie que de nombreuses couches sont déjà implémentées et prêtes à être utilisées.

Composants de la pile.

Couche de portage

La définition de la pile est qu’il existe une couche de portage vers le système d’exploitation sous-jacent. Cela permet le portage vers n’importe quel autre système. La pile prend en charge les ports de deux systèmes d’exploitation : Windows et Linux. Les deux systèmes d’exploitation sont utilisés pour valider l’implémentation et peuvent être utilisés pour présenter la pile.

Lors de l’exécution de la pile sur des appareils basés sur Thread, deux ports sont actuellement disponibles : un de Cascoda sur son module Chili, et un de Nordic sur ses modules basés sur Zephyr.

Pile avec l’API de la couche d’application et la couche de portage.

Niveau d’application

Le niveau application dispose d’une API pour créer les points de données. Les points de données auront une valeur dpt et dpa, et ils utiliseront une API pour enregistrer les rappels afin de gérer les fonctions GET (et PUT) qui doivent être implémentées pour le point de données réel. L’extrait de code pour créer un point de données est le suivant :

Extrait de code pour créer un point de données

Les prototypes de fonction pour les rappels GET et PUT sont les mêmes, mais le comportement est différent. La fonction GET renvoie uniquement les données. La fonction permettant de renvoyer une variable booléenne globale en tant que charge utile est représentée dans la fonction suivante :

Fonction pour renvoyer une variable booléenne globale en tant que charge utile.

La fonction PUT aura une charge utile d’entrée qui doit être utilisée pour effectuer une action ; la plupart du temps, la fonction PUT n’aura pas de charge utile de retour, donc la fonction pour analyser un booléen dans l’entrée est représentée dans la fonction suivante :

Fonction pour analyser un booléen dans l’entrée.

Toutes les autres mécaniques font déjà partie de la pile :

  • Implémentation de tous les tableaux obligatoires.
  • Intégration sécurisée avec Spake.
  • Sécurité OSCORE.

KNX IoT virtuel

Il existe également deux exemples d’applications qui vous permettent de jouer avec KNX IoT. Bien qu’ils soient appelés appareils « virtuels », ils implémentent de véritables applications KNX IoT exécutées sur un PC et peuvent être considérés comme des jumeaux numériques. Les applications virtuelles peuvent être configurées avec ETS.

knx_iot_virtual_pb est une application de bouton-poussoir avec retour d’information. Il implémente un bouton qui, après configuration, peut envoyer un message en mode S.

Application de bouton-poussoir.

knx_iot_virtual_sa est une application d’actionneur de commutateur. Il implémente un actionneur qui, après configuration, peut afficher la valeur reçue d’un message en mode S.

Actionneur de commutation.

Les deux exemples d’applications sont disponibles sous forme de code sur GitHub et GitLab.

Résumé

KNX IoT peut fonctionner sur n’importe quel système d’exploitation et n’importe quel réseau IPv6. Par exemple, KNX IoT fonctionne avec le Wi-Fi b au Wi-Fi 6 et toutes les versions de Thread.

La pile IoT KNX en source ouverte est disponible gratuitement et peut être utilisée pour concevoir des appareils KNX.

Pour les appareils basés sur Thread, une couche de portage est nécessaire. Des kits de développement KNX IoT basés sur Thread sont actuellement disponibles auprès de Cascoda et implémentent un tel port, ainsi qu’un routeur vers Wi-Fi et Ethernet. Cela permet de créer et de tester des appareils physiques KNX IoT les uns par rapport aux autres ou par rapport à des appareils virtuels KNX IoT, et des exemples d’applications sont disponibles gratuitement pour tous.

Bruno Johnson et Wouter van der Beek sont respectivement PDG et COO de Cascoda Limited. Cascoda est une société de communications qui fabrique des radios et des modules à semi-conducteurs IoT sécurisés et oriente le développement de normes de communications IoT sécurisées pour les bâtiments et les villes intelligentes. Ses produits résolvent les problèmes de portée, de fiabilité, de sécurité, de puissance et d’évolutivité pour l’IoT industriel et commercial grâce à des innovations brevetées et aux dernières normes les plus sécurisées, le tout intégré dans des modules IoT à très faible consommation, et peu coûteux.

www.cascoda.com

Screen shots by Cascoda
Figures by Cascoda (on GitHub, as part of the stack documentation)

Partager sur facebook
Share
Partager sur twitter
Tweet
Partager sur linkedin
Share

SPONSORS