Re: question Mysensors
Publié : 02 août 2020, 17:46
.... 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.
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."
J'ai rien comprit a ton expli-équation, don je remis a 3 (contrarient )
* "regarde" merci pour le temps passé.
(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 -----------.... 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"* "regarde" merci pour le temps passé.