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 !

Partagez cet article !

A propos de l'auteur

Fan de nouvelles technologies, j'adore découvrir chaque jour les possibilités de la Domotique qui semblent sans fin! Sportif, je m’intéresse également beaucoup aux objets connectés liés à la santé et au sport.

5 commentaires

  1. Un début interessant mais j’ai un peu de mal à cerner certains points:

    – quel est l’equippement en charge de la reception RF 2.4ghz? Est-ce qu’il s’agit betement de wifi ou bien d’un protocole et d’une bande differente? D’autant plus si la reception se fait par un broker MQTT, comment celui-ci reoit-il les messages?

    – le protocole est-il obligatoirement lié à cette frequence? Est-ce qu’on peut l’utiliser? Cela rejoint la question precedente. Peut-on emettre des messages respectant le format de ce protocole directement sur le broker? peut on imaginer recevoir ces messages apr exemple a l’aide d’un serveur http REST?

    – Quelle difference avec un module ESP8266 (module wifi a moins de 5$)? Je fais actuellement des tests (un capteur de niveau de cuve de fioul justement) avec un NodeMCU + MQTT + Jeedom, et j’ai du mal a cerner l’avantage de ce module (l’esp8266 ne requiert pas necessairement d’arduino pour fonctionner avec un sensor, et semble plus simple à utiliser en terme de developpement)

    Un petit exemple d’application serait le bienvenue 🙂

  2. Les réponses dans l’ordre :

    – comme indiqué, les transmissions sont faites via le NRF24L01, pas de WIFI

    – la réception ne se fait pas par MQTT, une passerelle mySensors vers MQTT est disponible (en version client ou broker MQTT) Cette passerelle traduit le protocole mySensors vers MQTT et vice versa, mais les communications du réseau mySensors ne se font pas en MQTT

    – oui le protocole mySensors est lié à la puce NRF24L01 (c’est un lien présent dans la lib pour Arduino) Des travaux sont en cours de réflexion pour ajouter la RFM68 mais un réseau NRF24L01 sera incompatible avec le réseau RFM68 si ca aboutit

    – un broker MQTT ne parle pas directement sur un réseau mySensors, il passerait par la passerelle qui est en charge de la traduction (d’où son nom)

    – pas d’API REST, c’est un protocole non IP

    – les différences avec un ESP8266 sont aussi nombreuses qu’entre le Zwave ou des objets connectés par IP. L’ESP8266 est une puce wifi, donc IP, pas de routeur et c’est fini, plus de communication. 40 capteurs dans la maison, c’est 40 IP de présentes. Le réseau mySensors est autonome et ne nécessite une passerelle que pour recevoir des ordres de l’extérieur et signaler les changements.
    Et si l’ESP est à moin de 5€ c’est sur alim 3.3V uniquement, moins d’IO qu’un Arduino etc, bref comparé à un Arduino et NRF (0.80€ le composant) c’est pas financièrement positif l’ESP

    – Pour des exemples de capteurs :
    http://doc.jeedom.fr/fr_FR/doc-mySensors-modules.html

  3. Merci pour ces reponses, combiné a une lecture plus approfondie du site mysensors c’est un peu plus clair maintenant
    Petite question bete supplementaire, des pcb partagés sur tinder ou ohspark sont-ils prévus? ca pourrait pas mal faciliter la vie de certains

  4. Il y a déjà au moins un modèle de PCB disponible sur mySensors et commandable au près d’une crèmerie chinoise ou autre.

    Ils ont aussi maintenant une carte :
    http://www.mysensors.org/hardware/micro
    Et on en trouve d’autres références sur le forum Jeedom par exemple.

    En même temps, des PCB ne facilitent pas beaucoup la vie de beaucoup d’utilisateurs, ca oblige à sortir de le fer à souder et à pouvoir bricoler.

  5. comment ajouter un écouteur a mon programme esp_simple httpserver

    void loop()

    {

    if (…………..)

    {

    wifi.serveHttpRequest();

    return;

    }

    sendDHTtemp();

    }

Laisser une réponse