Une passerelle IP pour le réseau EnOcean

Cette application est une passerelle IP logicielle pour EnOcean. Elle permet à plusieurs applications d'accéder simultanément à un réseau radio EnOcean, en émission comme en réception, via le réseau IP.

Pourquoi une passerelle IP/EnOcean

Si EnoGateway n'apporte aucune fonctionnalité en termes de domotique, elle est indispensable en terme d'architecture logicielle, car elle permet d'éliminer une contrainte forte sous EnOcean, à savoir l'absence de passerelle IP.

En effet, les seuls modules de communication EnOcean disponibles sont des dongles USB qui émulent un port série. Mais un port série ne peut être ouvert que par une seule application, ce qui conduirait à intégrer toutes les fonctionnalités domotiques au sein d'une seule application. Une suite domotique nécessite au minimum une application de supervision pouvant être lancée par l'utilisateur quand bon lui semble, et une application d'automatismes destinée à tourner en permanence. Si la suite domotique est conçue sous la forme d'une seule application monolithique, les automatismes cessent de fonctionner dès que l'utilisateur ferme sa session de supervision, ce qui contraint à laisser la session de supervision ouverte en permanence pour préserver le fonctionnement des automatismes.

Examinons 3 solutions d'architecture :

  • Une application monolithique fonctionnant 24/7 pour assurer la gestion des automatismes, embarquée sur une tablette murale assurant également le rôle de superviseur. Il faut alors pouvoir déporter le dongle USB qui serait encombrant s'il était connecté sur la tablette. C'est semble-t-il la solution adoptée par la société Suisse Bootup pour son logiciel de supervision EnOcean MyHomeControl (1) qui commercialise à cet effet sa propre antenne USB EnOcean qui est en fait un boîtier déporté intégrant le dongle USB EnOcean. Peut-être aurait-il été préférable d'utiliser un serveur de ports USB connecté au réseau IP local, comme le produit AnywhereUSB de la société Digi (2) qui permet à une application d'accéder à un port USB distant via le réseau IP et de le voir comme un port USB local. Il n'aurait ainsi plus été nécessaire de raccorder physiquement l'antenne sur la tablette.
  • Une application modulaire accédant au réseau EnOcean par une passerelle IP physique intégrant l'antenne EnOcean. Si le développement d'une passerelle IP physique est à la portée d'une entreprise, elle est rarement à la portée d'un particulier qui devra cumuler les compétences nécessaires en électronique et en informatique. C'est semble-t-il la solution retenue par la société allemande Eltako pour son logiciel de supervision GFVS (3). La passerelle IP est vendue séparément sous la référence IPG170 (4), mais elle semble n'avoir été conçue qu'à l'usage exclusif du logiciel GFVS car le format des trames et les ports utilisés ne semblent pas être documentés.
  • Une application modulaire accédant au réseau EnOcean par une passerelle IP logicielle. La passerelle IP et l'application assurant les automatismes peuvent alors être placées sur un petit PC basse consommation assurant le rôle de box domotique, sur lequel sera connecté le dongle USB EnOcean qui sera utilisé exclusivement par la passerelle IP. Les autres applications pourront être situées n'importe ou sur le réseau local, par exemple sur une tablette murale ou nomade, reliée en wifi, et ne fonctionnant que lorsque l'utilisateur en a besoin. C'est la solution adoptée par la suite EnoSolution, pour sa souplesse, mais aussi parce qu'elle ne réclame que des compétences purement informatiques.
  1. Le superviseur MyHomeControl de la société Bootup
  2. Le serveur de port USB AnywhereUSB de la société Digi
  3. Le logiciel de supervision GFVS de la société Eltako
  4. La passerelle physique IP/EnOcean IPG170 de la société Eltako

Présentation

EnoGateway est une passerelle IP logicielle permettant à plusieurs applications de communiquer avec le réseau EnOcean. EnoGateway permet ainsi de concevoir l'architecture de la suite logicielle sans contrainte, mais aussi d'envisager de futures évolutions sous la forme d'applications supplémentaires, sans avoir à retoucher les applications initiales.

EnoGateway se présente sous la forme d'un service Windows afin de garantir son fonctionnement même si toutes les sessions utilisateur sont fermées.

EnoGateway écoute le réseau EnOcean via le dongle USB EnOcean puis réémet les trames en UDP multicast sur le réseau Ethernet local. Il est ainsi possible à plusieurs applications de recevoir les trames en s'abonnant au flux multicast.

Dans l'autre sens, EnoGateway écoute sur un port UDP local les trames EnOcean émises par les applications qui envoient des commandes, et les transmet sur le réseau EnOcean.

Enfin, EnoGateway assure également l'historisation des trames reçues et émises dans des fichiers texte journaliers, afin de permettre l'exploitation statistique des données échangées sur le réseau EnOcean (évolution des données météo, détection de présence, etc).

A noter que si toutes les applications de la suite EnoSolution ont besoin d'EnoGateway pour fonctionner, la passerelle EnoGateway peut être utilisée seule, par un développeur qui souhaiterait dialoguer avec le réseau EnOcean sans avoir à écrire la partie communication.

Configuration

EnoGateway utilise un fichier de configuration EnoGateway.exe.config qui doit être situé dans le même répertoire qu'EnoGateway.exe et qui contient les paramètres suivants :

  • SerialComPort : Le port série sur lequel est connecté le dongle EnOcean (ex : COM3)
  • MulticastAddress : L'adresse IP multicast sur laquelle EnoGateway envoie les télégrammes à destination des applications abonnées au flux multicast (ex : 239.0.0.222)
  • MulticastPort : Le port d'émission UDP sur lequel les applications doivent écouter les télégrammes reçus (ex : 2222)
  • ListeningPort : Le port de réception UDP sur lequel les applications doivent envoyer les télégrammes à émettre (ex : 2223)
  • ArchiveFilePath : Le répertoire dans lequel EnoGateway va historiser les télégrammes EnOcean (ex : C:\EnoSolution\Files\) ainsi que son propre fichier log (EnoGateway.log)

L'historisation est réalisée dans des fichiers journaliers nommés Archive_yyyy-mm-jj.log

Format des télégrammes

Les télégrammes reçus du réseau EnOcean par EnoGateway sont retransmis tels quels en UDP sous la forme d'un tableau de bytes.

Les télégrammes reçus des applications qui souhaitent les émettre sur le réseau EnOcean ont le format suivant :

  • Ils se présentent comme un télégramme standard EnOcean, transmis sous la forme d'un tableau de bytes.
  • Le champ SENDER_ID doit être renseigné avec un identifiant numérique logique dont la valeur varie de 0 à 127. EnoGateway y ajoutera le BASE_ID du dongle USB, ce qui permettra d'émettre sur le réseau EnOcean avec 128 identifiants différents.
  • Les deux CRC présents dans un télégramme EnOcean peuvent être initialisés avec une valeur quelconque (ex : 00) car ils seront calculés par EnoGateway avant l'envoi du télégramme.

EnoGateway facilite ainsi grandement l'envoi de télégrammes en prenant en charge la gestion du BASE_ID de la passerelle et le calcul des CRC.

Architecture logicielle

En interne, EnoGateway est constitué de 5 tâches distinctes qui communiquent entre elles par des files d'attente "thread safe".

  • ReceiveFromSerial : La tâche chargée de recevoir, d'identifier, et de valider les télégrammes reçus du réseau EnOcean.
  • ReceiveFromUDP : La tâche chargée de recevoir les télégrammes à émettre sur le réseau EnOcean.
  • SendToSerial : La tâche chargée de formater l'identifiant à partir de l'identifiant logique reçu et du BASE_ID du dongle USB, de calculer les CRC, et d'émettre les télégrammes.
  • SendToUdp : La tâche chargée de filtrer les messages de contrôle émis par le dongle USB et d'émettre les télégrammes à destination des applications.
  • Archive : La tâche chargée de l'archivage des télégrammes horodatés transmis par les tâches SendToSerial et SendToUDP.

EnoGateway utilise également la dll EnoCommon qui contient des routines communes utilisées par l'ensemble des applications de la suite EnoSolution. EnoCommon.dll doit être déployée dans le même répertoire que EnoGateway.exe.

Le traitement effectué par les tâches de réception est minimal. Par exemple, ReceiveFromUDP se limite à insérer les télégrammes reçus en file d'attente, à charge pour la tâche SendToSerial de réaliser toutes les opérations sur le télégramme avant de l'émettre. Ceci permet à ReceiveFromUDP de se remettre à l'écoute quasi immédiatement et de limiter ainsi le risque de rater des télégrammes. Si EnoGateway faisait face à une avalanche de télégrammes, les files d'attente internes serviraient de tampon afin d'éviter la perte de télégrammes. Toutefois, il faut garder à l'esprit qu'UDP ne donne aucune garantie de livraison. En revanche, il se montre plus simple que TCP (pas de mécanisme d'ouverture et de gestion de la connexion) et plus efficient (pas de gestion de l'ordre des paquets puisqu'un télégramme tient dans un seul paquet). Le risque de perdre un message UDP est très faible sur un réseau local, mais non négligeable entre deux systèmes qui communiquent via internet (ce qui n'est pas notre cas).

Consultez la rubrique "liens" sur le menu de la page d'accueil pour télécharger les sources d'EnoGateway (application développée en C# sous Visual Studio 2017 Community).


Retour à l'accueil