Problème de "Text request"
Publié : 02 janv. 2018, 19:27
Bonjour à tous,
J'aurai besoin d'aide afin de mieux comprendre comment fonctionnent les requêtes texte d'un noeud Arduino vers Domoticz.
Je ne sais pas si le comportement que j'observe relève d'un bug ou d'une subtilité que je n'arrive pas à saisir.
Dans l'exemple ci-dessous, je crée un noeud avec 2 enfants : un contenant du texte, et un interrupteur.
Une requête a ensuite lieu si je change dans Domoticz l'état de l'interrupteur (donc à la réception d'un message de type V_LIGHT).
Tout se passe bien, et j'ai vérifié que la demande était correctement reçue par la GW, par contre il n'y a aucun retour
En revanche, la même requête, présente également dans la fonction loop, provoque une réponse de Domoticz...
Quelqu'un serait il m'expliquer pourquoi, le request fonctionne dans un cas, mais pas dans l'autre (celui dont j'ai besoin évidemment) ?
Pour info, certain reconnaîtront peut être qu'il s'agit de la méthode utilisée pour échanger un code IR à l'arduino.
J'ai en effet passé plusieurs semaines à isoler ce problème
J'aurai besoin d'aide afin de mieux comprendre comment fonctionnent les requêtes texte d'un noeud Arduino vers Domoticz.
Je ne sais pas si le comportement que j'observe relève d'un bug ou d'une subtilité que je n'arrive pas à saisir.
Dans l'exemple ci-dessous, je crée un noeud avec 2 enfants : un contenant du texte, et un interrupteur.
Une requête a ensuite lieu si je change dans Domoticz l'état de l'interrupteur (donc à la réception d'un message de type V_LIGHT).
Tout se passe bien, et j'ai vérifié que la demande était correctement reçue par la GW, par contre il n'y a aucun retour
En revanche, la même requête, présente également dans la fonction loop, provoque une réponse de Domoticz...
Quelqu'un serait il m'expliquer pourquoi, le request fonctionne dans un cas, mais pas dans l'autre (celui dont j'ai besoin évidemment) ?
Pour info, certain reconnaîtront peut être qu'il s'agit de la méthode utilisée pour échanger un code IR à l'arduino.
J'ai en effet passé plusieurs semaines à isoler ce problème
Code : Tout sélectionner
#define SKETCH_NAME "Text request"
#define SKETCH_VERSION "1.0"
#define MY_NODE_ID 106
#define MY_DEBUG
#define MY_RADIO_NRF24
#define MY_BAUD_RATE 9600 // Safe baud rate for a 3.3V device
// MySensors libraries
#include <SPI.h>
#include <MySensors.h>
#define CHILD_TEXT 1
#define CHILD_SWITCH 3
MyMessage textMsg(CHILD_TEXT, V_TEXT);
MyMessage sendMsg(CHILD_SWITCH, V_LIGHT);
unsigned long WAIT_TIME = 5000; // Wait time between requests (in milliseconds)
bool WaitingData = false;
void presentation()
{
sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
present(CHILD_TEXT, S_INFO, "SomeText");
present(CHILD_SWITCH, S_LIGHT, "SwitchT" );
wait(2000);
}
void loop()
{
if (WaitingData==true) {
Serial.println(F("Loop request"));
request(CHILD_TEXT, V_TEXT, 0);
}
wait(WAIT_TIME);
}
// Handle incoming messages from the MySensors Gateway
void receive(const MyMessage &message) {
const char *msgData;
if (message.type==V_TEXT) {
// TEXT sensor value is received as a result of the previous step
Serial.println(F("Receiving data"));
msgData = message.getString();
Serial.println(msgData);
WaitingData = false;
}
else if (message.type==V_LIGHT) {
// Commande exterieur
Serial.println(F("Switch request"));
WaitingData = true;
request(CHILD_TEXT, V_TEXT, 0);
wait(2000);
}
}