Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. My Project
  3. nRf24L01+ connection quality meter

nRf24L01+ connection quality meter

Scheduled Pinned Locked Moved My Project
43 Posts 18 Posters 20.5k Views 32 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    boozz
    wrote on last edited by
    #16

    @AWI

    And when you start explaining they look somewhat odd don't they?

    1 Reply Last reply
    0
    • mrc-coreM Offline
      mrc-coreM Offline
      mrc-core
      wrote on last edited by
      #17

      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 ?

      mfalkviddM 1 Reply Last reply
      0
      • mrc-coreM mrc-core

        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 ?

        mfalkviddM Offline
        mfalkviddM Offline
        mfalkvidd
        Mod
        wrote on last edited by
        #18

        @mrc-core sounds like you are using the stable (1.5.x) version of MySensors. This sketch requires the development version which is available on github

        1 Reply Last reply
        0
        • mrc-coreM Offline
          mrc-coreM Offline
          mrc-core
          wrote on last edited by
          #19

          Thanks for the quick reply.
          i'm going to change the versions :)

          1 Reply Last reply
          1
          • bjacobseB Offline
            bjacobseB Offline
            bjacobse
            wrote on last edited by
            #20

            Can this be extended to also measure NRF24l01 standby current? Maybe some "fake" modules have a high current consumption in stadnby mode, this could drain batteries quickly when used in battery operated devices

            1 Reply Last reply
            0
            • cjrpriestC Offline
              cjrpriestC Offline
              cjrpriest
              wrote on last edited by cjrpriest
              #21

              Hi @AWI, could you kindly post your updated version of the sketch that has the parent and destination node numbers on the display?

              AWIA 1 Reply Last reply
              0
              • cjrpriestC cjrpriest

                Hi @AWI, could you kindly post your updated version of the sketch that has the parent and destination node numbers on the display?

                AWIA Offline
                AWIA Offline
                AWI
                Hero Member
                wrote on last edited by
                #22

                @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);
                }
                
                
                cjrpriestC karl261K 2 Replies Last reply
                1
                • AWIA AWI

                  @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);
                  }
                  
                  
                  cjrpriestC Offline
                  cjrpriestC Offline
                  cjrpriest
                  wrote on last edited by
                  #23

                  Thanks very much @AWI 👍

                  1 Reply Last reply
                  0
                  • AWIA AWI

                    @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);
                    }
                    
                    
                    karl261K Offline
                    karl261K Offline
                    karl261
                    wrote on last edited by karl261
                    #24

                    @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
                    
                    AWIA 1 Reply Last reply
                    0
                    • karl261K karl261

                      @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
                      
                      AWIA Offline
                      AWIA Offline
                      AWI
                      Hero Member
                      wrote on last edited by
                      #25

                      @karl261 probably I am using another library for the display. I got it from the Arduino library manager.

                      1 Reply Last reply
                      0
                      • N Offline
                        N Offline
                        Nicklas Starkel
                        wrote on last edited by
                        #26

                        @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:

                        AWIA 1 Reply Last reply
                        0
                        • N Nicklas Starkel

                          @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:

                          AWIA Offline
                          AWIA Offline
                          AWI
                          Hero Member
                          wrote on last edited by AWI
                          #27

                          @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"

                          1 Reply Last reply
                          1
                          • siodS Offline
                            siodS Offline
                            siod
                            wrote on last edited by siod
                            #28

                            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 address
                            

                            Any 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:PDT
                            

                            then 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 OK
                            

                            After 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:PDT
                            

                            I 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_STATIC
                            

                            no 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 msg
                            

                            I don´t get it what is going on here. Restarted quality meter: blank LCD... :(

                            still learning...

                            AWIA 1 Reply Last reply
                            0
                            • NickBuilderN Offline
                              NickBuilderN Offline
                              NickBuilder
                              wrote on last edited by NickBuilder
                              #29

                              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:1
                              

                              Also, 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.

                              AWIA 1 Reply Last reply
                              0
                              • NickBuilderN NickBuilder

                                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:1
                                

                                Also, 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.

                                AWIA Offline
                                AWIA Offline
                                AWI
                                Hero Member
                                wrote on last edited by AWI
                                #30

                                @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.

                                NickBuilderN 1 Reply Last reply
                                0
                                • siodS siod

                                  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 address
                                  

                                  Any 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:PDT
                                  

                                  then 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 OK
                                  

                                  After 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:PDT
                                  

                                  I 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_STATIC
                                  

                                  no 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 msg
                                  

                                  I don´t get it what is going on here. Restarted quality meter: blank LCD... :(

                                  AWIA Offline
                                  AWIA Offline
                                  AWI
                                  Hero Member
                                  wrote on last edited by AWI
                                  #31

                                  @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.

                                  1 Reply Last reply
                                  0
                                  • AWIA AWI

                                    @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.

                                    NickBuilderN Offline
                                    NickBuilderN Offline
                                    NickBuilder
                                    wrote on last edited by
                                    #32

                                    @AWI, it's hardly visible but I'm actually using a 3V3 buck and a 10 uF cap to power the radio. But I took your advice and tried tos power the radio seperately with two AA batterys, and a cap just in case. This should be a really clean source of power but the outcome is still the same.

                                    I guess I'll order som new radios, hopefully from a different supplier. I'll get some adapter boards with (switchless) LDO's while I'm at it.

                                    Why is the parent changing from 255 to 0 back and forth? I have a serial gateway connected to a Pi and aside from some temp sensors I also have an RC switch for my outlets which also acts as a gateway but the adress is neither 255 nor 0.

                                    Thanks!

                                    AWIA 1 Reply Last reply
                                    0
                                    • NickBuilderN NickBuilder

                                      @AWI, it's hardly visible but I'm actually using a 3V3 buck and a 10 uF cap to power the radio. But I took your advice and tried tos power the radio seperately with two AA batterys, and a cap just in case. This should be a really clean source of power but the outcome is still the same.

                                      I guess I'll order som new radios, hopefully from a different supplier. I'll get some adapter boards with (switchless) LDO's while I'm at it.

                                      Why is the parent changing from 255 to 0 back and forth? I have a serial gateway connected to a Pi and aside from some temp sensors I also have an RC switch for my outlets which also acts as a gateway but the adress is neither 255 nor 0.

                                      Thanks!

                                      AWIA Offline
                                      AWIA Offline
                                      AWI
                                      Hero Member
                                      wrote on last edited by
                                      #33

                                      @NickBuilder I hope you solve your issues with new radio's. I have very little which don't function at all.
                                      The id "0" belongs to your gateway "255" is a kind of broadcast id which is a.o. used when a node number is not known. Both id's are not available for you to assign to a node.

                                      NickBuilderN 1 Reply Last reply
                                      0
                                      • karl261K Offline
                                        karl261K Offline
                                        karl261
                                        wrote on last edited by
                                        #34

                                        For those who need and don't have a display like me, here is my sketch version for output to the serial console. So what I do is, I run around with a laptop connected to the node and watch the serial console, or, I just move around with a tablet and the node. The tablet is connected to my raspi and I watch the output of my gw on the pi using picocom. Picocom handles very well the missing line feeds in the output. The gw output is also very informative, there are no statistics, but still I see when stuff fails...

                                        Thanks for the cool sketch @AWI!

                                        /*
                                         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
                                        // MIN, LOW, HIGH, MAX
                                        #define MY_RF24_PA_LEVEL RF24_PA_LOW
                                        
                                        #define MY_NODE_ID 250
                                        #define NODE_TXT "Q 250"                                // Text to add to sensor name
                                        
                                        #define MY_PARENT_NODE_ID 99                          // fixed parent to controller when 0 (else comment out = AUTO)
                                        #define MY_PARENT_NODE_IS_STATIC
                                        #define MY_BAUD_RATE 9600
                                        
                                        
                                        // #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>  
                                        
                                        
                                        // 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 
                                        
                                        
                                        // standard messages
                                        MyMessage counterMsg(counterChild, V_PERCENTAGE);       // Send value
                                        
                                        
                                        void setup() {
                                        
                                            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) ;
                                            Sprint("Parent: "); Sprint(parent); Sprint("       Fail "); Sprint(failMessageCounter); Sprint("   "); Sprint(getCount(failStore, messageCounterMax)); Sprintln("%");
                                            Sprint("Destination: "); Sprint(DESTINATION_NODE); Sprint("  Miss "); Sprint(missedMessageCounter); Sprint("   "); Sprint(getCount(missedStore, messageCounterMax)); Sprintln("%");
                                        
                                        
                                            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 ;
                                        }
                                        
                                        1 Reply Last reply
                                        2
                                        • Mark SwiftM Offline
                                          Mark SwiftM Offline
                                          Mark Swift
                                          wrote on last edited by
                                          #35

                                          @karl261 I tried your code and it pretty much just gives me failures? I don't have any issues with nodes and tried it out of curiosity, any ideas? It seems to send pretty fast, perhaps its spamming my gateway too much?

                                          karl261K 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          6

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.1k

                                          Posts


                                          Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • MySensors
                                          • OpenHardware.io
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular