Re: One DHT22 and a relay
Posted: 03 Apr 2017 21:55
Thanks again, sorry for disturbing so much.
Now I've got everything working!
I need just a little help to get my IF to work.
When the waterlevel switch return zero I don't want the relay to turn ON. How can I manage this? I can't get the variable currentWaterValue to function in my void setterRelay at the bottom.
one thing that bother me. Why can domoticz two relay units? Have it with cinnamon are doing?
Now I've got everything working!
I need just a little help to get my IF to work.
When the waterlevel switch return zero I don't want the relay to turn ON. How can I manage this? I can't get the variable currentWaterValue to function in my void setterRelay at the bottom.
Code: Select all
#define DEBUG
#include "ZUNO_DHT.h"
// pin number, where relay is connected
#define DHTPIN 9 // DHT22 sensor
#define RELAY_PIN 12
#define WATER_PIN 10
DHT dht(DHTPIN, DHT11);
// variable to store current relay state
byte relaylastSetValue;
byte currentWaterValue;
int currentTemperatureValue;
int currentHumValue;
int lastTemperatureValue;
int lastHumValue;
int lastWaterValue;
ZUNO_SETUP_CHANNELS(ZUNO_SWITCH_BINARY(getterRelay, setterRelay),
ZUNO_SENSOR_MULTILEVEL_TEMPERATURE(getterTemp),
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_RELATIVE_HUMIDITY,
SENSOR_MULTILEVEL_SCALE_PERCENTAGE_VALUE,
SENSOR_MULTILEVEL_SIZE_ONE_BYTE,
SENSOR_MULTILEVEL_PRECISION_ZERO_DECIMALS,
getterHum),
ZUNO_SWITCH_BINARY(getterWater, setterWater)
);
#define ZUNO_CHANNEL_RELAY 1
#define ZUNO_CHANNEL_TEMP 2
#define ZUNO_CHANNEL_HUM 3
#define ZUNO_CHANNEL_WATER 4
void setup() {
pinMode(RELAY_PIN, OUTPUT); // set up relay pin as output
pinMode(WATER_PIN,INPUT_PULLUP); // Control button 1
dht.begin();
Serial.begin(9600);
Serial.println("start");
}
void loop() {
//------------------------ Read temperature value --------------------------------
currentTemperatureValue = dht.readTemperature();
if ((currentTemperatureValue > (lastTemperatureValue + 0)) || (currentTemperatureValue < (lastTemperatureValue - 0))) {
lastTemperatureValue = currentTemperatureValue;
zunoSendReport(ZUNO_CHANNEL_TEMP); // report the temperature
}
#ifdef DEBUG
Serial.print("temperature = ");
Serial.println(currentTemperatureValue);
#endif
//------------------------ Read humidity value --------------------------------
currentHumValue = dht.readHumidity();
if ((currentHumValue > (lastHumValue + 1)) || (currentHumValue < (lastHumValue - 1))) {
lastHumValue = currentHumValue;
zunoSendReport(ZUNO_CHANNEL_HUM); // report the relative humidity
}
#ifdef DEBUG
Serial.print("humidity = ");
Serial.println(currentHumValue);
#endif
//------------------------ Read waterlevel value --------------------------------
currentWaterValue = digitalRead(WATER_PIN);
if (currentWaterValue != lastWaterValue) {
lastWaterValue = currentWaterValue;
zunoSendReport(ZUNO_CHANNEL_WATER);
}
#ifdef DEBUG
Serial.print("WaterSwitch = ");
Serial.println(currentWaterValue);
#endif
delay(5000);
}
byte getterTemp() {
return lastTemperatureValue;
}
byte getterHum() {
return lastHumValue;
}
// Water switch
byte getterWater() {
return lastWaterValue;
}
byte setterWater() {
return lastWaterValue;
}
// RELAY
byte getterRelay() {
return relaylastSetValue;
}
void setterRelay(byte newValue) {
// newValue is a variable, holding a "value"
// which came from the controller or other Z-Wave device
// if (newValue > 0) { // if greater then zero
if (newValue > 0){ // I TRIED the currentWaterValue HERE!
digitalWrite(RELAY_PIN, LOW); //turn relay off
} else { // if equals zero
digitalWrite(RELAY_PIN, HIGH); //turn relay on
}
// save the new value in a variable
relaylastSetValue = newValue;
}