EnOcean partie 1: Premiers pas avec EnOcean

EnOcean partie 1: Premiers pas avec EnOcean

Préambule

Il y a quelques temps,  j’ai emménagé dans un nouvel appartement dans lequel était déjà pré-installé des volets roulants électriques et des éclairages commandés par des interrupteurs radio sans fils et sans pile. C’est plutôt cool vu que ça permet de mettre l’interrupteur là où on le désire très facilement. Ça fonctionne pas mal à condition de ne pas appuyer trop mollement sur le bouton afin que le système piezzo puisse générer assez d’énergie pour envoyer la trame radio.

Il y avait également dans l’armoire électrique une genre de passerelle avec une antenne et connectée en ethernet pour pouvoir piloter tout ça à distance, ça avait l’air cool… enfin ça avait l’air.
Pour l’utiliser, il fallait utiliser une application qui s’appelle Flexom, lente, très lente, utilisable que via le net donc pas en direct sur le réseau local, avec obligation de créer un compte en fournissant quelques données personnelles au passage sans parler du fait d’avoir le fil à la patte avec une société qui peut faire faillite du jour au lendemain et de se retrouver avec une apli qui ne fonctionne plus… bref le truc trop nul. Il suffit d’ailleurs de voir les commentaires sur les app store Android ou Apple.

Je m’attendais à avoir une genre d’API REST où c’est open-bar, pour ensuite pouvoir faire des scénarios avec mes différents objets connectés maison à base de nrf24.

La pêche aux infos

Je commence à m’intéresser au sujet de près, et là je découvre que EnOcean c’est super bien documenté, et que n’importe quel fabriquant peut rejoindre la EnOcean Alliance pour fabriquer des périphériques qui seront interopérables avec ceux des autres fabricants grâce à une normalisation des profils de communication (Profils d’équipement EnOcean ou EEP).

Si je comprend bien, en théorie, à partir du moment où j’ai un émetteur radio EnOcean, je peux piloter mes volets avec n’importe quoi : un port série, un arduino, un raspberry, en Wifi avec un ESP32 ? Récupérer leur état en faisant mon paquet radio moi-même et en comprenant ce qu’il y a dedans ? Faire une vraie API ? (Spoil : en pratique aussi c’est comme ça).

EnOcean-Equipment-Profiles-3-1
La documentation générale du protocole, des différents formats de paquets, des échanges entre appareils…

EnOcean_Equipment_Profiles_EEP_v2.6.8
Le détails des communications pour chaque profil EEP (EnOcean Equipment Profil).

 

Profile EEP

Le profile EEP indique à quel type d’appareil on a à faire. Il se compose de 3 octets en héxadécimal : RORG-FUNC-TYPE. Pour le trouver en règle générale c’est assez simple… c’est écrit dessus.

  • RORG  : Cette valeur indique le type de « telegram » c’est à dire de paquet radio (RPS, 1BS, 4BS, VLD…) on verra plus loin ce que ça signifie.
  • FUNC : La fonction de base des données (interrupteur, capteur de température, gradateur de luminaire…)
  • TYPE : Type précis de l’appareil dans la catégorie définie par FUNC.

Exemple 1 : F6-05-02

  • F6 : Télégramme RPS
  • 05 : détecteurs
  • 02 : de fumée

Exemple 2 : A5-04-02

  • A5 : Télégramme 4BS
  • 04 : capteur de température et d’humidité
  • 02 : Température de -20°C à +60°C humidité relative de 0% à 100%

 

Profiles compatibles

Un appareil avec un profil EEP donnée peut être compatible avec des télégrammes ayant un autre profile.
Par exemple D2-01-0E, un module contact sec un canal (pour allumer une lampe par exemple), il y a de très fortes chances qu’il soit compatibles avec les télégrammes RPS F6-02-01 provenant d’un interrupteur manuel ou bien d’un interrupteur à carte F6-04-02. En principe c’est marqué dans la notice.

 

Les différents télégrammes (RORG)

Le tableau est tiré de la documentation

Télégramme RORG Description
RPS F6 Repeated Switch Communication
1BS D5 1 Byte Communication
4BS A5 4 Byte Communication
VLD D2 Variable Length Data
MSC D1 Manufacturer Specific Communication
ADT A6 Addressing Destination Telegram
SM_LRN_REQ C6 SMART ACK Learn Request
SM_LRN_ANS C7 SMART ACK Learn Answer
SM_REC A7 SMART ACK Reclaim
SYS_EX C5 Remote Management
SEC 30 Secure telegram
SEC_ENCAPS 31 Secure telegram with RORG encapsulation
SEC_MAN 34 Maintenance Security message
SIGNAL D0 Signal telegram
UTE D4 Universal Teach In

L’adresse radio

Le EEP c’est bien, mais ça ne permet pas de différencier deux appareil EnOcean identiques dans le même logement… où même dans deux logements différents, ça serait bizarre de pouvoir allumer la lumière du voisin.

Chaque appareil possède donc une adresse sur 4 octets pour le différencier des autres qui bien souvent est écrite dessus également. Elle est transmise dans le paquet radio.

Par la suite on verra qu’il faut procéder à un appairage entre les appareils pour que par exemple une commande de volet roulant réagisse à l’appuie sur un interrupteur de commande.

Passerelle NRF24 / Ethernet

Passerelle NRF24 / Ethernet

Beaucoup des projets présentés sur ce blog utilisent un module nrf24l01+ pour la transmission des données sans fil… c’est bien, encore faut-il avoir quelque chose à l’autre bout pour les recevoir. Le but du billet d’aujourd’hui est de construire une passerelle faisant la liaison dans les deux sens entre un réseau Ethernet et des modules nrf24l01+. Le paquet transmis par un capteur pourra ainsi être envoyé vers une API hébergée sur un NAS ou sur un serveur internet via une box connectée au réseau. A l’inverse, une page web pourra appeler l’API de la passerelle pour envoyer un paquet à un capteur.

Principe de fonctionnement

Lire la suite Lire la suite

Capteur sans fil pour compteur de gaz Gazpar

Capteur sans fil pour compteur de gaz Gazpar

Gazpar est le nom du nouveau compteur de gaz communiquant déployé en France par GRDF depuis maintenant quelques années. Ils émettent deux fois par jour la consommation vers un concentrateur situé à quelques km maximum sur une fréquence de 169MHz, puis les données du quartier sont transférées chez GRDF via le réseau 2G/3G. En tant que particulier nous n’avons pas accès à ces données directement, on ne peut que récupérer sa conso et son historique via le site de GRDF.

Néanmoins, ce compteur dispose d’une sortie impulsion que nous allons utiliser pour récupérer et transmettre en temps réel la consommation.

Lire la suite Lire la suite

Escame Room : la bombe à désamorcer

Escame Room : la bombe à désamorcer

L’ultime étape de challenge est de désamorcer la bombe soigneusement enfermée dans une mallette. Elle contient les tubes d’explosifs (fictifs bien sûr!) ainsi que l’électronique censé déclencher l’explosion. Le cœur est un Arduino Nano avec un clavier pour entrer le code de désamorçage, un module de huit afficheurs 7 segments pour le compte à rebours, un module nrf24l01+ pour démarrer le décompte à distance et un piezzo pour les bip du décompte et de prise en compte des touches du clavier. Le tout est alimenté par une batterie LiPo 3S, car j’en avait une sous la main,  mais une pile de 9V ça marche aussi.

Lire la suite Lire la suite

Matrices de LED RGB [Partie 2]

Matrices de LED RGB [Partie 2]

Dans la partie 1, nous avons vu que pour remplir les registres à décalage, il y avait 6 broches de données (R1, G1, B1 et R2, G2, B2) synchronisée par une broche d’horloge… un peu comme un port SPI avec 6 MOSI. D’où l’idée d’utiliser le port SPI hardware de l’Arduino pour envoyer les données. Oui mais… il n’y a qu’un seul MOSI. Mais dans la matrice c’est un registre à décalage… et on peut  mettre plusieurs matrices de LED en série pour les chaîner. Et si on chaînait une matrice avec elle même ? Ça pourrait faire une seule broche de donnée + l’horloge… donc MOSI et SCK.

Bon, c’est pas très net cette histoire. Avec un schéma ça sera plus simple.
À gauche, le schéma simplifié de la partie 1. On envoie en 64 fois en série (pour les 64 LED de large)  R1, G1, B1 et R2, G2, B2 en parallèle.
À droite, le schéma de cette partie. On a chaîné les registres à décalage entre eux. On envoie cette fois 384 données en série sur le premier registre, quand il sera plein il commencera à pousser au suivant et ainsi de suite jusqu’à remplir le dernier registre bleu. Vu que tout est décalé à chaque coup d’horloge, on transmet le dernier pixel bleu B2 en premier pour finir par le premier rouge R1.

 

 

Lire la suite Lire la suite

Station météo : alimentation solaire

Station météo : alimentation solaire

Dernière étape de la station météo sans fil : l’alimentation solaire avec un panneau photovoltaïque. Elle fournira une tension de 5V pour le capteur de particules fines et une tension de 3.3V pour le capteur BME280. Une cellule lithium-ion assurera la continuité de l’alimentation durant la nuit, elle sera automatiquement rechargée dès que la luminosité sera suffisante.

Lire la suite Lire la suite

Station météo : capteur de particules fines (SDS011)

Station météo : capteur de particules fines (SDS011)

Pour poursuivre la conception d’une station météo sans fil, on s’attaque cette fois ci à un capteur de particules fines PM10 et PM2,5. PM signifie Particulate Matter, suivi de la taille des particules en µm, donc en millièmes de millimètre.

A gauche le capteur de température, à droite le capteur de particules.

Ce sont des particules en suspension dans l’atmosphère de taille microscopique : leur diamètre est inférieur à 10µm pour les PM10 et inférieur à  2.5µm pour les PM2,5. Pour référence, un cheveux a un diamètre compris entre 50 et 100µm.

La mesure des particules est assurée par le SDS011 et un module radio nrf24l01+ gère la transmission sans fil. Le cœur est un  atmega328p qui peut être programmé avec arduino.

Lire la suite Lire la suite

Station météo : capteur de température, humidité et pression (BME280)

Station météo : capteur de température, humidité et pression (BME280)

Il s’agit d’une station météo sans fil avec mesure de la température, de l’humidité et de la pression atmosphérique. Elle utilise un module avec un capteur BME280 et un module nrf24l01 + pour la transmission sans fil. Le cœur est un  atmega328p qui peut être programmé avec arduino.

Lire la suite Lire la suite

Création d’un escape-room maison

Création d’un escape-room maison

Pour animer une soirée entre amis, j’avais eu l’ambition de créer de toute pièce une session d’escape dans une ambiance laboratoire. La plupart des énigmes et du décors sont réalisées avec des pièces et composants électroniques de récup ou que j’avais déjà à disposition. Il a juste fallu acheter un petit lot de cadenas miniatures à code dans un magasin de bricolage et quelques autres composants électroniques principalement sur aliexpress.

Le scénario est assez simple, on se retrouve enfermé dans le laboratoire d’un savant fou, une bombe déjà activée posée sur la table. Première difficulté, il n’y a au départ pas de décompte visible : il faut d’abord ouvrir la mallette de la bombe pour voir le décompte.

Chacune des différentes énigmes à résoudre rend hommage à des personnages emblématiques plus ou moins connus de la recherche scientifique :

  • Dmitri Ivanovitch Mendeleïev (tableau périodique)
  • Alessandro Volta (pile)
  • Heinrich Rudolf Hertz (ondes hertziennes)
  • Amedeo Avogadro (nombre d’Avogadro)
  • Alfred Nobel (dynamite)
  • Thomas Lowry/Joannes Brønsted (acides/bases)
  • Etienne Oehmichen (stroboscope)

Lire la suite Lire la suite