Interfacer mysensors avec domoticz

Forum dédie aux capteurs et gateway mysensors.org
Grincheux

Interfacer mysensors avec domoticz

Message par Grincheux »

Bonjour à tous,

Une fois qu'on a joué avec la domotique et que tout est fiabilisé avec les utilisations courantes : gestion chauffage, lumière, volets avec les modules du commerce, il reste des sujets qui nécessitent de développer ses propres capteurs.
C'est mon cas et j'ai été vite été poussé dans mes retranchements , j'ai attaqué l'arduino dans le but de pouvoir communiquer avec domoticz bien sur !

Sujet en cours : le distributeur à croquette (menu paramétrage via lcd et distribution par servo) et à venir la gestion de la piscine (ph, chlore), le tout bien sur n'est pas de mon invention mais de la reprise de tuto sur le net, analysé et modifié.

J'ai réussi les sondes DIY oregon en arduino reconnu par domoticz, J'arrive des montages en arduino mais comment interfacer avec domoticz ?

C'est la qu'intervient mysensors. Que peut on en faire avec domoticz ?

J'ouvre ce sujet car je n'ai pas bien cerné les possibilités et le comment faire. J'ai réussi la passerelle mysensors et capteur de température reconnu dans domoticz, ca marche.

Maintenant j'aimerais attaquer la remontée de mes propres informations : valeur décimale (sonde ph et chlore) , état (servo), valeur texte ex : "chlore OK", module...

Et c'est la que je suis perdu, peux t-on faire passer n'importe quelle variable et valeur dans la Gateway mysensors et plusieurs avec le même transmetteur ?

Merci
fred97
Messages : 13
Inscription : 13 févr. 2015, 17:05

Re: Interfacer mysensors avec domoticz

Message par fred97 »

Tu peut grouper les sketch pour lire plusieures valeurs en analogique ou digital , pour le ph c'est une valeur en Mv + une compensation de la température .

L'avantage de mysensors c'est que la lib est déja bien documenté , il y'a plein d'exemples sur le site mysensor et des fois on peut modifier par exemple je voulais tester un capeur d'humidité basic , j'ai soit une sortie Analogique ou une numerique , la numerique me sort 1 ou 0 s'il y'a de l'eau ou non , alors que l'analogique peut sortir une valeur plus etendue ... sauf que le sketch en exemple : http://www.mysensors.org/build/moisture ne fonctionne que si le capteur et branché en Digital ....

J'ai pris au final le sketch http://www.mysensors.org/build/light qui me permet de lire une valeur en analogique donc pas mal de capteurs au final ....


Le gros plus de mysensors c'est qu'il est reconnu par domoticz , en beta il y'a meme maintenant les % , donc on peut retourner directement la valeur en % apres avoir faire les calcul avec l'arduino . Aussi ca ne surcharge pas le raspberry qui au final fait uniquement du monitoring de données , l'arduino lui est beaucoup plus simple et plus performant que la framboise pour lire du capteurs en direct ....

y'a ca qui est pas mal du tout : http://www.mysensors.org/hardware/micro
c'est surement l'avenir car ca embarque une puce SHA256 la lib pour chiffrer et echanger les clefs est déja dispo , capteur temp et humidité inclus , on soude direct le NRF24L01 dessus , peut fonctionner avec une ou 2 piles sans regulateur , un peut plus de memeoire pour utiliser un bootloader special qui permet de flasher ota je suppose etc ..
j'espere qu'ils sortirons une version avec plus de ports , mais c'est top pour des capteurs qu'on veut déplacer ou des solutions mini / nano ...
Grincheux

Re: Interfacer mysensors avec domoticz

Message par Grincheux »

Merci Fred pour ces infos,

J'ai encore du mal à comprendre même si ton explication me met sur la piste, le niveau est encore trop élevé. Je suis en train d'analyser le sketch de Alain69 viewtopic.php?f=8&t=280&p=3926&hilit=my ... lais#p3926 qui gère 4 relais en même temps.

J'ai testé hier de prendre un sketch température mysensors en rajoutant une partie d'aller retour d"un servo qui fonctionne tous les 2 séparément et ma partie servo ne fonctionnait plus correctement voir pas du tout !

Je pense qui si les personnes comme toi qui maitrisent l'arduino poste des exemples bien commenté, les débutants comme moi arriveront à comprendre le processus.

Pour la sensebender, j'ai découvert hier, très sympa la carte.
fred97
Messages : 13
Inscription : 13 févr. 2015, 17:05

Re: Interfacer mysensors avec domoticz

Message par fred97 »

salut ,

je ne sait pas coder en arduino et je ne sait meme aps comment fonctionne une boucle , disont que j'essaye pas mal de script arduino suivant les capteur que j'ai ... apres le forum mysensors est tres reactif et le forumdomoticz officiel aussi regorge d'exemple .
Désolé de ne pas pouvoir t'aider .
Grincheux

Re: Interfacer mysensors avec domoticz

Message par Grincheux »

Salut,

Depuis 2 jours j'ai fait un pas en avant, déja mysensors, aussi évident que cela paraisse, comme son nom l'indique ceux ne sont que des capteurs et pas des programmes avec plein de fonction qu'on peut rajouter !

Et puis j'ai parcouru leur site et le forum et je suis tombé sur cet exemple ci dessous qui a été une certaine révélation, je le trouve très pédagogique et on voit toute la puissance de leur construction et de la rationalisation du matériel. 6 capteurs en 1 fois.

En attendant j'ai réussi à faire fonctionner une DS18B20 et une DHT22 : ok reconnu dans domoticz. Je continue mes expériences.

Question bête , dans l'exemple ci dessous, je ne vois pas les pins de tous les capteurs, je trouve cela pas évident :
DIGITAL_INPUT_RAIN_SENSOR 3 => PIN3
HUMIDITY_SENSOR_DIGITAL_PIN 4 => PIN4
Light, baro, Btemp on les branche ou ?

Merci pour vos réponses

Code : Tout sélectionner

 #include <SPI.h>
    #include <MySensor.h>  
    #include <DHT.h>  
    #include <BH1750.h>
    #include <Wire.h> 
    #include <Adafruit_BMP085.h>
    
    #define CHILD_ID_HUM 0
    #define CHILD_ID_TEMP 1
    #define CHILD_ID_LIGHT 2
    #define CHILD_ID_BARO 3
    #define CHILD_ID_BTEMP 4
    #define CHILD_ID_RAIN 5
    
    #define DIGITAL_INPUT_RAIN_SENSOR 3 
    #define HUMIDITY_SENSOR_DIGITAL_PIN 4
    #define INTERRUPT DIGITAL_INPUT_RAIN_SENSOR-2
    
    boolean metric = false;
    int altitude = 221; // 741 feet above sealevel
    float lastBmpTemp = -1;
    float lastPressure = -1;
    float lastHum = -1;
    float lastTemp = -1;
    int BATTERY_SENSE_PIN = A0;
    int lastRainValue = -1;
    int lastBatteryPcnt = 0;
    int updateAll = 60;
    int updateCount = 0;
    uint16_t lastLux;
    unsigned long SLEEP_TIME = 60000;
    int batteryBasement = 800;
    float batteryConstant = 100.0 / (1023 - batteryBasement);
    
    Adafruit_BMP085 bmp = Adafruit_BMP085();
    BH1750 lightSensor;
    DHT dht;
    MySensor gw;
    
    MyMessage msgHum(CHILD_ID_HUM, V_HUM);
    MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
    MyMessage msgLux(CHILD_ID_LIGHT, V_LIGHT_LEVEL);
    MyMessage msgBtemp(CHILD_ID_BTEMP, V_TEMP);
    MyMessage msgPressure(CHILD_ID_BARO, V_PRESSURE);
    MyMessage msgRain(CHILD_ID_RAIN, V_TRIPPED);
    
    void setup()  
    {
      analogReference(INTERNAL);
      gw.begin();
      dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); 
      bmp.begin();
      gw.sendSketchInfo("Weather Sensor", "1.0");
      gw.present(CHILD_ID_HUM, S_HUM);
      gw.present(CHILD_ID_TEMP, S_TEMP);
      gw.present(CHILD_ID_LIGHT, S_LIGHT_LEVEL);
      gw.present(CHILD_ID_BARO, S_BARO);
      gw.present(CHILD_ID_BTEMP, S_TEMP);
      gw.present(CHILD_ID_RAIN, S_MOTION);
      pinMode(DIGITAL_INPUT_RAIN_SENSOR, INPUT);
      lightSensor.begin();
      metric = gw.getConfig().isMetric;
    }
    
    void loop()      
    {
      updateCount += 1;
      if (updateCount == updateAll) {
        lastTemp = -1;
        lastHum = -1;
        lastLux = -1;
        lastBmpTemp = -1;
        lastPressure = -1;
        lastRainValue = -1;
        lastBatteryPcnt = -1;
        updateCount = 0;
      }
      delay(dht.getMinimumSamplingPeriod());
      float temperature = dht.getTemperature();
      if (isnan(temperature)) {
          lastTemp = -1;
      } else if (temperature != lastTemp) {
        lastTemp = temperature;
        if (!metric) {
          temperature = temperature * 1.8 + 32.0;
        }
        gw.send(msgTemp.set(temperature, 1));
      }
      float humidity = dht.getHumidity();
      if (isnan(humidity)) {
          lastHum = -1;
      } else if (humidity != lastHum) {
          lastHum = humidity;
          gw.send(msgHum.set(humidity, 1));
      }
      uint16_t lux = lightSensor.readLightLevel();
      if (lux != lastLux) {
          gw.send(msgLux.set(lux));
          lastLux = lux;
      }
      float pressure = bmp.readSealevelPressure(altitude) * 0.01;
      float bmptemp = bmp.readTemperature();
      if (!metric) {
        bmptemp = bmptemp * 1.8 + 32.0;
      }
      if (bmptemp != lastBmpTemp) {
        gw.send(msgBtemp.set(bmptemp,1));
        lastBmpTemp = bmptemp;
      }
      if (pressure != lastPressure) {
        gw.send(msgPressure.set(pressure, 0));
        lastPressure = pressure;
      }
      int rainValue = digitalRead(DIGITAL_INPUT_RAIN_SENSOR);
      if (rainValue != lastRainValue) {
        gw.send(msgRain.set(rainValue==0?1:0));
        lastRainValue = rainValue;
      }
      int sensorValue = analogRead(BATTERY_SENSE_PIN);
      int batteryPcnt = (sensorValue - batteryBasement) * batteryConstant;
      if (lastBatteryPcnt != batteryPcnt) {
        gw.sendBatteryLevel(batteryPcnt);
        lastBatteryPcnt = batteryPcnt;
     }
      gw.sleep(SLEEP_TIME);
    }
Grincheux

Re: Interfacer mysensors avec domoticz

Message par Grincheux »

Salut,

Je commence à mieux comprendre le fonctionnement.

Ce qui marche pour moi :

Température DS18B20 => reconnu et marche dans domoticz (permet de faire une sonde de piscine)
Température DHT22 et DHT 11 => reconnu et marche dans domoticz (permet de faire une sonde temp/hum extérieure ou intérieure)
Door, windows, bouton => reconnu et marche dans domoticz (permet de récupérer un contact, on peut imaginer un relais pour (pompe filtration)
Servo => reconnu et marche dans domoticz (va me servir pour mon distributeur à croquette pour chat, le programme sera géré par domoticz)

Maintenant, je vais commencer à mixer les capteurs et actionneurs.
Mysensors_domoticz.png
Mysensors_domoticz.png (130.18 Kio) Consulté 11050 fois
ben33880
Messages : 268
Inscription : 13 nov. 2014, 21:12

Re: Interfacer mysensors avec domoticz

Message par ben33880 »

Une petite question en passant, est ce que l'humidité de la sonde dht remonte seulement sur là température de la dht ? car chez moi elle remonte avec la sonde dallas aussi.
Répondre