User Tools

Site Tools


add_temperature_and_humidity_sensor_dht11_in_domoticz

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
add_temperature_and_humidity_sensor_dht11_in_domoticz [2016/11/11 17:49]
sgripon created
add_temperature_and_humidity_sensor_dht11_in_domoticz [2016/11/11 19:38] (current)
sgripon [The domoticz part]
Line 6: Line 6:
  
 In previous post, I have shown how to [[record_temperature_from_lexibook_asm30_sensor|record temperature from Lexibook ASM30 sensor with Arduino]]. Here, we will use the same hardware platform for DHT11 sensor. In previous post, I have shown how to [[record_temperature_from_lexibook_asm30_sensor|record temperature from Lexibook ASM30 sensor with Arduino]]. Here, we will use the same hardware platform for DHT11 sensor.
 +
 +===== Needed hardware =====
 +
 +  * Arduino Uno R3 board (available on [[http://​www.amazon.fr/​dp/​B008GRTSV6/​ref=pe_386181_40444391_TE_item|Amazon]]) with USB cable {{ :​arduino.jpg?​200|}}
 +  * DHT11 temperature and humidity sensor. I use a 3 pin version found on Amazon. {{ :​dht11.jpg?​100|}}
 +
 +===== Assembly =====
 +
 +It is very simple. Just connect the DHT11 sensor like this:
 +  * G pin to Arduino pin GND
 +  * V pin to Arduino pin 5V
 +  * S pin to Arduino DIGITAL pin 2
 +
 +Then I suppose you have the Arduino connected with a USB cable to a PC running the Arduino development environment.
 +
 +{{ ::​arduino_dht11_bb.png?​600 |}}
 +
 +===== The Arduino sketch =====
 +
 +The first thing to do is to test the assembly with the DHT11 library SimpleDHT. It can be installed easily through library manager in Arduino environment.
 +
 +Once installed, just choose the SimpleDHT example, export it on the Arduino and check the temperature and humidity returned on serial monitor.
 +
 +It shoud display something like that:
 +
 +<​code>​
 +=================================
 +Sample DHT11...
 +Sample OK: 18 *C, 37 %
 +=================================
 +Sample DHT11...
 +Sample OK: 18 *C, 37 %
 +=================================
 +Sample DHT11...
 +Sample OK: 18 *C, 37 %
 +</​code>​
 +
 +Then, I changed the sketch in order to send the temperature and humidity in json:
 +
 +<file c dht11.ino>​
 +#include <​SimpleDHT.h>​
 +
 +// for DHT11, ​
 +//      VCC: 5V or 3V
 +//      GND: GND
 +//      DATA: 2
 +int pinDHT11 = 2;
 +SimpleDHT11 dht11;
 +
 +void print_data_json(int temp, int hum) {
 +  Serial.print("​{ ");
 +  Serial.print("​\"​temp\":​ ");
 +  Serial.print(temp);​
 +  Serial.print(",​ \"​hum\":​ ");
 +  Serial.print(hum);​
 +  Serial.print("​ }\n"​); ​
 +}
 +
 +void setup() {
 +  Serial.begin(115200);​
 +}
 +
 +void loop() {
 + 
 +  // read without samples.
 +  byte temperature = 0;
 +  byte humidity = 0;
 +  if (dht11.read(pinDHT11,​ &​temperature,​ &​humidity,​ NULL)) {
 +    // Error. -1 is returned
 +    print_data_json(-1,​ -1);
 +    return;
 +  }
 +
 +  print_data_json((int)temperature,​ (int)humidity);​
 +  ​
 +  // DHT11 sampling rate is 1HZ.
 +  delay(1000);​
 +}
 +</​file>​
 +===== The domoticz part =====
 +
 +Follow the same instruction as found on previous tutorial [[add_temperature_sensor_in_domoticz#​domoticz|Add temperature sensor in Domiticz]].
 +
 +And the lua script for DHT11 is really simple:
 +
 +<file lua script_time_DHT11.lua>​
 +JSON = (loadfile "/​home/​pi/​bin/​domoticz/​scripts/​lua/​JSON.lua"​)() -- one-time load of the routines
 +
 +-- Index of DHT11 device in domoticz
 +local deviceIdx = 1
 +local serialPort = "/​dev/​ttyACM0"​
 +
 +commandArray = {}
 +
 +-- Start job
 +
 +-- Open seria port and read
 +rserial=io.open(serialPort,​ "​r"​)
 +read_value = rserial:​read()
 +local json_value = JSON:​decode(read_value)
 +
 +-- Data : TEMP;​HUM;​HUM_STAT
 +-- HUM_STAT can be one of:
 +-- 0=Normal
 +-- 1=Comfortable
 +-- 2=Dry
 +-- 3=Wet
 +local hum_stat = 0;
 +if json_value.hum<​30 then hum_stat=2 end
 +if json_value.hum>​70 then hum_stat=3 end
 +if (json_value.hum>​=45 and json_value.hum<​=50) then hum_stat=1 end
 +
 +commandArray['​UpdateDevice'​]=deviceIdx..'​|0|'​..json_value.temp..';'​..json_value.hum..';'​..hum_stat
 +
 +return commandArray
 +</​file>​
 +
 +**Share this page:**
 +
 +~~socialite~~
 +
  
add_temperature_and_humidity_sensor_dht11_in_domoticz.1478882997.txt.gz ยท Last modified: 2016/11/11 17:49 by sgripon