Page 5 sur 7

Re: creation d'un topic "mysensors"

Publié : 07 mai 2015, 06:55
par patrice
Bonjour
Donc si j'ai bien compris
Physiquement :
1 gateway mysensors reliée a Domoticz
4 relais mysensors relies a cette gateway

Dans Domoticz
Tu as
4 widgets pour chacun des 4 relais

Et donc
L' activation physique de n' importe quel relais bascule visuellement ds Domoticz TOUJOURS le meme widget
et
d' autre part l' activation depuis Domoticz d' un widget précis (le 3 par exemple) commute bien le relais 3

J'ai bon ?

Re: creation d'un topic "mysensors"

Publié : 07 mai 2015, 10:26
par Alain69
Bonjour,
Merci de répondre :D

Pas exactement:
1 gateway mysensors reliée a Domoticz
4 relais mysensors sur un seul Arduino, relié a cette gateway

Dans le sens Domoticz => relais, tout va bien. Les relais basculent, et leur état est affiché par Domoticz.
L'action sur une entrée de l'Arduino fonctionne en local, mais n'est pas visualisée sur Domoticz, sauf le premier relais, et les autres de façon aléatoire, en fonction de l'état de ceux qui le précédent. Il y a manifestement une dépendance cachée, que je ne comprends pas.

J'ai bien sûr fait de multiplies essais, et pour exemple j'ai trouvé un sketch avec 3 relais sur le net, qui fonctionne ainsi lui aussi. Je ne souhaite pas encombrer le forum, mais je vais le recopier ci-dessous.

Dans un premier temps j'ai pensé qu'une solution provisoire serait de faire transmettre en direction de la gateway l'état de tous les relais, l'un après l'autre, dès qu'un état avait changé. En fait, répéter l’état de celui qui avait changé accompagné de l'état des autres. Sans résultat.

Le fait que je ne trouve pas de question à ce sujet me laisse à penser que j'ai dû rater quelque chose d'énorme :D

Dommage, car le système serait parfait dans le cas d'une "domotique" personnalisée. Je ne vois pas l’intérêt de gérer à distance des lumières dans mon cas, mais de surveiller des états et avoir une possibilité de commande à distance. Aucun système autre que mysensors ne me semble assez souple et ouvert, mais je coince sur quelque chose de basique....

#include <MySensor.h>
#include <SPI.h>
#include <Bounce2.h>
#define RELAY_ON 0 // switch around for realy HIGH/LOW state
#define RELAY_OFF 1
//
MySensor gw;

#define RADIO_ID 14 // radio Id, whatever channel you assigned to
#define noRelays 3
const int relayPin[] = {A2, A3, A4}; // switch around pins to your desire
const int buttonPin[] = {4, 5, 6}; // switch around pins to your desire

class Relay // relay class, store all relevant data (equivalent to struct)
{
public:
int buttonPin; // physical pin number of button
int relayPin; // physical pin number of relay
byte oldValue; // last Values for key (debounce)
boolean relayState; // relay status (also stored in EEPROM)
};

Relay Relays[noRelays];
Bounce debouncer[noRelays];
MyMessage msg[noRelays];

void setup(){
gw.begin(incomingMessage, RADIO_ID, true);
delay(250);
gw.sendSketchInfo("MultiRelayButton", "0.9b");
delay(250);

// Initialize Relays with corresponding buttons
for (int i = 0; i < noRelays; i++){
Relays.buttonPin = buttonPin; // assign physical pins
Relays.relayPin = relayPin;
msg.sensor = i; // initialize messages
msg.type = V_LIGHT;
debouncer = Bounce(); // initialize debouncer
debouncer.attach(buttonPin);
debouncer.interval(5);
pinMode(Relays[i].buttonPin, INPUT_PULLUP);
pinMode(Relays[i].relayPin, OUTPUT);
Relays[i].relayState = gw.loadState(i); // retrieve last values from EEPROM
digitalWrite(Relays[i].relayPin, Relays[i].relayState? RELAY_ON:RELAY_OFF); // and set relays accordingly
gw.send(msg[i].set(Relays[i].relayState? true : false)); // make controller aware of last status
gw.present(i, S_LIGHT); // present sensor to gateway
delay(250);

}
}

void loop()
{
gw.process();
for (byte i = 0; i < noRelays; i++){
debouncer[i].update();
byte value = debouncer[i].read();
if (value != Relays[i].oldValue && value == 0){
Relays[i].relayState = !Relays[i].relayState;
digitalWrite(Relays[i].relayPin, Relays[i].relayState?RELAY_ON:RELAY_OFF);
gw.send(msg[i].set(Relays[i].relayState? true : false));
gw.saveState( i, Relays[i].relayState );} // save sensor state in EEPROM (location == sensor number)

Relays[i].oldValue = value;

}
}

// process incoming message
void incomingMessage(const MyMessage &message){

if (message.type == V_LIGHT){
if (message.sensor <noRelays){ // check if message is valid for relays..... previous line [[[ if (message.sensor <=noRelays){ ]]]
Relays[message.sensor].relayState = message.getBool();
digitalWrite(Relays[message.sensor].relayPin, Relays[message.sensor].relayState? RELAY_ON:RELAY_OFF); // and set relays accordingly
gw.saveState( message.sensor, Relays[message.sensor].relayState ); // save sensor state in EEPROM (location == sensor number)
}
}
}


Encore une fois, Merci de ton aide éclairée :D

Re: creation d'un topic "mysensors"

Publié : 08 mai 2015, 22:31
par dd91
j'ai une petite question les zamis :)

j'ai fabriquer un capteur de gaz mysensor, pas de probleme quand je le branche il affiche ca dans le moniteur serie:

sensor started, id 3
send: 3-3-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1
send: 3-3-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
read: 0-0-3 s=255,c=3,t=6,pt=0,l=1:M
send: 3-3-0-0 s=255,c=3,t=11,pt=0,l=18,st=ok:Air Quality Sensor
send: 3-3-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
send: 3-3-0-0 s=0,c=0,t=22,pt=0,l=5,st=ok:1.4.1

donc mon capteur est ok

maintenant je vais sur domoticz, dans parametre et je lui dit demande d'autoriser l'ajout de capteur pendant 5minute
je branche mon detecteur et dans le log j'ai ca

2015-05-08 22:27:58.130 New sensors allowed for 5 minutes...
2015-05-08 22:28:11.718 MySensors: Node: 3, Sketch Name: Air Quality Sensor
2015-05-08 22:28:11.726 MySensors: Node: 3, Sketch Version: 1.0

le probleme c'est que quand je vais dans dispositif il n'apparait pas....

j'ai egalement un deuxieme probleme quand je recherche a mettre domoticz a jour ca me dit:

Erreur lors du téléchargement de la mise à jour,
Vérifiez votre connexion au réseau ou réessayez plus tard !

si quelqu'un a la soluce :)

Re: creation d'un topic "mysensors"

Publié : 09 mai 2015, 00:18
par patrice
@alain69
Il faudrait voir la valeur de noRelays pour chaque relais par des print .
a mon avis on a le meme pour tous les relais d' ou le pb
Je ne comprends pas dans le code comment est gere la variable norelay
Essaye de mettre des print partout pour suivre la valeur de ceyte variable
Dis nous ce qu'il en est

Re: creation d'un topic "mysensors"

Publié : 09 mai 2015, 00:29
par Alain69
Merci Patrice!!!

Je vais essayer ça dès demain.
Si tu permets, je te tiens au courant de suite après

:D

Re: creation d'un topic "mysensors"

Publié : 09 mai 2015, 00:47
par dd91
pour mon probleme j'ai trouvé c'est le sensor qui etait mal connecté

par contre j'ai fait un reboot de domoticz et je me retrouve avec le meme probleme... obliger de faire reset sur le capteur pour qu'il recause :/

Re: creation d'un topic "mysensors"

Publié : 09 mai 2015, 14:20
par dd91
J'ai fait un test, tant que la box domotique est allumé pas de problème tout fonctionne.

par contre si je l'arrête et la redemare les capteur de temperature n'envoie plus rien..... obliger de leur faire un reset... une idee?

Re: creation d'un topic "mysensors"

Publié : 09 mai 2015, 18:16
par Alain69
Bonjour Patrice,

En fait, tout me parait conforme.
En plus, plusieurs choses:
Lorsque le relais 1 est à l'état haut, le second fonctionne, pas lorsqu'il est à l'état bas. Mais si le 2 fonctionne dans ce cas, c'est bien qu'il est identifié....

J'ai essayé un autre script trouvé sur le net. Je ne parle pas du mien, qui pourrait comporter des erreurs, mais d'un script annoncé comme fonctionnant, à 4 entrées. Même résultat, exactement.

J'ai aussi essayé d'écrire le payload à la main, pour voir ce que ça donnait.

En plus la date du dernier évènement change dans l'affichage de Domoticz, et ce pour le relais auquel il est destiné. Donc il est reçu et identifié correctement. Mais l'état affiché ne change pas....

C'est pourtant le début du commencement d'un départ d'automatisation! Domoticz semble plus orienté "produits tout faits" que "produits MySensors"...
Je vais essayer Jeedom.

Si tu as une idée, inutile de dire qu'elle est bienvenue :D

Encore merci.

Cordialement,

Alain

Re: creation d'un topic "mysensors"

Publié : 09 mai 2015, 20:52
par patrice
Bonsoir Alain
Tu as en partie raison concernant le support sde mysensors dans Domoticz dans la mesure ou l'integration de mysensors est assez récente (2/3 mois) et que on est jamais à l'abri d'un bug d'un comportement non prévu (les X relais) ....

Si tu parles la langue de Shakespeare, tu peux poster un message dans le forum Domoticz anglophone, pour peu que ca chauffe Gizmocuz , la correction peut être faite rapidement (j'ai testé ...)

Sinon, bon courage avec Jeedom :mrgreen:

Re: creation d'un topic "mysensors"

Publié : 09 mai 2015, 21:33
par Alain69
Merci, je suis rassuré, je commençais vraiment à me poser des questions :)

Pour l'anglais pas de souci, je suis preneur si tu veux bien....

Je vais me rabattre sur Jeedom, et verrai ensuite si Domoticz évolue, même si je trouve Jeedom trop orienté (encore plus que Domoticz) vers les capteurs purement commerciaux.

Encore merci :)

Alain