smartSleep with 2.3.0, missing messages
-
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.