commit 0b7ffbcbc63108e76af13f28a948a231c17d33c6 Author: Frank Date: Thu Dec 30 13:30:46 2021 +0100 Create Slaapkamer_kastverlichting.ino diff --git a/Slaapkamer_kastverlichting.ino b/Slaapkamer_kastverlichting.ino new file mode 100644 index 0000000..6a20224 --- /dev/null +++ b/Slaapkamer_kastverlichting.ino @@ -0,0 +1,389 @@ +//Bedverlichting + +// Enable debug prints to serial monitor +#define MY_DEBUG + +// Enable and select radio type attached +#define MY_RADIO_NRF24 +//#define MY_RADIO_RFM69 + +// Enable repeater functionality for this node +#define MY_REPEATER_FEATURE + +// Define a static node address, remove if you want auto address assignment +#define MY_NODE_ID 50 +#define BED_NODE_ID 51 + +// Set channel to 13 +//#define MY_RF24_CHANNEL 13 + +#include +#include +#include +#include + +#define SLEEP_MODE false // Watt-value can only be reported when sleep mode is false. + +//DHT22 +#define CHILD_ID_HUM 0 +#define CHILD_ID_TEMP 1 +#define HUMIDITY_SENSOR_DIGITAL_PIN 8 + +//Drukknoppen +#define s1_PIN 4 // I/O pin switch 1 +#define t1_PIN A0 // output pin to toggle switch +#define s2_PIN 5 // I/O pin switch 2 +#define t2_PIN A1 // Output pin to toggle switch + +//Uitgangen +#define l1_PIN 6 // I/O pin lamp kastverlichting +#define l2_PIN 7 // I/O pin lamp schemerlamp + +#define l1_CHILD_ID 11 // Id lamp kastverlichting +#define l2_CHILD_ID 12 // Id lamp schemerlamp +#define kast_CHILD_ID 13 // ID kast verlichting +#define l2_timed_CHILD_ID 19 // ID timed lamp schemerlamp + + +DHT dht; +float lastTemp; +float lastHum; +boolean metric = true; + +unsigned long currentTime; +unsigned long SEND_FREQUENCY = 300000; +//unsigned long SEND_FREQUENCY = 30000; +unsigned long lastSend; + +unsigned long l2_timed_ON = 120000; +unsigned long l2_start_ON; + +//Declare switch +//Bounce s1_debouncer = Bounce(); +//int s1_oldValue=HIGH; +//Bounce s2_debouncer = Bounce(); +//int s2_oldValue=HIGH; +//Bounce s3_debouncer = Bounce(); +//int s3_oldValue=HIGH; + +int s1_value; +int s2_value; +int s3_value; + +MyMessage msgHum(CHILD_ID_HUM, V_HUM); +MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP); +MyMessage l1_msg(l1_CHILD_ID,V_LIGHT); +MyMessage l2_msg(l2_CHILD_ID,V_LIGHT); +MyMessage kast_msg(kast_CHILD_ID,V_LIGHT); +MyMessage timed_l2_msg(l2_timed_CHILD_ID, V_LIGHT); +MyMessage bed_msg(kast_CHILD_ID,V_LIGHT); + + +//MyMessage BUZZER_msg(BUZZER_CHILD_ID, V_LIGHT); + +bool lamp1 = false; +bool lamp2 = false; +bool kast = false; +bool l2_timed = false; + +unsigned long s1_up; +unsigned long s1_down; +unsigned long s1_delta; + +//unsigned long s2_up; +//unsigned long s2_down; +//unsigned long s2_delta; + +//unsigned long s3_up; +//unsigned long s3_down; +//unsigned long s3_delta; + +unsigned long s_delta; + +unsigned long s_all = 1000; +unsigned long s_kast = 3000; + +bool val_init = false; + +void setup() +{ + + dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); + + // Setup switch 1 + pinMode(s1_PIN,INPUT); + // Activate internal pull-up + digitalWrite(s1_PIN,HIGH); + + digitalWrite(t1_PIN, 0); + pinMode(t1_PIN, OUTPUT); + + // Setup switch 2 + pinMode(s2_PIN,INPUT); + // Activate internal pull-up + digitalWrite(s2_PIN,HIGH); + digitalWrite(t2_PIN, 0); + pinMode(t2_PIN, OUTPUT); + + // After setting up the button, setup debouncer +// s1_debouncer.attach(s1_PIN); +// s1_debouncer.interval(5); + + // Setup lamp 1 + pinMode(l1_PIN,OUTPUT); + digitalWrite(l1_PIN,LOW); + + // Setup lamp 2 + pinMode(l2_PIN,OUTPUT); + digitalWrite(l2_PIN,LOW); + + // Setup the buzzer + //pinMode(BUZZER_PIN,OUTPUT); + + metric = getControllerConfig().isMetric; + lastSend = 0; + +} + +void presentation() +{ + // Send the sketch version information to the gateway and Controller + sendSketchInfo("Slaapkamer_kastverlichting", "2.0"); + + present(CHILD_ID_HUM, S_HUM); + present(CHILD_ID_TEMP, S_TEMP); + + present(l1_CHILD_ID, S_LIGHT); + present(l2_CHILD_ID, S_LIGHT); + present(kast_CHILD_ID, S_LIGHT); + present(l2_timed_CHILD_ID, S_LIGHT); +} + + +void loop() +{ + unsigned long now = millis(); + //unsigned long currentTime = millis(); + + currentTime = millis(); + + if(!val_init) + { + wait(1000); + request(l1_CHILD_ID, V_LIGHT); + wait(1000); + request(l2_CHILD_ID, V_LIGHT); + wait(1000); + request(kast_CHILD_ID, V_LIGHT); + wait(1000); + request(l2_timed_CHILD_ID, V_LIGHT); + val_init = true; + } + + //Send data only every 5 minuts + bool sendTime = (currentTime - lastSend) > SEND_FREQUENCY; + if ((currentTime - lastSend) > SEND_FREQUENCY) + { + lastSend=currentTime; + float temperature = dht.getTemperature(); + if (isnan(temperature)) + { + Serial.println("Failed reading temperature from DHT"); + } + else if (temperature != lastTemp) + { + lastTemp = temperature; + if (!metric) + { + temperature = dht.toFahrenheit(temperature); + } + send(msgTemp.set(temperature, 1)); + Serial.print("T: "); + Serial.println(temperature); + } + + float humidity = dht.getHumidity(); + if (isnan(humidity)) + { + Serial.println("Failed reading humidity from DHT"); + } + else if (humidity != lastHum) + { + lastHum = humidity; + send(msgHum.set(humidity, 1)); + Serial.print("H: "); + Serial.println(humidity); + } + } + + int val_s1 =digitalRead(s1_PIN); + if (val_s1==1) + { + if (lamp1==false) + { + lamp(1,true); + } + } + else + { + if (lamp1==true) + { + lamp(1,false); + } + } + + int val_s2 =digitalRead(s2_PIN); + if (val_s2==1) + { + if (lamp2==false) + { + lamp(2,true); + l2_start_ON = millis(); + } + } + else + { + if (lamp2==true) + { + lamp(2,false); + } + } + + //If lamp2 = timed + if ((lamp2==true) && (l2_timed==true)) + { + if ((currentTime - l2_start_ON) > l2_timed_ON) + { + digitalWrite(t2_PIN, 1); + wait(30); + digitalWrite(t2_PIN, 0); + wait(30); + } + } + } + +//Incomming message from Domoticz +//void incomingMessage(const MyMessage &message) +void receive(const MyMessage &message) +{ + //Message of type V_LIGHT ? + if (message.type==V_LIGHT) + { + //Kastverlichting + if (message.sensor==l1_CHILD_ID) + { + + digitalWrite(t1_PIN, 1); + wait(30); + digitalWrite(t1_PIN, 0); + wait(30); + + + if(message.getBool()==1) + { + Serial.println("Domoticz --> Kastverlichting AAN !!"); +// digitalWrite(l1_PIN,HIGH); + // lamp1 = true; + //Send status to bedverlichting ivm drukknop + + } + else + { + Serial.println("Domoticz --> Kastverlichting UIT !!"); +// digitalWrite(l1_PIN,LOW); + // lamp1 = false; + //Send status to bedverlichting ivm drukknop + + } + } + + //Schemerlamp + if (message.sensor==l2_CHILD_ID) + { + digitalWrite(t2_PIN, 1); + wait(30); + digitalWrite(t2_PIN, 0); + wait(30); + + + if(message.getBool()==1) + { + Serial.println("Domoticz --> Schemerlamp AAN !!"); + // digitalWrite(l2_PIN,HIGH); + // lamp2 = true; + } + else + { + Serial.println("Domoticz --> Schemerlamp UIT !!"); + // digitalWrite(l2_PIN,LOW); + // lamp2 = false; + } + } + + if (message.sensor==l2_timed_CHILD_ID) + { + if(message.getBool()==1) + { + l2_timed = true; + } + else + { + l2_timed = false; + } + } + + + //Kast verlichting + if (message.sensor==kast_CHILD_ID) + { + digitalWrite(t1_PIN, 1); + wait(60); + digitalWrite(t1_PIN, 0); + wait(60); + + if(message.getInt()==1) + { + Serial.println("Node bed --> Kast verlichting AAN !!"); + // lamp(1,true); + } + else + { + Serial.println("Node bed --> Kast verlichting UIT !!"); + // lamp(1,false); + } + } + + } +} + + +//Switch lampen +void lamp(int lamp_id, bool stat) +{ + + Serial.print("Lamp : "); + Serial.print(lamp_id); + Serial.print(" --> "); + Serial.println(stat==false ? "UIT" : "AAN"); + + //Kast verlichting + if(lamp_id == 1) + { + kast = stat; + digitalWrite(l1_PIN,stat==HIGH ? 1 : 0); + send(kast_msg.set(stat==HIGH ? 1 : 0)); + send(bed_msg.setDestination(BED_NODE_ID).set(stat==HIGH ? 1 : 0)); + lamp1 = stat; + } + + //Schemerlamp + if(lamp_id == 2) + { + digitalWrite(l2_PIN,stat==HIGH ? 1 : 0); + lamp2 = stat; + send(l2_msg.set(stat==HIGH ? 1 : 0)); + } + +} + +