** The MySensors Arduino library handles the wireless radio link and protocol between your home built sensors/actuators and HA controller of choice. The sensors forms a self healing radio network with optional repeaters. Each repeater and gateway builds a routing tables in EEPROM which keeps track of the network topology allowing messages to be routed to nodes. Created by Henrik Ekblad Copyright (C) 2013-2015 Sensnology AB Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors Documentation: http://www.mysensors.org Support Forum: http://forum.mysensors.org This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. ******************************* DESCRIPTION Simple binary switch example updated for multi switches Connect buttons or door/window reed switches between digitial I/O choosen pin (FIRST_PIN below) and GND. http://www.mysensors.org/build/binary */ // Enable debug prints to serial monitor //#define MY_DEBUG // Enable and select radio type attached //#define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 #define MY_GATEWAY_SERIAL //#include #include #include #define FIRST_PIN 2 // Arduino Digital I/O pin for button/reed switch #define noButtons 6 Bounce debouncer[noButtons] = Bounce(); int oldValue[noButtons]; int value; MyMessage msg[noButtons]; void setup() { for (int i = 0; i < noButtons; i++) { oldValue[i] = -1; msg[i].sensor = i; // initialize messages msg[i].type = V_TRIPPED; // pinMode(i + FIRST_PIN, INPUT_PULLUP); digitalWrite(i + FIRST_PIN, HIGH); debouncer[i] = Bounce(); // initialize debouncer debouncer[i].attach(i + FIRST_PIN); debouncer[i].interval(3); } } void presentation() { sendSketchInfo("Doors", "1.0"); for (int i = 0; i < noButtons; i++) present(i, S_DOOR); // present sensor to gateway } // Check if digital input has changed and send in new value void loop() { for (int i = 0; i < noButtons; i++) { debouncer[i].update(); value = debouncer[i].read(); if (value != oldValue[i]) { // Send in the new value send(msg[i].set(value == HIGH ? 1 : 0)); oldValue[i] = value; } } }