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. Feature Requests
  3. Option non blocking registration at gateway

Option non blocking registration at gateway

Scheduled Pinned Locked Moved Feature Requests
26 Posts 10 Posters 7.2k Views 8 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.
  • D DavidZH

    @Heizelmann

    I've been thinking about his as well. Probably for different reasons though.

    I find myself with time to spare and my laptop at hand quite often, but I'm not home at those moments. I'd love to be able to write code and test sensors at those times, but that's impossible because there's no gateway.

    For that I'd like to propose a "Test Mode".

    • test port to Transport.
    • NO connection to gateway.
    • simulate the Transport calls in the sketch with just a line in the debug with ACK.
    • when possible: send "messages" to node with the Arduino serial monitor.

    I am aware that this might pose some biiiiiiig changes in the lib. So this might be something for the 2.5 or 3.0 release.
    Thoughts?

    H Offline
    H Offline
    Heizelmann
    wrote on last edited by
    #16

    I am now ready with my node and I need the non-blocking feature urgently. Is there an estimation when this feature will be come or can anyone provide a workaround?

    1 Reply Last reply
    0
    • hekH Offline
      hekH Offline
      hek
      Admin
      wrote on last edited by
      #17

      If you use the development branch and want to prohibit the registration wait. Add

      #define MY_TRANSPORT_WAIT_READY_MS 1
      

      @tekka, correct me if I'm wrong please ;)

      tekkaT 1 Reply Last reply
      0
      • hekH hek

        If you use the development branch and want to prohibit the registration wait. Add

        #define MY_TRANSPORT_WAIT_READY_MS 1
        

        @tekka, correct me if I'm wrong please ;)

        tekkaT Offline
        tekkaT Offline
        tekka
        Admin
        wrote on last edited by
        #18

        @hek correct :+1:
        @Heizelmann Would be good to get some feedback on this feature, please let us know how it works in your hands.

        H eric_smidE 2 Replies Last reply
        1
        • tekkaT tekka

          @hek correct :+1:
          @Heizelmann Would be good to get some feedback on this feature, please let us know how it works in your hands.

          H Offline
          H Offline
          Heizelmann
          wrote on last edited by
          #19

          Here my report after a quick test.

          To say it short: Generally I am happy with it, it works very well. Only one small problem.

          In detail:
          When connection is initially off, the sketch entered after the defined wait the loop.

          before()
          5 TSM:INIT
          7 TSF:WUR:MS=1000
          13 !TSM:INIT:TSP FAIL
          15 TSM:FAIL:CNT=1
          17 TSM:FAIL:PDT
          1008 MCO:BGN:STP
          Setup()
          1510 MCO:BGN:INIT OK,TSP=0
          

          If the sketch tries to send within the loop a message is logged.

          145312 !MCO:SND:NODE NOT REG
          

          If connection comes back the sketch connects to the gateway on the fly within the defined wait time.

          244251 TSM:FPAR:OK
          244252 TSM:ID
          244254 TSM:ID:OK
          244255 TSM:UPL
          244259 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
          244265 TSF:MSG:READ,0-0-42,s=255,c=3,t=25,pt=1,l=1,sg=0:1
          244271 TSF:MSG:PONG RECV,HP=1
          244274 TSM:UPL:OK
          244276 TSM:READY:ID=42,PAR=0,DIS=1
          244281 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
          244288 TSF:MSG:READ,0-0-42,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
          244295 TSF:MSG:SEND,42-42-0-0,s=255,c=0,t=17,pt=0,l=10,sg=0,ft=0,st=OK:2.1.0-beta
          244304 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
          244321 TSF:MSG:READ,0-0-42,s=255,c=3,t=6,pt=0,l=1,sg=0:M
          Presentation()
          244329 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=11,pt=0,l=22,sg=0,ft=0,st=OK:My Node
          244339 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.2
          244347 TSF:MSG:SEND,42-42-0-0,s=1,c=0,t=1,pt=0,l=0,sg=0,ft=0,st=OK:
          244356 TSF:MSG:SEND,42-42-0-0,s=2,c=0,t=1,pt=0,l=0,sg=0,ft=0,st=OK:
          244364 TSF:MSG:SEND,42-42-0-0,s=3,c=0,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
          244370 MCO:REG:REQ
          244373 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
          244380 TSF:MSG:READ,0-0-42,s=255,c=3,t=27,pt=1,l=1,sg=0:1
          244385 MCO:PIM:NODE REG=1
          

          Only problem is that you get high logging traffic in the case when you are in loop and network connection gets lost again as long as the connection is lost.

          605458 TSF:MSG:READ,1-1-1,s=1,c=1,t=1,pt=0,l=0,sg=0:
          605463 !TSF:MSG:LEN,0!=7
          605465 TSF:MSG:READ,1-1-1,s=1,c=1,t=1,pt=0,l=0,sg=0:
          605470 !TSF:MSG:LEN,0!=7
          605472 TSF:MSG:READ,1-1-1,s=1,c=1,t=1,pt=0,l=0,sg=0:
          605477 !TSF:MSG:LEN,0!=7
          ...
          
          tekkaT 1 Reply Last reply
          0
          • H Heizelmann

            Here my report after a quick test.

            To say it short: Generally I am happy with it, it works very well. Only one small problem.

            In detail:
            When connection is initially off, the sketch entered after the defined wait the loop.

            before()
            5 TSM:INIT
            7 TSF:WUR:MS=1000
            13 !TSM:INIT:TSP FAIL
            15 TSM:FAIL:CNT=1
            17 TSM:FAIL:PDT
            1008 MCO:BGN:STP
            Setup()
            1510 MCO:BGN:INIT OK,TSP=0
            

            If the sketch tries to send within the loop a message is logged.

            145312 !MCO:SND:NODE NOT REG
            

            If connection comes back the sketch connects to the gateway on the fly within the defined wait time.

            244251 TSM:FPAR:OK
            244252 TSM:ID
            244254 TSM:ID:OK
            244255 TSM:UPL
            244259 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
            244265 TSF:MSG:READ,0-0-42,s=255,c=3,t=25,pt=1,l=1,sg=0:1
            244271 TSF:MSG:PONG RECV,HP=1
            244274 TSM:UPL:OK
            244276 TSM:READY:ID=42,PAR=0,DIS=1
            244281 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
            244288 TSF:MSG:READ,0-0-42,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
            244295 TSF:MSG:SEND,42-42-0-0,s=255,c=0,t=17,pt=0,l=10,sg=0,ft=0,st=OK:2.1.0-beta
            244304 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
            244321 TSF:MSG:READ,0-0-42,s=255,c=3,t=6,pt=0,l=1,sg=0:M
            Presentation()
            244329 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=11,pt=0,l=22,sg=0,ft=0,st=OK:My Node
            244339 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.2
            244347 TSF:MSG:SEND,42-42-0-0,s=1,c=0,t=1,pt=0,l=0,sg=0,ft=0,st=OK:
            244356 TSF:MSG:SEND,42-42-0-0,s=2,c=0,t=1,pt=0,l=0,sg=0,ft=0,st=OK:
            244364 TSF:MSG:SEND,42-42-0-0,s=3,c=0,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
            244370 MCO:REG:REQ
            244373 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
            244380 TSF:MSG:READ,0-0-42,s=255,c=3,t=27,pt=1,l=1,sg=0:1
            244385 MCO:PIM:NODE REG=1
            

            Only problem is that you get high logging traffic in the case when you are in loop and network connection gets lost again as long as the connection is lost.

            605458 TSF:MSG:READ,1-1-1,s=1,c=1,t=1,pt=0,l=0,sg=0:
            605463 !TSF:MSG:LEN,0!=7
            605465 TSF:MSG:READ,1-1-1,s=1,c=1,t=1,pt=0,l=0,sg=0:
            605470 !TSF:MSG:LEN,0!=7
            605472 TSF:MSG:READ,1-1-1,s=1,c=1,t=1,pt=0,l=0,sg=0:
            605477 !TSF:MSG:LEN,0!=7
            ...
            
            tekkaT Offline
            tekkaT Offline
            tekka
            Admin
            wrote on last edited by tekka
            #20

            @Heizelmann Thanks for your testing. I couldn't reproduce this behavior, can you post your sketch for further analysis?

            H 1 Reply Last reply
            0
            • tekkaT tekka

              @Heizelmann Thanks for your testing. I couldn't reproduce this behavior, can you post your sketch for further analysis?

              H Offline
              H Offline
              Heizelmann
              wrote on last edited by Heizelmann
              #21

              @tekka May be it is the kind of my testing. For getting quick results I simply plug and un-plug the radio module (NRF24L01+) from the socket in my sensor node. I know, this is not a real use case but it was easy and I didn't thought there is adifference in behaviour. How do you you switch off and on the network connection in your test?

              tekkaT 1 Reply Last reply
              0
              • H Heizelmann

                @tekka May be it is the kind of my testing. For getting quick results I simply plug and un-plug the radio module (NRF24L01+) from the socket in my sensor node. I know, this is not a real use case but it was easy and I didn't thought there is adifference in behaviour. How do you you switch off and on the network connection in your test?

                tekkaT Offline
                tekkaT Offline
                tekka
                Admin
                wrote on last edited by
                #22

                @Heizelmann yes, unplugging the radio results in what you observed. Simply unplug the GW (and repeaters)...

                H 1 Reply Last reply
                0
                • tekkaT tekka

                  @Heizelmann yes, unplugging the radio results in what you observed. Simply unplug the GW (and repeaters)...

                  H Offline
                  H Offline
                  Heizelmann
                  wrote on last edited by Heizelmann
                  #23

                  @tekka OK unplugging the GW leads to a different behaviour.
                  First the node didn't detect the failure as long it is not trying to send.
                  When it tries to send it fails

                  131268 !TSF:MSG:SEND,42-42-0-0,s=1,c=1,t=16,pt=0,l=1,sg=0,ft=0,st=NACK:1
                  

                  and after some more failure this

                  238494 !TSM:READY:UPL FAIL,SNP
                  238497 TSM:FPAR
                  238534 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=6,st=OK:
                  238995 !TSF:SND:TNR
                  240002 !TSF:SND:TNR
                  240542 !TSM:FPAR:NO REPLY
                  240544 TSM:FPAR
                  240581 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                  246683 !TSM:FPAR:FAIL
                  246685 TSM:FAIL:CNT=1
                  246687 TSM:FAIL:PDT
                  

                  and after a while mostly only

                  609748 !TSF:SND:TNR
                  

                  When gateway comes back a proper reinitialization takes place:

                  620572 TSM:FAIL:RE-INIT
                  620574 TSM:INIT
                  620581 TSM:INIT:TSP OK
                  620583 TSM:INIT:STATID=42
                  620587 TSF:SID:OK,ID=42
                  620589 TSM:FPAR
                  620625 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                  Current: 0.00
                  0:0:0
                  Current: 0.00
                  0:0:0
                  621443 TSF:MSG:READ,0-0-42,s=255,c=3,t=8,pt=1,l=1,sg=0:0
                  621448 TSF:MSG:FPAR OK,ID=0,D=1
                  Current: 0.00
                  0:0:0
                  Current: 0.00
                  0:0:0
                  622633 TSM:FPAR:OK
                  622635 TSM:ID
                  622637 TSM:ID:OK
                  622638 TSM:UPL
                  622642 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
                  622652 TSF:MSG:READ,0-0-42,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                  622657 TSF:MSG:PONG RECV,HP=1
                  622660 TSM:UPL:OK
                  622662 TSM:READY:ID=42,PAR=0,DIS=1
                  

                  From now the sensor can send again without errors. :smiley:
                  So far my tests.
                  Except the case where the radio of the sensor went off and causes a lot of logging all test cases where satisfactorily.
                  I think this is really an edge case and not so serious.
                  From this point of view I would welcome that this beta development version will be published.

                  1 Reply Last reply
                  3
                  • tekkaT tekka

                    @hek correct :+1:
                    @Heizelmann Would be good to get some feedback on this feature, please let us know how it works in your hands.

                    eric_smidE Offline
                    eric_smidE Offline
                    eric_smid
                    wrote on last edited by
                    #24

                    I tested my node with the "#define MY_TRANSPORT_WAIT_READY_MS 1" feature.
                    It seems to work fine!
                    Tnx for the work.

                    1 Reply Last reply
                    2
                    • H Offline
                      H Offline
                      Heizelmann
                      wrote on last edited by
                      #25

                      I detected another problem. From debug log it looks like the loop() function starts before initialization is finished. This can cause problems when trying to send data in loop() very early.

                      Here a log example:

                      0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.0-beta
                      4 MCO:BGN:BFR
                      
                      5 before() begin
                      5 before() end
                      
                      5 TSM:INIT
                      9 TSF:WUR:MS=1000
                      16 TSM:INIT:TSP OK
                      17 TSM:INIT:STATID=42
                      20 TSF:SID:OK,ID=42
                      21 TSM:FPAR
                      58 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                      651 TSF:MSG:READ,0-0-42,s=255,c=3,t=8,pt=1,l=1,sg=0:0
                      656 TSF:MSG:FPAR OK,ID=0,D=1
                      1010 MCO:BGN:STP
                      
                      1011 Setup() begin
                      1512 Setup() end
                      
                      1512 MCO:BGN:INIT OK,TSP=0
                      
                      1516 loop() begin
                      2017 loop() end
                      
                      2017 loop() begin
                      
                      2065 TSM:FPAR:OK
                      2066 TSM:ID
                      2067 TSM:ID:OK
                      2069 TSM:UPL
                      2072 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
                      2078 TSF:MSG:READ,0-0-42,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                      2083 TSF:MSG:PONG RECV,HP=1
                      2086 TSM:UPL:OK
                      2087 TSM:READY:ID=42,PAR=0,DIS=1
                      2093 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                      2100 TSF:MSG:READ,0-0-42,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                      2107 TSF:MSG:SEND,42-42-0-0,s=255,c=0,t=17,pt=0,l=10,sg=0,ft=0,st=OK:2.1.0-beta
                      2116 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
                      2126 TSF:MSG:READ,0-0-42,s=255,c=3,t=6,pt=0,l=1,sg=0:M
                      
                      2131 Presentation() begin
                      2135 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=11,pt=0,l=22,sg=0,ft=0,st=OK:Sink Pump Control Node
                      2145 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.2
                      2153 TSF:MSG:SEND,42-42-0-0,s=1,c=0,t=1,pt=0,l=0,sg=0,ft=0,st=OK:
                      2161 TSF:MSG:SEND,42-42-0-0,s=2,c=0,t=1,pt=0,l=0,sg=0,ft=0,st=OK:
                      2168 TSF:MSG:SEND,42-42-0-0,s=3,c=0,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
                      2174 Presentation() end
                      
                      2176 MCO:REG:REQ
                      2181 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                      2187 TSF:MSG:READ,0-0-42,s=255,c=3,t=27,pt=1,l=1,sg=0:1
                      2192 MCO:PIM:NODE REG=1
                      
                      2518 loop() end
                      
                      2518 loop() begin
                       ...
                      
                      tekkaT 1 Reply Last reply
                      0
                      • H Heizelmann

                        I detected another problem. From debug log it looks like the loop() function starts before initialization is finished. This can cause problems when trying to send data in loop() very early.

                        Here a log example:

                        0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.0-beta
                        4 MCO:BGN:BFR
                        
                        5 before() begin
                        5 before() end
                        
                        5 TSM:INIT
                        9 TSF:WUR:MS=1000
                        16 TSM:INIT:TSP OK
                        17 TSM:INIT:STATID=42
                        20 TSF:SID:OK,ID=42
                        21 TSM:FPAR
                        58 TSF:MSG:SEND,42-42-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                        651 TSF:MSG:READ,0-0-42,s=255,c=3,t=8,pt=1,l=1,sg=0:0
                        656 TSF:MSG:FPAR OK,ID=0,D=1
                        1010 MCO:BGN:STP
                        
                        1011 Setup() begin
                        1512 Setup() end
                        
                        1512 MCO:BGN:INIT OK,TSP=0
                        
                        1516 loop() begin
                        2017 loop() end
                        
                        2017 loop() begin
                        
                        2065 TSM:FPAR:OK
                        2066 TSM:ID
                        2067 TSM:ID:OK
                        2069 TSM:UPL
                        2072 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
                        2078 TSF:MSG:READ,0-0-42,s=255,c=3,t=25,pt=1,l=1,sg=0:1
                        2083 TSF:MSG:PONG RECV,HP=1
                        2086 TSM:UPL:OK
                        2087 TSM:READY:ID=42,PAR=0,DIS=1
                        2093 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
                        2100 TSF:MSG:READ,0-0-42,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                        2107 TSF:MSG:SEND,42-42-0-0,s=255,c=0,t=17,pt=0,l=10,sg=0,ft=0,st=OK:2.1.0-beta
                        2116 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
                        2126 TSF:MSG:READ,0-0-42,s=255,c=3,t=6,pt=0,l=1,sg=0:M
                        
                        2131 Presentation() begin
                        2135 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=11,pt=0,l=22,sg=0,ft=0,st=OK:Sink Pump Control Node
                        2145 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.2
                        2153 TSF:MSG:SEND,42-42-0-0,s=1,c=0,t=1,pt=0,l=0,sg=0,ft=0,st=OK:
                        2161 TSF:MSG:SEND,42-42-0-0,s=2,c=0,t=1,pt=0,l=0,sg=0,ft=0,st=OK:
                        2168 TSF:MSG:SEND,42-42-0-0,s=3,c=0,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
                        2174 Presentation() end
                        
                        2176 MCO:REG:REQ
                        2181 TSF:MSG:SEND,42-42-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
                        2187 TSF:MSG:READ,0-0-42,s=255,c=3,t=27,pt=1,l=1,sg=0:1
                        2192 MCO:PIM:NODE REG=1
                        
                        2518 loop() end
                        
                        2518 loop() begin
                         ...
                        
                        tekkaT Offline
                        tekkaT Offline
                        tekka
                        Admin
                        wrote on last edited by
                        #26

                        @Heizelmann I'm not sure I understood your concern.

                        Initialization is finished here, right before the main loop is entered:

                        1512 MCO:BGN:INIT OK,TSP=0
                        

                        Since your timeout is set to 1sec (which obviously is too short to fully establish the transport link) the node will enter the main loop() after the timeout. However, since the link is not established, only init messages are sent at that point (i.e. library init, signing preferences, presentation). Sensor data will not be sent until the node is registered.

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


                        14

                        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