Découverte de Mysensors

Exemple de code (simulation d'un capteur de porte) :

le code associé à la bibliothèque MySensors est un peu particulier, il doit contenir :

  • La fonction 'presentation()' qui décrit le 'node'.

  • Et la fonction 'loop()' classique de l'Arduino

  • Éventuellement une fonction d’initialisation (qui n'est exécutée qu'une fois).

    • Le 'setup()' classique de l'Arduino

    • ou une fonction nommée 'before()'

Pour les 'nodes' qui sont alimentés par des accumulateurs, pour économiser l'énergie on utilisera la fonctionnalité de mise en sommeil du microcontrôleur.

Ici à la fin de la fonction 'loop' on utilise la fonction 'sleep(5000)' --> mise en sommeil pendant 5s

"Présentation"

Chaque 'node' (Arduino, capteur/actionneur) doit se présenter au contrôleur (Jeedom) .

Cette présentation se fait dans la fonction présentation :

void présentation () {

      sendSketchInfo("Simul porte", "1.0") ;

      present(CHILD_ID, S_DOOR) ;

}

  • la ligne«  sendSketchInfo("Simul porte", "1.0") » ;"présente le 'node au plugin MySensors avec son nom "Simul porte" et sa version du logiciel ( ici 1.0 )

    Vous pouvez choisir les noms des nodes, mais pour mieux identifier vos nodes vous les ferez précéder par la lettre affectée à votre Raspberry ex:"A_Simul porte "

  • La ligne « " present(CHILD_ID_PORTE, S_DOOR);" » présente le capteur "0" (CHILD_ID_PORTE est défini à 0 en début de code) comme étant un capteur d'ouverture S_DOOR

  • Chaque valeur à transmettre nécessite une ligne "present (....".

La présentation d'un capteur se fait avec present ( child-sensor-id , sensor-type )

child-sensor-id : nombre compris entre 0 et 254

sensor-type : le type de capteur utilisé est à prendre dans la liste suivante

"Envoi de valeur au plugin MySensors"

  1. la création du message 'msg' (en informatique on dit que msg est une instance de la classe MyMessage). 'msg' est créé en début de code, à l'extérieur de toute fonction.

    MyMessage msg(CHILD_ID, V_TRIPPED);

    le CHILD_ID correspond à celui du capteur présenté.,

    V_TRIPPED décrit le type de variable envoyé (ici détecteur déclenché) ce type de variable doit correspondre au choix fait dans la liste suivante

  2. L'envoi de la valeur : il se fait périodiquement dans la boucle principale du programme (loop) avec le code suivant :

    send(msg.set(value)) ;

    'value' est une variable qui contient la valeur à envoyée (0 ou 1).

"Réception de valeur en provenance du plugin MySensors"

void receive(const MyMessage &message){

    ____

}

Voir l'exemple "RelayActuator" de la bibliothèque MySensors

Remarque

Le fichier exemples MySensor.zip [zip] contient plusieurs exemples :

  • ex1.ino --> simulation de porte

  • ex2.ino --> 2capteurs (simulation de porte et luminosité)

  • ex2p.ino --> 2 capteurs (porte /présence)

  • ex3.ino --> 2 relais

  • ex3ptl.ino --> 3 cateurs (porte / luminosité / température)

  • ex4.ino --> 2 relais et capteurs (température et humidité)

  • ClearEepromConfig.ino --> ce programme permet d'initialiser l'EErom de l'Arduino (mémoire ou est stockée la configuration du 'node'). Si la carte Arduino a été utilisée en 'node' et connectée à Jeedom il faut utiliser ce programme pour effacer les connections précédentes...