[arduino]utilisation dans un cadre domotique

utilisation dans un cadre domotique [arduino] - Domotique et maison connectée - Electronique, domotique, DIY

Marsh Posté le 24-11-2015 à 11:39:43    

Etant donné qu'on a une cat DIY, j'imagine qu'on a le droit de faire des topics un peu plus spécialisés.
Je propose de concentrer ici l'utilisation des arduinos dans un cadre domotique.
Le faible prix et l'encombrement réduit de ces éléments font que c'est un choix de prédilections pour les makers!
 
Le sujet est très vaste par la multiplicité des capteurs possibles.
 
Je placerai dans ce sujet des liens vers des posts présentant vos diverses solutions, en espérant que ça donne des idées à nombres d'entre vous


Message édité par THE REAL SMILEY le 24-11-2015 à 11:53:28

---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 24-11-2015 à 11:39:43   

Reply

Marsh Posté le 24-11-2015 à 11:43:38    

Le droit et le devoir :o :d
Par contre dans le topic Domotique il doit déjà y en avoir un paquet non ?
Merci pour l'initiative de topic en tout cas !
:hello:
 


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 24-11-2015 à 11:47:01    

Présentation de ma solution:
je dissémine des modules arduino pro mini au gré de mes besoins.
Pour le dialogue entre eux et la box domotique, j'utilise le protocole Mysensors
La box domotique est un Raspi 2 Model B sur lequel j'ai installé Jeedom.
 
J'ai actuellement 3 modules arduino:
- passerelle série branchée en USB sur le raspi, j'ai utilisé ici un arduino nano
- module de garage, voir le détail dessous (arduino pro mini)
- module de SDB, voir le détail dessous (arduino pro mini)
 
Voici mon module de garage ouvert:
http://reho.st/i.snag.gy/peaws.jpg
il me reste juste l'interface sur la télécommande de porte de garage à faire
On y trouve:
- Arduino pro mini encadré en vert
- Module de communication 2.4Ghz encadré en orange (pour la communication avec la centrale domotique)
- la platine relais à gauche pour le pilotage de la VMC et de la lumière du garage
- à gauche hors boitier le module IR de détection de mouvement qui se loge dans un trou sur le couvercle
- le fil blanc à gauche va sur la porte de garage pour la détection d'ouverture du garage
- le transfo 220V/5V pour l'alimentation de l'électronique (récupération de transfo de portable, j'ai gardé le port USB :D )
- les fils rouges à droite disparaîtront vus que c'est l'interface USB qui me permet de prog l'arduino
voilà voilà, tout ça pour à peine 13 Euros :D
 
une fois fermé, c'est joli hein [:ddr555]
 
Low cost roumain powaa !!!
 
Pour le fun, mon module de SDB est planqué... dans ma radio chinoise en bois
J'ai profité que le transfo (15V) de cette radio est alimenté en permanence pour y mettre mon arduino avec quelques régulateurs (5V pour l'arduino et 3.3V pour le module RF), ça donne ça côté électronique:
http://reho.st/self/33e55f26501de9321aa80457f05bf431fa9b0907.png
 
Et en situation:
http://reho.st/self/a03465c3ab4dc54fac41030a1253f15312223d2d.jpg
 
Le bouton poussoir est lumineux:
lors de l'appui sur le bouton ça déclenche la VMC pendant 5 minutes
 
Sinon la VMC se déclenche en fonction de l'humidité (capteur derrière la radio)
Lorsque la VMC tourne, le bouton poussoir s'allume.
 
Cette intégration est WAF certified :D


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 24-11-2015 à 11:50:06    

TotalRecall a écrit :

Le droit et le devoir :o :d
Par contre dans le topic Domotique il doit déjà y en avoir un paquet non ?
Merci pour l'initiative de topic en tout cas !
:hello:
 


 :jap:  
Il y en a quelques unes en effet, mais noyées au milieu des solutions commerciales ce qui fait que c'était dur à suivre.
Merci pour la nouvelle cat en tout cas [:cerveau charlest]


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 24-11-2015 à 14:31:22    

Mignon comme tout tes petits montages, mention spéciale pour celui planqué dans la radio dans la salle de bain :love:  
 
Je viens d'ouvrir un topic concernant également la domotique avec un arduino:
http://forum.hardware.fr/hfr/elect [...] _192_1.htm
 
Mais je l'ai mis en section microcontrolleur puisque ma question porte plus sur l'alimentation du module que sur la partie domotique.


---------------
--== M4vr|ck ==--
Reply

Marsh Posté le 08-12-2015 à 11:19:37    

[:lardoncru:1]

 

Il faut que je prenne le temps de poster en détail ce pour quoi j'utilise les arduinos, enfin c'est également en utilisant la lib MySensors.

 

Des capteurs mouvement/temp/humidité sur secteur, des capteurs d'ouverture de fenêtre sur piles, et je prévois de rajouter un ou deux capteurs avec un simple bouton dessus pour déclencher des actions simples (genre, forcer l'allumage du sèche serviette, ou de la VMC dans les chiottes).


Message édité par petoulachi le 08-12-2015 à 12:53:33
Reply

Marsh Posté le 08-12-2015 à 11:36:58    

J'ai un petit projet en ce moment : j'ai ajouté une ventilation à ma cave.
Actuellement :
- un ventilateur papst 18cm qui fonctionne entre 16 et 32V.
- une alim tte simple (transfo symétrique -12/12V + redressement/filtrage avec un interrupteur pour basculer entre 16VDC et 32VDC sur la sortie). Sauf qu'en pratique en 32V ça fait un bruit monstrueux donc je ne l'utilise qu'en 16V.
- un programmateur mécanique sur 24h pour couper le ventilo la nuit (ventilo actif entre 9h et 22h).

 

Mon projet quand j'aurai le temps :
- Un capteur d'humidité genre DHT11 pour réguler le ventilo entre 12 et 22V selon l'humidité.
- Un RTC pour gérer la programmation (coupure la nuit, etc)
- Je prévoierai l'ajout d'une commande à distance à terme même si elle n'est pas dans le projet initial.
Le tout sur un arduino et alim maison + ce qu'il faut pour générer l'alim du ventilo à partir des consignes (probablement une petite alim à découpage commandée en PWM à partir de l'arduino).

 

Faut juste que je trouve le temps de m'en occuper maintenant mais si ça arrive je ferai un topic de présentation :d


Message édité par TotalRecall le 08-12-2015 à 11:37:47

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 09-12-2015 à 11:42:28    

Allez je me lance !
 
Donc, projet domotique chez moi (box à base de RPI2 sous Jeedom). J'utilise du ZWave (pour les détecteurs de fumée, pour les fil pilotes des radiateurs (Qubino), et pour un déclencheur pour la VMC), et du Mysensors pour tout ce qui est température (gestion du thermostat), mouvement (gestion de la présence), humidité (gestion de la VMC) et ouverture de fenetre/porte d'entrée (alarme, et arrêt des chauffages pour les pièces concernées lors de l'ouverture d'une fenêtre).
 
Au niveau MySensors, j'ai 2 types de modules :
-un module sur secteur qui fait 3 choses : humidité, température (avec du DHT22) et mouvement. J'ai un boitier de ce type dans chaque pièce de la maison.
-un module sur batterie pour ouverture porte/fenetre. Il ne fait rien d'autre, le but étant de conserver la batterie au maximum
 
Commençons par le module H/T/M.
Basé sur du Arduino Pro 5V. J'ai pris cette board pour plusieurs raisons :
-c'est petit par rapport à du nano
-en 5V car je suis sur secteur, m'en fous de la conso.
La plus grosse problématique aura été de trouver une boite pour mettre le capteur. Voilà ce que ça donne :
http://petoulachi.com/appart/domo/mth1.jpg
A gauche en haut, c'est la radio
juste au dessous, le convertisseur AC/DC 5V
A droite en haut, le capteur hum/temp, et au dessus de lui, un step down 5V => 3.3V pour la radio.
Au dessous, le capteur de mouvement avec l'arduino placée devant.
 
En situation ça donne ça, pas trop WAF mais bon :
http://petoulachi.com/appart/domo/mth2.jpg
Et j'ai mis exprès devant, l'autre type de capteur, pour les portes !
 
Pour ce capteur là, pas d'arduino pro, mais une sensebender pro. J'ai pris cette board là aussi pour plusieurs raisons :
-la board est minuscule
-la board est optimisée pour la batterie (aucune led etc)
-la board est cablée de façon optimisée pour monter la radio très simplement
-et finalement c'était ma façon de soutenir le projet MySensor, finalement ça ne m'avait rien couté, alors c'était comme un remerciement
 
Un peu plus en détail ça donne ça:
http://petoulachi.com/appart/domo/door1.jpg
http://petoulachi.com/appart/domo/door2.jpg
 
J'attends actuellement de recevoir les boites pour les mettre dedans.
 
Les sketch pour mes capteurs maintenant :
le M/T/H

Code :
  1. #include <SPI.h>
  2. #include <MySensor.h> 
  3. #include <SimpleTimer.h>
  4. #include <idDHTLib.h>
  5. #define CHILD_ID_HUM 0
  6. #define CHILD_ID_TEMP 1
  7. #define CHILD_ID_MOT 2
  8. #define MOTION_SENSOR_DIGITAL_PIN 4
  9. #define HUMIDITY_SENSOR_DIGITAL_PIN 3
  10. //declaration
  11. void dhtLib_wrapper(); // must be declared before the lib initialization
  12. // Lib instantiate
  13. idDHTLib DHTLib(HUMIDITY_SENSOR_DIGITAL_PIN,1,dhtLib_wrapper);
  14. MySensor gw;
  15. SimpleTimer timer;
  16. float lastTemp;
  17. float lastHum;
  18. boolean lastTripped;
  19. int nbT;
  20. int nbH;
  21. unsigned long lastMotionSendTime;
  22. unsigned long maxMotionInterval = 5 * 60 * 1000UL;  // 5 minutes max entre 2 rapports de mouvement (in milliseconds)  
  23. MyMessage msgHum(CHILD_ID_HUM, V_HUM);
  24. MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
  25. MyMessage msgMot(CHILD_ID_MOT, V_TRIPPED);
  26. void setup() 
  27. {
  28.   gw.begin(NULL, AUTO, true); // repeater activé
  29.   gw.sendSketchInfo("Humidity/Temperature/Motion", "1.0" );
  30.   gw.present(CHILD_ID_HUM, S_HUM);
  31.   gw.present(CHILD_ID_TEMP, S_TEMP);
  32.   gw.present(CHILD_ID_MOT, S_MOTION);
  33.   nbT = 0;
  34.   nbH = 0;
  35.   lastMotionSendTime = 0;
  36.   timer.setInterval(30000, getMeasure);
  37. }
  38. void loop()     
  39.   gw.process();
  40.   timer.run();
  41.   boolean tripped = digitalRead(MOTION_SENSOR_DIGITAL_PIN) == HIGH;   
  42.   if (tripped != lastTripped)
  43.   {
  44.  sendMotion(tripped);
  45.   }
  46.   else
  47.   {
  48.     unsigned long startTime = millis();
  49.     if (startTime - lastMotionSendTime > maxMotionInterval)
  50.     {
  51.   sendMotion(lastTripped);
  52.     }
  53.   }
  54. }
  55. void sendMotion(boolean tripped)
  56. {
  57. Serial.print("M: " );
  58.     Serial.println(tripped);
  59.     gw.send(msgMot.set(tripped?"1":"0" ));
  60. lastMotionSendTime = millis();
  61. lastTripped = tripped;
  62. }
  63. void handleHumidity()
  64. {
  65. float humidity = DHTLib.getHumidity();
  66.   if (isnan(humidity))
  67.   {
  68.       Serial.println("Failed reading humidity from DHT" );
  69.   }
  70.   else if (humidity != lastHum)
  71.   {
  72. sendHumidity(humidity);
  73.   }
  74.   else
  75.   {
  76.     nbH++;
  77.     Serial.print("inc H)" );
  78.   }
  79.    if (nbH > 10)
  80.    {
  81.     sendHumidity(lastHum);
  82.    }
  83. }
  84. void sendHumidity(float humidity)
  85. {
  86. lastHum = humidity;
  87.     gw.send(msgHum.set(humidity, 1));
  88.     Serial.print("H: " );
  89.     Serial.println(humidity);
  90.     nbH=0;
  91. }
  92. void handleTemperature()
  93. {
  94.   float temperature = DHTLib.getCelsius();
  95.   if (isnan(temperature))
  96.   {
  97.       Serial.println("Failed reading temperature from DHT" );
  98.   }
  99.   else if (temperature != lastTemp)
  100.   {
  101.     sendTemperature(temperature);
  102.   }
  103.   else
  104.   {
  105.     nbT++;
  106.     Serial.print("inc T" );
  107.   }
  108.   if (nbT > 10)
  109.   {
  110.     sendTemperature(lastTemp);
  111.   }
  112. }
  113. void sendTemperature(float temperature)
  114. {
  115.     lastTemp = temperature;
  116.     gw.send(msgTemp.set(temperature, 1));
  117.     Serial.print("T: " );
  118.     Serial.println(temperature);
  119.     nbT = 0;
  120. }
  121. void getMeasure()
  122. {
  123.   Serial.print("(debut T/H)" );
  124.   Serial.flush();
  125.   DHTLib.acquire();
  126.   while (DHTLib.acquiring())
  127.   {
  128.     gw.process();
  129.     boolean tripped = digitalRead(MOTION_SENSOR_DIGITAL_PIN) == HIGH;
  130.     if (tripped != lastTripped)
  131.     {
  132.     sendMotion(tripped);
  133.     }
  134.   }
  135.   int result = DHTLib.getStatus();
  136.   bool process = false;
  137.   switch (result)
  138.   {
  139.     case IDDHTLIB_OK:
  140.       process = true;
  141.       break;
  142.     case IDDHTLIB_ERROR_CHECKSUM:
  143.       Serial.println("Error\n\r\tChecksum error" );
  144.       break;
  145.     case IDDHTLIB_ERROR_ACQUIRING:
  146.       Serial.println("Error\n\r\tAcquiring" );
  147.       break;
  148.     case IDDHTLIB_ERROR_DELTA:
  149.       Serial.println("Error\n\r\tDelta time to small" );
  150.       break;
  151.     case IDDHTLIB_ERROR_NOTSTARTED:
  152.       Serial.println("Error\n\r\tNot started" );
  153.       break;
  154.     default:
  155.       Serial.println("Unknown error" );
  156.       break;
  157.   }
  158.   if (process)
  159.   {
  160.     handleTemperature();
  161.   handleHumidity();
  162.   }
  163.   Serial.print("(fin T/H)" );
  164. }
  165. void dhtLib_wrapper() {
  166.   DHTLib.dht22Callback();
  167. }


 
Ce qu'il faut voir:
-comme tu me l'as conseillé THE REAL SMILEY, j'utilise la Lib idDHTLib, qui permet de ne pas bloquer le capteur pendant la prise de mesure de la temp/hum (pour pouvoir déclencher le capteur de mouvement si nécessaire).
-ce n'est pas du tout batterie efficient, car le module ne se fout JAMAIS en sommeil
-vu le constat précédent, j'ai rajouté la fonction de repeater sur ce type de sensor, juste au cas où
 
Et maintenant, pour les capteurs portes/fenêtres, qui n'est qu'une version ultra simplifiée du sketch Sensebender.

Code :
  1. #include <MySensor.h>
  2. #include <Wire.h>
  3. #include <SPI.h>
  4. #include "utility/SPIFlash.h"
  5. #include <EEPROM.h> 
  6. #include <avr/power.h>
  7. #define RELEASE "1.0"
  8. #define DIGITAL_INPUT_SENSOR 3 
  9. #define INTERRUPT DIGITAL_INPUT_SENSOR-2
  10. #define CHILD_ID_DOOR 1
  11. MySensor gw;
  12. MyMessage msgDoor(CHILD_ID_DOOR, V_TRIPPED);
  13. long lastBattery = -100;
  14. boolean oldDoorValue;
  15. void setup()
  16. {
  17.   Serial.begin(115200);
  18.   Serial.print("Sensebender Micro FW " );
  19.   Serial.print(RELEASE);
  20.   Serial.flush();
  21.  
  22.   gw.begin();
  23.   Serial.flush();
  24.   Serial.println(" - Online!" );
  25.   gw.sendSketchInfo("Battery Door", RELEASE);
  26.   pinMode(DIGITAL_INPUT_SENSOR, INPUT);   
  27.   digitalWrite(DIGITAL_INPUT_SENSOR, HIGH);
  28.  
  29.   gw.present(CHILD_ID_DOOR, S_DOOR);
  30. }
  31. void loop()
  32. {
  33.   gw.process();
  34.   sendBattLevel(false);
  35.   door(false);
  36.   gw.sleep(INTERRUPT, CHANGE, 0);
  37. }
  38. void door(bool force)
  39. {
  40.   bool tx = force;
  41.   boolean tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;
  42.  
  43.   if (tripped != oldDoorValue)
  44.   {
  45.     tx = true;
  46.     oldDoorValue = tripped;
  47.   }
  48.   if (tx)
  49.   {
  50.      gw.send(msgDoor.set(tripped ?  1 : 0));
  51.   }
  52. }
  53. /********************************************
  54. *
  55. * Sends battery information (battery percentage)
  56. *
  57. * Parameters
  58. * - force : Forces transmission of a value
  59. *
  60. *******************************************/
  61. void sendBattLevel(bool force)
  62. {
  63.   if (force) lastBattery = -1;
  64.  
  65.   long vcc = readVcc();
  66.  
  67.   if (vcc != lastBattery)
  68.   {
  69.     lastBattery = vcc;
  70.     // Calculate percentage
  71.     vcc = vcc - 1900; // subtract 1.9V from vcc, as this is the lowest voltage we will operate at
  72.     long percent = vcc / 14.0;
  73.     gw.sendBatteryLevel(percent);
  74.   }
  75. }
  76. /*******************************************
  77. *
  78. * Internal battery ADC measuring  
  79. *
  80. *******************************************/
  81. long readVcc() {
  82.   // Read 1.1V reference against AVcc
  83.   // set the reference to Vcc and the measurement to the internal 1.1V reference
  84.   #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  85.     ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  86.   #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
  87.     ADMUX = _BV(MUX5) | _BV(MUX0);
  88.   #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
  89.     ADcdMUX = _BV(MUX3) | _BV(MUX2);
  90.   #else
  91.     ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  92.   #endif 
  93.   delay(2); // Wait for Vref to settle
  94.   ADCSRA |= _BV(ADSC); // Start conversion
  95.   while (bit_is_set(ADCSRA,ADSC)); // measuring
  96.   uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH   
  97.   uint8_t high = ADCH; // unlocks both
  98.   long result = (high<<8) | low;
  99.   result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
  100.   return result; // Vcc in millivolts
  101. }


En gros, le module est tout le temps en sommeil, et n'est réveillé que via interrupt par le capteur. Lors d'un réveil, il envoie l'info ainsi que l'état de sa batterie, puis se rendort jusqu'au prochain interrupt.
 
Je compte rajouter un module, très similaire à celui du dessous, mais avec un bouton à la place du capteur, pour forcer le déclenchement de la VMC ou du sèche serviette.

Reply

Marsh Posté le 09-12-2015 à 11:51:58    

Ahh enfin quelqu'un qui ose montrer ses créations.
En effet c'est pas très WAF comme intégration :D

 

En ce qui concerne le captage d'humidité et température, t'arrives à avoir quelque chose de correct?
J'avoue que j'ai un doute étant donné qu'il est coincé dans le boitier qui lui même génère de la chaleur (convertisseur AC/DC qui est dedans), tu dois avoir des mesures qui sont au dessus de la réalité.

Message cité 1 fois
Message édité par THE REAL SMILEY le 09-12-2015 à 12:05:37

---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 09-12-2015 à 11:53:34    

Le AC m'a l'air un peu trop près du reste, faudra pas secouer trop fort le machin en le déplaçant :fouyaya: !
Je ne comprend pas pourquoi tu as mis le capteur dans le boitier qui semble clos ?
Mais belle réalisation sinon :)

Message cité 1 fois
Message édité par TotalRecall le 09-12-2015 à 11:56:25

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 09-12-2015 à 11:53:34   

Reply

Marsh Posté le 09-12-2015 à 14:07:27    

THE REAL SMILEY a écrit :

Ahh enfin quelqu'un qui ose montrer ses créations.
En effet c'est pas très WAF comme intégration :D

 

En ce qui concerne le captage d'humidité et température, t'arrives à avoir quelque chose de correct?
J'avoue que j'ai un doute étant donné qu'il est coincé dans le boitier qui lui même génère de la chaleur (convertisseur AC/DC qui est dedans), tu dois avoir des mesures qui sont au dessus de la réalité.

 

Je dois me motiver un soir à prendre tous mes capteurs et les foutre à côté, pour régler les écarts de température, parce que clairement j'en ai (genre dans mon salon coté TV il fait 20° et coté entrée il fait 24° au même moment). Les DHT sont pas connus pour leur précision. Mais bon à la limite je m'en fous, ça me sert juste à régler mon thermostat du coup, du moment que je sais que si je lis 20° faut comprendre 18°, ça va (parce que par contre les courbes sont régulières, j'ai pas de gros écarts entre deux mesures, et c'est là l'essentiel).

 
TotalRecall a écrit :

Le AC m'a l'air un peu trop près du reste, faudra pas secouer trop fort le machin en le déplaçant :fouyaya: !
Je ne comprend pas pourquoi tu as mis le capteur dans le boitier qui semble clos ?
Mais belle réalisation sinon :)

 

Le capteur est a mi chemin dans le boitier et en dehors. C'était un compromis entre un truc totalement immonde (bon là on est déjà pas au top) et un truc plus discret, mais pas précis. Et comme de toute façon, je devais déjà ouvrir le boitier pour le capteur de mouvement, un peu plus un peu moins...  [:fl4me] Du coup le capteur est pas complètement coincé dans le boitier, la partie qui mesure est d'ailleurs pas loin d'être complètement dehors.
Mais d'une manière générale, ça chauffe pas en fait, j'ai déjà vérifié en ayant laissé le capteur plusieurs jours, de l'ouvrir, c'est pas chaud du tout.

 

l'AC est assez prêt du reste, mais bon sur un court-circuit ça m'inquiète pas, ça va disjoncter. C'est plutôt si un jour il décide de cramer ou il y a effectivement un risque, mais là qu'il soit à 1mm du reste ou à 1cm, ça va rien changer au problème. Ah oui et j'ai isolé les trucs aussi, avant de réellement tout fermer (chaque composant est dans du plastique, donc pas de court-circuit possible entre eux).


Message édité par petoulachi le 09-12-2015 à 14:09:02
Reply

Marsh Posté le 09-12-2015 à 20:50:28    

[:mr_yvele]


---------------
Long-range goals keep you from being frustrated by short-term failures. RIP VC
Reply

Marsh Posté le 11-12-2015 à 15:16:45    

Je suis en train de travailler sur l'interfaçage de ma climatisation en IR, je vous dis pas comme j'en chie :fou: (clim electrolux donc les signaux n'ont été décodés par personne)
 
J'ai réussi à reverse décoder tous les signaux de la télécommande (en long raw histoire de pimenter le truc), il ne me reste que le checksum pour lequel je n'ai pas trouvé l'algorithme utilisé.
Vu qu'il est sur 4 bits, j'envoie ma commande 16 fois avec un checksum différent, du coup ça finit toujours par passer, mais faut avouer que c'est dégueux :/
 
Si y'a des pros du checksum ou un topic pour ça, je prend :)


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 11-12-2015 à 15:34:57    

Les clims c'est relou, chez daikin par exemple chaque appui envoie un paquet complet avec tous les paramètres et pas seulement celui de la touche choisie :/


---------------
Long-range goals keep you from being frustrated by short-term failures. RIP VC
Reply

Marsh Posté le 14-12-2015 à 09:51:15    

ObsydianKenobi a écrit :

Les clims c'est relou, chez daikin par exemple chaque appui envoie un paquet complet avec tous les paramètres et pas seulement celui de la touche choisie :/


C'est la même chose sur la mienne, au final c'est pas con je trouve.
ça te permet d'être synchro entre l'affichage de la télécommande et le mode de fonctionnement de la clim.


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 14-12-2015 à 10:13:15    

THE REAL SMILEY a écrit :

Je suis en train de travailler sur l'interfaçage de ma climatisation en IR, je vous dis pas comme j'en chie :fou: (clim electrolux donc les signaux n'ont été décodés par personne)
 
J'ai réussi à reverse décoder tous les signaux de la télécommande (en long raw histoire de pimenter le truc), il ne me reste que le checksum pour lequel je n'ai pas trouvé l'algorithme utilisé.
Vu qu'il est sur 4 bits, j'envoie ma commande 16 fois avec un checksum différent, du coup ça finit toujours par passer, mais faut avouer que c'est dégueux :/
 
Si y'a des pros du checksum ou un topic pour ça, je prend :)


 
Juste dégueulasse mais j'adore le concept  :D  . Bon, lorsque je trouve 5 minutes, il va falloir que l'on cause tous les deux  ;). J'ai une daikin et une Mitsubishi a gérer  :jap:


---------------
Putain, mais tire un câble bordel © Laz-Art . Mon ancien profil
Reply

Marsh Posté le 14-12-2015 à 11:50:27    

yargol a écrit :

 

Juste dégueulasse mais j'adore le concept  :D  . Bon, lorsque je trouve 5 minutes, il va falloir que l'on cause tous les deux  ;). J'ai une daikin et une Mitsubishi a gérer  :jap:


Yeah du brute force des familles [:ddr555]
Pas de pb, je suis assez à l'aise maintenant pour décoder les signaux de télécommande :jap:
Avec le Sketch présenté ici, tu as tout ce qu'il faut pour enregistrer les différentes commandes, après à toi d'identifier les différentes parties du message IR
http://www.analysir.com/blog/2014/ [...] s-arduino/


Message édité par THE REAL SMILEY le 14-12-2015 à 11:50:59

---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 15-12-2015 à 14:20:10    

Petite question, depuis que j'utilise idDHTLib, j'ai par moment des mesures complètement incohérentes (0° alors qu'il fait 19, ou un joli 1093284642° !).
Autant pour le 1093284642°, ça va pas être compliqué de l'éviter, autant le 0°... En faisant en fonction de la dernière température envoyé et en jugeant d'un écart max possible (10° ?), je peux contourner, mais c'est savoir si je suis le seul à rencontrer ce problème ?

Reply

Marsh Posté le 15-12-2015 à 14:53:55    

Connexion trop longue ou environnement parasité ? Alimentation foireuse/mal filtrée ?
Ca sent la trame corrompue vu que c'est du numérique...

 

A moins que le pb soit très répandu sur ces capteurs (?) je pense que la solution est plutôt à chercher dans ton montage que côté software...


Message édité par TotalRecall le 15-12-2015 à 14:54:45

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 15-12-2015 à 15:08:00    

Bin disons que vu que ces mêmes modules, avec l'utilisation de la lib "classique" DHTLib ne m'ont jamais fait ce comportement, je suis plutôt parti sur un problème soft.
La seule diff hard entre les 2 solutions, c'est qu'avant mon DHT22 était connecté au D4, et là au D3 (pour avoir l'interrupt). Le reste est strictement identique !

 

edit : non ya une autre diff, j'ai aussi activé le mode repeater sur chaque node. Bon, je vais commencer par virer le repeater voir

Message cité 1 fois
Message édité par petoulachi le 15-12-2015 à 15:09:13
Reply

Marsh Posté le 15-12-2015 à 15:39:29    

petoulachi a écrit :

Bin disons que vu que ces mêmes modules, avec l'utilisation de la lib "classique" DHTLib ne m'ont jamais fait ce comportement, je suis plutôt parti sur un problème soft.
La seule diff hard entre les 2 solutions, c'est qu'avant mon DHT22 était connecté au D4, et là au D3 (pour avoir l'interrupt). Le reste est strictement identique !  
 
edit : non ya une autre diff, j'ai aussi activé le mode repeater sur chaque node. Bon, je vais commencer par virer le repeater voir


Je ne pense pas que la lib iDht... soit buggée, j'ai des mesures stables de mon côté.
http://i.snag.gy/lUznZ.jpg
On voir bien à partir de quand j'ai allumé le chauffage :D  
Et mes mesures présentent un décalage de 3 degrés, je pense que le transfo de ma radio chinoise chauffe un peu et fausse la mesure, boarf, pas grave, je ne me sert que du capteur d'humidité :o


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 15-12-2015 à 15:43:50    

Je viens d'écrire ça pour filtrer ces températures chelou

Code :
  1. void handleTemperature()
  2. {
  3. float temperature = DHTLib.getCelsius();
  4. if (isnan(temperature) || temperature > 50 || temperature < -20)
  5. {
  6.  Serial.println("Failed reading temperature from DHT" );
  7. }
  8. else if (temperature != lastTemp)
  9. {
  10.  // filtre valeur incohérente...
  11.  bool doNotSend = false;
  12.  if (lastTemp != -10 && !lastTempWasFiltered)
  13.  {
  14.   int diff = lastTemp - temperature;
  15.   if (diff < -10 || diff > 10)
  16.   {
  17.    doNotSend = true;
  18.    lastTempWasFiltered = true;
  19.   }
  20.   else
  21.   {
  22.    lastTempWasFiltered = false;
  23.   }
  24.  }
  25.  if (!doNotSend)
  26.  {
  27.   sendTemperature(temperature);
  28.  }
  29. }
  30. else
  31. {
  32.  nbT++;
  33.  Serial.print("inc T" );
  34. }
  35. if (nbT > 10)
  36. {
  37.  sendTemperature(lastTemp);
  38. }
  39. }
 

Dites moi si vous voyez une boulette  [:fandalpinee:3] , parce qu'à tester c'est pas trop faisable...


Message édité par petoulachi le 15-12-2015 à 15:44:54
Reply

Marsh Posté le 15-12-2015 à 15:56:47    

En vrac :
1) diff < -10 || diff > 10 ---> abs(diff) > 10
2) On ne voit pas la MAJ de lastTemp dans ton extrait !
3) Intérêt de lastTempWasFiltered si tu ne mettais pas à jour lastTemp lorsque tu zappes une valeur ?
4) A mon avis tu peux filtrer dès que l'écart dépasse 3 ou 4° si ton intervalle de mesure est court...

 

A part ça il sort de quoi ton graphique ci-dessus ? C'est mignon :o

Message cité 2 fois
Message édité par TotalRecall le 15-12-2015 à 15:59:00

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 15-12-2015 à 16:15:44    

TotalRecall a écrit :


 
A part ça il sort de quoi ton graphique ci-dessus ? C'est mignon :o


Jeedom :jap:


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 16-12-2015 à 11:26:53    

THE REAL SMILEY a écrit :


Je ne pense pas que la lib iDht... soit buggée, j'ai des mesures stables de mon côté.
http://i.snag.gy/lUznZ.jpg
On voir bien à partir de quand j'ai allumé le chauffage :D
Et mes mesures présentent un décalage de 3 degrés, je pense que le transfo de ma radio chinoise chauffe un peu et fausse la mesure, boarf, pas grave, je ne me sert que du capteur d'humidité :o


Tu as un DHT22 ou 11 ?
et tu utilises quelle lib ? moi iddhtlib, c'est la seule qui gère le dht22 (car sinon ya aussi iddht11)
edit : ah et, en fait via le graph jeedom je ne vois pas ces gros écarts de température, car il lisse automatiquement. C'est parce que j'ai le thermostat sous Jeedom, c'est lui qui m'averti, car il reçoit une valeur non cohérente.

 
TotalRecall a écrit :

En vrac :
1) diff < -10 || diff > 10 ---> abs(diff) > 10
2) On ne voit pas la MAJ de lastTemp dans ton extrait !
3) Intérêt de lastTempWasFiltered si tu ne mettais pas à jour lastTemp lorsque tu zappes une valeur ?
4) A mon avis tu peux filtrer dès que l'écart dépasse 3 ou 4° si ton intervalle de mesure est court...

 

A part ça il sort de quoi ton graphique ci-dessus ? C'est mignon :o


1) ok pour l'abs, j'y ai pensé mais je pensais également qu'il fallait inclure une lib de plus, j'avais la flemme de chercher :o
2) normal, c'est sendTemperature qui s'en occupe ;)
3+4) bin pour éviter un filtrage qui n'aurait pas lieu d'être (une ouverture de fenetre pour aérer en plein hivers, ça fait baisser très très vite la température). En même temps je peux garder ça et réduire l'écart à 4° effectivement :jap:

 

Message cité 1 fois
Message édité par petoulachi le 16-12-2015 à 11:29:11
Reply

Marsh Posté le 16-12-2015 à 11:28:23    

petoulachi a écrit :


Tu as un DHT22 ou 11 ?
 


DHT11
j'ai reçu des DHT22 récement, je dois faire l'upgrade


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 16-12-2015 à 12:18:13    

Ca vient ptete de là du coup, ou du fait que si tu ne suis la temp que via ton graph jeedom, tu ne le vois pas.
D'ailleurs il fait super chaud chez toi :o

Reply

Marsh Posté le 16-12-2015 à 12:25:17    

petoulachi a écrit :

Ca vient ptete de là du coup, ou du fait que si tu ne suis la temp que via ton graph jeedom, tu ne le vois pas.
D'ailleurs il fait super chaud chez toi :o


Oué c'est ce que je précisais, peut-être que j'ai le même problème mais Jeedom fait peut-être un filtre sur les valeurs.
Après pour la Dif DHT11/DHT22 hormis la différence de précision, je ne sais pas si l'un est plus long que l'autre à faire l'acquisition, mais si le DHT22 est plus long, ça pourrait venir de là en effet.
J'ai 3 degrés d'écart, malgré le fait que le capteur soit positionné hors de la radio, il reste proche du transfo qui chauffe :fou:


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 16-12-2015 à 14:02:48    

Tu n'utilises pas Thermostat sous Jeedom ?
 
NE me dis pas que tu n'as pas domotisé ton chauffage [:jeanpierre decombres:2]

Reply

Marsh Posté le 16-12-2015 à 14:42:06    

petoulachi a écrit :

Tu n'utilises pas Thermostat sous Jeedom ?
 
NE me dis pas que tu n'as pas domotisé ton chauffage [:jeanpierre decombres:2]


La domotisation du chauffage arrive: voir mes recherches sur les codes IR clim.
Le plugin Thermostat: 8€ .... euh non :o


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 17-12-2015 à 10:04:59    

Ah je sais pas je l'ai pris au tout début il était moins cher :D
 
Après ça fait bien le taf aussi, perso réinventer la roue, bof. On a déjà eu cette conversation je crois :o

Reply

Marsh Posté le 28-12-2015 à 21:36:35    

[:le multi de jayjay:4]

Reply

Marsh Posté le 02-01-2016 à 18:00:29    

A mon tour de vous présenter un petit montage.
 
C'est pas tout à fait de la domotique puisqu'il n'est pas connecté. Il s'agit d'un petit thermostat électronique à pas cher que j'ai fabriqué pour remplacer mon vieux thermostat mécanique qui date des années 70.
 
L'objectif est d'avoir une prise en compte du jour et de l'heure pour définir la température cible de la chaudière: chaud aux heures où je suis susceptible d'etre chez moi, et tempéré quand je ne suis pas dans l'appart.
Je voulais un montage le plus simple possible et avec le moins de consommation donc je suis parti sur un Atmega 328P configuré en horloge interne 1Mhz.
Le capteur de température est un DS18B20, un capteur numérique en protocole 1Wire.
Et la chaudière est pilotée grâce au relais, la commande d'origine est en 220V.
Alimentation grace à deux piles LR6, d'après mes mesures de consommation ca devrait tenir entre 6 et 8 mois.
 
J'ai un interrupteur de bypass pour basculer manuellement sur chaud ou froid. Les plages horaires sont codées en dur et je n'ai pas d'affichage de la température.
 
Je déménage dans moins de 6 mois, j'ai fait au plus simple pour passer l'hiver.
 
http://perso.m4vrick.com/projets/thermostat/20160102_173131.jpg


---------------
--== M4vr|ck ==--
Reply

Marsh Posté le 02-01-2016 à 22:49:21    

Pas mal du tout [:implosion du tibia]
Je me souviens encore de ton topic sur la gestion des plages horaires, content de voir que le projet a abouti ! :d

 

Tu as programmé le 328P en ICSP ou bien tu l'as d'abord mis sur une board Arduino ?
Pour limiter la conso tu as utilisé un relais bistable ou c'est un relais classique ?

Message cité 1 fois
Message édité par TotalRecall le 02-01-2016 à 22:51:48

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 03-01-2016 à 01:10:44    

TotalRecall a écrit :

Pas mal du tout [:implosion du tibia]
Je me souviens encore de ton topic sur la gestion des plages horaires, content de voir que le projet a abouti ! :d

 

Tu as programmé le 328P en ICSP ou bien tu l'as d'abord mis sur une board Arduino ?
Pour limiter la conso tu as utilisé un relais bistable ou c'est un relais classique ?

 

Merci :jap:

 

Programmé en ICSP directement avec le connecteur 6 broches qu'on voit à coté de la RTC. Et directement depuis l'IDE Arduino, ca c'est super cool :D
Relais classique, je sais que j'aurais pu faire un effort de ce coté la. Mais vu les plages horaires réduites et qu'il se coupera une fois la température atteinte je n'ai pas voulu trop me faire chier.

 

La seule chose que j'ai foiré c'est la commande du relais, l'Atmega n'envoi pas assez de courant et j'ai du rajouter un transistor à l'arrache. On le voit collé au scotch sur le coté du relais  :whistle:

 

Le connecteur FTDI est la pour le débug, c'est la première fois que je travaille avec un Atmega en standalone j'ai préféré avoir ICSP et FTDI.

 

EDIT: J'ai oublié de préciser que le boitier est concu et imprimé maison. Ca devient tellement naturel maintenant que c'est le genre de chose que je ne mentionne plus :D


Message édité par M4vrick le 03-01-2016 à 01:12:27

---------------
--== M4vr|ck ==--
Reply

Marsh Posté le 03-01-2016 à 10:59:58    

Ah ouais tu m'étonnes, sur un relais 3V il doit falloir mini 80mA pour coller, un Atmega 328P en sort à peine 40mA en Absolute Max Rating.
 
Tu as bien mis la diode en inverse aux bornes de la bobine et la résistance sur la base du transistor ? Sinon ça va mal finir tout ça...
 
Pour les connecteurs ISP et série tu as raison.
 
En plus du boitier je vois que tu as gravé un vrai PCB plutôt qu'utiliser une veroboard, c'est bien de bosser dans un fablab quand même :d.


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 03-01-2016 à 11:10:03    

TotalRecall a écrit :

Ah ouais tu m'étonnes, sur un relais 3V il doit falloir mini 80mA pour coller, un Atmega 328P en sort à peine 40mA en Absolute Max Rating.
 
Tu as bien mis la diode en inverse aux bornes de la bobine et la résistance sur la base du transistor ? Sinon ça va mal finir tout ça...
 
Pour les connecteurs ISP et série tu as raison.
 
En plus du boitier je vois que tu as gravé un vrai PCB plutôt qu'utiliser une veroboard, c'est bien de bosser dans un fablab quand même :d.


 
Pour la diode et le branchement du transistor pas de soucis ;)
Et oui je n'aime pas les veroboard, je trouve ca trop complexe à router/souder.
 
Je vais bientot quitter le lab malheureusement je change de région et celui à destination ne me parait pas aussi 'ouvert', mais j'ai l'intention de monter un petit labo chez moi avec de quoi graver les PCBs. Ca prend quasiment moins de temps que de s'emmerder avec une veroboard.


---------------
--== M4vr|ck ==--
Reply

Marsh Posté le 27-01-2016 à 22:55:40    

Hello les gens ! J'ai vu ce que vous faisiez en domotique et c'est super !

 

J'ai récemment fait l'acquisition d'un kit arduino uno et ayant fini les tutos du bouquin qui était avec, j'ai envie de me lancer dans un truc plus gros !

 

Tout d'abord me permettre grâce à un raspberry pi de gérer les données reçu par arduino pour les envoyer sur un site internet. Je me suis acheté le DHT22 que je devrais recevoir dans 2 semaine ( chinoiserie oblige ...) et j'aimerai pouvoir pour le moment avant de passer à la version internet de pouvoir lire les mesures en temps réel sur un écran lcd 16x2.

 

Il faut un delay() pour que la température et l'humidité sur l'écran se rafraichissent ou c'est avec une autre méthode qu'on fait ça ?

 

Je débute en C malgré que je sois développeur web :/


Message édité par chrispc le 06-07-2018 à 00:59:44

---------------
L'écoconception n'est pas négociable - Topic habitats de demain : https://tinyurl.com/y5h2mjx7
Reply

Marsh Posté le 10-05-2016 à 14:59:10    

Je réuppe un petit coup pour vous dire que je pense avoir trouvé la solution a notre problèmes de boîtiers pour les différents modules.
...
 
 
 
 
....
 
J'ai acheté une imprimante 3D en Kit :D  
CR quand je l'aurai reçu :o .
 
Sinon, j'ai trouvé une solution pour réutiliser les modules 433Mhz que j'avais acheté.
je vais piloter les prises commandées sans fil que j'ai récupéré (j'ai décodé le signal et ça fonctionne nickel)
et dans l'autre sens je peux récupérer l'info de ma sonnette de porte d'entrée sans fil dont j'ai également décodé le signal.
à ce rythme mon oscilloscope va être vite amorti :D .
 
 
Bon il va falloir que je me calme avec mes achats de Matos, j'ai plus cher de Matériel de mesure/construction que de composants pour la domotique [:ddr555]


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 10-05-2016 à 16:58:32    

L'imprimante 3D est la meilleure amie de l'Arduino :jap:


---------------
Long-range goals keep you from being frustrated by short-term failures. RIP VC
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed