103 lines
2.3 KiB
C++
Executable File
103 lines
2.3 KiB
C++
Executable File
#include <SPI.h>
|
|
#include <MySensor.h>
|
|
|
|
#define PIN_RELAY1 4 // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
|
|
#define PIN_RELAY2 5 // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
|
|
#define CHILD_ID_RELAY1 10 // Total number of attached relays
|
|
#define CHILD_ID_RELAY2 11 // Total number of attached relays
|
|
#define RELAY_ON 0 // GPIO value to write to turn on attached relay
|
|
#define RELAY_OFF 1 // GPIO value to write to turn off attached relay
|
|
|
|
MySensor gw;
|
|
boolean metric = true;
|
|
|
|
unsigned long currentTime;
|
|
unsigned long SEND_FREQUENCY = 300000;
|
|
unsigned long lastSend;
|
|
|
|
MyMessage msg_dallas(0,V_TEMP);
|
|
|
|
MyMessage msgRelay1(CHILD_ID_RELAY1, V_LIGHT);
|
|
MyMessage msgRelay2(CHILD_ID_RELAY2, V_LIGHT);
|
|
|
|
//boolean timeReceived = false;
|
|
boolean val_init = false;
|
|
|
|
//Setup routine
|
|
void setup()
|
|
{
|
|
// Initialize library and add callback for incoming messages
|
|
gw.begin(incomingMessage, AUTO, true);
|
|
//gw.begin(incomingMessage);
|
|
|
|
// Send the Sketch Version Information to the Gateway
|
|
gw.sendSketchInfo("Vogelkooi", "1.0");
|
|
|
|
gw.present(CHILD_ID_RELAY1, S_LIGHT);
|
|
gw.present(CHILD_ID_RELAY2, S_LIGHT);
|
|
|
|
pinMode(PIN_RELAY1, OUTPUT);
|
|
digitalWrite(PIN_RELAY1, RELAY_ON);
|
|
pinMode(PIN_RELAY2, OUTPUT);
|
|
digitalWrite(PIN_RELAY2, RELAY_ON);
|
|
|
|
metric = gw.getConfig().isMetric;
|
|
lastSend = 0;
|
|
}
|
|
|
|
//Main loop
|
|
void loop()
|
|
{
|
|
gw.process();
|
|
|
|
currentTime = millis();
|
|
|
|
if(!val_init)
|
|
{
|
|
gw.wait(1000);
|
|
gw.request(CHILD_ID_RELAY1, V_LIGHT);
|
|
gw.wait(1000);
|
|
gw.request(CHILD_ID_RELAY2, V_LIGHT);
|
|
gw.wait(1000);
|
|
val_init = true;
|
|
}
|
|
}
|
|
|
|
// Check incomming messages
|
|
void incomingMessage(const MyMessage &message)
|
|
{
|
|
//Message of type V_LIGHT ?
|
|
if (message.type==V_LIGHT)
|
|
{
|
|
//Relay 1
|
|
if (message.sensor==CHILD_ID_RELAY1)
|
|
{
|
|
if(message.getBool()==1)
|
|
{
|
|
digitalWrite(PIN_RELAY1, RELAY_OFF);
|
|
}
|
|
else
|
|
{
|
|
digitalWrite(PIN_RELAY1, RELAY_ON);
|
|
}
|
|
|
|
Serial.println("Domoticz --> Relay 1");
|
|
}
|
|
|
|
//Relay 2
|
|
if (message.sensor==CHILD_ID_RELAY2)
|
|
{
|
|
if(message.getBool()==1)
|
|
{
|
|
digitalWrite(PIN_RELAY2, RELAY_OFF);
|
|
}
|
|
else
|
|
{
|
|
digitalWrite(PIN_RELAY2, RELAY_ON);
|
|
}
|
|
Serial.println("Domoticz --> Relay 2");
|
|
}
|
|
}
|
|
}
|
|
|