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;
}