Hello,
I try to create USB gateway without radio, but my domoticz under raspberry don't see this gateway.
Could you check my code?
Thanks
// Enable debug prints to serial monitor
#define MY_DEBUG
// Enable and select radio type attached
//#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69
// Set LOW transmit power level as default, if you have an amplified NRF-module and
// power your radio separately with a good regulator you can turn up PA level.
//#define MY_RF24_PA_LEVEL RF24_PA_LOW
// Enable serial gateway
#define MY_GATEWAY_SERIAL
// Define a lower baud rate for Arduino's running on 8 MHz (Arduino Pro Mini 3.3V & SenseBender)
#if F_CPU == 8000000L
#define MY_BAUD_RATE 38400
#endif
// Enable inclusion mode
#define MY_INCLUSION_MODE_FEATURE
// Enable Inclusion mode button on gateway
//#define MY_INCLUSION_BUTTON_FEATURE
// Inverses behavior of inclusion button (if using external pullup)
//#define MY_INCLUSION_BUTTON_EXTERNAL_PULLUP
// Set inclusion mode duration (in seconds)
#define MY_INCLUSION_MODE_DURATION 60
// Digital pin used for inclusion mode button
//#define MY_INCLUSION_MODE_BUTTON_PIN 3
// Set blinking period
#define MY_DEFAULT_LED_BLINK_PERIOD 300
// Inverses the behavior of leds
//#define MY_WITH_LEDS_BLINKING_INVERSE
// Flash leds on rx/tx/err
// Uncomment to override default HW configurations
//#define MY_DEFAULT_ERR_LED_PIN 4 // Error led pin
//#define MY_DEFAULT_RX_LED_PIN 6 // Receive led pin
//#define MY_DEFAULT_TX_LED_PIN 5 // the PCB, on board LED
#include <MySensors.h>
#include <SPI.h>
#define CHILD_ID 1 // Id of the sensor child
#define IN_Sejour_Presence1 2 // Arduino Digital I/O pin number for Presence
#define IN_Sejour_Presence2 3 // Arduino Digital I/O pin number for Presence
#define IN_Sejour_Presence3 4 // Arduino Digital I/O pin number for Presence
#define IN_ChParents_Presence 5 // Arduino Digital I/O pin number for Presence
#define NUMBER_OF_INPUT 4 // Total number of attached input port
#define RELAY_Sejour_Volet1_Bas 22 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Volet1_Stop 23 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Volet1_Haut 24 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Volet2_Bas 25 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Volet2_Stop 26 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Volet2_Haut 27 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Volet3_Bas 28 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Volet3_Stop 29 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Volet3_Haut 30 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Lumiere1 31 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Lumiere2 32 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Lumiere3 33 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Chauffage1 34 // Arduino Digital I/O pin number for relay
#define RELAY_Sejour_Chauffage2 35 // Arduino Digital I/O pin number for relay
#define RELAY_SdJ_Volet1_Bas 37 // Arduino Digital I/O pin number for relay
#define RELAY_SdJ_Volet1_Stop 38 // Arduino Digital I/O pin number for relay
#define RELAY_SdJ_Volet1_Haut 39 // Arduino Digital I/O pin number for relay
#define RELAY_ChParents_Volet_Bas 41 // Arduino Digital I/O pin number for relay
#define RELAY_ChParents_Volet_Stop 42 // Arduino Digital I/O pin number for relay
#define RELAY_ChParents_Volet_Haut 43 // Arduino Digital I/O pin number for relay
#define RELAY_ChParents_Lumiere 44 // Arduino Digital I/O pin number for relay
#define RELAY_ChParents_Chauffage 45 // Arduino Digital I/O pin number for relay
#define NUMBER_OF_RELAYS 32 // Total number of attached relays port 22 to 53
#define RELAY_ON 1 // GPIO value to write to turn on attached relay
#define RELAY_OFF 0 // GPIO value to write to turn off attached relay
unsigned long Duree_Sejour_Lum1 = 60000;
unsigned long Duree_Sejour_Lum2 = 60000;
unsigned long Duree_Sejour_Lum3 = 60000;
unsigned long Duree_ChParents_Lum = 60000;
unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
bool IN_Sejour_Presence1_Etat = LOW;
bool IN_Sejour_Presence1_Etat_Avant = LOW;
bool IN_Sejour_Presence2_Etat = LOW;
bool IN_Sejour_Presence2_Etat_Avant = LOW;
bool IN_Sejour_Presence3_Etat = LOW;
bool IN_Sejour_Presence3_Etat_Avant = LOW;
bool IN_ChParents_Presence_Etat = LOW;
bool IN_ChParents_Presence_Etat_Avant = LOW;
// Initialize motion message
MyMessage msg(CHILD_ID, V_TRIPPED);
void before()
{
// Send the sketch version information to the gateway and Controller
// sendSketchInfo("MySensorBas", "1.0");
for (int sensor=RELAY_Sejour_Volet1_Bas, pin=RELAY_Sejour_Volet1_Bas; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
// Then set relay pins in output mode
pinMode(pin, OUTPUT);
// Set relay to last known state (using eeprom storage)
digitalWrite(pin, loadState(sensor)?RELAY_ON:RELAY_OFF);
}
pinMode(IN_Sejour_Presence1, INPUT);
pinMode(IN_Sejour_Presence2, INPUT);
pinMode(IN_Sejour_Presence3, INPUT);
pinMode(IN_ChParents_Presence, INPUT);
}
void setup()
{
}
void presentation()
{
// Send the sketch version information to the gateway and Controller
sendSketchInfo("Salon_Parents_SdJ", "1.0");
for (int sensor=RELAY_Sejour_Volet1_Bas, pin=RELAY_Sejour_Volet1_Bas; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
// Register all sensors to gw (they will be created as child devices)
present(sensor, S_BINARY);
}
for (int sensor=IN_Sejour_Presence1, pin=IN_Sejour_Presence1; sensor<=NUMBER_OF_INPUT; sensor++, pin++) {
// Register all sensors to gw (they will be created as child devices)
present(sensor, S_MOTION);
}
}
void loop()
{
// Read digital motion value
IN_Sejour_Presence1_Etat = digitalRead(IN_Sejour_Presence1);
if (IN_Sejour_Presence1_Etat != IN_Sejour_Presence1_Etat_Avant){
if (IN_Sejour_Presence1_Etat == HIGH){
// Serial.println(IN_Sejour_Presence1_Etat);
send(msg.set(IN_Sejour_Presence1_Etat?"1":"0")); // Send tripped value to gw
}
IN_Sejour_Presence1_Etat_Avant = IN_Sejour_Presence1_Etat;
}
// Read digital motion value
IN_Sejour_Presence2_Etat = digitalRead(IN_Sejour_Presence2);
if (IN_Sejour_Presence2_Etat != IN_Sejour_Presence2_Etat_Avant){
if (IN_Sejour_Presence2_Etat == HIGH){
// Serial.println(IN_Sejour_Presence2_Etat);
send(msg.set(IN_Sejour_Presence2_Etat?"1":"0")); // Send tripped value to gw
}
IN_Sejour_Presence2_Etat_Avant = IN_Sejour_Presence2_Etat;
}
// Read digital motion value
IN_Sejour_Presence3_Etat = digitalRead(IN_Sejour_Presence3);
if (IN_Sejour_Presence3_Etat != IN_Sejour_Presence3_Etat_Avant){
if (IN_Sejour_Presence3_Etat == HIGH){
// Serial.println(IN_Sejour_Presence3_Etat);
send(msg.set(IN_Sejour_Presence3_Etat?"1":"0")); // Send tripped value to gw
}
IN_Sejour_Presence3_Etat_Avant = IN_Sejour_Presence3_Etat;
}
// Read digital motion value
IN_ChParents_Presence_Etat = digitalRead(IN_ChParents_Presence);
if (IN_ChParents_Presence_Etat != IN_ChParents_Presence_Etat_Avant){
if (IN_ChParents_Presence_Etat == HIGH){
// Serial.println(IN_ChParents_Presence_Etat);
send(msg.set(IN_ChParents_Presence_Etat?"1":"0")); // Send tripped value to gw
}
IN_ChParents_Presence_Etat_Avant = IN_ChParents_Presence_Etat;
}
}
void receive(const MyMessage &message)
{
// We only expect one type of message from controller. But we better check anyway.
if (message.type==V_STATUS) {
// Change relay state
digitalWrite(message.sensor-1+RELAY_Sejour_Volet1_Bas, message.getBool()?RELAY_ON:RELAY_OFF);
// Store state in eeprom
saveState(message.sensor, message.getBool());
// Write some debug info
// Serial.print("Incoming change for sensor:");
// Serial.print(message.sensor);
// Serial.print(", New status: ");
// Serial.println(message.getBool());
}
}