EnoGateway

EnoGateway 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, en IP via le réseau Ethernet local.


Pourquoi faut-il une passerelle IP/EnOcean ?

Si EnoGateway n'apporte aucune fonctionnalité domotique, elle est indispensable en terme d'architecture logicielle, car elle permet d'éliminer une contrainte forte avec EnOcean, à savoir l'impossibilité de partager l'antenne EnOcean.

En effet, pour développer une application EnOcean, et par conséquent communiquer avec le réseau radio EnOcean, il faut utiliser un dongle USB émulant 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 même application. Or 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 était conçue sous la forme d'une seule application monolithique, les automatismes cesseraient de fonctionner dès que l'utilisateur fermerait sa session de supervision. Pas pratique.

Examinons 3 architectures envisageables :

  • 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 sont pas 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 oú 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 que j'ai retenu pour 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'une application de type Systray fonctionnant sous Windows. Elle peut être hébergée par un petit PC fanless faisant office de box domotique. Pour garantir le lancement de l'application lors d'un redémarrage de Windows, il faut créer un utilisateur Windows avec login automatique et placer un raccourci vers EnoGateway dans le groupe de démarrage de l'utilisateur.

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. En effet, EnoGateway intègre des fonctions qui simplifient l'envoi de télégrammes pour les applications. Par exemple, EnoGateway évite à l'application de calculer les checksums du télégramme ou d'avoir à spécifier le BASE_ID du dongle. Envoyer un télégramme EnOcean via EnoGateway est on ne peut plus simple.


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.123)
  • MulticastPort : Le port d'émission UDP sur lequel les applications doivent écouter les télégrammes reçus (ex : 2345)
  • ListeningPort : Le port de réception UDP sur lequel les applications doivent envoyer les télégrammes à émettre (ex : 3456)
  • 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 entre EnoGateway et les applications

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

Les télégrammes qui proviennent des applications qui souhaitent les émettre sur le réseau EnOcean doivent avoir le format suivant :

  • Ils doivent se présenter 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 simple identifiant numérique logique dont la valeur varie de 0 à 127. EnoGateway y ajoutera le BASE_ID du dongle USB, ce qui permet aux applications d'émettre sur le réseau EnOcean avec 128 identifiants différents et sans avoir à connaître le BASE_ID du dongle.
  • 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 le BASE_ID à 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 instantanément 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 communiqueraient 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

Publié le samedi, février 25 2017 par Enos