Page 1 sur 2

Commande volet

Publié : 18 oct. 2015, 21:26
par caape
Bonjour
Je viens de passer a MySensors mes 2 volets du salon.
J'arrive bien a les ouvrir ou les fermer et même a les ouvrir juste un peu (Blinds).
Le soucis, j'ai deux interrupteurs par volet qui se sont créés sur domoticz. Un qui fonctionne avec Monter, Descendre, Stop et un avec le curseur de réglage en %. J'aurai préféré en avoir qu'un avec tout mais surtout avec les boutons qui fonctionnent avec le curseur. J'ai du faire une bidouille avec un getBool() pour ouvrir ou fermer avec les boutons. en plus, le curseur ne se mets pas a la bonne valeur a l'arret du volet. J mets a jour avec un V_PERCENTAGE et un V_UP ou V_DOWN ou V_STOP suivant le cas.
Quand je mets le type blinds sur l'autre interrupteur, le curseur ne fonctionne pas, je ne peux pas le bouger dans domoticz.
Y a-t-il une astuce que j'ai raté ?

Comment faire pour n'avoir qu'un devices qui fonctionne avec le curseur ET le bouton STOP.

A+

Re: Commande volet

Publié : 03 nov. 2015, 23:36
par Artpol5
Bonjour,

J ai quasi le même problème, j ai un volet roulant et 2 interrupteurs qui se crée, l un pour la montée et l autre pour la descente. Est-il possible de fuisionner 2 interrupteurs ou un autre interrupteur pour ce blinds existe ?

Re: Commande volet

Publié : 08 févr. 2016, 14:14
par AlexElectro
Bonjour
je relance le sujet... avez vous trouvé une solution ce problème?

Re: Commande volet

Publié : 10 févr. 2016, 19:53
par vil1driver
salut,

3 personnes et pas une pour dire comment elle à créé son volet...

ça fonctionne bien ici... vous devriez faire comme je fais.. ;) bonne journée :D

Re: Commande volet

Publié : 10 févr. 2016, 20:40
par deennoo
Avez vous essaye les venitian blind ?

Re: Commande volet

Publié : 14 févr. 2016, 18:01
par lucaskywalker
Bonjour

Il y a deux choses que je ne comprend pas avec le s_cover.

Dans les variables qui apparaissent sous domoticz, j ai V_UP, V_DOWN, V_STOP mais aussi V_FORECAST?? est ce normal.

Je ne comprends pas non plus le type de message que renvois domoticz.
Ils n ont pas l air d etre de type V_UP, V_DOWN, V_STOP.
quand je fais:

Code : Tout sélectionner

Serial.print(message.type);
il imprime "29,30,31"...est qu il y a une commande pour transformer le type de variable en string?

Sinon pour le souci du curseur c pareil pour moi, il est bloqué quand je créer ce type d'interrupteur. mm en venitian blind.
Par contre pour moi c peut etre normal vu que je n ai pas de V_PERCENTAGE.

Code : Tout sélectionner

/* ===============================================================
      Project: Store Test
       Author: Lucas van Rossum
      Created: 14/02/2016
  Arduino IDE: 1.7.8

================================================================== */


#include <MySensor.h>
#include <SPI.h> 
#define RELAY_ON 0
#define RELAY_OFF 1 
// relay pin
#define RELAY_UP  4
#define RELAY_DWN  6

// CHILD ID
#define CHILD_IDA 1  
 
#define BUTUP  3 //boutton pin
#define BUTDWN  5 //boutton pin

// to store button
int ValButUP=0;
int ValButDWN=0;

int oldAction=0;


bool state;

// Construct MySensors library
MySensor gw; 

MyMessage msgAUp(CHILD_IDA,V_UP);
MyMessage msgADwn(CHILD_IDA,V_DOWN);
MyMessage msgAStp(CHILD_IDA,V_STOP);

void setup(){
   // Initialize library and add callback for incoming messages
   gw.begin(incomingMessage, AUTO, true);
    // Send the sketch version information to the gateway and Controller
   gw.sendSketchInfo("Store ", "0.1");

   // Register all sensors to gw (they will be created as child devices)
  gw.present(CHILD_IDA, S_COVER);
  
   //Setup all the Arduino Pins
   
   pinMode(RELAY_UP, OUTPUT);
   pinMode(RELAY_DWN, OUTPUT);
   pinMode(BUTUP, INPUT);
   pinMode(BUTDWN, INPUT);
   
   // Activate internal pull-up
   //digitalWrite(BUTUP,HIGH);
   //digitalWrite(BUTDWN,HIGH);
   
   //Turn OFF any power to the Relay channels
   
   digitalWrite(RELAY_UP,RELAY_OFF);
   digitalWrite(RELAY_DWN,RELAY_OFF);
   
   
   
   
 }
 
 void loop(){
   // Alway process incoming messages whenever possible
   gw.process();
   //Recuperer le statut des poussoirs
   ValButUP = digitalRead(BUTUP);
   ValButDWN = digitalRead(BUTDWN);
   
//   if (ValButUP == HIGH ){
//   Serial.print(", up  ");
//}
//   if (ValButDWN == HIGH ){
//   Serial.print(", down ");
//}   
   //UP
   if (ValButUP == HIGH && ValButDWN == LOW  ){
     int action=1;                                 //1 monté,2descente, 0stop
     if (action!=oldAction) {
       Serial.print(", up relay ");
       digitalWrite(RELAY_UP,RELAY_ON);
       gw.send(msgAUp.set(1), false);} // retour info vers Controleur
     oldAction=action;}
   //DOWN
   if (ValButDWN == HIGH && ValButUP == LOW ){
     int action=2;                              //1 monté,2descente, 0stop
     if (action!=oldAction) {
       Serial.print(", down relay ");
       digitalWrite(RELAY_DWN,RELAY_ON);
       gw.send(msgADwn.set(1), false);} // retour info vers Controleur
     oldAction=action;
   //stop  
   }
   
   if (ValButDWN == LOW && ValButUP == LOW ){
     int action=0;                  //1 monté,2descente, 0stop
     if (action!=oldAction){
       Serial.print(", none ");
       digitalWrite(RELAY_UP,RELAY_OFF);
       digitalWrite(RELAY_DWN,RELAY_OFF);
       gw.send(msgAStp.set(1), false);} // retour info vers Controleur
     oldAction=action;;  
   }
   
   
}
   
void incomingMessage(const MyMessage &message) {
  // Write some debug info
     Serial.println("[incomingMessage]");
     Serial.print("Incoming change for sensor:");
     Serial.print(message.sensor);
     Serial.print("messagetype");
     Serial.print(message.type);
     Serial.print(", New status: ");
     Serial.println(message.getBool());
     
     
  //if (message.type == V_UP) {
  
  //if (message.type == V_UP) {
     // Change relay state
  //   state = message.getBool();
  //   if(state == 1){
  //      digitalWrite(RELAY_UP, RELAY_ON);
   //  }else{
   //     digitalWrite(RELAY_UP, RELAY_OFF);
  //      }
  //}      
  //if (message.type == V_DOWN) {
     // Change relay state
  //   state = message.getBool();
  //   if(state == 1){
   //     digitalWrite(RELAY_DWN, RELAY_ON);
  //   }else{
  //      digitalWrite(RELAY_DWN, RELAY_OFF);
  //      }  
     
 // }   
     
     
//}
}  
   



Re: Commande volet

Publié : 14 févr. 2016, 19:45
par vil1driver
Il n'y a que des chiffres à transiter..
Si tu regardes la doc de l'api tu verras que ça correspond.
Pour tester fais un Serial.print(V_UP) ;)

Pas de pourcentage non plus mais le reste est fonctionnel

Re: Commande volet

Publié : 14 févr. 2016, 21:32
par lucaskywalker
Ah merci, je n'avais pas vue la colonne value dans la doc de l'API.
Est ce que tu as un V_FORECAST de ton coté? Il apparaît dans domoticz materiel et réglage du node.
Sinon j ai bug sur l appli android, quelque soit le bouton il renvoit 31(V_stop).
Lucas

Re: Commande volet

Publié : 18 févr. 2016, 10:26
par AlexElectro
Salut

J'ai testé le script de lucaskywalker. J'ai quelques soucis car il émet en permanence.... Comme j'ai pas trop confiance dans la breadbord je fais quelques soudures et je vous raconte ! :lol:

Re: Commande volet

Publié : 19 févr. 2016, 17:51
par AlexElectro
Bon même bien soudé/cablé ça émet de manière aléatoires des infos.... bizarre....

Sinon pour les curieux c'est assez bien expliqué là : https://www.jeedom.com/forum/viewtopic.php?f=35&t=5381

oui, je sais, c'est la concurrence..... :oops: :oops: