This is the full code, in my previous message I tried simplifing it and I missed a variable declaration:
#define MY_DEBUG
//#define MY_DEBUG_DETAIL
#define MY_GATEWAY_W5100
#define MY_RF24_CS_PIN 3
#define MY_RF24_IRQ_PIN 2
#define MY_RX_MESSAGE_BUFFER_FEATURE 6
#define MY_IP_ADDRESS 192,168,1,20
#define MY_IP_GATEWAY_ADDRESS 192,168,1,1
#define MY_IP_SUBNET_ADDRESS 255,255,255,0
#define MY_PORT 5003
#define MY_MAC_ADDRESS 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
#if defined(MY_USE_UDP)
#include <EthernetUdp.h>
#endif
#include <Ethernet.h>
#define CHILD_ID_LIGHT 1
#include <MyRF24_P2_GW.h>
#include <MySensors.h>
MyMessage msgLIGHT(CHILD_ID_LIGHT, V_STATUS);
#define BUTTON_UP A4
#define BUTTON_DW A5
#include <Bounce2.h>
Bounce debounceUp = Bounce();
Bounce debounceDw = Bounce();
bool statoLuci = 1;
const byte numReed = 4;
const byte pinReed[numReed] = {A0,A1,A2,A3};
const byte pinRelay[numReed] = {5,6,7,8};
bool statoReed[numReed];
void setup()
{
// request(CHILD_ID_LIGHT, V_STATUS);
debounceUp.attach(BUTTON_UP, INPUT_PULLUP);
debounceUp.interval(5);
debounceDw.attach(BUTTON_DW, INPUT_PULLUP);
debounceDw.interval(5);
for (int i=0; i<numReed; i++){
pinMode(pinReed[i], INPUT_PULLUP);
statoReed[i] = 0;
pinMode(pinRelay[i], OUTPUT);
}
}
void presentation()
{
present(CHILD_ID_LIGHT, S_BINARY, "P2 Luci Armadio");
}
void loop() {
debounceUp.update();
debounceDw.update();
if ( debounceUp.fell() ) {
Serial.println("UP");
}
if ( debounceDw.fell() ) {
Serial.println("DOWN");
}
for (int i=0; i<numReed; i++){
if (statoLuci){
statoReed[i] = digitalRead(pinReed[i]);
digitalWrite(pinRelay[i], statoReed[i]);
}
else
digitalWrite(pinRelay[i], 0);
#ifdef MY_DEBUG_DETAIL
Serial.print("Reed ");
Serial.print(i);
Serial.print(" : ");
Serial.println(statoReed[i]);
#endif
}
#ifdef MY_DEBUG_DETAIL
Serial.println("****************");
wait(1000);
#endif
}
/*
void receive(const MyMessage &message)
{
if (message.destination == 0 && message.type == V_STATUS && message.sensor == CHILD_ID_LIGHT && !message.isAck()) {
#ifdef MY_DEBUG
Serial.println("*** Receiving ***");
#endif
statoLuci = message.getBool();
}
}
*/
MyRF24_2_GW.h contains simply some common defines I use for all the nodes connected to this GW:
#define MY_RADIO_NRF24
#define MY_RF24_DATARATE RF24_250KBPS
#define MY_RF24_CHANNEL 115
#ifndef MY_RF24_PA_LEVEL
#define MY_RF24_PA_LEVEL RF24_PA_HIGH
#endif
#ifndef MY_PARENT_NODE_ID
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#endif