Salut à tous, c’est Mathieu. Aujourd’hui, avec Hexamus, nous allons vous présenter un premier capteur MySensors, à savoir un capteur de boite aux lettres. Nous en profiterons pour essayer d’expliquer un peu le code MySensors utilisé. Dans Mysensors il y a déjà un bon nombre d’exemple de fichier de programmation qu’il suffit de décortiquer pour réaliser ce dont on a besoin. Par contre, je vous préviens tout de suite, cet article est pas super digeste… Bon courage !!!

Le code MySensors : choix du capteur

Pour commencer, nous avons besoin de deux entrées contact sec il sera toujours possible de rajouter par la suite un capteur de pluie ou de température. Mais pour faire simple au début on va déjà essayer de voir ce que j’ai compris sachant que je ne fais pas de programmation et ne possède pas de connaissance dans les langages de programmation mais je connais Google….

code MySensors

Donc sur le site Mysensors il y a “BinarySwitchSensor“ qui correspond très bien à mon premier besoin op je monte un arduino nano avec une antenne et l’entrée du contact se fait sur D3 avec le GND.

code MySensors

Rapidement je téléverse le tout puis test après un petit souci que je vais expliquer après cela marche mais je n’ai qu’un contact moi j’en veux 2 pour ma BAL… Donc il va falloir comprendre un minimum ce qui se trouve dans le fichier de programmation pour essayer de le modifier.

Le code MySensors : le code

Il faut savoir que le langage arduino est basé sur le C/C++, si vous voulez pousser un peu plus il y a des cours très bien fait sur openClassRoom au sujet de l’arduino.

Je vais essayer d’expliquer ce que j’ai compris du fichier, celui-ci est disponible à cette adresse.

https://github.com/mysensors/MySensorsArduinoExamples/blob/master/examples/BinarySwitchSensor/BinarySwitchSensor.ino

Le code MySensors : la première partie

Ici, rien de bien compliqué.

code MySensors

Tout ceci est juste du texte de présentation qui n’est pas pris en compte par l’arduino on voit cela au “/*“ et “*/“ qui signifie début et fin de bloc commentaire

On peut y lire dans la partie description qu’il s’agit d’une entrée sur la pin D3.

Le code MySensors : la zone déclarative

Ici il s’agit de la zone ou sont déclarée les choses.

code MySensors

Comme précédemment, tout ce qui est précédé de “//“ correspond à des commentaires pour nous aider à comprendre ou écrire des commentaires pour nous.

Tout d’abord, à ligne 31 on active le debug pour voir ce qui se passe exactement. Cette fonction nous permettra d’éventuellement étudier les problèmes en branchant notre module en USB sur notre PC.

Ligne 34 : on définit le type d’antenne utilisé.

Ensuite, on inclut des bibliothèques ou Library de la ligne 37 à 39.

Ligne 41 : c’est l’ID du capteur (pas du nœud mais de chaque capteur ou actionneur sur le nœud)

Encore, sur la ligne 42, c’est l’attribution de la Pin à utiliser

De la ligne 44 à 45, on utilise la fonction BOUNCE donc d’anti rebond. De ce que j’ai compris c’est pour permettre d’éviter les faux positifs.

Enfin, à la ligne 48 on définit notre message et son type dans notre cas V_TRIPPED dans le tableau suivant on voit que cela correspond à l’état d’un capteur 1 ou 0 ce qui est bien notre cas

code MySensors

Le code MySensors : le Setup et Loop et la présentation

Il faut comprendre un grand principe dans les programmes arduino.

On retrouvera toujours ces deux partie Setup et Loop

« Setup » s’exécute une fois au démarrage, l’introduction du programme

« Loop » est la partie du programme qui sera exécutée en boucle.

« Présentation » est pour Mysensors et Jeedom on y revient après.

Le code MySensors : le Setup

Cette partie sert à initialiser les variables, le sens des broches et les librairies utilisées.

code MySensors

Ligne 53 on définit le type de BUTTON_PIN en input ou output ici en entrée.

Sur la ligne 54 on attribue une valeur à notre Pin ici HIGH donc 1.

Enfin, sur les lignes 58 et 59 on configure l’anti rebond et lui attribue le pin.

Le code MySensors : Présentation

code MySensors

Bonjour, je m’appelle Mathieu. Lui c’est Hexamus. Ah, non c’est pas ça… Ben oui, comme tout le monde on a une identité et on se présente quand on rencontre quelqu’un de nouveau.

Donc ceci nous servira à présenter notre nœud à Jeedom, si vous comparez le screen au fichier du lien au début vous avez du remarquer la ligne 67 en plus, celle-ci est indispensable pour créer le nœud dans Jeedom.

Ligne 67 on envoie les informations du Nœud au contrôleur donc son nom ici switch sensor et sa version 1.0

Ligne 68 on présente les capteurs ici CHILD_ID (défini à la ligne 41) qui est de type S_DOOR pour mieux comprendre il faut se reporter au tableau suivant

code MySensors

Le code MySensors : Loop

Tout d’abord, à ligne 77 on initialise la valeur qui est actuellement dans le système d’anti rebond.

Ensuite, à la ligne 79 on imagine un bloc SI sur Jeedom où on compare la valeur actuelle avec la dernière envoyée.

Ligne 81 Alors on envoie la valeur 1 ou 0.

Enfin, à la ligne 82 alors on attribue notre valeur à la variable oldvalue pour mon bloc SI.

J’espère que vous avez tout suivi, Bon ok, c’est votre 95ème relecture, mais vous y êtes presque…

Donc on téléverse notre exemple en rajoutant la ligne 67 indispensable à Jeedom dans un arduino qui possède une antenne NRF24L01 (base de tous nos nœud) et on se retrouve sur Jeedom.

Le code MySensors : Jeedom

Nous voici avec une page de plugin vierge

code MySensors

On passe en inclusion et attention, la magie va opérer …..

OOHHHHH il apparait !!!

On clique dessus et on se retrouve avec notre capteur.

code MySensors

On y voit le nom du sketch (programme arduino) renseigné à la ligne 67 que l’on a rajouté ainsi que sa version.

Le code MySensors : la partie configuration

code MySensors

On retrouve quoi ?

Tout d’abord, on trouve une info (normal, à la ligne 53 on lui a indiqué qu’on souhaitait avoir une entrée).

Ensuite, on voit l’ID de notre capteur 3 (ben oui elle est définie à la ligne 41)

Après, nous avons le Type de capteur « 0 – ouverture ». On va regarder ce qu’on lui a dit à la ligne 68 S_DOOR et cela correspond dans le tableau à ouverture… Vraiment bien fait ce plugin !!!

Type de donnée : activation    celle-ci a était défini à la ligne 48.

Le code MySensors : conclusion

Vous êtes pas encore endormis ? On a essayé d’expliquer un peu le code en décortiquant un peu tout ligne par ligne et en voyant son intégration dans Jeedom… Maintenant lors de notre prochain article, nous allons essayer de refaire le code pour avoir un capteur qui colle avec notre besoin. C’est quand même aussi ça l’intérêt de MySensors.

Merci d’être arrivé jusqu’au bout.

Partager sur :

Infos de l'auteur

Je m'appelle Mathieu, j'ai 35 ans, et je vis à Limoges. Je suis prof d'EPS, et passionné de domotique. Amateur de DIY et de bricolage, j'aime aussi la cuisine, le bon vin.

7 commentaires

  1. Pingback: Notre Veille : Explication du code MySensors - La Domotique de Sarakha63 -

  2. Ghislain Chouet le

    Bonjour pour ma part j’ai un truc du style mais deepsleep et réveil par interruption. 3 piles aa ça tient depuis l’année dernière

  3. Pingback: Modification du code MySensors - La Domotique de Sarakha63

  4. super explication mais si tu pouvais mettre aussi l’explication de la commande « send » et du ? car ca pourrai aidé du monde a comprendre la valeur que tu envoies

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.