From a82869417521b4646ae830951064803d58493e99 Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 30 Dec 2021 13:35:00 +0100 Subject: [PATCH] Create Bedverlichting.ino --- Bedverlichting.ino | 409 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 409 insertions(+) create mode 100755 Bedverlichting.ino diff --git a/Bedverlichting.ino b/Bedverlichting.ino new file mode 100755 index 0000000..d1d0ba6 --- /dev/null +++ b/Bedverlichting.ino @@ -0,0 +1,409 @@ +//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 51 +#define KAST_NODE_ID 50 + +#include +#include +#include + +#define SLEEP_MODE false // Watt-value can only be reported when sleep mode is false. + +//Drukknoppen +#define s1_PIN 4 // I/O pin switch 1 frank +#define s2_PIN 5 // I/O pin switch 2 hilde +#define s3_PIN 6 // I/O pin switch 3 midden +#define l1_PIN 7 // I/O pin lamp 1 frank +#define l2_PIN 8 // I/O pin lamp 2 hilde + +#define l1_CHILD_ID 11 // Id lamp 1 frank +#define l2_CHILD_ID 12 // Id lamp 2 hilde +#define kast_CHILD_ID 13 // ID kast verlichting + +#define BUZZER_PIN 8 // Output buzzer +#define BUZZER_CHILD_ID 99 // ID Buzzer + +//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 l1_msg(l1_CHILD_ID,V_LIGHT); +MyMessage l2_msg(l2_CHILD_ID,V_LIGHT); +MyMessage kast_msg(kast_CHILD_ID,V_LIGHT); + +MyMessage BUZZER_msg(BUZZER_CHILD_ID, V_LIGHT); + +bool lamp1 = false; +bool lamp2 = false; +bool kast = 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() +{ +// gw.begin(incomingMessage, AUTO, true); +// gw.begin(incomingMessage); + + // Send the sketch version information to the gateway and Controller +// gw.sendSketchInfo("Bedverlichting", "1.0"); + + // Setup switch 1 + pinMode(s1_PIN,INPUT); + // Activate internal pull-up + digitalWrite(s1_PIN,HIGH); + // After setting up the button, setup debouncer + s1_debouncer.attach(s1_PIN); + s1_debouncer.interval(30); + + // Setup switch 2 + pinMode(s2_PIN,INPUT); + // Activate internal pull-up + digitalWrite(s2_PIN,HIGH); + // After setting up the button, setup debouncer + s2_debouncer.attach(s2_PIN); + s2_debouncer.interval(30); + + // Setup switch 3 + pinMode(s3_PIN,INPUT); + // Activate internal pull-up + digitalWrite(s3_PIN,HIGH); + // After setting up the button, setup debouncer + s3_debouncer.attach(s3_PIN); + s3_debouncer.interval(30); + + // 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); +} + + +void presentation() +{ + // Send the sketch version information to the gateway and Controller + sendSketchInfo("Bedverlichting", "2.0"); + + present(l1_CHILD_ID, S_LIGHT); + present(l2_CHILD_ID, S_LIGHT); + //present(kast_CHILD_ID, S_LIGHT); + present(BUZZER_CHILD_ID, S_LIGHT); +} + + +void loop() +{ + unsigned long now = millis(); + //unsigned long 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); + val_init = true; + } + + //Switch 1 + s1_debouncer.update(); + s1_value = s1_debouncer.read(); + //If switch status changed + if (s1_value != s1_oldValue) + { + if (s1_value == LOW) + { + s1_down = millis(); + } + else + { + s1_up = millis(); + s1_delta = s1_up - s1_down; + switch_up(1); + } + s1_oldValue = s1_value; + } + + //Switch 2 + s2_debouncer.update(); + s2_value = s2_debouncer.read(); + //If door status changed + if (s2_value != s2_oldValue) + { + if (s2_value == LOW) + { + s2_down = millis(); + } + else + { + s2_up = millis(); + s2_delta = s2_up - s2_down; + switch_up(2); + } + s2_oldValue = s2_value; + } + + //Switch 1 + s3_debouncer.update(); + s3_value = s3_debouncer.read(); + //If switch status changed + if (s3_value != s3_oldValue) + { + if (s3_value == LOW) + { + s3_down = millis(); + } + else + { + s3_up = millis(); + s3_delta = s3_up - s3_down; + switch_up(3); + } + s3_oldValue = s3_value; + } +} + +//Incomming message from Domoticz +//void incomingMessage(const MyMessage &message) +void receive(const MyMessage &message) +{ + //Message of type V_LIGHT ? + if (message.type==V_LIGHT) + { + //Lamp 1 + if (message.sensor==l1_CHILD_ID) + { + if(message.getBool()==1) + { + Serial.println("Domoticz --> Lamp 1 AAN !!"); + digitalWrite(l1_PIN,HIGH); + lamp1 = true; + } + else + { + Serial.println("Domoticz --> Lamp 1 UIT !!"); + digitalWrite(l1_PIN,LOW); + lamp1 = false; + } + } + + //Lamp 2 + if (message.sensor==l2_CHILD_ID) + { + if(message.getBool()==1) + { + Serial.println("Domoticz --> Lamp 2 AAN !!"); + digitalWrite(l2_PIN,HIGH); + lamp2 = true; + } + else + { + Serial.println("Domoticz --> Lamp 2 UIT !!"); + digitalWrite(l2_PIN,LOW); + lamp2 = false; + } + } + //Kast verlichting + if (message.sensor==kast_CHILD_ID) + { + if(message.getInt()==1) + { + Serial.println("Node Kast --> Kast verlichting AAN !!"); + kast = true; + } + else + { + Serial.println("Node Kast --> Kast verlichting UIT !!"); + kast = false; + } + } + if(message.sensor == BUZZER_CHILD_ID) + { + Serial.println("Received from Domoticz - Buzzer"); + for (int i=0; i<10; i++) + { + tone(BUZZER_PIN,1000,200); + wait(500); + } + send(BUZZER_msg.set(0)); + } + + } +} + + +void switch_up(int switch_id) +{ + Serial.print("Switch : "); + Serial.println(switch_id); + + if (switch_id == 1) + s_delta = s1_up - s1_down; + + if (switch_id == 2) + s_delta = s2_up - s2_down; + + if (switch_id == 3) + s_delta = s3_up - s3_down; + + if (s_delta < s_all) + { + //Switch 1 + if(switch_id == 1) + { + if(lamp1 == true) lamp(1,false); else lamp(1,true); + } + //Switch 2 + if(switch_id == 2) + { + if(lamp2 == true) lamp(2,false); else lamp(2,true); + } + //Switch 3 + if(switch_id == 3) + { + if((lamp1 == true) or (lamp2 == true) or (kast == true)) + { + lamp(1,false); + lamp(2,false); + if(kast==true) + { + lamp(3,false); + } + } + else + { + lamp(1,true); + lamp(2,true); + } + } + + + } + else + { + if(s_delta < s_kast) + { + if((lamp1==true) or (lamp2==true) or (kast==true)) + { + lamp(1,false); + lamp(2,false); + if(kast==true) + { + lamp(3,false); + } + } + else + { + lamp(1,true); + lamp(2,true); + lamp(3,true); + } + } + else + { + Serial.println("Kast verlichting"); + if(kast == false) + { + // lamp(1,true); + // lamp(2,true); + lamp(3,true); + } + else + { +// lamp(1,false); +// lamp(2,false); + lamp(3,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"); + + //Lamp 1 + if(lamp_id == 1) + { + digitalWrite(l1_PIN,stat==HIGH ? 1 : 0); + lamp1 = stat; + send(l1_msg.set(stat==HIGH ? 1 : 0)); + wait(20); + + } + + //Lamp 2 + if(lamp_id == 2) + { + digitalWrite(l2_PIN,stat==HIGH ? 1 : 0); + lamp2 = stat; + send(l2_msg.set(stat==HIGH ? 1 : 0)); + wait(20); + } + + //Kast verlichting + if(lamp_id == 3) + { + kast = stat; + if(stat==true) + { + send(kast_msg.setDestination(KAST_NODE_ID).set(1)); + } + else + { + send(kast_msg.setDestination(KAST_NODE_ID).set(0)); + } + + } +} + +