lundi 13 mai 2019

MYSENSORS : présentation




MYSENSORS : présentation


Cela fait un moment que je vous ponds des articles sur des dispositifs MySensors, mais je m'aperçois que je n'ai pas précisé  de quoi il s'agissait. Comme si cela coulait de source.
Allons-y, cela ne peut pas faire de mal ...

1. Terminologie

Dans cet article j'emploie des termes dont voici la signification :
  • contrôleur, serveur : le serveur domotique 
  • objet connecté, dispositif : les différents capteur, actionneurs du système
  • passerelle, gateway : le module chargé de communiquer avec les objets connectés

2. MySensors

La librairie MySensors permet de créer des objets connectés à partir de plateformes du type ARDUINO ou ESP8266 :
  • des capteurs
    • température
    • humidité
    • lumière
    • pression atmosphérique
    • tension, courant, puissance consommée
    • etc.
  • des actionneurs
    • relais
    • lampe
    • gradateur
    • prise
    • arrosage automatique
    • etc.

2.1. Les modules radio

Ces objets peuvent communiquer avec un contrôleur (serveur domotique) à l'aide de modules de communications extrêmement répandus :
  • NRF24L01 - 2.4GHz
  • RFM69 - 433Mhz, 868Mhz
  • RFM95 - 868Mhz
Le 433MHz et 868MHz sera un meilleur choix si les distances entre les objets et la passerelle sont importantes ou si des murs épais doivent être traversés.

2.1.1. Le NRF24L01
Le NRF24L01 est un module radio SPI communiquant sur la bande de fréquence 2.4GHz. Il existe en deux versions :
NRF24L01 à antenne imprimée
NRF24L01 amplifié à antenne externe (connecteur SMA)
Pour la passerelle on choisira de préférence le modèle amplifié qui aura une portée supérieure.

Si l'on désire déporter l'antenne sur l'arrière d'un boîtier, on peut utiliser une petite rallonge avec un connecteur femelle à visser :
Le NRF24L01 est tolérant au 5V sur ses entrées logiques. Voir ici :
https://riton-duino.blogspot.com/2018/08/le-nrf24l01-avec-arduino-uno-nano-et.html
On pourra donc le relier à une carte ARDUINO NANO ou UNO directement, sans avoir à insérer de circuit adaptateur de niveaux logiques.

2.1.2. Le RFM69 ou RFM95
Le RFM69 est un module radio SPI communiquant sur les bandes de fréquences 433MHz ou 868MHz.
Le RFM95 communique sur les bandes de fréquences 868MHz ou 915MHz.

Sauf erreur de ma part il me semble qu'émettre sur la bande 915MHz est interdit en France.

L'antenne de ces modules pourra être réalisée à l'aide d'un simple morceau de fil droit ou en forme de ressort :
Antenne 433MHz
On peut facilement réaliser soi-même ce genre d'antenne avec un simple fil de la longueur voulue, enroulé ou pas :
  • 433MHz : 16.5cm
  • 868MHz : 8.2cm
Attention le RFM69 et le RFM95 ne sont pas tolérants au 5V sur leurs entrées logiques. Il faudra utiliser soit une carte ARDUINO 3.3V (PRO MINI 8MHz) soit insérer un circuit adaptateur de niveaux 5V / 3.3V entre le module et la carte ARDUINO 5V.

La solution la plus simple est bien entendu la PRO MINI 3.3V 8MHz. Elle nécessitera toutefois l'utilisation d'un convertisseur USB / série 3.3V :
  • chargement du code
  • liaison avec la RASPBERRY PI s'il s'agit d'une passerelle
Pour une solution 5V UNO ou NANO il existe des solutions toutes faites :
RFM69 shield pour ARDUINO UNO

Ce shield n'a pas de connecteur SMA.

Carte breakout AdaFruit
On voit sur cette carte AdaFruit un connecteur (à droite) sur lequel on peut souder une antenne filaire (broche du milieu) soit un connecteur SMA :
Connecteur SMA (montage bord de PCB)
Sur ce connecteur on pourra visser une antenne SMA :
Si l'on désire déporter l'antenne sur l'arrière d'un boîtier, on peut utiliser une petite rallonge avec un connecteur femelle à visser :

Comme on le voit les solutions ne manquent pas, et permettent un intégration mécanique impeccable.

2.2. La passerelle

Le contrôleur ne communique pas directement avec les objets, il le fait à l'aide d'une passerelle de communication reliée au contrôleur par USB ou Ethernet.

Cette passerelle est constituée généralement d'une carte ARDUINO de base (UNO, NANO, MINI) et possède le même module de communication que les objets connectés.

Il est possible de faire cohabiter plusieurs passerelles sur le même contrôleur :
  • passerelle 2.4GHz NRF24L01
  • passerelle 433MHz RFM69
  • passerelle RFLINK 433MHz
  • etc.
La RAPBERRY PI possède 4 connecteurs USB.

Le RFLINK est une passerelle permettant la communication avec des objets connectés 433MHz du commerce (Chacon, Blyss, etc.).

ATENTION : j'ai remarqué que le RFM69 443MHz n'aime pas trop la proximité avec le RFLINK. Il faut les éloigner l'un de l'autre. Dans mon cas, 20cm ont suffit à assurer un fonctionnement correct.

2.3. Le contrôleur

Beaucoup de serveurs domotique peuvent communiquer avec une passerelle MySensors :
Sur le volet de gauche de ces différentes pages, vous trouverez la liste complète de ces contrôleurs.

Certains contrôleurs peuvent s'interfacer avec une passerelle MySensors nativement (Domoticz) ou à l'aide d'un plugin. Certains plugins sont payants (Jeedom).

Le contrôleur est installé en général sur une plateforme du type RAPBERRY PI. On peut bien évidemment l'installer sur un PC, mais à quoi bon consommer plus de 30W en permanence alors qu'une RAPBERRY PI fait la même chose en consommant 1 à 2W ?

Je ne vais pas ici refaire ce que d'autres ont déjà fait, mais vous aiguiller pour que vous puissiez trouver la documentation que vous recherchez, et en français quand c'est possible.

A la fin de cet article vous trouverez quelques conseils personnels, ainsi qu'un petit tuto sur l'installation d'une passerelle et de dispositifs MySensors sur Domoticz.

2.4. Le répéteur

Si les distances ne permettent pas à un capteur de communiquer avec la passerelle il est possible d'installer un répéteur entre les deux.
Le répéteur est constitué de la même manière que la passerelle, d'une carte ARDUINO basique (UNO, NANO, MINI)et d'un module radio.

Un nœud capteur ou actionneur peut parfaitement jouer le rôle de répéteur, c'est une option :

// Enabled repeater feature for this node
#define MY_REPEATER_FEATURE


Cet ajout dans le code suffit. On peut difficilement faire plus simple.

3. Liens utiles

3.1. MySensors.org

Comment relier votre module radio à votre ARDUINO :https://www.mysensors.org/build/connect_radio

La librairie :
https://www.mysensors.org/about/arduino

Comment construire votre passerelle :
https://www.mysensors.org/build/serial_gateway

Le code de la passerelle est bien entendu fourni. Il tourne sur une carte NANO, UNO ou MINI.

Les exemples avec différents capteurs et actionneurs :
https://www.mysensors.org/build

3.2. Domoticz

Le WIKI :
https://www.domoticz.com/wiki/Main_Page

Tutoriel Mysensors :
https://www.domoticz.com/wiki/MySensors

3.3. EasyDomoticz

Tutoriel installation Domoticz :
https://easydomoticz.com/domotique-comment-debuter/installation-de-domoticz-sur-raspberrylinux-debian/

Tutoriel Domoticz / MySensors :
https://easydomoticz.com/domoticz-arduino-mysensors-org-partie-2-la-passerelle/

3.4. JeeDom

Tutoriel Mysensors très détaillé :
https://www.jeedom.com/forum/viewtopic.php?t=5381

3.5. Domadoo

La présentation :
https://blog.domadoo.fr/48220-mysensors-presentation-protocole-domotique-open-source-arduino/

JeeDom :
https://blog.domadoo.fr/guides/jeedom-guide-dutilisation-de-mysensors/
https://blog.domadoo.fr/solution_domotique/jeedom/

3.6. OpenDomotech

Créer des capteurs :
http://opendomotech.com/creer-capteurs-mysensors-exemples-de-multi-sensors/

3.7. Anderson69

Tutoriel Domoticz :
https://anderson69s.com/2017/03/18/domoticz-domotique-diy/3/

3.8. DomotiqueInfo

Tutoriel Domoticz :
https://www.domotique-info.fr/2014/05/domoticz-installation-premiers-pas/

3.9. Asgard Diy

Beaucoup de projets et de tutos ici :
https://projetasgarddiy.fr/accueil/

3.10. Mon blog

Certains d'entre vous connaissent déjà mes projets :

Thermomètre sur batterie
Thermomètre / hygromètre sur batterie
Thermometre pour freezer
Détecteur de mouvement sur batterie

4. Quelques conseils personnels

4.1. Nommez vos sketches correctement

Lorsque vous développez un objet MySensors donnez-lui un petit nom explicite afin de pouvoir distinguer vos dispositifs dans l'interface graphique du contrôleur.

  sendSketchInfo("DS18B20 Temperature Sensor", "1.0");

4.2. Pensez à vos objets sur batterie

Si l'objet fonctionne sur batterie, pensez à envoyer régulièrement au serveur la capacité restante en pourcent :

  sendBatteryLevel(batteryLevel);

Ensuite sur le contrôleur, il vous sera possible d'écrire un script pour récupérer les niveaux de batterie de tous vos capteurs pour les contrôler et vous avertir en cas de défaillance, avec un buzzer ou un écran TFT par exemple.
Vous trouverez un script faisant ce travail dans ce projet :
(voir  10. Téléchargements : checkDevices.py dans l'archive téléchargée).
https://riton-duino.blogspot.com/2019/05/un-afficheur-pour-domoticz-ou-jeedom.html

Je parle bien de capacité batterie et non de tension. Une batterie LITHIUM-ION produit une tension de 4.2V à pleine charge et est considérée comme vide à 3V.
3V représentent 71% de la tension à pleine charge, alors qu'en terme de capacité cette tension équivaut à une capacité restante de presque 0%.

Dans ce projet de thermomètre sur batterie, la capacité de la batterie est calculée par rapport à sa tension :
https://riton-duino.blogspot.com/2018/01/un-thermometre-mysensors-sur-batterie.html

4.3. Pensez aux ESP8266

Il est aussi possible avec certains contrôleurs - avec Domoticz c'est le cas - de construire ses dispositifs sur une base d'ESP8266, en WIFI donc et de les ajouter à Domoticz en tant que dispositif virtuel.

Voir le paragraphe "Ajout de votre Sonoff dans Domoticz" :
https://projetasgarddiy.fr/2018/06/14/interrupteur-sonoff-dans-domoticz/

De plus les ESP8266 sont parfaitement capables de fonctionner en basse consommation.

Dans mon système domotique j'ai quatre catégories de dispositifs :
  • des dispositifs MySensors
  • des dispositifs ESP8266
  • des dispositifs du commerce (passerelle RFLINIK)
  • une télécommande infrarouge


5. Quelques trucs et astuces

5.1. Ajouter une passerelle MySensors à Domoticz



Ouvrez la page Réglages / Matériel.
Choisissez "MySensors Gateway USB" dans la liste "Type".
Cliquez sur "Ajouter".

5.2. Ajouter un dispositif MySensors à Domoticz

Démarrez simplement votre montage ARDUINO. Celui-ci s'identifiera automatiquement auprès du serveur.
Ouvrez la page "Réglages/Dispositifs".


Cliquez sur la petite flèche verte en face de votre dispositif pour pouvoir l'utiliser. Profitez-en pour lui donner un petit nom reconnaissable (icône crayon).

Si votre dispositif est un thermomètre il apparaîtra dans l'onglet "Températures" :


Si votre dispositif est un interrupteur ou une prise commandée il apparaîtra dans l'onglet "Interrupteurs" :


On voit sur cette image les 8 boutons correspondant à une télécommande.

A l'aide du bouton "Edit" vous allez pouvoir associer des actions à chaque interrupteur. Voir plus loin : 5.3. Les actions.

Les scripts sont écrits en langage PYTHON et envoient des requêtes JSON au serveur. Pour un serveur différent de DOMOTICZ l'implémentation sera probablement différente. Pour DOMOTICZ la doc est ICI : https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s

Depuis les onglets "Températures" ou "Interrupteurs" cliquez sur l'étoile pour intégrer le dispositif au tableau de bord (la page d'accueil).

Il n'est pas obligatoire d'intégrer tous les dispositifs au tableau de bord, au risque de l'encombrer.


5.3. Les actions

A partir de l'onglet interrupteurs, cliquez sur le bouton "Edit" du dispositif que vous souhaitez configurer :


L'action peut être simplement une URL comme ici :

http://192.168.1.11/?pin=1&action=PULSE&delay=100

Il s'agit d'un télérupteur WIFI à base d'ESP8266 que j'ai développé. L'adresse IP est celle de l'ESP8266.

On peut agir également en envoyant une requête JSON à Domoticz.

http://192.168.1.134:8080/json.htm?type=command&param=switchlight&idx=328&switchcmd=On
http://192.168.1.134:8080/json.htm?type=command&param=switchlight&idx=328&switchcmd=Off

Cette commande active le dispositif 60 (le home-cinema comme on peut le voir sur la page "Réglages/Dispositifs". L'adresse IP est celle du serveur Domoticz.

Pour commander un autre dispositif il suffit de remplacer cet identifiant par un autre :
  • 52 : lumière étage
  • 11 : lampe sur pied 
  • 51 : lampe niche
  • etc.
Comme vous le voyez c'est assez simple.

Cette documentation vous sera très utile : https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s

Des scripts autonomes peuvent être également développés. Voir quelques exemples ici : https://riton-duino.blogspot.com/2019/05/un-afficheur-pour-domoticz-ou-jeedom.html
Voir :  2.2. Les scripts

6. Conclusion

J'espère que cette petite présentation vous sera utile et a été suffisamment claire.
Un dernier conseil : fouillez et explorez, soyez curieux.


Cordialement
Henri

7. Mises à jour

14/05/2019 : 5. Quelques trucs et astuces
29/06/2019 : 5.3. Les actions
25/02/2020 : 2.1.1. Le NRF24L01
                     2.1.2. Le RFM69 ou RFM95

Aucun commentaire:

Enregistrer un commentaire