nRf24L01+ connection quality meter
-
Thanks @awi for this, might have to build one myself to test a potential bad batch of radios i have.
Do you need the LCD for this or is the data also print in serial?
Thanks,
@drock1985 It will print the data on serial but not very well formatted. You don't need the LCD but it is easy to carry around the house. (a laptop too :smiley: but be aware of disturbances coming from the laptop i.e. Wifi ) I thought off blinking led's also. You can easily change the sketch, there is not much to it..
-
I'm having a problem in this part off the code:
"present(counterChild, S_DIMMER, "Quality counter " NODE_TXT) ; // counter uses percentage from dimmer value"I'm getting this error:
"exit status 1
'present' was not declared in this scope"How can i fix this ?
-
I'm having a problem in this part off the code:
"present(counterChild, S_DIMMER, "Quality counter " NODE_TXT) ; // counter uses percentage from dimmer value"I'm getting this error:
"exit status 1
'present' was not declared in this scope"How can i fix this ?
-
Hi @AWI, could you kindly post your updated version of the sketch that has the parent and destination node numbers on the display?
@cjrpriest Here you go..
/* PROJECT: MySensors / Quality of radio transmission PROGRAMMER: AWI (MySensors libraries) DATE: 20160529/ last update: 20160530 FILE: AWI_Send.ino LICENSE: Public domain Hardware: ATMega328p board w/ NRF24l01 and MySensors 2.0 Special: Summary: Sends a radio message with counter each x time to determine fault ratio with receiver Remarks: Fixed node-id & communication channel to other fixed node Change log: 20160530 - added moving average on fail/ miss count, update to 2.0 */ //**** MySensors ***** // Enable debug prints to serial monitor #define MY_DEBUG #define MY_RADIO_NRF24 // Enable and select radio type attached //#define MY_RF24_CHANNEL 80 // radio channel, default = 76 #define MY_NODE_ID 250 #define NODE_TXT "Q 250" // Text to add to sensor name //#define MY_PARENT_NODE_ID 42 // fixed parent to controller when 0 (else comment out = AUTO) // #define MY_RF24_CE_PIN 7 // Ceech board, 3.3v (7,8) (pin default 9,10) // #define MY_RF24_CS_PIN 8 #define DESTINATION_NODE 0 // receiving fixed node id (default 0 = gateway) #include <SPI.h> #include <MySensors.h> // display #include <Wire.h> // I2C #include <LiquidCrystal_I2C.h> // LCD display with I2C interface // helpers #define LOCAL_DEBUG #ifdef LOCAL_DEBUG #define Sprint(a) (Serial.print(a)) // macro as substitute for print, enable if no print wanted #define Sprintln(a) (Serial.println(a)) // macro as substitute for println #else #define Sprint(a) // enable if no print wanted -or- #define Sprintln(a) // enable if no print wanted #endif // MySensors sensor #define counterChild 0 // send constants and variables int messageCounter = 0 ; const int messageCounterMax = 100 ; // maximum message counter value const unsigned counterUpdateDelay = 500 ; // send every x ms and sleep in between // receive constants and variables boolean failStore[messageCounterMax] ; // moving average stores & pointers int failStorePointer = 0 ; boolean missedStore[messageCounterMax] ; int missedStorePointer = 0 ; int newMessage = 0 ; int lastMessage = -1 ; int missedMessageCounter = 0 ; // total number of messages in range (messageCounterMax) int failMessageCounter = 0 ; // total number of messages in range (messageCounterMax) uint8_t parent = 0 ; // parent node-id // Loop delays const unsigned long displayInterval = 1000UL ; // display update in ms unsigned long lastDisplayUpdate = 0 ; // last update for loop timers // standard messages MyMessage counterMsg(counterChild, V_PERCENTAGE); // Send value // ***** LCD //LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD I2C address void setup() { Wire.begin(); // I2C // ** LCD display ** // LCD 2 lines * 16 char. lcd.begin(16, 2); lcd.setBacklight(HIGH); lcd.setCursor(0, 0); lcd.print("AWI Quality nRF24"); for(int i= 0 ; i < messageCounterMax ; i++){ // init stores for moving averages failStore[i] = true ; missedStore[i] = true ; } missedStorePointer = failStorePointer = 0 ; delay(1000); } void presentation(){ // MySensors present(counterChild, S_DIMMER, "Quality counter " NODE_TXT) ; // counter uses percentage from dimmer value } void loop() { // Sprint("count:") ; Sprintln(messageCounter) ; LCD_local_display(); missedStore[failStorePointer] = false ; // set slot to false (ack message needs to set) ; boolean succes = failStore[failStorePointer] = send(counterMsg.setDestination(DESTINATION_NODE).set(failStorePointer), true); // send to destination with ack if (!succes){ failMessageCounter++ ; Sprint("Fail on message: ") ; Sprint(failStorePointer) ; Sprint(" # ") ; Sprintln(failMessageCounter); } failStorePointer++ ; if(failStorePointer >= messageCounterMax){ failStorePointer = 0 ; // wrap counter } parent = getParentNodeId(); // get the parent node (0 = gateway) wait(counterUpdateDelay) ; // wait for things to settle and ack's to arrive } void receive(const MyMessage &message) { // Expect few types of messages from controller newMessage = message.getInt(); // get received value switch (message.type){ case V_PERCENTAGE: missedStore[newMessage] = true ; // set corresponding flag to received. if (newMessage > lastMessage){ // number of messages missed from lastMessage (kind of, faulty at wrap) Sprint("Missed messages: ") ; Sprintln( newMessage - lastMessage - 1) ; missedMessageCounter += newMessage - lastMessage - 1 ; } lastMessage = newMessage ; break ; default: break ; } } // calculate number of false values in array // takes a lot of time, but who cares... int getCount(boolean countArray[], int size){ int falseCount = 0 ; for (int i = 0 ; i < size ; i++){ falseCount += countArray[i]?0:1 ; } return falseCount ; } void LCD_local_display(void){ /* prints all available variables on LCD display with units */ char buf[17]; // buffer for max 16 char display lcd.setCursor(0, 0); snprintf(buf, sizeof buf, "p%-3dFail%4d%3d%%", parent, failMessageCounter, getCount(failStore, messageCounterMax)); lcd.print(buf); lcd.setCursor(0, 1); snprintf(buf, sizeof buf, "d%-3dMiss%4d%3d%%", DESTINATION_NODE , missedMessageCounter, getCount(missedStore, messageCounterMax)); lcd.print(buf); } -
@cjrpriest Here you go..
/* PROJECT: MySensors / Quality of radio transmission PROGRAMMER: AWI (MySensors libraries) DATE: 20160529/ last update: 20160530 FILE: AWI_Send.ino LICENSE: Public domain Hardware: ATMega328p board w/ NRF24l01 and MySensors 2.0 Special: Summary: Sends a radio message with counter each x time to determine fault ratio with receiver Remarks: Fixed node-id & communication channel to other fixed node Change log: 20160530 - added moving average on fail/ miss count, update to 2.0 */ //**** MySensors ***** // Enable debug prints to serial monitor #define MY_DEBUG #define MY_RADIO_NRF24 // Enable and select radio type attached //#define MY_RF24_CHANNEL 80 // radio channel, default = 76 #define MY_NODE_ID 250 #define NODE_TXT "Q 250" // Text to add to sensor name //#define MY_PARENT_NODE_ID 42 // fixed parent to controller when 0 (else comment out = AUTO) // #define MY_RF24_CE_PIN 7 // Ceech board, 3.3v (7,8) (pin default 9,10) // #define MY_RF24_CS_PIN 8 #define DESTINATION_NODE 0 // receiving fixed node id (default 0 = gateway) #include <SPI.h> #include <MySensors.h> // display #include <Wire.h> // I2C #include <LiquidCrystal_I2C.h> // LCD display with I2C interface // helpers #define LOCAL_DEBUG #ifdef LOCAL_DEBUG #define Sprint(a) (Serial.print(a)) // macro as substitute for print, enable if no print wanted #define Sprintln(a) (Serial.println(a)) // macro as substitute for println #else #define Sprint(a) // enable if no print wanted -or- #define Sprintln(a) // enable if no print wanted #endif // MySensors sensor #define counterChild 0 // send constants and variables int messageCounter = 0 ; const int messageCounterMax = 100 ; // maximum message counter value const unsigned counterUpdateDelay = 500 ; // send every x ms and sleep in between // receive constants and variables boolean failStore[messageCounterMax] ; // moving average stores & pointers int failStorePointer = 0 ; boolean missedStore[messageCounterMax] ; int missedStorePointer = 0 ; int newMessage = 0 ; int lastMessage = -1 ; int missedMessageCounter = 0 ; // total number of messages in range (messageCounterMax) int failMessageCounter = 0 ; // total number of messages in range (messageCounterMax) uint8_t parent = 0 ; // parent node-id // Loop delays const unsigned long displayInterval = 1000UL ; // display update in ms unsigned long lastDisplayUpdate = 0 ; // last update for loop timers // standard messages MyMessage counterMsg(counterChild, V_PERCENTAGE); // Send value // ***** LCD //LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD I2C address void setup() { Wire.begin(); // I2C // ** LCD display ** // LCD 2 lines * 16 char. lcd.begin(16, 2); lcd.setBacklight(HIGH); lcd.setCursor(0, 0); lcd.print("AWI Quality nRF24"); for(int i= 0 ; i < messageCounterMax ; i++){ // init stores for moving averages failStore[i] = true ; missedStore[i] = true ; } missedStorePointer = failStorePointer = 0 ; delay(1000); } void presentation(){ // MySensors present(counterChild, S_DIMMER, "Quality counter " NODE_TXT) ; // counter uses percentage from dimmer value } void loop() { // Sprint("count:") ; Sprintln(messageCounter) ; LCD_local_display(); missedStore[failStorePointer] = false ; // set slot to false (ack message needs to set) ; boolean succes = failStore[failStorePointer] = send(counterMsg.setDestination(DESTINATION_NODE).set(failStorePointer), true); // send to destination with ack if (!succes){ failMessageCounter++ ; Sprint("Fail on message: ") ; Sprint(failStorePointer) ; Sprint(" # ") ; Sprintln(failMessageCounter); } failStorePointer++ ; if(failStorePointer >= messageCounterMax){ failStorePointer = 0 ; // wrap counter } parent = getParentNodeId(); // get the parent node (0 = gateway) wait(counterUpdateDelay) ; // wait for things to settle and ack's to arrive } void receive(const MyMessage &message) { // Expect few types of messages from controller newMessage = message.getInt(); // get received value switch (message.type){ case V_PERCENTAGE: missedStore[newMessage] = true ; // set corresponding flag to received. if (newMessage > lastMessage){ // number of messages missed from lastMessage (kind of, faulty at wrap) Sprint("Missed messages: ") ; Sprintln( newMessage - lastMessage - 1) ; missedMessageCounter += newMessage - lastMessage - 1 ; } lastMessage = newMessage ; break ; default: break ; } } // calculate number of false values in array // takes a lot of time, but who cares... int getCount(boolean countArray[], int size){ int falseCount = 0 ; for (int i = 0 ; i < size ; i++){ falseCount += countArray[i]?0:1 ; } return falseCount ; } void LCD_local_display(void){ /* prints all available variables on LCD display with units */ char buf[17]; // buffer for max 16 char display lcd.setCursor(0, 0); snprintf(buf, sizeof buf, "p%-3dFail%4d%3d%%", parent, failMessageCounter, getCount(failStore, messageCounterMax)); lcd.print(buf); lcd.setCursor(0, 1); snprintf(buf, sizeof buf, "d%-3dMiss%4d%3d%%", DESTINATION_NODE , missedMessageCounter, getCount(missedStore, messageCounterMax)); lcd.print(buf); } -
@cjrpriest Here you go..
/* PROJECT: MySensors / Quality of radio transmission PROGRAMMER: AWI (MySensors libraries) DATE: 20160529/ last update: 20160530 FILE: AWI_Send.ino LICENSE: Public domain Hardware: ATMega328p board w/ NRF24l01 and MySensors 2.0 Special: Summary: Sends a radio message with counter each x time to determine fault ratio with receiver Remarks: Fixed node-id & communication channel to other fixed node Change log: 20160530 - added moving average on fail/ miss count, update to 2.0 */ //**** MySensors ***** // Enable debug prints to serial monitor #define MY_DEBUG #define MY_RADIO_NRF24 // Enable and select radio type attached //#define MY_RF24_CHANNEL 80 // radio channel, default = 76 #define MY_NODE_ID 250 #define NODE_TXT "Q 250" // Text to add to sensor name //#define MY_PARENT_NODE_ID 42 // fixed parent to controller when 0 (else comment out = AUTO) // #define MY_RF24_CE_PIN 7 // Ceech board, 3.3v (7,8) (pin default 9,10) // #define MY_RF24_CS_PIN 8 #define DESTINATION_NODE 0 // receiving fixed node id (default 0 = gateway) #include <SPI.h> #include <MySensors.h> // display #include <Wire.h> // I2C #include <LiquidCrystal_I2C.h> // LCD display with I2C interface // helpers #define LOCAL_DEBUG #ifdef LOCAL_DEBUG #define Sprint(a) (Serial.print(a)) // macro as substitute for print, enable if no print wanted #define Sprintln(a) (Serial.println(a)) // macro as substitute for println #else #define Sprint(a) // enable if no print wanted -or- #define Sprintln(a) // enable if no print wanted #endif // MySensors sensor #define counterChild 0 // send constants and variables int messageCounter = 0 ; const int messageCounterMax = 100 ; // maximum message counter value const unsigned counterUpdateDelay = 500 ; // send every x ms and sleep in between // receive constants and variables boolean failStore[messageCounterMax] ; // moving average stores & pointers int failStorePointer = 0 ; boolean missedStore[messageCounterMax] ; int missedStorePointer = 0 ; int newMessage = 0 ; int lastMessage = -1 ; int missedMessageCounter = 0 ; // total number of messages in range (messageCounterMax) int failMessageCounter = 0 ; // total number of messages in range (messageCounterMax) uint8_t parent = 0 ; // parent node-id // Loop delays const unsigned long displayInterval = 1000UL ; // display update in ms unsigned long lastDisplayUpdate = 0 ; // last update for loop timers // standard messages MyMessage counterMsg(counterChild, V_PERCENTAGE); // Send value // ***** LCD //LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD I2C address void setup() { Wire.begin(); // I2C // ** LCD display ** // LCD 2 lines * 16 char. lcd.begin(16, 2); lcd.setBacklight(HIGH); lcd.setCursor(0, 0); lcd.print("AWI Quality nRF24"); for(int i= 0 ; i < messageCounterMax ; i++){ // init stores for moving averages failStore[i] = true ; missedStore[i] = true ; } missedStorePointer = failStorePointer = 0 ; delay(1000); } void presentation(){ // MySensors present(counterChild, S_DIMMER, "Quality counter " NODE_TXT) ; // counter uses percentage from dimmer value } void loop() { // Sprint("count:") ; Sprintln(messageCounter) ; LCD_local_display(); missedStore[failStorePointer] = false ; // set slot to false (ack message needs to set) ; boolean succes = failStore[failStorePointer] = send(counterMsg.setDestination(DESTINATION_NODE).set(failStorePointer), true); // send to destination with ack if (!succes){ failMessageCounter++ ; Sprint("Fail on message: ") ; Sprint(failStorePointer) ; Sprint(" # ") ; Sprintln(failMessageCounter); } failStorePointer++ ; if(failStorePointer >= messageCounterMax){ failStorePointer = 0 ; // wrap counter } parent = getParentNodeId(); // get the parent node (0 = gateway) wait(counterUpdateDelay) ; // wait for things to settle and ack's to arrive } void receive(const MyMessage &message) { // Expect few types of messages from controller newMessage = message.getInt(); // get received value switch (message.type){ case V_PERCENTAGE: missedStore[newMessage] = true ; // set corresponding flag to received. if (newMessage > lastMessage){ // number of messages missed from lastMessage (kind of, faulty at wrap) Sprint("Missed messages: ") ; Sprintln( newMessage - lastMessage - 1) ; missedMessageCounter += newMessage - lastMessage - 1 ; } lastMessage = newMessage ; break ; default: break ; } } // calculate number of false values in array // takes a lot of time, but who cares... int getCount(boolean countArray[], int size){ int falseCount = 0 ; for (int i = 0 ; i < size ; i++){ falseCount += countArray[i]?0:1 ; } return falseCount ; } void LCD_local_display(void){ /* prints all available variables on LCD display with units */ char buf[17]; // buffer for max 16 char display lcd.setCursor(0, 0); snprintf(buf, sizeof buf, "p%-3dFail%4d%3d%%", parent, failMessageCounter, getCount(failStore, messageCounterMax)); lcd.print(buf); lcd.setCursor(0, 1); snprintf(buf, sizeof buf, "d%-3dMiss%4d%3d%%", DESTINATION_NODE , missedMessageCounter, getCount(missedStore, messageCounterMax)); lcd.print(buf); }@AWI Strange, with the latest sketch I get
nrf-quality-meter.ino:88:34: error: invalid conversion from 'int' to 't_backlighPol' [-fpermissive]
In file included from nrf-quality-meter.ino:45:0:
C:\Dokumente und Einstellungen\Philipp\Eigene Dateien\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:53:4: error: initializing argument 3 of 'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, t_backlighPol)' [-fpermissive]
LiquidCrystal_I2C (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol);
^
invalid conversion from 'int' to 't_backlighPol' [-fpermissive]compiling...
It works using the other line...
// ***** LCD //LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD I2C address -
@AWI Strange, with the latest sketch I get
nrf-quality-meter.ino:88:34: error: invalid conversion from 'int' to 't_backlighPol' [-fpermissive]
In file included from nrf-quality-meter.ino:45:0:
C:\Dokumente und Einstellungen\Philipp\Eigene Dateien\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:53:4: error: initializing argument 3 of 'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, t_backlighPol)' [-fpermissive]
LiquidCrystal_I2C (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol);
^
invalid conversion from 'int' to 't_backlighPol' [-fpermissive]compiling...
It works using the other line...
// ***** LCD //LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD I2C address -
@AWI what is the board between the nano and the radio?
Something available via aliexpress?I really do not need this as I live in a small flat.. but I NEED THIS! :laughing:
-
@AWI what is the board between the nano and the radio?
Something available via aliexpress?I really do not need this as I live in a small flat.. but I NEED THIS! :laughing:
@Nicklas-Starkel you can find it in the MySensors shop It is a nrf24l01+ socket adapter board. It guarantees a stable supply and includes the famous "radio capacitor"
-
Hi @AWI,
thanks for the code and the project! ~~Unfortunately my biggest problem is to get my LCD working. It does not do anything with your code, other testcode to test the display is working fine. I am using this line and it should work fine:
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C addressAny idea what else I could check? I am using arduino IDE 1.6.10
edit: getting this in the serial monitor of the device:
Starting sensor (RNNNA-, 2.0.0) TSM:INIT TSM:RADIO:OK TSP:ASSIGNID:OK (ID=250) TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 3-3-255 s=255,c=3,t=7,pt=0,l=0,sg=0: TSP:MSG:BC !TSM:FPAR:FAIL !TSM:FAILURE TSM:PDTthen it starts over again...
~~
edit2:
Think I got it now, seems like my gateway wasn´t responding or whatever, now it seems to work...Edit3:
I got 1 fail and 5000 miss 60%...
Now what does this mean??Edit4:
I think I need some help: Most of the time I get this on my gw´s Serial Monitor:
0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=ok:0 0;255;3;0;9;TSP:MSG:READ 250-250-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:BC 0;255;3;0;9;TSP:MSG:FPAR REQ (sender=250) 0;255;3;0;9;TSP:CHKUPL:OK (FLDCTRL) 0;255;3;0;9;TSP:MSG:GWL OK 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=ok:0 0;255;3;0;9;TSP:MSG:READ 250-250-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:BC 0;255;3;0;9;TSP:MSG:FPAR REQ (sender=250) 0;255;3;0;9;TSP:CHKUPL:OK (FLDCTRL) 0;255;3;0;9;TSP:MSG:GWL OK 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=ok:0 0;255;3;0;9;TSP:MSG:READ 250-250-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:BC 0;255;3;0;9;TSP:MSG:FPAR REQ (sender=250) 0;255;3;0;9;TSP:CHKUPL:OK 0;255;3;0;9;TSP:MSG:GWL OKAfter some reboots of the quality meter and I guess with a lot of luck it starts working occasionally
This is from the serial monitor of the quality meter:
TSP:MSG:READ 0-0-0 s=0,c=0,t=0,pt=0,l=0,sg=0: !TSP:MSG:PVER mismatch !TSM:FPAR:FAIL !TSM:FAILURE TSM:PDTI already added a 47u Cap and added those lines to the code:
#define MY_PARENT_NODE_ID 0 // fixed parent to controller when 0 (else comment out = AUTO) #define MY_PARENT_NODE_IS_STATICno luck at all...
edit5:
Now I opened the serial output of my GW again, which seems to started the communication:0;255;3;0;9;TSP:MSG:READ 250-250-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:BC 0;255;3;0;9;TSP:MSG:FPAR REQ (sender=250) 0;255;3;0;9;TSP:CHKUPL:OK (FLDCTRL) 0;255;3;0;9;TSP:MSG:GWL OK 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=ok:0 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=24,pt=1,l=1,sg=0:1 0;255;3;0;9;TSP:MSG:PINGED (ID=250, hops=1) 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=ok:1 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=15,pt=6,l=2,sg=0:0100 0;255;3;0;9;!TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=fail:0100 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=0,t=17,pt=0,l=5,sg=0:2.0.0 0;255;3;0;9;Sending message on topic: mygateway1-out/250/255/0/0/17 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=6,pt=1,l=1,sg=0:0 0;255;3;0;9;Sending message on topic: mygateway1-out/250/255/3/0/6 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=0,c=0,t=4,pt=0,l=21,sg=0:Quality counter Q 250 0;255;3;0;9;Sending message on topic: mygateway1-out/250/0/0/0/4 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=26,pt=1,l=1,sg=0:2 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=ok:1 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=26,pt=1,l=1,sg=0:2 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=ok:1 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=26,pt=1,l=1,sg=0:2 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=ok:1 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=0,c=1,t=3,pt=2,l=2,sg=0:0 0;255;3;0;9;TSP:MSG:ACK msg 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=0,st=ok:0 0;255;3;0;9;Sending message on topic: mygateway1-out/250/0/1/0/3 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=0,c=1,t=3,pt=2,l=2,sg=0:1 0;255;3;0;9;TSP:MSG:ACK msg 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=0,st=ok:1 0;255;3;0;9;Sending message on topic: mygateway1-out/250/0/1/0/3 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=0,c=1,t=3,pt=2,l=2,sg=0:2 0;255;3;0;9;TSP:MSG:ACK msgI don´t get it what is going on here. Restarted quality meter: blank LCD... :(
-
Great tool for a mysensors builder @AWI! I also want to sort out the good radios from the bad, I have enough trouble as it is trying to troubleshoot my questionable sensors.
I got around to building a quality meter for myself, although without the adapter board and with some additional differences. But I really don't understand the output, the fail and miss percentage is almost always 100 % for most of my radios. Am I missing something? Perhaps I should change some addresses to static ones? I thought that perhaps I had to define a corresponding item in Openhab in order for the packages to be acknowledged but this doesn't change the outcome.
Here's the serial output from the "quality meter":
Starting sensor (RNNNA-, 2.0.0) TSM:INIT TSM:RADIO:OK TSP:ASSIGNID:OK (ID=250) TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=15,pt=6,l=2,sg=0,ft=1,st=fail:0100 !TSP:MSG:SEND 250-250-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,ft=2,st=fail:2.0.0 !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,ft=3,st=fail:0 TSP:MSG:READ 0-0-250 s=255,c=3,t=6,pt=0,l=1,sg=0:M !TSP:MSG:SEND 250-250-0-0 s=0,c=0,t=4,pt=0,l=21,sg=0,ft=4,st=fail:Quality counter Q 250 Request registration... !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=5,st=fail:2 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=1,st=fail:2 TSP:MSG:READ 0-0-250 s=255,c=3,t=27,pt=1,l=1,sg=0:1 Node registration=1 Init complete, id=250, parent=0, distance=1, registration=1 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=2,st=fail:0 Fail on message: 0 # 1 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:0 Missed messages: 0 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=3,st=fail:1 Fail on message: 1 # 2 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=4,st=fail:2 Fail on message: 2 # 3 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=5,st=fail:3 Fail on message: 3 # 4 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:3 Missed messages: 2 !TSP:SEND:TNR Fail on message: 4 # 5 !TSP:SEND:TNR Fail on message: 5 # 6 !TSP:SEND:TNR Fail on message: 6 # 7 !TSP:SEND:TNR Fail on message: 7 # 8 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 8 # 9 !TSP:SEND:TNR Fail on message: 9 # 10 !TSP:SEND:TNR Fail on message: 10 # 11 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=1,st=fail:11 Fail on message: 11 # 12 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:11 Missed messages: 7 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=2,st=fail:12 Fail on message: 12 # 13 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=3,st=fail:13 Fail on message: 13 # 14 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=4,st=fail:14 Fail on message: 14 # 15 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=5,st=fail:15 Fail on message: 15 # 16 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 16 # 17 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 17 # 18 !TSP:SEND:TNR Fail on message: 18 # 19 !TSP:SEND:TNR Fail on message: 19 # 20 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 20 # 21 !TSP:SEND:TNR Fail on message: 21 # 22 !TSP:SEND:TNR Fail on message: 22 # 23 !TSP:SEND:TNR Fail on message: 23 # 24 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 24 # 25 !TSP:SEND:TNR Fail on message: 25 # 26 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 26 # 27 !TSP:SEND:TNR Fail on message: 27 # 28 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 28 # 29 !TSP:SEND:TNR Fail on message: 29 # 30 !TSP:SEND:TNR Fail on message: 30 # 31 !TSP:SEND:TNR Fail on message: 31 # 32 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 32 # 33 !TSP:SEND:TNR Fail on message: 33 # 34 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 34 # 35 !TSP:SEND:TNR Fail on message: 35 # 36 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=1,st=fail:36 Fail on message: 36 # 37 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=2,st=fail:37 Fail on message: 37 # 38 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:37 Missed messages: 25 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=3,st=fail:38 Fail on message: 38 # 39 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:38 Missed messages: 0 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=4,st=fail:39 Fail on message: 39 # 40 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:39 Missed messages: 0 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=5,st=fail:40 Fail on message: 40 # 41 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:40 Missed messages: 0 !TSP:SEND:TNR Fail on message: 41 # 42 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 42 # 43 !TSP:SEND:TNR Fail on message: 43 # 44 TSM:FPAR:OK TSM:ID !TSP:SEND:TNR Fail on message: 44 # 45 TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=1,st=fail:45 Fail on message: 45 # 46 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:45 Missed messages: 4 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=2,st=fail:46 Fail on message: 46 # 47 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=3,st=fail:47 Fail on message: 47 # 48 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:47 Missed messages: 1 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=4,st=fail:48 Fail on message: 48 # 49 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:48 Missed messages: 0 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=5,st=fail:49 Fail on message: 49 # 50 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 50 # 51 !TSP:SEND:TNR Fail on message: 51 # 52 !TSP:SEND:TNR Fail on message: 52 # 53 !TSP:SEND:TNR Fail on message: 53 # 54 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 54 # 55 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 55 # 56 !TSP:SEND:TNR Fail on message: 56 # 57 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 57 # 58 !TSP:SEND:TNR Fail on message: 58 # 59 !TSP:SEND:TNR Fail on message: 59 # 60 !TSP:SEND:TNR Fail on message: 60 # 61 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 61 # 62 !TSP:SEND:TNR Fail on message: 62 # 63 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 63 # 64 !TSP:SEND:TNR Fail on message: 64 # 65 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 65 # 66 !TSP:SEND:TNR Fail on message: 66 # 67 !TSP:SEND:TNR Fail on message: 67 # 68 !TSP:SEND:TNR Fail on message: 68 # 69 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 69 # 70 !TSP:SEND:TNR Fail on message: 70 # 71 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 71 # 72 !TSP:SEND:TNR Fail on message: 72 # 73 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 73 # 74 !TSP:SEND:TNR Fail on message: 74 # 75 !TSP:SEND:TNR Fail on message: 75 # 76 !TSP:SEND:TNR Fail on message: 76 # 77 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 77 # 78 !TSP:SEND:TNR Fail on message: 78 # 79 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 79 # 80 !TSP:SEND:TNR Fail on message: 80 # 81 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 81 # 82 !TSP:SEND:TNR Fail on message: 82 # 83 !TSP:SEND:TNR Fail on message: 83 # 84 !TSP:SEND:TNR Fail on message: 84 # 85 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 85 # 86 !TSP:SEND:TNR Fail on message: 86 # 87 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 87 # 88 !TSP:SEND:TNR Fail on message: 88 # 89 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=ok:1 TSP:MSG:READ 99-99-0 s=0,c=1,t=1,pt=7,l=5,sg=0:62.2 !TSM:MSG:REL MSG, but not a repeater TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=0,st=fail:89 Fail on message: 89 # 90 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=1,st=fail:90 Fail on message: 90 # 91 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=2,st=fail:91 Fail on message: 91 # 92 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=3,st=fail:92 Fail on message: 92 # 93 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:92 Missed messages: 43 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=4,st=fail:93 Fail on message: 93 # 94 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:93 Missed messages: 0 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=5,st=fail:94 Fail on message: 94 # 95 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:94 Missed messages: 0 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 95 # 96 !TSP:SEND:TNR Fail on message: 96 # 97 !TSP:SEND:TNR Fail on message: 97 # 98 !TSP:SEND:TNR Fail on message: 98 # 99 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1Also, the meter in action generating the output above can be seen here: LINK
After some time, >10 min, the fail percentage is 100 % and the miss percentage around 85 %. Not impressive if interpreted correctly. Could someone give me some pointers to what the problem is? I don't talk "mysensors protocol".Sorry @siod, I don't think I can help you. You seem to get a lot more messages through though.
-
Great tool for a mysensors builder @AWI! I also want to sort out the good radios from the bad, I have enough trouble as it is trying to troubleshoot my questionable sensors.
I got around to building a quality meter for myself, although without the adapter board and with some additional differences. But I really don't understand the output, the fail and miss percentage is almost always 100 % for most of my radios. Am I missing something? Perhaps I should change some addresses to static ones? I thought that perhaps I had to define a corresponding item in Openhab in order for the packages to be acknowledged but this doesn't change the outcome.
Here's the serial output from the "quality meter":
Starting sensor (RNNNA-, 2.0.0) TSM:INIT TSM:RADIO:OK TSP:ASSIGNID:OK (ID=250) TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=15,pt=6,l=2,sg=0,ft=1,st=fail:0100 !TSP:MSG:SEND 250-250-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,ft=2,st=fail:2.0.0 !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,ft=3,st=fail:0 TSP:MSG:READ 0-0-250 s=255,c=3,t=6,pt=0,l=1,sg=0:M !TSP:MSG:SEND 250-250-0-0 s=0,c=0,t=4,pt=0,l=21,sg=0,ft=4,st=fail:Quality counter Q 250 Request registration... !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=5,st=fail:2 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=1,st=fail:2 TSP:MSG:READ 0-0-250 s=255,c=3,t=27,pt=1,l=1,sg=0:1 Node registration=1 Init complete, id=250, parent=0, distance=1, registration=1 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=2,st=fail:0 Fail on message: 0 # 1 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:0 Missed messages: 0 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=3,st=fail:1 Fail on message: 1 # 2 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=4,st=fail:2 Fail on message: 2 # 3 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=5,st=fail:3 Fail on message: 3 # 4 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:3 Missed messages: 2 !TSP:SEND:TNR Fail on message: 4 # 5 !TSP:SEND:TNR Fail on message: 5 # 6 !TSP:SEND:TNR Fail on message: 6 # 7 !TSP:SEND:TNR Fail on message: 7 # 8 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 8 # 9 !TSP:SEND:TNR Fail on message: 9 # 10 !TSP:SEND:TNR Fail on message: 10 # 11 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=1,st=fail:11 Fail on message: 11 # 12 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:11 Missed messages: 7 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=2,st=fail:12 Fail on message: 12 # 13 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=3,st=fail:13 Fail on message: 13 # 14 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=4,st=fail:14 Fail on message: 14 # 15 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=5,st=fail:15 Fail on message: 15 # 16 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 16 # 17 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 17 # 18 !TSP:SEND:TNR Fail on message: 18 # 19 !TSP:SEND:TNR Fail on message: 19 # 20 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 20 # 21 !TSP:SEND:TNR Fail on message: 21 # 22 !TSP:SEND:TNR Fail on message: 22 # 23 !TSP:SEND:TNR Fail on message: 23 # 24 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 24 # 25 !TSP:SEND:TNR Fail on message: 25 # 26 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 26 # 27 !TSP:SEND:TNR Fail on message: 27 # 28 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 28 # 29 !TSP:SEND:TNR Fail on message: 29 # 30 !TSP:SEND:TNR Fail on message: 30 # 31 !TSP:SEND:TNR Fail on message: 31 # 32 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 32 # 33 !TSP:SEND:TNR Fail on message: 33 # 34 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 34 # 35 !TSP:SEND:TNR Fail on message: 35 # 36 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=1,st=fail:36 Fail on message: 36 # 37 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=2,st=fail:37 Fail on message: 37 # 38 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:37 Missed messages: 25 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=3,st=fail:38 Fail on message: 38 # 39 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:38 Missed messages: 0 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=4,st=fail:39 Fail on message: 39 # 40 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:39 Missed messages: 0 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=5,st=fail:40 Fail on message: 40 # 41 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:40 Missed messages: 0 !TSP:SEND:TNR Fail on message: 41 # 42 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 42 # 43 !TSP:SEND:TNR Fail on message: 43 # 44 TSM:FPAR:OK TSM:ID !TSP:SEND:TNR Fail on message: 44 # 45 TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=1,st=fail:45 Fail on message: 45 # 46 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:45 Missed messages: 4 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=2,st=fail:46 Fail on message: 46 # 47 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=3,st=fail:47 Fail on message: 47 # 48 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:47 Missed messages: 1 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=4,st=fail:48 Fail on message: 48 # 49 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:48 Missed messages: 0 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=5,st=fail:49 Fail on message: 49 # 50 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 50 # 51 !TSP:SEND:TNR Fail on message: 51 # 52 !TSP:SEND:TNR Fail on message: 52 # 53 !TSP:SEND:TNR Fail on message: 53 # 54 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 54 # 55 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 55 # 56 !TSP:SEND:TNR Fail on message: 56 # 57 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 57 # 58 !TSP:SEND:TNR Fail on message: 58 # 59 !TSP:SEND:TNR Fail on message: 59 # 60 !TSP:SEND:TNR Fail on message: 60 # 61 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 61 # 62 !TSP:SEND:TNR Fail on message: 62 # 63 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 63 # 64 !TSP:SEND:TNR Fail on message: 64 # 65 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 65 # 66 !TSP:SEND:TNR Fail on message: 66 # 67 !TSP:SEND:TNR Fail on message: 67 # 68 !TSP:SEND:TNR Fail on message: 68 # 69 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 69 # 70 !TSP:SEND:TNR Fail on message: 70 # 71 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 71 # 72 !TSP:SEND:TNR Fail on message: 72 # 73 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 73 # 74 !TSP:SEND:TNR Fail on message: 74 # 75 !TSP:SEND:TNR Fail on message: 75 # 76 !TSP:SEND:TNR Fail on message: 76 # 77 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 77 # 78 !TSP:SEND:TNR Fail on message: 78 # 79 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 79 # 80 !TSP:SEND:TNR Fail on message: 80 # 81 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1 TSP:CHKUPL:FAIL (hops=255) !TSM:UPL:FAIL TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 81 # 82 !TSP:SEND:TNR Fail on message: 82 # 83 !TSP:SEND:TNR Fail on message: 83 # 84 !TSP:SEND:TNR Fail on message: 84 # 85 TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: !TSP:SEND:TNR Fail on message: 85 # 86 !TSP:SEND:TNR Fail on message: 86 # 87 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 87 # 88 !TSP:SEND:TNR Fail on message: 88 # 89 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=ok:1 TSP:MSG:READ 99-99-0 s=0,c=1,t=1,pt=7,l=5,sg=0:62.2 !TSM:MSG:REL MSG, but not a repeater TSP:MSG:READ 0-0-250 s=255,c=3,t=25,pt=1,l=1,sg=0:1 TSP:MSG:PONG RECV (hops=1) TSP:CHKUPL:OK TSM:UPL:OK TSM:READY !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=0,st=fail:89 Fail on message: 89 # 90 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=1,st=fail:90 Fail on message: 90 # 91 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=2,st=fail:91 Fail on message: 91 # 92 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=3,st=fail:92 Fail on message: 92 # 93 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:92 Missed messages: 43 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=4,st=fail:93 Fail on message: 93 # 94 TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:93 Missed messages: 0 !TSP:MSG:SEND 250-250-0-0 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=5,st=fail:94 Fail on message: 94 # 95 !TSM:UPL FAIL, SNP TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 0-0-250 s=0,c=1,t=3,pt=2,l=2,sg=0:94 Missed messages: 0 TSP:MSG:READ 0-0-250 s=255,c=3,t=8,pt=1,l=1,sg=0:0 TSP:MSG:FPAR RES (ID=0, dist=0) TSP:MSG:PAR OK (ID=0, dist=1) !TSP:SEND:TNR Fail on message: 95 # 96 !TSP:SEND:TNR Fail on message: 96 # 97 !TSP:SEND:TNR Fail on message: 97 # 98 !TSP:SEND:TNR Fail on message: 98 # 99 TSM:FPAR:OK TSM:ID TSM:CHKID:OK (ID=250) TSM:UPL TSP:PING:SEND (dest=0) !TSP:MSG:SEND 250-250-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=fail:1Also, the meter in action generating the output above can be seen here: LINK
After some time, >10 min, the fail percentage is 100 % and the miss percentage around 85 %. Not impressive if interpreted correctly. Could someone give me some pointers to what the problem is? I don't talk "mysensors protocol".Sorry @siod, I don't think I can help you. You seem to get a lot more messages through though.
@NickBuilder you seem to have a pretty bad connection (hardware related) . The meter has to be built with a reliable power source and connections. I can't see from the movie how your radio is powered. The reason for using the adapter plate is that it includes a separate ldo and capacitors.
-
Hi @AWI,
thanks for the code and the project! ~~Unfortunately my biggest problem is to get my LCD working. It does not do anything with your code, other testcode to test the display is working fine. I am using this line and it should work fine:
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C addressAny idea what else I could check? I am using arduino IDE 1.6.10
edit: getting this in the serial monitor of the device:
Starting sensor (RNNNA-, 2.0.0) TSM:INIT TSM:RADIO:OK TSP:ASSIGNID:OK (ID=250) TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSM:FPAR TSP:MSG:SEND 250-250-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc: TSP:MSG:READ 3-3-255 s=255,c=3,t=7,pt=0,l=0,sg=0: TSP:MSG:BC !TSM:FPAR:FAIL !TSM:FAILURE TSM:PDTthen it starts over again...
~~
edit2:
Think I got it now, seems like my gateway wasn´t responding or whatever, now it seems to work...Edit3:
I got 1 fail and 5000 miss 60%...
Now what does this mean??Edit4:
I think I need some help: Most of the time I get this on my gw´s Serial Monitor:
0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=ok:0 0;255;3;0;9;TSP:MSG:READ 250-250-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:BC 0;255;3;0;9;TSP:MSG:FPAR REQ (sender=250) 0;255;3;0;9;TSP:CHKUPL:OK (FLDCTRL) 0;255;3;0;9;TSP:MSG:GWL OK 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=ok:0 0;255;3;0;9;TSP:MSG:READ 250-250-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:BC 0;255;3;0;9;TSP:MSG:FPAR REQ (sender=250) 0;255;3;0;9;TSP:CHKUPL:OK (FLDCTRL) 0;255;3;0;9;TSP:MSG:GWL OK 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=ok:0 0;255;3;0;9;TSP:MSG:READ 250-250-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:BC 0;255;3;0;9;TSP:MSG:FPAR REQ (sender=250) 0;255;3;0;9;TSP:CHKUPL:OK 0;255;3;0;9;TSP:MSG:GWL OKAfter some reboots of the quality meter and I guess with a lot of luck it starts working occasionally
This is from the serial monitor of the quality meter:
TSP:MSG:READ 0-0-0 s=0,c=0,t=0,pt=0,l=0,sg=0: !TSP:MSG:PVER mismatch !TSM:FPAR:FAIL !TSM:FAILURE TSM:PDTI already added a 47u Cap and added those lines to the code:
#define MY_PARENT_NODE_ID 0 // fixed parent to controller when 0 (else comment out = AUTO) #define MY_PARENT_NODE_IS_STATICno luck at all...
edit5:
Now I opened the serial output of my GW again, which seems to started the communication:0;255;3;0;9;TSP:MSG:READ 250-250-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 0;255;3;0;9;TSP:MSG:BC 0;255;3;0;9;TSP:MSG:FPAR REQ (sender=250) 0;255;3;0;9;TSP:CHKUPL:OK (FLDCTRL) 0;255;3;0;9;TSP:MSG:GWL OK 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=ok:0 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=24,pt=1,l=1,sg=0:1 0;255;3;0;9;TSP:MSG:PINGED (ID=250, hops=1) 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=ok:1 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=15,pt=6,l=2,sg=0:0100 0;255;3;0;9;!TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=fail:0100 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=0,t=17,pt=0,l=5,sg=0:2.0.0 0;255;3;0;9;Sending message on topic: mygateway1-out/250/255/0/0/17 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=6,pt=1,l=1,sg=0:0 0;255;3;0;9;Sending message on topic: mygateway1-out/250/255/3/0/6 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=0,c=0,t=4,pt=0,l=21,sg=0:Quality counter Q 250 0;255;3;0;9;Sending message on topic: mygateway1-out/250/0/0/0/4 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=26,pt=1,l=1,sg=0:2 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=ok:1 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=26,pt=1,l=1,sg=0:2 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=ok:1 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=255,c=3,t=26,pt=1,l=1,sg=0:2 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=ok:1 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=0,c=1,t=3,pt=2,l=2,sg=0:0 0;255;3;0;9;TSP:MSG:ACK msg 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=0,st=ok:0 0;255;3;0;9;Sending message on topic: mygateway1-out/250/0/1/0/3 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=0,c=1,t=3,pt=2,l=2,sg=0:1 0;255;3;0;9;TSP:MSG:ACK msg 0;255;3;0;9;TSP:MSG:SEND 0-0-250-250 s=0,c=1,t=3,pt=2,l=2,sg=0,ft=0,st=ok:1 0;255;3;0;9;Sending message on topic: mygateway1-out/250/0/1/0/3 0;255;3;0;9;TSP:MSG:READ 250-250-0 s=0,c=1,t=3,pt=2,l=2,sg=0:2 0;255;3;0;9;TSP:MSG:ACK msgI don´t get it what is going on here. Restarted quality meter: blank LCD... :(
@siod the meter works like a normal sketch. If it does not get past making a connection the rest of the code won't start (ie the LCD). To be honest I can't make up a reason from the serial logs except that your node has problems finding it's parent.