Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    Multiple JOIN

    Scheduled Pinned Locked Moved LoPy
    lorajoinnvramsavelorawan
    13 Posts 4 Posters 2.5k Views 4 Watching
    Loading More Posts
    • 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.
    • E Offline
      Eric24 @jmarcelino
      last edited by

      @jmarcelino - I don't think roaming solves this. @brunoS question is about redundancy, I think, not just the ability to move between networks. I think it's a potentially useful application.

      J 1 Reply Last reply Reply Quote 0
      • J Offline
        jmarcelino @Eric24
        last edited by jmarcelino

        @eric24
        Using Passive Roaming the serving (original) Network Server can accept roaming from multiple networks for the same node, effectively providing redundancy (say if TTN has a passive roaming agreement with Objenius and the node only has Objenius coverage TTN would still get the data, just forwarded from Objenius)

        The type of roaming is now standardised by the LoRa Alliance (LoRaWAN Backend Interfaces 1.0 Specification) and works for both ABP and OTAA as long as the network support it. It happens automatically without changes to the node, the packets are forwarded based on the NetID.

        E 1 Reply Last reply Reply Quote 0
        • E Offline
          Eric24 @jmarcelino
          last edited by

          @jmarcelino Right, but I don't think that's the same thing. From my understanding of @brunoS objective, he wants to actively send the same message to two different physically-overlapping networks (not have one message forwarded from one network to another). The kind of redundancy you're talking about is that one network doesn't happen to receive a message, but forwards it to the device's "home network". The kind of redundancy I think @brunoS is talking about is actually sending out two messages, each being (potentially) received by a separate network.

          J 1 Reply Last reply Reply Quote 0
          • J Offline
            jmarcelino @Eric24
            last edited by jmarcelino

            @eric24
            With passive roaming both networks would receive the same one message - it doesn't matter if the networks are physically overlapping or not. The serving network can receive the message from its own connected gateways and also forwarded from the "roaming" network.

            The advantage is you don't need to send the same message twice or register the node (and your application) with the (potentially many) "visiting" networks.

            You may be thinking of handover roaming which is very different.

            E 1 Reply Last reply Reply Quote 0
            • E Offline
              Eric24 @jmarcelino
              last edited by

              @jmarcelino I'm actually not thinking about roaming at all (nor do I think @brunoS is either). Unless I'm missing @brunoS intent, he is not trying to "keep from sending the same message twice". He wants to do this, to ensure that at least one message is received by at least one of the networks.

              J 1 Reply Last reply Reply Quote 0
              • J Offline
                jmarcelino @Eric24
                last edited by jmarcelino

                @eric24
                Sending essentially duplicate packets is neither efficient - you're using twice the airtime and power for every message - nor secure since it becomes easier to guess the information.

                Also @brunoS's example shows the LoPy configured as Class C, but it's not possible to support two networks' RX parameters simultaneously (just imagine the networks use different downlink frequencies - or a different spreading factor from the "standard" as TTN does - what would the node do?)

                That's why I feel passive roaming is the correct approach.

                1 Reply Last reply Reply Quote 0
                • B Offline
                  brunoS
                  last edited by

                  Thank you for all your answers.
                  I bring a few details:
                  I am designing a LoraWan-based GPS tracker (class A unlike the code) (lopy + pytrack) for a strotospheric balloon.
                  The main Lorawan network is Objenious (only OTAA) but this one does not have a 100% coverage!
                  So I want to implement a redundancy to also send the UPLINKs to a TTN mobile gateway to locate the balloon fallout if Objenious does not cover the landing zone.

                  So I plan to periodically sleep the embedded system and wake up joining each Lorawan network to send the position through each one.

                  J 1 Reply Last reply Reply Quote 0
                  • J Offline
                    jmarcelino @brunoS
                    last edited by

                    @brunos
                    Since TTN is really just a backup and it looks like the data isn't too safety/ critical, I'd suggest keeping Objenious as your OTAA network (which you use with nvram_save and _restore) and then rejoin as ABP to send to TTN (but then don't save)

                    When you're done sending to TTN, do a nvram_restore to get back to Objenious.

                    In TTN settings for the node disable "Frame Counter Checks" so you don't need to care about storing the frame counters - if I understand correctly other people being able to replay your data isn't a big issue here.

                    This should save a lot of headaches with doing repeated re-joins.

                    B 1 Reply Last reply Reply Quote 0
                    • B Offline
                      brunoS @jmarcelino
                      last edited by brunoS

                      @jmarcelino

                      Thank you for the advice I will follow.
                      I'm trying to use the lora.nvram_save () and lora.nvram_restore () with deepsleep() but without success.
                      Here is a snippet of my code:

                      lora = LoRa (mode = LoRa.LORAWAN, device_class = LoRa.CLASS_A, adr = False)
                      lora.nvram_restore ()
                      if lora.has_joined () == False:
                          lora.join (activation = LoRa.OTAA, auth = (app_eui, app_key), timeout = 0, dr = 0)
                          while not lora.has_joined ():
                                 time.sleep (2.5)
                                 print ('Not yet joined ...')
                      
                      s = socket.socket (socket.AF_LORA, socket.SOCK_RAW)
                      s.setblocking (False)
                      s.send (message.encode ())
                      
                      lora.nvram_save ()
                      machine.deepsleep (10000)
                      

                      lora.join () is only done once, so there is backup and restore of the OTTA context, but the UPLINK counter remains stuck at 1. I tested with TTN and Objenious.

                      What am I doing wrong?

                      Thanks

                      B 1 Reply Last reply Reply Quote 0
                      • B Offline
                        brunoS @brunoS
                        last edited by

                        @brunos !
                        With s.setblocking (True) before s.send(), it's OK !!

                        1 Reply Last reply Reply Quote 0

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        • 1 / 1
                        • First post
                          Last post

                        Pycom on Twitter

                        Pycom