Je m'arrache les cheveux sur la programmation d'un z-uno pour créer un module d'arrosage.
Je déclare :
- 1 multilevel sensor temperature
- 1 multilevel sensor humidity
- 1 binary sensor
- 5 binary switches
A chaque inclusion, je n'arrive à inclure que le capteur de température + les 5 relais.
Impossible d'avoir toutes les channels !
Par contre si je crée des sketches individuels, j'arrive bien à avoir la température, séparément le binary sensor, les relais.
Dans tous les cas : impossible d'avoir l'humidité (qui pourtant remonte bien dans la console IDE, c'est donc un problème de config z-wave).
Est-ce que certains d'entre vous on déjà eu des soucis pour configurer des channels ?
La carte z-uno est-elle vraiment bien intégrée à l'eedomus ?
Merci pour votre aide.
Voici mon code (en cours) au cas où :
- Code : Tout sélectionner
#include <ZUNO_DHT.h>
// pin number, where relay is connected
#define RELAY1_PIN 12
#define RELAY2_PIN 13
#define RELAY3_PIN 14
#define RELAY4_PIN 15
#define RELAY5_PIN 16
#define DHTPIN 10
#define WATER_PIN 8 // digital pin for pullup
DHT dht(DHTPIN, DHT22); //DHT22
// variable to store current relay state
byte temperature = 0; //decimal
byte humidity = 0;
byte water_level = 0;
byte lastSetValue_RELAY1;
byte lastSetValue_RELAY2;
byte lastSetValue_RELAY3;
byte lastSetValue_RELAY4;
byte lastSetValue_RELAY5;
ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_ALWAYS_AWAKE);
// set zwave channels
ZUNO_SETUP_CHANNELS(
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_TEMPERATURE, SENSOR_MULTILEVEL_SCALE_CELSIUS, SENSOR_MULTILEVEL_SIZE_ONE_BYTE, SENSOR_MULTILEVEL_PRECISION_ZERO_DECIMALS, getter_Temperature),
ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_RELATIVE_HUMIDITY, SENSOR_MULTILEVEL_SCALE_PERCENTAGE_VALUE, SENSOR_MULTILEVEL_SIZE_ONE_BYTE, SENSOR_MULTILEVEL_PRECISION_ZERO_DECIMALS, getter_Humidity),
ZUNO_SENSOR_BINARY(ZUNO_SENSOR_BINARY_TYPE_DOOR_WINDOW, getter_waterlevel),
ZUNO_SWITCH_BINARY(getter_RELAY1, setter_RELAY1),
ZUNO_SWITCH_BINARY(getter_RELAY2, setter_RELAY2),
ZUNO_SWITCH_BINARY(getter_RELAY3, setter_RELAY3),
ZUNO_SWITCH_BINARY(getter_RELAY4, setter_RELAY4),
ZUNO_SWITCH_BINARY(getter_RELAY5, setter_RELAY5)
);
void setup() {
pinMode(RELAY1_PIN, OUTPUT); // set up relay pin as output
pinMode(RELAY2_PIN, OUTPUT); // set up relay pin as output
pinMode(RELAY3_PIN, OUTPUT); // set up relay pin as output
pinMode(RELAY4_PIN, OUTPUT); // set up relay pin as output
pinMode(RELAY5_PIN, OUTPUT); // set up relay pin as output
pinMode(WATER_PIN, INPUT_PULLUP);
dht.begin(); // on lance la librairie qui lit les valeurs du capteur DHT22
Serial.begin();
Serial.println("Start");
digitalWrite(RELAY1_PIN, HIGH);
digitalWrite(RELAY2_PIN, HIGH);
digitalWrite(RELAY3_PIN, HIGH);
digitalWrite(RELAY4_PIN, HIGH);
digitalWrite(RELAY5_PIN, HIGH);
}
void loop() {
// obtaining readings from the sensor DHT
temperature = dht.readTemperature();
humidity = dht.readHumidity();
water_level = digitalRead(WATER_PIN);
Serial.print("Humidity = ");
Serial.print(humidity);
Serial.print(" % ");
Serial.print("Temperature = ");
Serial.print(temperature);
Serial.println(" *C");
Serial.print("Niveau cuve = ");
Serial.println(water_level);
// send data to channels
zunoSendReport(1); // temperature
zunoSendReport(2); // humidity
zunoSendReport(3); // waterlevel
// send every 30 seconds
delay(30000);
}
byte getter_Temperature() {
return temperature;
}
byte getter_Humidity() {
return humidity;
}
byte getter_waterlevel() {
return water_level;
}
byte getter_RELAY1() {
return lastSetValue_RELAY1;
}
byte getter_RELAY2() {
return lastSetValue_RELAY2;
}
byte getter_RELAY3() {
return lastSetValue_RELAY3;
}
byte getter_RELAY4() {
return lastSetValue_RELAY4;
}
byte getter_RELAY5() {
return lastSetValue_RELAY5;
}
void setter_RELAY1(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
digitalWrite(RELAY1_PIN, HIGH); //turn relay on
} else { // if equals zero
digitalWrite(RELAY1_PIN, LOW); //turn relay off
}
// save the new value in a variable
lastSetValue_RELAY1 = newValue;
}
void setter_RELAY2(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
digitalWrite(RELAY2_PIN, HIGH); //turn relay on
} else { // if equals zero
digitalWrite(RELAY2_PIN, LOW); //turn relay off
}
// save the new value in a variable
lastSetValue_RELAY2 = newValue;
}
void setter_RELAY3(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
digitalWrite(RELAY3_PIN, HIGH); //turn relay on
} else { // if equals zero
digitalWrite(RELAY3_PIN, LOW); //turn relay off
}
// save the new value in a variable
lastSetValue_RELAY3 = newValue;
}
void setter_RELAY4(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
digitalWrite(RELAY4_PIN, HIGH); //turn relay on
} else { // if equals zero
digitalWrite(RELAY4_PIN, LOW); //turn relay off
}
// save the new value in a variable
lastSetValue_RELAY4 = newValue;
}
void setter_RELAY5(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
digitalWrite(RELAY5_PIN, HIGH); //turn relay on
} else { // if equals zero
digitalWrite(RELAY5_PIN, LOW); //turn relay off
}
// save the new value in a variable
lastSetValue_RELAY5 = newValue;
}