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….
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.
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.
Le code MySensors : la première partie
Ici, rien de bien compliqué.
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.
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
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.
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
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
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
On passe en inclusion et attention, la magie va opérer …..
OOHHHHH il apparait !!!
On clique dessus et on se retrouve avec notre capteur.
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
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.
7 commentaires
Intéressant ce capteurs de BAL.
Comment faites-vous vous avez une alimentation près de votre BAL?
Bonjour ,
Oui j’ai un câble entre mon portier et ma BAL.
Donc de quoi avoir mon alimentation
Pingback: Notre Veille : Explication du code MySensors - La Domotique de Sarakha63 -
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
Oui je me suis pas posé la question vu que j’ai une alimentation direct dessus et je n’est pas regardé la fonction deepsleep
Pingback: Modification du code MySensors - La Domotique de Sarakha63
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