Alex's Corner - Week 3 - LoPy LoRaWAN Nano-Gateway & TTN



  • @PiAir

    @bucknall

    Hi,
    I'm in exactly the same situation, latest firmware and so on.
    After watching the video, I set up my lopy to act as a nano gateway and thanks to your post, I created a packet forwarder gateway at TTN in stead of the gateway connector. I actually tried both of them.
    No success.
    At this moment I have a packet forwarder gateway, but I'm wondering whether I should choose a router.
    In the video, Alex doesn't choose a router when he adds the gateway, but later on you see the "router.eu.thethings.network" on the pre configured gateway. I wonder where that one comes from.
    I know it's the same one as in the config.py file, but should I enter this one while adding the gateway at TTN or not?
    It looks like the script is running; I get the push ack's and pull ack's, but no connection with TTN
    At the TTN console, I get messages like: "could not subscribe to gateway status. NOC connection timed out" and "Status not connected".

    Is this going to work?
    I really need a gateway, because there isn't one in my vicinity.



  • @bucknall Hi Alex,

    Thanks, that would be much appreciated. I understand that stuff related to the TTN backend is out of your control but anything that can make it more clear were the problem lies would be great!

    Cheers,

    Pierre



  • Hi @PiAir, I completely understand your frustration.

    I was actually having concerns about calling off the demo as TTN was throwing some strange errors relating to viewing the gateway traffic. I believe they're making some changes as to how packet forwarding is working and that the gateway traffic feature is still under heavy development.

    Looking back over the video, I see where the error was coming from; I'd accidentally selected Gateway Connector, under the protocol -

    0_1490948082059_Screen Shot 2017-03-31 at 09.14.07.png

    It should be Packet Forwarder and this was producing errors with the manner in which the nano-gateway connected to TTN.

    --

    What I will aim to do is to tidy up the example we have on the documentation and produce a step by step (with screenshots) as to how you can set up your nano-gateway.

    I'll also modify Daniel's code to add a debug output that will hopefully make it easier to troubleshoot on the nano-gateway's side.

    Apologies for the issues you've been running into, hopefully we can get them fixed shortly!

    Cheers,

    Alex



  • I am afraid that I just don't get it to work as expected.

    First of all: in de video Alex creates a gateway connector. Because that one doesn't connect, he goes back to one he has already setup, but that (judging by the ID) is a packet forwarder. So which one should we use?

    I tried the setup for both options, same result.

    My LoPy has the most recent firmware installed:
    MicroPython v1.8.6-535-g84855b2b on 2017-03-24; LoPy with ESP32
    (sysname='LoPy', nodename='LoPy', release='1.6.9.b1', version='v1.8.6-535-g84855b2b on 2017-03-24', machine='LoPy with ESP32', lorawan='1.0.0')

    It connects to my WiFi network without a problem (I can check because I can connect both over serial and over Wifi).

    The only messages I got are:

    Pull ack
    Pull ack
    Pull ack
    Pull ack
    Pull ack
    Pull ack
    Push ack
    Push ack
    Pull ack
    Pull ack
    Pull ack
    Push ack
    Pull ack
    Push ack
    Pull ack
    Push ack
    Pull ack
    Pull ack
    Push ack
    Push ack
    Pull ack
    Pull ack
    Pull ack
    Push ack

    etc.

    Sometimes it trowed an:
    W (83966) wifi: post pm rx bcn failed

    However, the console showed "not connected" consistently. It never succeeded to connect.
    I created a LoPy node, had no result either. I had a Marvin based node close by, did not connect via the gateway either.

    SUCCESS??
    Then suddenly, after about 3 hours of testing without result, packets started arriving, but the gateway still showed as not connected (as never having connected yet). I gave up and called it a night.

    NOPE
    This morning when I got up, the TTN console showed the Gateway (I ended up with the Packet forwarder because Alex had two of those that appeared to be connected in his setup) very much online with signal coming in every 3 second.
    The two nodes are also shown as online, but as in "6 hours ago". No data is coming in anymore, not visible in the console, but also not via the API, if I look a the application.

    If I look at the LoPy gateway, it appears to still be receiving data from the LoPy node, but TTN is ignoring it?

    In the end, the video did not really help, it did show that Alex had the same problems as the rest of us: he followed the steps that should lead to a working setup, failed.
    But during the video, like magic, he had a previously prepared setup that worked without really explaining why that one worked and the other one didn't. I don't have that magic here.
    Don't get me wrong, I really appreciate the effort, but either the LoPy is still not doing what it should do, or TTN is still to beta, but for someone that doesn't know the ins and outs of both, this still is impossible to get up and running reliably.

    My question would be: can you make the gateway + node code more robust, or show us where to add debug information? So that I at least get a better idea of where to look for problems. Thanks!



  • Hi @rdixey,

    That's definitely a good point! I shall draw up some clarity for best practices with LoraWAN packets - Not sure where I'll post it to but this could be useful both here on the forum and up on the documentation!

    Regarding frozen code, I haven't tested it myself yet; I'll aim to try it out either tomorrow or early next week and look to do a livestream focused on the topic!

    Cheers!

    Alex



  • Good Explanation of the code and Demo. Now I feel informed enough to migrate from LoRa Nano gateway to the LoRaWAN Nano-Gateway. In regard to future webinar topics I have two suggestions that I could use some expert guidance on.

    • It looks like the LoRaWAN Nano-Gateway code will fail if transmit exceeding 256 bytes. Could you demo some strategies of Python code for keeping data within LoRa payload requirements? Currently I gather up sensor data on the node and store in a dict{}, then convert dict{} to byte(), then lora_sock.send(data). After adding sensors I quickly exceed the Lora max payload lora_sock.recv(256). I've been working on splitting the dict{} to keep under payload max, but wonder if there may be a more efficient way?

    • Demo how to build firmware / frozen code based on capabilities of release 1.6.9.b1. I have been following the instructions here: https://github.com/pycom/pycom-micropython-sigfox/blob/master/esp32/README.md but have not yet succeed at creating a working build.


 

Pycom on Twitter