Binary Control Modules , Switches, or Outlets on a Vera Edge
-
Hello my name is Bob and I have been with this forum for several months , I was having much trouble with getting started with My Sensors for various reason but with some help from members and patience I finally got it working. I built 2 LUX sensors first then I wanted to control some lights and fans remotely so I searched this forum ,found several interesting projects that used relays and "door/Window" switches so I modified the reed switches that were used to "mini" toggle switches and then modified the code so I am using 6 switches to control 3 different "Zwave" modules and 3 different "Zwave" Wall switches. I used a Arduino Nano for the 1st unit and placed it in a small enclosure and powered it with a 5 vdc wall wart. I will built 3 more of these units and place them in different rooms to control the same modules and wall switches and in one room one of the unit I build will control 3 different modules and or wall switches. Now I believe in Home Automation and most of my home the lights either turn on by motion or some by time , Wall outlets are turned on by time and off by time. My alarm system is also turned on/off by time except when I am away from the home they you must activate a virtual switch on your phone or tablet using the Vera Mobile interface. Now you will see in the sketch that my msg for each switch is for my use and you may have to change the msg to your needs. Also the Sleep time has not been tested , I was just thinking ahead a bit to see if I could conserve power and make this project able to be powered by batteries. The current draw when this is in operation as is , about 33 ma a bit more when transmission is used but since it mostly listens the 32-33 ma is about right for a Nano, Now you can also use a Pro-Mini and naturally You can use 3.3 v version of Pro-Mini. Below are the pictures of the build placed in a temporary case. So if anyone is interested in the Vera coding or the sketch coding let me know, and I will try to help you. Thanks for reading, Have a great day./*
/* This Sensor has multi Binary Inputs
/* It can control vera modules by either using PLEG properties,trigger and conditions and actions
/* or you can use "combination switch" app along with scenes to do the toggling
/* of the action for a given binary condition
/* you use digital pins as inputs and connect a spst switch between digital input and Gnd
/* normally open switches are easiest to use
/* This is built on a Nano or a pro-mini */#include <MySensor.h>
#include <SPI.h>
#include <Bounce2.h>//unsigned long SLEEP_TIME = 30000; // 30000 Sleep time between reads (in milliseconds)
#define BUTTON_PIN_1 3 // Arduino Digital I/O pin for button/switch
#define BUTTON_PIN_2 4 // Arduino Digital I/O pin for button/switch
#define BUTTON_PIN_3 5 // Arduino Digital I/O pin for button/switch
#define BUTTON_PIN_4 6 // Arduino Digital I/O pin for button/switch
#define BUTTON_PIN_5 7 // Arduino Digital I/O pin for button/switch
#define BUTTON_PIN_6 8 // Arduino Digital I/O pin for button/switch#define CHILD_ID_BUTTON_PIN_1 3
#define CHILD_ID_BUTTON_PIN_2 4
#define CHILD_ID_BUTTON_PIN_3 5
#define CHILD_ID_BUTTON_PIN_4 6
#define CHILD_ID_BUTTON_PIN_5 7
#define CHILD_ID_BUTTON_PIN_6 8MySensor gw;
Bounce debouncer_1 = Bounce();
Bounce debouncer_2 = Bounce();
Bounce debouncer_3 = Bounce();
Bounce debouncer_4 = Bounce();
Bounce debouncer_5 = Bounce();
Bounce debouncer_6 = Bounce();int oldValue_1 = -1;
int oldValue_2 = -1;
int oldValue_3 = -1;
int oldValue_4 = -1;
int oldValue_5 = -1;
int oldValue_6 = -1;MyMessage msgMBR(BUTTON_PIN_1, V_TRIPPED);
MyMessage msgGBR(BUTTON_PIN_2, V_TRIPPED);
MyMessage msgLR1(BUTTON_PIN_3, V_TRIPPED);
MyMessage msgMBF(BUTTON_PIN_4, V_TRIPPED);
MyMessage msgGBF(BUTTON_PIN_5, V_TRIPPED);
MyMessage msgDRF(BUTTON_PIN_6, V_TRIPPED);void setup()
{
gw.begin();
// Send the sketch version information to the gateway and Controller
gw.sendSketchInfo("RemoteControl", "1.05");// Setup the Switch sensor
pinMode(BUTTON_PIN_1, INPUT_PULLUP);
pinMode(BUTTON_PIN_2, INPUT_PULLUP);
pinMode(BUTTON_PIN_3, INPUT_PULLUP);
pinMode(BUTTON_PIN_4, INPUT_PULLUP);
pinMode(BUTTON_PIN_5, INPUT_PULLUP);
pinMode(BUTTON_PIN_6, INPUT_PULLUP);
// After setting up the button, setup debouncerdebouncer_1.attach(BUTTON_PIN_1);
debouncer_1.interval(5);debouncer_2.attach(BUTTON_PIN_2);
debouncer_2.interval(5);debouncer_3.attach(BUTTON_PIN_3);
debouncer_3.interval(5);debouncer_4.attach(BUTTON_PIN_4);
debouncer_4.interval(5);debouncer_5.attach(BUTTON_PIN_5);
debouncer_5.interval(5);debouncer_6.attach(BUTTON_PIN_6);
debouncer_6.interval(5);/* Register binary input sensor to gw (they will be created as child devices) */
gw.present(BUTTON_PIN_1, S_DOOR);
gw.present(BUTTON_PIN_2, S_DOOR);
gw.present(BUTTON_PIN_3, S_DOOR);
gw.present(BUTTON_PIN_4, S_DOOR);
gw.present(BUTTON_PIN_5, S_DOOR);
gw.present(BUTTON_PIN_6, S_DOOR);
}// Check if digital input has changed and send in new value
void loop()
{
// Get the update value
debouncer_1.update();
int value_1 = debouncer_1.read();if (value_1 != oldValue_1) {
// Send in the new value
gw.send(msgMBR.set(value_1 == HIGH ? "1" : "0"));
oldValue_1 = value_1;
}debouncer_2.update();
int value_2 = debouncer_2.read();if (value_2 != oldValue_2) {
// Send in the new value
gw.send(msgGBR.set(value_2 == HIGH ? "1" : "0"));
oldValue_2 = value_2;
}debouncer_3.update();
int value_3 = debouncer_3.read();if (value_3 != oldValue_3) {
// Send in the new value
gw.send(msgLR1.set(value_3 == HIGH ? "1" : "0"));
oldValue_3 = value_3;
}debouncer_4.update();
int value_4 = debouncer_4.read();if (value_4 != oldValue_4) {
// Send in the new value
gw.send(msgMBF.set(value_4 == HIGH ? "1" : "0"));
oldValue_4 = value_4;
}debouncer_5.update();
int value_5 = debouncer_5.read();if (value_5 != oldValue_5) {
// Send in the new value
gw.send(msgGBF.set(value_5 == HIGH ? "1" : "0"));
oldValue_5 = value_5;
}debouncer_6.update();
int value_6 = debouncer_6.read();if (value_6 != oldValue_6) {
// Send in the new value
gw.send(msgDRF.set(value_6 == HIGH ? "1" : "0"));
oldValue_6 = value_6;
}
// gw.sleep(SLEEP_TIME);
}

@mntlvr said:
So if anyone is interested in the Vera coding or the sketch coding let me know, and I will try to help you.
Great to see that you have your rig working just the way you like!
You can simplify that code a lot with the use of arrays, for example (compiles but not tested):
#include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define NUMBER_OF_PINS 6 MySensor gw; int buttonPin[NUMBER_OF_PINS] = {3,4,5,6,7,8}; Bounce debouncer[NUMBER_OF_PINS] = Bounce(); int oldValue[NUMBER_OF_PINS]; MyMessage msg[NUMBER_OF_PINS]; /* or you can fashion the constructor like this:*/ //= {MyMessage(0,V_TRIPPED),MyMessage(1,V_TRIPPED),MyMessage(2,V_TRIPPED),MyMessage(3,V_TRIPPED),MyMessage(4,V_TRIPPED),MyMessage(5,V_TRIPPED)}; void setup() { gw.begin(); gw.sendSketchInfo("RemoteControl", "1.05"); for (int i = 0; i < NUMBER_OF_PINS; i++) { msg[i] = MyMessage(i, V_TRIPPED); // instead of this gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); } } void loop() { for (int i = 0; i < NUMBER_OF_PINS; i++) { debouncer[i].update(); int value = debouncer[i].read(); if (value != oldValue[i]) { gw.send(msg[i].set(value)); oldValue[i] = value; } } } -
@mntlvr said:
So if anyone is interested in the Vera coding or the sketch coding let me know, and I will try to help you.
Great to see that you have your rig working just the way you like!
You can simplify that code a lot with the use of arrays, for example (compiles but not tested):
#include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define NUMBER_OF_PINS 6 MySensor gw; int buttonPin[NUMBER_OF_PINS] = {3,4,5,6,7,8}; Bounce debouncer[NUMBER_OF_PINS] = Bounce(); int oldValue[NUMBER_OF_PINS]; MyMessage msg[NUMBER_OF_PINS]; /* or you can fashion the constructor like this:*/ //= {MyMessage(0,V_TRIPPED),MyMessage(1,V_TRIPPED),MyMessage(2,V_TRIPPED),MyMessage(3,V_TRIPPED),MyMessage(4,V_TRIPPED),MyMessage(5,V_TRIPPED)}; void setup() { gw.begin(); gw.sendSketchInfo("RemoteControl", "1.05"); for (int i = 0; i < NUMBER_OF_PINS; i++) { msg[i] = MyMessage(i, V_TRIPPED); // instead of this gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); } } void loop() { for (int i = 0; i < NUMBER_OF_PINS; i++) { debouncer[i].update(); int value = debouncer[i].read(); if (value != oldValue[i]) { gw.send(msg[i].set(value)); oldValue[i] = value; } } }@BulldogLowell said:
@mntlvr said:
So if anyone is interested in the Vera coding or the sketch coding let me know, and I will try to help you.
Great to see that you have your rig working just the way you like!
You can simplify that code a lot with the use of arrays, for example (compiles but not tested):
#include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define NUMBER_OF_PINS 6 MySensor gw; int buttonPin[NUMBER_OF_PINS] = {3,4,5,6,7,8}; Bounce debouncer[NUMBER_OF_PINS] = Bounce(); int oldValue[NUMBER_OF_PINS]; MyMessage msg[NUMBER_OF_PINS]; /* or you can fashion the constructor like this:*/ //= {MyMessage(0,V_TRIPPED),MyMessage(1,V_TRIPPED),MyMessage(2,V_TRIPPED),MyMessage(3,V_TRIPPED),MyMessage(4,V_TRIPPED),MyMessage(5,V_TRIPPED)}; void setup() { gw.begin(); gw.sendSketchInfo("RemoteControl", "1.05"); for (int i = 0; i < NUMBER_OF_PINS; i++) { msg[i] = MyMessage(i, V_TRIPPED); // instead of this gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); } } void loop() { for (int i = 0; i < NUMBER_OF_PINS; i++) { debouncer[i].update(); int value = debouncer[i].read(); if (value != oldValue[i]) { gw.send(msg[i].set(value)); oldValue[i] = value; } } }Thanks will try out code and let you know if that works.
-
@mntlvr said:
So if anyone is interested in the Vera coding or the sketch coding let me know, and I will try to help you.
Great to see that you have your rig working just the way you like!
You can simplify that code a lot with the use of arrays, for example (compiles but not tested):
#include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define NUMBER_OF_PINS 6 MySensor gw; int buttonPin[NUMBER_OF_PINS] = {3,4,5,6,7,8}; Bounce debouncer[NUMBER_OF_PINS] = Bounce(); int oldValue[NUMBER_OF_PINS]; MyMessage msg[NUMBER_OF_PINS]; /* or you can fashion the constructor like this:*/ //= {MyMessage(0,V_TRIPPED),MyMessage(1,V_TRIPPED),MyMessage(2,V_TRIPPED),MyMessage(3,V_TRIPPED),MyMessage(4,V_TRIPPED),MyMessage(5,V_TRIPPED)}; void setup() { gw.begin(); gw.sendSketchInfo("RemoteControl", "1.05"); for (int i = 0; i < NUMBER_OF_PINS; i++) { msg[i] = MyMessage(i, V_TRIPPED); // instead of this gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); } } void loop() { for (int i = 0; i < NUMBER_OF_PINS; i++) { debouncer[i].update(); int value = debouncer[i].read(); if (value != oldValue[i]) { gw.send(msg[i].set(value)); oldValue[i] = value; } } }@BulldogLowell I tried your sketch, had to put in the digitalwrite(i,HIGH), but even then it would only find 5 of the 7 nodes it needed, Switch 3-8 and the Arduino Node. I will see later what is going on because it should have worked .
-
@BulldogLowell I tried your sketch, had to put in the digitalwrite(i,HIGH), but even then it would only find 5 of the 7 nodes it needed, Switch 3-8 and the Arduino Node. I will see later what is going on because it should have worked .
so this single line of code:
pinMode(myPin, INPUT_PULLUP);is identical to these two lines of code:
pinMode(myPin, INPUT); digitalWrite(myPin, HIGH);try adding some hold time to make sure your radio has enough power to transmit:
void setup() { gw.begin(); gw.sendSketchInfo("RemoteControl", "1.05"); for (int i = 0; i < NUMBER_OF_PINS; i++) { msg[i] = MyMessage(i, V_TRIPPED); gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); gw.wait(75); //<<<<<<<<<<<<<<<<<<<<<< here } } -
so this single line of code:
pinMode(myPin, INPUT_PULLUP);is identical to these two lines of code:
pinMode(myPin, INPUT); digitalWrite(myPin, HIGH);try adding some hold time to make sure your radio has enough power to transmit:
void setup() { gw.begin(); gw.sendSketchInfo("RemoteControl", "1.05"); for (int i = 0; i < NUMBER_OF_PINS; i++) { msg[i] = MyMessage(i, V_TRIPPED); gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); gw.wait(75); //<<<<<<<<<<<<<<<<<<<<<< here } }@BulldogLowell , You are so correct the two lines of code mean exactly the same, thank you for pointing that out, so wo I will try this code again and I will try my modified code and see what happens. Now both should work but your code is more Nano or Pro-Mini friendly when it comes to memory.
-
so this single line of code:
pinMode(myPin, INPUT_PULLUP);is identical to these two lines of code:
pinMode(myPin, INPUT); digitalWrite(myPin, HIGH);try adding some hold time to make sure your radio has enough power to transmit:
void setup() { gw.begin(); gw.sendSketchInfo("RemoteControl", "1.05"); for (int i = 0; i < NUMBER_OF_PINS; i++) { msg[i] = MyMessage(i, V_TRIPPED); gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); gw.wait(75); //<<<<<<<<<<<<<<<<<<<<<< here } }@BulldogLowell
I tried the code again but it still only finds 0-4 delay made no difference. Also I don't follow your code for changing the msg so it shows 1,2,3,4,5,6 tripped could use a little visual help on this also. I am trying to trap the condition that is preventing it from running 0-5 instead of 0-4.
Thanks -
@BulldogLowell
I tried the code again but it still only finds 0-4 delay made no difference. Also I don't follow your code for changing the msg so it shows 1,2,3,4,5,6 tripped could use a little visual help on this also. I am trying to trap the condition that is preventing it from running 0-5 instead of 0-4.
Thanksuse some serial debug messages like this to see what's what:
#include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define NUMBER_OF_PINS 6 MySensor gw; int buttonPin[NUMBER_OF_PINS] = {3,4,5,6,7,8}; Bounce debouncer[NUMBER_OF_PINS] = Bounce(); int oldValue[NUMBER_OF_PINS]; MyMessage msg[NUMBER_OF_PINS]; //= {MyMessage(0,V_TRIPPED),MyMessage(1,V_TRIPPED),MyMessage(2,V_TRIPPED),MyMessage(3,V_TRIPPED),MyMessage(4,V_TRIPPED),MyMessage(5,V_TRIPPED)}; void setup() { Serial.begin(115200); gw.begin(); gw.sendSketchInfo("RemoteControl", "1.05"); for (int i = 0; i < NUMBER_OF_PINS; i++) { Serial.print(F("Setting up Pin")); Serial.println(i); msg[i] = MyMessage(i, V_TRIPPED); // instead of this gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); gw.wait(100); } Serial.println(F("Sensor presentation complete")); } void loop() { for (int i = 0; i < NUMBER_OF_PINS; i++) { debouncer[i].update(); int value = debouncer[i].read(); if (value != oldValue[i]) { gw.send(msg[i].set(value)); Serial.print(F("Pin ")); Serial.print(i); Serial.print(F(" changed state... New State: ")); Serial.println(value? F("Tripped") : F("Not Tripped")); oldValue[i] = value; } } } -
use some serial debug messages like this to see what's what:
#include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define NUMBER_OF_PINS 6 MySensor gw; int buttonPin[NUMBER_OF_PINS] = {3,4,5,6,7,8}; Bounce debouncer[NUMBER_OF_PINS] = Bounce(); int oldValue[NUMBER_OF_PINS]; MyMessage msg[NUMBER_OF_PINS]; //= {MyMessage(0,V_TRIPPED),MyMessage(1,V_TRIPPED),MyMessage(2,V_TRIPPED),MyMessage(3,V_TRIPPED),MyMessage(4,V_TRIPPED),MyMessage(5,V_TRIPPED)}; void setup() { Serial.begin(115200); gw.begin(); gw.sendSketchInfo("RemoteControl", "1.05"); for (int i = 0; i < NUMBER_OF_PINS; i++) { Serial.print(F("Setting up Pin")); Serial.println(i); msg[i] = MyMessage(i, V_TRIPPED); // instead of this gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); gw.wait(100); } Serial.println(F("Sensor presentation complete")); } void loop() { for (int i = 0; i < NUMBER_OF_PINS; i++) { debouncer[i].update(); int value = debouncer[i].read(); if (value != oldValue[i]) { gw.send(msg[i].set(value)); Serial.print(F("Pin ")); Serial.print(i); Serial.print(F(" changed state... New State: ")); Serial.println(value? F("Tripped") : F("Not Tripped")); oldValue[i] = value; } } }@BulldogLowell
Bulldog I ran your debug code and here is the 6th irratition of the Serial Monitor on IDE ver 1.6.4- sensor started, id 32
send: 32-32-0-0 s=255,c=0,t=17,pt=0,l=5,st=fail:1.4.1
send: 32-32-0-0 s=255,c=3,t=6,pt=1,l=1,st=fail:0
send: 32-32-0-0 s=255,c=3,t=11,pt=0,l=13,st=fail:RemoteControl
send: 32-32-0-0 s=255,c=3,t=12,pt=0,l=4,st=fail:1.05
Setting up Pin0
send: 32-32-0-0 s=0,c=0,t=0,pt=0,l=0,st=fail:
Setting up Pin1
send: 32-32-0-0 s=1,c=0,t=0,pt=0,l=0,st=fail:
Setting up Pin2
send: 32-32-0-0 s=2,c=0,t=0,pt=0,l=0,st=fail:
send: 32-32-255-255 s=255,c=3,t=7,pt=0,l=0,st=fail:
Setting up Pin3
send: 32-32-0-0 s=3,c=0,t=0,pt=0,l=0,st=fail:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
Setting up Pin4
send: 32-32-0-0 s=4,c=0,t=0,pt=0,l=0,st=ok:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
Setting up Pin5
send: 0-0-0-0 s=5,c=0,t=0,pt=0,l=0,st=ok:
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 48-201-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
Sensor presentation complete
send: 0-0-0-0 s=3,c=1,t=16,pt=2,l=2,st=ok:1
Pin 3 changed state... New State: Tripped
send: 0-0-0-0 s=4,c=1,t=16,pt=2,l=2,st=ok:1
Pin 4 changed state... New State: Tripped
send: 0-0-0-0 s=5,c=1,t=16,pt=2,l=2,st=ok:1
Pin 5 changed state... New State: Tripped
send: 0-0-0-0 s=0,c=1,t=16,pt=2,l=2,st=ok:1
Pin 0 changed state... New State: Tripped
send: 0-0-0-0 s=1,c=1,t=16,pt=2,l=2,st=ok:1
Pin 1 changed state... New State: Tripped
send: 0-0-0-0 s=2,c=1,t=16,pt=2,l=2,st=ok:1
Pin 2 changed state... New State: Tripped
- sensor started, id 32
-
use some serial debug messages like this to see what's what:
#include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define NUMBER_OF_PINS 6 MySensor gw; int buttonPin[NUMBER_OF_PINS] = {3,4,5,6,7,8}; Bounce debouncer[NUMBER_OF_PINS] = Bounce(); int oldValue[NUMBER_OF_PINS]; MyMessage msg[NUMBER_OF_PINS]; //= {MyMessage(0,V_TRIPPED),MyMessage(1,V_TRIPPED),MyMessage(2,V_TRIPPED),MyMessage(3,V_TRIPPED),MyMessage(4,V_TRIPPED),MyMessage(5,V_TRIPPED)}; void setup() { Serial.begin(115200); gw.begin(); gw.sendSketchInfo("RemoteControl", "1.05"); for (int i = 0; i < NUMBER_OF_PINS; i++) { Serial.print(F("Setting up Pin")); Serial.println(i); msg[i] = MyMessage(i, V_TRIPPED); // instead of this gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); gw.wait(100); } Serial.println(F("Sensor presentation complete")); } void loop() { for (int i = 0; i < NUMBER_OF_PINS; i++) { debouncer[i].update(); int value = debouncer[i].read(); if (value != oldValue[i]) { gw.send(msg[i].set(value)); Serial.print(F("Pin ")); Serial.print(i); Serial.print(F(" changed state... New State: ")); Serial.println(value? F("Tripped") : F("Not Tripped")); oldValue[i] = value; } } }@BulldogLowell
Connected pin 5 to ground and reset Serial Monitor windows and this is the results- sensor started, id 32
send: 32-32-0-0 s=255,c=0,t=17,pt=0,l=5,st=fail:1.4.1
send: 32-32-0-0 s=255,c=3,t=6,pt=1,l=1,st=fail:0
send: 32-32-0-0 s=255,c=3,t=11,pt=0,l=13,st=fail:RemoteControl
send: 32-32-0-0 s=255,c=3,t=12,pt=0,l=4,st=fail:1.08
Setting up Pin0
send: 32-32-0-0 s=0,c=0,t=0,pt=0,l=0,st=fail:
Setting up Pin1
send: 32-32-0-0 s=1,c=0,t=0,pt=0,l=0,st=fail:
Setting up Pin2
send: 32-32-0-0 s=2,c=0,t=0,pt=0,l=0,st=fail:
send: 32-32-255-255 s=255,c=3,t=7,pt=0,l=0,st=fail:
Setting up Pin3
send: 32-32-0-0 s=3,c=0,t=0,pt=0,l=0,st=fail:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
Setting up Pin4
send: 32-32-0-0 s=4,c=0,t=0,pt=0,l=0,st=ok:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
Setting up Pin5
send: 0-0-0-0 s=5,c=0,t=0,pt=0,l=0,st=ok:
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 50-219-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
Sensor presentation complete
send: 0-0-0-0 s=3,c=1,t=16,pt=2,l=2,st=ok:1
Pin 3 changed state... New State: Tripped
send: 0-0-0-0 s=4,c=1,t=16,pt=2,l=2,st=ok:1
Pin 4 changed state... New State: Tripped
send: 0-0-0-0 s=0,c=1,t=16,pt=2,l=2,st=ok:1
Pin 0 changed state... New State: Tripped
send: 0-0-0-0 s=1,c=1,t=16,pt=2,l=2,st=ok:1
Pin 1 changed state... New State: Tripped
send: 0-0-0-0 s=2,c=1,t=16,pt=2,l=2,st=ok:1
Pin 2 changed state... New State: Tripped
This is as far as the code went..
- sensor started, id 32
-
@mntlvr said:
This is as far as the code went..
you would need to flip the switches to see anything else :) so try that.
this is a problem:
Setting up Pin0 send: 32-32-0-0 s=0,c=0,t=0,pt=0,l=0,st=fail: Setting up Pin1 send: 32-32-0-0 s=1,c=0,t=0,pt=0,l=0,st=fail: Setting up Pin2 send: 32-32-0-0 s=2,c=0,t=0,pt=0,l=0,st=fail: send: 32-32-255-255 s=255,c=3,t=7,pt=0,l=0,st=fail: Setting up Pin3 send: 32-32-0-0 s=3,c=0,t=0,pt=0,l=0,st=fail:let's slow down the startup... it looks like your initial radio messages are not making it to the gateway.
#include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define NUMBER_OF_PINS 6 #define RADIO_ID 32 MySensor gw; int buttonPin[NUMBER_OF_PINS] = {3,4,5,6,7,8}; Bounce debouncer[NUMBER_OF_PINS] = Bounce(); int oldValue[NUMBER_OF_PINS]; MyMessage msg[NUMBER_OF_PINS]; //= {MyMessage(0,V_TRIPPED),MyMessage(1,V_TRIPPED),MyMessage(2,V_TRIPPED),MyMessage(3,V_TRIPPED),MyMessage(4,V_TRIPPED),MyMessage(5,V_TRIPPED)}; void setup() { Serial.begin(115200); delay(1000); Serial.print(F("Sending device info...")); gw.begin(NULL, RADIO_ID, false); gw.sendSketchInfo("RemoteControl", "1.05"); gw.wait(250); for (int i = 0; i < NUMBER_OF_PINS; i++) { Serial.print(F("Setting up Pin")); Serial.println(i); msg[i] = MyMessage(i, V_TRIPPED); // instead of this gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); gw.wait(250); } Serial.println(F("Sensor presentation complete")); } void loop() { for (int i = 0; i < NUMBER_OF_PINS; i++) { debouncer[i].update(); int value = debouncer[i].read(); if (value != oldValue[i]) { gw.send(msg[i].set(value)); Serial.print(F("Pin ")); Serial.print(i); Serial.print(F(" changed state... New State: ")); Serial.println(value? F("Tripped") : F("Not Tripped")); oldValue[i] = value; } } } -
How are you powering the node? Is there any capacitor between radio VCC / GND? If you have an spare radio/power supply try replacing them. Make sure radio gets stable, 1.9-3.6V supply.
And check this thread. Many of us are experiencing random results from fake radios...
-
@mntlvr said:
This is as far as the code went..
you would need to flip the switches to see anything else :) so try that.
this is a problem:
Setting up Pin0 send: 32-32-0-0 s=0,c=0,t=0,pt=0,l=0,st=fail: Setting up Pin1 send: 32-32-0-0 s=1,c=0,t=0,pt=0,l=0,st=fail: Setting up Pin2 send: 32-32-0-0 s=2,c=0,t=0,pt=0,l=0,st=fail: send: 32-32-255-255 s=255,c=3,t=7,pt=0,l=0,st=fail: Setting up Pin3 send: 32-32-0-0 s=3,c=0,t=0,pt=0,l=0,st=fail:let's slow down the startup... it looks like your initial radio messages are not making it to the gateway.
#include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define NUMBER_OF_PINS 6 #define RADIO_ID 32 MySensor gw; int buttonPin[NUMBER_OF_PINS] = {3,4,5,6,7,8}; Bounce debouncer[NUMBER_OF_PINS] = Bounce(); int oldValue[NUMBER_OF_PINS]; MyMessage msg[NUMBER_OF_PINS]; //= {MyMessage(0,V_TRIPPED),MyMessage(1,V_TRIPPED),MyMessage(2,V_TRIPPED),MyMessage(3,V_TRIPPED),MyMessage(4,V_TRIPPED),MyMessage(5,V_TRIPPED)}; void setup() { Serial.begin(115200); delay(1000); Serial.print(F("Sending device info...")); gw.begin(NULL, RADIO_ID, false); gw.sendSketchInfo("RemoteControl", "1.05"); gw.wait(250); for (int i = 0; i < NUMBER_OF_PINS; i++) { Serial.print(F("Setting up Pin")); Serial.println(i); msg[i] = MyMessage(i, V_TRIPPED); // instead of this gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); gw.wait(250); } Serial.println(F("Sensor presentation complete")); } void loop() { for (int i = 0; i < NUMBER_OF_PINS; i++) { debouncer[i].update(); int value = debouncer[i].read(); if (value != oldValue[i]) { gw.send(msg[i].set(value)); Serial.print(F("Pin ")); Serial.print(i); Serial.print(F(" changed state... New State: ")); Serial.println(value? F("Tripped") : F("Not Tripped")); oldValue[i] = value; } } }@BulldogLowell Ok Bulldog ran new code still getting Version Mismatch?and at the beginning fails.
My transceiver is about 4 feet away from the gateway.- .sensor started, id 32
send: 32-32-0-0 s=255,c=0,t=17,pt=0,l=5,st=fail:1.4.1
send: 32-32-0-0 s=255,c=3,t=6,pt=1,l=1,st=fail:0
send: 32-32-0-0 s=255,c=3,t=11,pt=0,l=13,st=fail:RemoteControl
send: 32-32-0-0 s=255,c=3,t=12,pt=0,l=4,st=fail:1.05
Setting up Pin0
send: 32-32-0-0 s=0,c=0,t=0,pt=0,l=0,st=fail:
Setting up Pin1
send: 32-32-0-0 s=1,c=0,t=0,pt=0,l=0,st=fail:
Setting up Pin2
send: 32-32-0-0 s=2,c=0,t=0,pt=0,l=0,st=fail:
send: 32-32-255-255 s=255,c=3,t=7,pt=0,l=0,st=fail:
Setting up Pin3
send: 32-32-0-0 s=3,c=0,t=0,pt=0,l=0,st=fail:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=3,c=0,t=0,pt=0,l=0:
Setting up Pin4
0;0;3;0;9;send: 32-32-0-0 s=4,c=0,t=0,pt=0,l=0,st=ok:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
Setting up Pin5
0;0;3;0;9;send: 0-0-0-0 s=5,c=0,t=0,pt=0,l=0,st=ok:
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
Sensor presentation complete
0;0;3;0;9;send: 0-0-0-0 s=3,c=1,t=16,pt=2,l=2,st=ok:1
Pin 3 changed state... New State: Tripped
0;0;3;0;9;send: 0-0-0-0 s=4,c=1,t=16,pt=2,l=2,st=ok:1
Pin 4 changed state... New State: Tripped
0;0;3;0;9;send: 0-0-0-0 s=5,c=1,t=16,pt=2,l=2,st=ok:1
Pin 5 changed state... New State: Tripped
0;0;3;0;9;send: 0-0-0-0 s=0,c=1,t=16,pt=2,l=2,st=ok:1
Pin 0 changed state... New State: Tripped
0;0;3;0;9;send: 0-0-0-0 s=1,c=1,t=16,pt=2,l=2,st=ok:1
Pin 1 changed state... New State: Tripped
0;0;3;0;9;send: 0-0-0-0 s=2,c=1,t=16,pt=2,l=2,st=ok:1
Pin 2 changed state... New State: Tripped
- .sensor started, id 32
-
@mntlvr said:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
Setting up Pin5
0;0;3;0;9;send: 0-0-0-0 s=5,c=0,t=0,pt=0,l=0,st=ok:
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:yeah, this isn't what I would expect, but maybe hardware related... look here.
Power is my first instinct.
@hek any ideas here?
also, you didn't try flipping the switches!
-
@mntlvr said:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
read: 32-32-0 s=4,c=0,t=0,pt=0,l=0:
Setting up Pin5
0;0;3;0;9;send: 0-0-0-0 s=5,c=0,t=0,pt=0,l=0,st=ok:
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:
version mismatch
read: 52-63-0 s=0,c=5,t=0,pt=0,l=0:yeah, this isn't what I would expect, but maybe hardware related... look here.
Power is my first instinct.
@hek any ideas here?
also, you didn't try flipping the switches!
@BulldogLowell Bulldog
The power is coming from 2 LIPO 1500mAH batteries in series, so the boards input voltage is 8.4 volts which the on board regulator is handling on the 24l01 so the nRF24l01 is getting 3.3 volts one 22ufd caps on input right on nrf24l01 board. I am running the exact setup my first board is using when I built it on a Nano. On the Nano build when I would ground anyone of the input pin the Vera would show the state of change right away and so would the Serial Monitor on IDE. I will keep on it until I resolve it. -
Message seems corrupt... command-type=5!!
Underpowered or some strange mix of different radio-modules.
-
Message seems corrupt... command-type=5!!
Underpowered or some strange mix of different radio-modules.
@hek this is the Serial Monitor output from the same board powered the same way except running my original code and no failures.
You can see when I gnd the input the output responds.
sensor started, id 32
send: 32-32-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1
send: 32-32-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
send: 32-32-0-0 s=255,c=3,t=11,pt=0,l=13,st=ok:RemoteControl
send: 32-32-0-0 s=255,c=3,t=12,pt=0,l=4,st=ok:1.05
send: 32-32-0-0 s=3,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=4,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=5,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=6,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=7,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=8,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=3,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=4,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=6,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=7,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=8,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:0
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:0
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:0
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:0
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:0 -
@hek said:
I suspect the message array is doing some buffer overwrite.
Just define one msg and reuse it with
msg.setSensor(x)agree...
look here:
Sensor presentation complete 0;0;3;0;9;send: 0-0-0-0 s=3,c=1,t=16,pt=2,l=2,st=ok:1 Pin 3 changed state... New State: Tripped 0;0;3;0;9;send: 0-0-0-0 s=4,c=1,t=16,pt=2,l=2,st=ok:1 Pin 4 changed state... New State: Tripped 0;0;3;0;9;send: 0-0-0-0 s=5,c=1,t=16,pt=2,l=2,st=ok:1 Pin 5 changed state... New State: Tripped 0;0;3;0;9;send: 0-0-0-0 s=0,c=1,t=16,pt=2,l=2,st=ok:1 Pin 0 changed state... New State: Tripped 0;0;3;0;9;send: 0-0-0-0 s=1,c=1,t=16,pt=2,l=2,st=ok:1 Pin 1 changed state... New State: Tripped 0;0;3;0;9;send: 0-0-0-0 s=2,c=1,t=16,pt=2,l=2,st=ok:1 Pin 2 changed state... New State: Trippednot winding its way through the array like you wold expect.
-
@hek this is the Serial Monitor output from the same board powered the same way except running my original code and no failures.
You can see when I gnd the input the output responds.
sensor started, id 32
send: 32-32-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1
send: 32-32-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
send: 32-32-0-0 s=255,c=3,t=11,pt=0,l=13,st=ok:RemoteControl
send: 32-32-0-0 s=255,c=3,t=12,pt=0,l=4,st=ok:1.05
send: 32-32-0-0 s=3,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=4,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=5,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=6,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=7,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=8,c=0,t=0,pt=0,l=0,st=ok:
send: 32-32-0-0 s=3,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=4,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=6,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=7,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=8,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:0
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:0
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:0
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:0
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:1
send: 32-32-0-0 s=5,c=1,t=16,pt=0,l=1,st=ok:0@mtnlvr
like this perhaps:
#include <MySensor.h> #include <SPI.h> #include <Bounce2.h> #define NUMBER_OF_PINS 6 #define RADIO_ID 32 MySensor gw; int buttonPin[NUMBER_OF_PINS] = {3,4,5,6,7,8}; Bounce debouncer[NUMBER_OF_PINS] = Bounce(); int oldValue[NUMBER_OF_PINS]; MyMessage msg(0,V_TRIPPED); void setup() { Serial.begin(115200); delay(1000); Serial.print(F("Sending device info...")); gw.begin(NULL, RADIO_ID, false); gw.sendSketchInfo("RemoteControl", "1.05"); gw.wait(250); for (int i = 0; i < NUMBER_OF_PINS; i++) { Serial.print(F("Setting up Pin")); Serial.println(i); gw.present(i, S_DOOR); pinMode(buttonPin[i], INPUT_PULLUP); debouncer[buttonPin[i]].attach(buttonPin[i]); debouncer[buttonPin[i]].interval(5); gw.wait(250); } Serial.println(F("Sensor presentation complete")); } void loop() { for (int i = 0; i < NUMBER_OF_PINS; i++) { debouncer[i].update(); int value = debouncer[i].read(); if (value != oldValue[i]) { msg.setSensor(i); gw.send(msg.set(value)); Serial.print(F("Pin ")); Serial.print(i); Serial.print(F(" changed state... New State: ")); Serial.println(value? F("Tripped") : F("Not Tripped")); oldValue[i] = value; } } }