💬 Air Humidity Sensor - DHT
-
@hek @mfalkvidd I read that you discussed about PIN 2 and 3.
Code say PIN 2, Wiring things up say PIN 2 and picture shows PIN 3.
It can't use PIN 2 or can it, PIN 2 is used by the radio, or am I to tired :)?
thats the irq pin in the radio post.
Not used by the radio -
thats the irq pin in the radio post.
Not used by the radio -
Tried to follow the history on the humidity file back in time on github.
At some point (2.0 release) the example was switched from HumiditySensor.ino (using pin 3) to DhtTemperatureAndHumiditySensor.ino (pin 2) created by @mozzbozz.Not sure why the pin was switched, but you can run without the radio/IRQ-pin connection as long as not activating the MY_RX_MESSAGE_BUFFER_FEATURE.
-
Tried to follow the history on the humidity file back in time on github.
At some point (2.0 release) the example was switched from HumiditySensor.ino (using pin 3) to DhtTemperatureAndHumiditySensor.ino (pin 2) created by @mozzbozz.Not sure why the pin was switched, but you can run without the radio/IRQ-pin connection as long as not activating the MY_RX_MESSAGE_BUFFER_FEATURE.
-
Hello. Maybe someone could help :) hopefully..
I have arduino1 with 1 DHT22, which is over arduinoGW connected to RSPi with latest domoticz.
when i connect stuff up, after some time i see some strange childids, not related to this arduino1 in no way.
Lots of unknown!, with V_TEMP values, with V_HUM values, even V_FORECAST, V_PRESSURE and etc. which arduino1 should not send (or no other arduino on my area).Illustration:
<img href="http://www.lstudio.lt/wp-content/uploads/dht22problem.png">
http://www.lstudio.lt/wp-content/uploads/dht22problem.pngmy code is quite simple (for ex only temperature is shown)
#define CHILD_DESCR "TEMP3" #undef CHILD_ID #define CHILD_ID 31 present(CHILD_ID, S_TEMP, CHILD_DESCR); delay(250) ; loop: temp3=dht3.readTemperature(); if (temp3 >= 120) {temp3 = lasttemp3;} if (temp3 <= -50) {temp3 = lasttemp3;} MyMessage msg31(CHILD_ID,V_TEMP); send(msg31.set(temp3,1));so.. that is basically all
-
Hello. Maybe someone could help :) hopefully..
I have arduino1 with 1 DHT22, which is over arduinoGW connected to RSPi with latest domoticz.
when i connect stuff up, after some time i see some strange childids, not related to this arduino1 in no way.
Lots of unknown!, with V_TEMP values, with V_HUM values, even V_FORECAST, V_PRESSURE and etc. which arduino1 should not send (or no other arduino on my area).Illustration:
<img href="http://www.lstudio.lt/wp-content/uploads/dht22problem.png">
http://www.lstudio.lt/wp-content/uploads/dht22problem.pngmy code is quite simple (for ex only temperature is shown)
#define CHILD_DESCR "TEMP3" #undef CHILD_ID #define CHILD_ID 31 present(CHILD_ID, S_TEMP, CHILD_DESCR); delay(250) ; loop: temp3=dht3.readTemperature(); if (temp3 >= 120) {temp3 = lasttemp3;} if (temp3 <= -50) {temp3 = lasttemp3;} MyMessage msg31(CHILD_ID,V_TEMP); send(msg31.set(temp3,1));so.. that is basically all
I have also seen this, I noticed it last week. Some of my Nodes have those Unknown-child, but it is working correctly anyway.
DZ 3.5877, MyS 1.5.1, RPi 2 -
Hello,
i have a problem with this sketch.
After downloading DTH.h froom Mysensors Examples, i have this error :
DhtTemperatureAndHumiditySensor:85: error: 'getConfig' was not declared in this scopemetric = getConfig().isMetric;
Any Idea of my mistake ?...
-
I have the dht22 sensor hooked up and working on a pro mini on pin 3 I get a normal temp reading but the humidity always stays at 1.0 does not read.
-
Hello everybody,
hope, someone could help a newby :-)
I've installed the MQTT - GW and would use the Air/Humidity - sensor. But it doesn't work properly.
The Connection to the Gateway seems to be okay. But I get no Air/Humidity - Information.
The sensor does not measure anything.
I've tried to change the data - pin, I've tried the DHT11 and DHT22 - sensor. No choice.
I'm getting mad :-)Thanks a lot.
-
Hello,
thanks a lot for your answer.
Yes, I did. It produced the Messages as excepted. -
...sorry, Typo.
As expected :-) -
...no Problem:
/** * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Henrik Ekblad <henrik.ekblad@mysensors.org> * Copyright (C) 2013-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * REVISION HISTORY * Version 1.0: Henrik EKblad * Version 1.1 - 2016-07-20: Converted to MySensors v2.0 and added various improvements - Torben Woltjen (mozzbozz) * * DESCRIPTION * This sketch provides an example of how to implement a humidity/temperature * sensor using a DHT11/DHT-22. * * For more information, please visit: * http://www.mysensors.org/build/humidity * */ // Enable debug prints #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 //#define MY_RS485 #include <SPI.h> #include <MySensors.h> #include <DHT.h> // Set this to the pin you connected the DHT's data pin to #define DHT_DATA_PIN 2 // Set this offset if the sensor has a permanent small offset to the real temperatures #define SENSOR_TEMP_OFFSET 0 // Sleep time between sensor updates (in milliseconds) // Must be >1000ms for DHT22 and >2000ms for DHT11 static const uint64_t UPDATE_INTERVAL = 30000; // Force sending an update of the temperature after n sensor reads, so a controller showing the // timestamp of the last update doesn't show something like 3 hours in the unlikely case, that // the value didn't change since; // i.e. the sensor would force sending an update every UPDATE_INTERVAL*FORCE_UPDATE_N_READS [ms] static const uint8_t FORCE_UPDATE_N_READS = 10; #define CHILD_ID_HUM 0 #define CHILD_ID_TEMP 1 float lastTemp; float lastHum; uint8_t nNoUpdatesTemp; uint8_t nNoUpdatesHum; bool metric = true; MyMessage msgHum(CHILD_ID_HUM, V_HUM); MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP); DHT dht; void presentation() { // Send the sketch version information to the gateway Serial.println("Presentation"); sendSketchInfo("TemperatureAndHumidity", "1.1"); // Register all sensors to gw (they will be created as child devices) present(CHILD_ID_HUM, S_HUM); present(CHILD_ID_TEMP, S_TEMP); metric = getConfig().isMetric; } void setup() { Serial.println("vor Presentation"); dht.setup(DHT_DATA_PIN); // set data pin of DHT sensor if (UPDATE_INTERVAL <= dht.getMinimumSamplingPeriod()) { Serial.println("Warning: UPDATE_INTERVAL is smaller than supported by the sensor!"); } // Sleep for the time of the minimum sampling period to give the sensor time to power up // (otherwise, timeout errors might occure for the first reading) sleep(dht.getMinimumSamplingPeriod()); } void loop() { Serial.println("loop Anfang"); // Force reading sensor, so it works also after sleep() dht.readSensor(true); // Get temperature from DHT library float temperature = dht.getTemperature(); if (isnan(temperature)) { Serial.println("Failed reading temperature from DHT!"); } else if (temperature != lastTemp || nNoUpdatesTemp == FORCE_UPDATE_N_READS) { // Only send temperature if it changed since the last measurement or if we didn't send an update for n times lastTemp = temperature; if (!metric) { temperature = dht.toFahrenheit(temperature); } // Reset no updates counter nNoUpdatesTemp = 0; temperature += SENSOR_TEMP_OFFSET; send(msgTemp.set(temperature, 1)); #ifdef MY_DEBUG Serial.print("T: "); Serial.println(temperature); #endif } else { // Increase no update counter if the temperature stayed the same nNoUpdatesTemp++; } // Get humidity from DHT library float humidity = dht.getHumidity(); if (isnan(humidity)) { Serial.println("Failed reading humidity from DHT"); } else if (humidity != lastHum || nNoUpdatesHum == FORCE_UPDATE_N_READS) { // Only send humidity if it changed since the last measurement or if we didn't send an update for n times lastHum = humidity; // Reset no updates counter nNoUpdatesHum = 0; send(msgHum.set(humidity, 1)); #ifdef MY_DEBUG Serial.print("H: "); Serial.println(humidity); #endif } else { // Increase no update counter if the humidity stayed the same nNoUpdatesHum++; } // Sleep for a while to save energy sleep(UPDATE_INTERVAL); }