Arduino DS18B20 =Ethernet=> Boxc Domotique (vera)

La section Arduino de TLD; Partagez ici vos expériences et vos articles...

Arduino DS18B20 =Ethernet=> Boxc Domotique (vera)

Messagede legeantvert » 14 Jan 2013, 12:31

Bonjour,

Dans le but de réduire le coût de mon installation et de permettre la récupération de température en valeur entière précise (la véra ne sait pas gérer les nombre flottants) j'ai cherché à récupérer ces valeurs sur ma box pour gérer une régulation de température.

ici j'utilise un arduino + Shield ethernet + 2 DS18B20 + 1 résistance 4.7KOhms => environ 25€ en tout !
Schéma:
Image

Voici mon code, je n'ai rien inventé mais assemblé différents codes.
Code: Tout sélectionner
/*
  VeraDallasEthernetClient
  LEGEANTVERT Janvier 2013
 
  Circuit:
* Ethernet shield sur pins 10, 11, 12, 13
* 2 X DS18B20 sur pin 2

*/

#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(192,168,0,6); // Adresse de la Vera

// Initialisation de la librairie ethernet
EthernetClient client;

// Définition de la pin arduino utilisée pour le bus OneWire
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

//28 64 62 BF 3 0 0 7C
DeviceAddress insideThermometer = { 0x28, 0x64, 0x62, 0xBF, 0x03, 0x00, 0x00, 0x7C };
//28 36 59 BF 3 0 0 C8
DeviceAddress outsideThermometer = { 0x28, 0x36, 0x59, 0xBF, 0x03, 0x00, 0x00, 0xC8 };

//variable contenant la temperature a envoyer dans la requete
int temperature;
int variable;

void setup() {
// Open serial communications and wait for port to open:
  Serial.begin(9600);
  Serial.println("Start Setup");

  // DĂ©marrage connexion ethernet
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // DĂ©marrage gestion OneWire
  sensors.begin();
  // sĂ©lection de la rĂ©solution (10 Ă  12bits)
  sensors.setResolution(insideThermometer, 10);
  sensors.setResolution(outsideThermometer, 10);
 
  Serial.println("Initialisation terminee...");
  // give the Ethernet shield a second to initialize:
  delay(1000);
}

void CommandeVera()
{
  //on etablie la connexion avec la VERA
  if (client.connect(server, 3480)) {
    Serial.println("Connection a Vera et envoi de requete");
    // Requete HTTP avec methode GET et placement des parametres pour la VERA dans un virtual device Vcontainer
    client.print("GET /data_request?id=variableset&DeviceNum=41&serviceId=urn:upnp-org:serviceId:VContainer1&Variable=Variable");
    client.print(variable);
    client.print("&Value=");
    client.print(temperature);
    client.println(" HTTP/1.0");
    client.println();
  }
  else {
    //s'il n'y a pas de connexion
    Serial.println("Erreur de connexion");
  }
//on stop la connexion avec la VERA
client.stop();
Serial.print("Requete envoyee temperature ");
Serial.print(variable);
Serial.print(" valeur : ");
Serial.println(temperature);
}


void loop()
{
   Serial.println("  ");
   Serial.println("D e b u t  L o o p  ");
   //commande de rĂ©cupĂ©ration des tempĂ©ratures
   sensors.requestTemperatures();

   //rĂ©cup de la valeur temperature inside et mise en centi-degrĂ©s
   temperature = 100 * sensors.getTempC(insideThermometer);
   variable=1;
   CommandeVera();
   
   Serial.println("Attente 30s avant temperature 2");
   //on laisse 10s entre les 2 requetes
   delay (10000);
     
   //rĂ©cup de la valeur outside et mise en centi-degrĂ©s
   temperature = 100 * sensors.getTempC(outsideThermometer);
   variable=2;
   CommandeVera();
   
   Serial.println("Attente 60s avant retour loop");
   delay(30000);
   delay(30000);
 
}


Afin de me simplifier la vie, j'utilise la librairie DallasTemperature (http://milesburton.com/index.php?title=Dallas_Temperature_Control_Library)
On peut évidement, au lieu de récupérer une température sur le bus, récupérer la valeur d'entrées de tout type et l'envoyer de la même manière.
Voilà ce que l'on retrouve coté BOX:
Image
Merci de me dire ce que vous en pensez, la prochaine étape sera que mon arduino puisse aussi recevoir des commandes de ma box domotique (Vera2) et agir en conséquence.Je souhaite aussi ajouter la possibilité de générer une alerte sur Mon karotz en cas de dépassement d'un seuil...

Actuellement, je récupère la température de 2 sondes et envoi ces valeurs en "centi-degrés" dans des Variables virtuelles VContainer sur ma vera avec un taux de rafraîchissement d'environ une minute.

Pour toute remarque n'hésitez pas!

Merci.
-RFXMitter USB/ RFXreceiver USB
-Prises DIO
-Divers Sondes/capteurs 433mhz
-ATI Remote Wonder
-Vera3 fw:1.5.408fr
-Karotz
-Zwave 3*HSM02 1*Duwi5457 2*AD142-6
-IPX800v3
-Cam Type Foscam
-Arduinos Uno et Mega+Shields Ethernet
legeantvert
Membre Actif
 
Messages: 13
Inscription: 21 Juil 2012, 09:39

Re: Arduino DS18B20 =Ethernet=> Boxc Domotique (vera)

Messagede Bergerie » 09 Sep 2015, 10:52

Merci pour votre publication. Il m'a aidé. Avez-vous déjà installé un capteur d'humidité? Si oui, avez-vous une esquisse pour cela?
Bergerie
Membre un peu timide !
 
Messages: 3
Inscription: 22 Sep 2014, 21:18

Re: Arduino DS18B20 =Ethernet=> Boxc Domotique (vera)

Messagede legeantvert » 09 Sep 2015, 19:03

Bonjour,
Oui, Google image peut aider...
Image

Sans la résistance cela fonctionne aussi...

DHT11 ou DHT21 te permettent température et humidité, les 2 en une, après avec un bmp085 par exemple tu peux ajouter la pression atmosphérique ;-)
-RFXMitter USB/ RFXreceiver USB
-Prises DIO
-Divers Sondes/capteurs 433mhz
-ATI Remote Wonder
-Vera3 fw:1.5.408fr
-Karotz
-Zwave 3*HSM02 1*Duwi5457 2*AD142-6
-IPX800v3
-Cam Type Foscam
-Arduinos Uno et Mega+Shields Ethernet
legeantvert
Membre Actif
 
Messages: 13
Inscription: 21 Juil 2012, 09:39

Re: Arduino DS18B20 =Ethernet=> Boxc Domotique (vera)

Messagede Bergerie » 10 Sep 2015, 11:00

Merci beaucoup pour votre réponse rapide. Avez-vous aussi l'esquisse Arduino disponibles?
Bergerie
Membre un peu timide !
 
Messages: 3
Inscription: 22 Sep 2014, 21:18


Retourner vers Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

Copyright © 2011 - Touteladomotique.com - Tous droits rĂ©servĂ©s
Les blogs partenaires : Abavala, Domo-Blog, Domotique34, Maison et Domotique