question Mysensors

Forum dédie aux capteurs et gateway mysensors.org
maticz
Messages : 42
Inscription : 14 juil. 2019, 11:18

Re: question Mysensors

Message par maticz »

.... donc une attaque différent du problèmo :?
(boum c pas grave de revoir le croquis, le simplifier ??? )

on oublie (pour un temps) la partie Impulsionnelle, adieu wait delay et "MCO: PRO: RC"

regarde* le programme a ébavurer :)
il est fonctionnelle a 199%
le seul problème c sur Reset du Node, mon ampoule sur Domoticz ne prend pas la bonne valeur.

Code : Tout sélectionner

/*
 *  TL_NoImpuls_TS_Boum2.ino
 *
 * https://forum.mysensors.org/topic/11263/domoticz-mysensors
 * https://easydomoticz.com/forum/viewtopic.php?p=85649#p85649
 *
 * REVISION HISTORY
 * (sur une base lointaine par Alco) 
 * Version 0.0 - Node en RS485 par JeeLet
 * Version 2.0 - Modif par Boum et Test  sans Impulsion
 * 
 *LA DESCRIPTION  
 * TL :Commande Impulsionnelle de TeLerupteur d'Eclairage 
 * TS :Retour d'Etat par un contact auxiliaire du TL. 
 * 
 * L'installation Electrique n'est pas modifiee, 
 * les boutons poussoir de l'habitat Cmd aussi le TL. 
 *  
 *  
 */   
 // ------- NON-FUNCTIONAL ---- NON-FUNCTIONAL ----

 #define MY_DEBUG
 #define MY_NODE_ID 25           /*pour Node ID static*/

 /* ----- Module RS485 ----*/
 #define MY_RS485
 #define MY_RS485_DE_PIN 2
 #define MY_RS485_BAUD_RATE 9600

 #include <MySensors.h>
 #include <Bounce2.h>

 #define STATE_CHILD_ID 3   /*Id du capteur (enfant)*/

 #define RELAY_PIN  4   // pin Cmd Telerupteur     "TL"
 #define CONTROL_INPUT_PIN  3  // pin Contact Auxiliaire  "TS"

 #define RELAY_ON 1 
 #define RELAY_OFF 0

 Bounce debouncer = Bounce();  // initialize debouncer
 bool currentState;

 MyMessage msg(STATE_CHILD_ID,V_STATUS);

 void setup() {
    pinMode(CONTROL_INPUT_PIN, INPUT_PULLUP);
    pinMode(RELAY_PIN, OUTPUT);
    digitalWrite(RELAY_PIN, RELAY_OFF);

    debouncer.attach(CONTROL_INPUT_PIN);
    debouncer.interval(20); 
 }

 void presentation() {
    sendSketchInfo("Cmd TL", "2.0");
    present(STATE_CHILD_ID, S_BINARY); // replace S_LIGHT for MySensors 2.0
   }

 void loop()  {
  if (debouncer.update()) /*Inform controller if state change from input*/
    {
    bool newState = !debouncer.read();
    Serial.print("Changement état du contact :");
    Serial.println(newState);
        if (newState != currentState)
        {
        currentState = newState;
        Serial.println("Envoi message à la passerelle");
        send(msg.set(newState));
        }
    }
 }

 void receive(const MyMessage &message) {
    if (message.isEcho()) /*keep message.isAckfor older MySensors version*/
    {
     Serial.println("Ceci est un accusé de réception de la passerelle");
     Serial.println("Cmd TL 1.a");
     return;
    }

    if (message.type==V_STATUS) // V_STATUS pour MyS v2.0, annulé V_LIGHT. 
    {    
     Serial.print("Envoi impulsion pour passer vers état: ");
       
        /* partie désactiver pour test
        digitalWrite(RELAY_PIN, RELAY_ON);
        wait(200);                          //delai On-Off Impuls
        digitalWrite(RELAY_PIN, RELAY_OFF);
        */
      // test en On Off simple
     digitalWrite(RELAY_PIN, message.getBool()?RELAY_ON:RELAY_OFF);
             
        // Write some debug info
        Serial.print("Changement entrant pour le capteur:");
        Serial.print(message.sensor);
        Serial.print(", New status: ");
        Serial.println(message.getBool());
     }
 }
// ------------ fin Pgm -----------
:idea: pour la partie impulse, j'ai peut être une solution,fonction non bloquante.

.... alors alors dit moi tout ( j'ai merdillyou ?? )

Ah oui, pour
EDIT: J'ai regardé plus en détail et répondu sur le forum de MySensors. Globablement, il faut éviter d'appeler send() et wait() dans receive().
c bien le Delay (anciennement Wait) qui donne les erreurs ( c normal)
j'ai fait le test

et pour
"....deux macros sont égales à 3, donc ça marche tant que l'ID du nœud et la connexion du contacteur ne changent pas."

Code : Tout sélectionner

#define CHILD_ID 3   /*Id du capteur (enfant)*/
#define BUTTON_PIN  3  // pin Contact Auxiliaire  "TS"
J'ai rien comprit a ton expli-équation, don je remis a 3 (contrarient )



* "regarde" merci pour le temps passé.
Répondre