#include #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_RF24 #define MY_RF24_CHANNEL (105) #include #define RELAY_PIN 3 // Arduino Digital I/O pin number for first relay (second on pin+1 etc) //MyMessage msgLev(1, V_DIMMER); uint16_t lightLevel; bool lightOn = false; MyMessage msgMillis(0, V_VAR1); void before() { } void setup() { pinMode(RELAY_PIN, OUTPUT); lightLevel = loadState(0); } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Night Light", "2.1"); present(0, S_DIMMER, "Dimmer"); } void loop() { static uint32_t cRun = millis(); if((cRun + 10000) < millis()){ cRun = millis(); send(msgMillis.set(cRun)); } } void receive(const MyMessage &message) { switch(message.getType()){ case V_STATUS: if(message.getBool() == true) { analogWrite(RELAY_PIN, lightLevel); lightOn = true; } else { analogWrite(RELAY_PIN, 0); lightOn = false; } Serial.print("Incoming change for sensor:"); Serial.print(message.getSensor()); Serial.print(", New status: "); Serial.println(message.getBool()); break; case V_PERCENTAGE: uint16_t lev = message.getUInt(); if(lev > 100) lev = 100; saveState(0, int(lev * 2.55)); lightLevel = int(lev * 2.55); if(lightOn) analogWrite(RELAY_PIN, lightLevel); Serial.print("Incoming change for dimmer:"); Serial.print(message.getSensor()); Serial.print(", New value: "); Serial.println(message.getUInt()); break; } }