Hi.
I went from 2.1.1 to 2.3.0 hoping I would get a more stable network.
When i did this I tried some OTA and went from sleep to smartSleep in some sketches.
My problem. it's a binary sensor node reading a blinking LED.
But if the LED blink too fast the node won't send the state change.
I only get:
718 2018-10-05 21:59:52 RX 5 - Pannrum INTERNAL C_INTERNAL NO I_POST_SLEEP_NOTIFICATION 0
719 2018-10-05 21:59:52 RX 5 - Pannrum 1 - S_DOOR C_SET NO V_TRIPPED 0
720 2018-10-05 21:59:52 RX 5 - Pannrum INTERNAL C_INTERNAL NO I_BATTERY_LEVEL 100
721 2018-10-05 21:59:52 RX 5 - Pannrum INTERNAL C_INTERNAL NO I_PRE_SLEEP_NOTIFICATION 50
722 2018-10-05 21:59:53 RX 5 - Pannrum INTERNAL C_INTERNAL NO I_POST_SLEEP_NOTIFICATION 0
723 2018-10-05 21:59:53 RX 5 - Pannrum INTERNAL C_INTERNAL NO I_BATTERY_LEVEL 100
724 2018-10-05 21:59:53 RX 5 - Pannrum INTERNAL C_INTERNAL NO I_PRE_SLEEP_NOTIFICATION 50
725 2018-10-05 21:59:54 RX 5 - Pannrum INTERNAL C_INTERNAL NO I_POST_SLEEP_NOTIFICATION 0
726 2018-10-05 21:59:54 RX 5 - Pannrum 1 - S_DOOR C_SET NO V_TRIPPED 1
727 2018-10-05 21:59:54 RX 5 - Pannrum INTERNAL C_INTERNAL NO I_BATTERY_LEVEL 100
728 2018-10-05 21:59:54 RX 5 - Pannrum INTERNAL C_INTERNAL NO I_PRE_SLEEP_NOTIFICATION 50
This is from MYSController, what the gateway see.
As you see sometimes i Only get the presleep, postsleep and battery, not the C_SET/ Value.
Some from serial monitor but not the exact same time as the log above.
51511 TSF:MSG:SEND,5-5-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=2,st=OK:
53624 !TSM:FPAR:NO REPLY
53641 TSM:FPAR
53706 TSF:MSG:SEND,5-5-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
55246 TSF:MSG:READ,4-4-5,s=255,c=3,t=8,pt=1,l=1,sg=0:1
55312 TSF:MSG:FPAR OK,ID=4,D=2
55803 TSM:FPAR:OK
55820 TSM:ID
55836 TSM:ID:OK
55853 TSM:UPL
55902 TSF:MSG:SEND,5-5-4-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
56213 !TSF:SND:TNR
56229 !TSF:SND:TNR
57999 TSM:UPL
58032 TSF:MSG:SEND,5-5-4-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
60129 TSM:UPL
60178 !TSF:MSG:SEND,5-5-4-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=NACK:1
61276 !TSF:SND:TNR
62275 TSM:UPL
62308 TSF:MSG:SEND,5-5-4-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=1,st=OK:1
64405 !TSM:UPL:FAIL
64421 TSM:FPAR
64471 TSF:MSG:SEND,5-5-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
64667 TSF:MSG:READ,4-4-5,s=255,c=3,t=8,pt=1,l=1,sg=0:1
64733 TSF:MSG:FPAR OK,ID=4,D=2
66322 !TSF:SND:TNR
66584 TSM:FPAR:OK
66600 TSM:ID
66617 TSM:ID:OK
66633 TSM:UPL
66682 TSF:MSG:SEND,5-5-4-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
68763 TSM:UPL
68780 TSF:MSG:SEND,5-5-4-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
70877 TSM:UPL
70893 TSF:MSG:SEND,5-5-4-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
70975 TSF:MSG:READ,0-4-5,s=255,c=3,t=25,pt=1,l=1,sg=0:2
71041 TSF:MSG:PONG RECV,HP=2
71073 TSM:UPL:OK
71106 TSM:READY:ID=5,PAR=4,DIS=2
71368 TSF:MSG:SEND,5-5-4-0,s=255,c=3,t=0,pt=1,l=1,sg=0,ft=0,st=OK:100
71450 MCO:SLP:MS=0,SMS=1,I1=0,M1=1,I2=1,M2=1
71516 TSF:MSG:SEND,5-5-4-0,s=255,c=3,t=32,pt=5,l=4,sg=0,ft=0,st=OK:100
71712 TSF:TDI:TSL
The sketch.
/**
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 <henrik.ekblad@mysensors.org>
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
Interrupt driven binary switch example with dual interrupts
Author: Patrick 'Anticimex' Fallberg
Connect one button or door/window reed switch between
digitial I/O pin 3 (BUTTON_PIN below) and GND and the other
one in similar fashion on digital I/O pin 2.
This example is designed to fit Arduino Nano/Pro Mini
*/
// Enable debug prints to serial monitor
#define MY_DEBUG
#define MY_BAUD_RATE 9600
#define MY_SMART_SLEEP_WAIT_DURATION_MS 100
#define MY_NODE_ID 5
// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69
#define MY_RF24_PA_LEVEL RF24_PA_MAX
#include <SPI.h>
#include <MySensors.h>
#include <Vcc.h>
#define SKETCH_NAME "Pannrum"
#define SKETCH_MAJOR_VER "1"
#define SKETCH_MINOR_VER "0"
#define PRIMARY_CHILD_ID 1
#define SECONDARY_CHILD_ID 2
#define PRIMARY_INPUT_PIN 2 // Arduino Digital I/O pin for button/reed switch
#define SECONDARY_INPUT_PIN 3
const float VccMin = 1.9; // Minimum expected Vcc level, in Volts. (NRF can only go to 1.9V)
const float VccMax = 3.3; // Maximum expected Vcc level, in Volts.
const float VccCorrection = 1.0 / 1.0; // Measured Vcc by multimeter divided by reported Vcc
Vcc vcc(VccCorrection);
// Change to V_LIGHT if you use S_LIGHT in presentation below
MyMessage msg(PRIMARY_CHILD_ID, V_TRIPPED);
MyMessage msg2(SECONDARY_CHILD_ID, V_TRIPPED);
void setup()
{
// Setup the buttons
pinMode(PRIMARY_INPUT_PIN, INPUT);
pinMode(SECONDARY_INPUT_PIN, INPUT);
// Activate internal pull-ups
// digitalWrite(INPUT1_PIN, HIGH);
}
void presentation() {
// Send the sketch version information to the gateway and Controller
sendSketchInfo(SKETCH_NAME, SKETCH_MAJOR_VER "." SKETCH_MINOR_VER);
// Register binary input sensor to sensor_node (they will be created as child devices)
// You can use S_DOOR, S_MOTION or S_LIGHT here depending on your usage.
// If S_LIGHT is used, remember to update variable type you send in. See "msg" above.
present(PRIMARY_CHILD_ID, S_DOOR);
present(SECONDARY_CHILD_ID, S_DOOR);
}
// Loop will iterate on changes on the BUTTON_PINs
void loop()
{
uint8_t value;
static uint8_t sentValue = 2;
static uint8_t sentValue2 = 2;
// Short delay to allow buttons to properly settle
wait(5);
value = digitalRead(PRIMARY_INPUT_PIN);
if (value != sentValue) {
// Value has changed from last transmission, send the updated value
send(msg.set(value == HIGH));
sentValue = value;
}
value = digitalRead(SECONDARY_INPUT_PIN);
if (value != sentValue2) {
// Value has changed from last transmission, send the updated value
send(msg2.set(value == HIGH));
sentValue2 = value;
}
float p = vcc.Read_Perc(VccMin, VccMax);
sendBatteryLevel((uint8_t)p);
// Sleep until something happens with the sensor
if (isTransportReady()) {
smartSleep(PRIMARY_INPUT_PIN-2, CHANGE, SECONDARY_INPUT_PIN-2, CHANGE, 0); // transport is OK, node can sleep
}
else {
wait(5000); // transport is not operational, allow the transport layer to fix this
}
}
I tried This, just replacing all three files in the RF24 folder. Loading this to the sensor but it didn't help.