mySensors – Présentation du protocole domotique Open Source pour Arduino

par | Mai 18, 2015 | Domotique | 6 commentaires

A l’heure de l’IoT et du DIY, il est bien normal qu’Arduino ait une place confortable dans la rencontre des deux mondes. Il existe tellement de possibilités avec l’Arduino de capteurs et d’actionneurs, mais également presque autant de façons de communiquer avec. C’est là qu’intervient mySensors, qui définit un protocole standardisé pour Arduino orienté domotique.

mysensor_presentation_protocol_domotique_arduino1

1 – Présentation

mySensors est un protocole de communication pour un réseau d’Arduino (généralement des Nano ou Mini) équipés de puces NRF24L01. Chaque Arduino constitue un nœud du réseau mySensors, il peut avoir différents rôles : capteur/actionneur, répéteur, passerelle (gateway)

mysensor_presentation_protocol_domotique_arduino2

1.1 – La passerelle

La passerelle est unique dans le réseau mySensors, comme l’indique son nom, elle connecte le réseau mySensors au contrôleur (qui est votre logiciel de domotique).

Le projet mySensors fournit des sketchs (le programme Arduino) pour plusieurs types de passerelle :

  • USB : votre passerelle sera alors connectée au contrôleur directement
  • Réseau : votre passerelle sera alors connectée au réseau en Ethernet et le contrôleur s’y connectera directement par le réseau
  • MQTT client : la passerelle se connectera alors à un broker MQTT
  • MQTT broker : la passerelle sera alors elle-même broker MQTT

Dans les deux cas, votre contrôleur devra avoir implémenter le protocole mySensors. Il sera à sa charge de traduire les messages mySensors reçus et d’émettre à ce format. On devra alors avoir un plugin spécifique mySensors dans le logiciel.

Dans les deux derniers cas, il suffit d’avoir un contrôleur compatible MQTT qui est plus répandu.

1.2 – Les répéteurs

Le protocole inclus la possibilité d’activer un mode répétiteur, ce qui permettra d’étendre la portée de votre réseau.
Il est possible dans certaines conditions de cumuler répétiteur et capteurs.

1.3 – Les capteurs et actionneurs

Le coeur du réseau, tous les nœuds qui sont en charge de faire des relevés (capteurs) ou être déclenchés (actionneurs).
Toute la gamme de capteurs Arduino est possible. C’est là, sûrement, le plus gros atout. On pourra difficilement trouver des limites aux possibilités si ce n’est le temps qu’on a de disponible.

mysensor_presentation_protocol_domotique_arduino3

Ainsi il sera possible d’avoir des capteurs comme on en trouve dans de nombreux protocoles et fabricants : température, mouvement, lumière, relais, interrupteur … Tout en ayant la possibilité de l’adapter à son besoin (pile, pas pile, plusieurs capteurs …)

Mais surtout, on va trouver la possibilité de faire des capteurs qu’on ne trouvera pas dans le commerce chez des fabricants (ex : un capteur de niveau de cuve).

2 – Caractéristiques du protocole

Le protocole défini le format des messages et ses moyens de transport (Arduino, NRF24L01, ATSHA204)

2.1 – Le protocole

Le protocole est basé sur une ligne de texte (sortie serial) qui va contenir :

  • l’id du nœud sur le réseau
  • l’id du capteur du nœud
  • le type de commande (si c’est une information ou une commande)
  • acquittement ou non
  • le type de donnée
  • la valeur

Par exemple un nœud transmettra que son capteur 1 qui est température a une valeur de 20,5°.
Ou encore, la gateway enverra un ordre à l’intention du nœud 32 pour passer son relais à ON.

Mais surtout, au démarrage d’un nœud, celui-ci va se présenter, c’est une phase obligatoire du protocole.
D’abord si il n’a pas d’id, il va faire la demande à la gateway (qui lui attribuera si elle est en mode inclusion).
Ensuite, il va se présenter lui : sketch et version. Ca permet de savoir qu’un nœud « température » est arrivé par exemple.
Et pour chacun de ses capteurs et actionneurs il va les présenter en annonçant leur type.

Ce qui fait qu’au final, on a un équipement qui est répertorié après son démarrage. Et on peut faire le lien information envoyée sur quel capteur …

L’acquittement permet de s’assurer de la bonne réception du message. On est également sur un protocole à retour d’état.

2.2 – La sécurité

Pour reprendre les caractéristiques mySensors concernant la sécurité, il y a 3 points :

  1. Chiffrement : aucun chiffrement n’est disponible actuellement et ce n’est pas prévu. Pour plusieurs raisons, dont une réflexion « si le fait qu’une information soit transmise en claire est dérangeant, n’oubliez pas que pour savoir si une porte est ouverte il suffit d’essayer ». Bref, tant que ce n’est qu’une info, elle est souvent visible sans équipement (luminosité, température …) et n’a pas de niveau critique.
  2. Signature : là par contre, un ajout récent permet de sécuriser les échanges par la signature des messages. On peut avoir un réseau mixte, donc par exemple que les nœuds capteurs qui ne font que remonter des infos, soient sans cette protection. Par contre les actionneurs on pourra activer ce mode. Alors il y aura un échange de certificat avec la passerelle pour s’assurer que le demandeur est bien celui qu’on attend. Pour cet usage, une puce de soutient à l’Arduino est conseillé. Dans tous les cas, certificat en SHA256 ce qui veut dire que si ce type de clef est brisée, certaines monnaies virtuelles ont du soucis à se faire.
  3.  fréquence : la fréquence exacte de votre réseau est paramétrable (autour des 2.4GHz du NRF24L01).

D’une façon générale, n’oublions pas qu’il faut connaître cette fréquence, pouvoir identifier le protocole et alors il y aura les échanges de clefs.

3 – Retour sur le matériel

mysensor_presentation_protocol_domotique_arduino4

Pour le matériel, il faut donc un Arduino pour chaque nœud. Souvent du Mini pour sa taille, le Nano pour sa double alimentation et USB, du Mega pour sa puissance ou des ATMega maison sur carte intégrée pour des usages dédiés.

Le NRF24L01 pour la communication sans fil. Il utilise la bande des 2.4GHz, des modules à antenne sont disponible pour améliorer la portée. Suivant les conditions environnementales, la distance de référence est 50m pour le module classique, 100m pour le module à antenne.

La puce de calcul en option pour la signature ATSHA204. Bien que pouvant utiliser un calcul de l’Arduino, il est préférable de lui ajouter ce petit composant qui ne servira qu’à ca.

4 – Le NRF24L01+ en détail

mysensor_presentation_protocol_domotique_arduino5

  • Puissance d’émission : max 100mW (sur un module avec antenne)
  • Consommation : 900nA en sommeil, 13.3mA à 2Mbps
  • Fréquence d’émission : 2.4GHz
  • Débit de transfert : 250kbps, 1Mbps, 2Mbps
  • Portée maximum théorique : 520m (2Mbps)/750m(1Mbps)/1000m (250Kbps) avec un module à antenne
  • Alimentation : 1.9 to 3.6V
  • Température d’utilisation : -40 to +80 ºC

 

Merci à Lunarok, béta testeur Jeedom, pour cet article !

Restez connecté sur l'actualité domotique!