pytrack GPS coordinate give a failure to lorawan downlink message



  • Hello,

    My System:
    (sysname='LoPy', nodename='LoPy', release='1.8.0.b1', version='v1.8.6-760-g90b72952 on 2017-09-01', machine='LoPy with ESP32', lorawan='1.0.0')
    pytrack fw 0.0.4

    My fault main.py:

    """ OTAA Node example compatible with the LoPy Nano Gateway """

    from network import LoRa
    import socket
    import binascii
    import struct
    import time
    import config
    import time
    import gc
    from machine import Timer
    from L76GNSS import L76GNSS
    from pytrack import Pytrack
    from network import LoRa
    import pycom

    #initialize LoRa in LORAWAN mode.

    lora = LoRa(mode=LoRa.LORAWAN)

    #create an OTA authentication params

    dev_eui = binascii.unhexlify('00 00 00 00 00 00 00 05'.replace(' ',''))
    app_eui = binascii.unhexlify('00 00 00 00 00 00 00 05'.replace(' ',''))
    app_key = binascii.unhexlify('AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA'.replace(' ',''))

    #set the 3 default channels to the same frequency (must be before sending the OTAA join request)

    lora.add_channel(0, frequency=config.LORA_FREQUENCY, dr_min=0, dr_max=5)
    lora.add_channel(1, frequency=config.LORA_FREQUENCY, dr_min=0, dr_max=5)
    lora.add_channel(2, frequency=config.LORA_FREQUENCY, dr_min=0, dr_max=5)

    #join a network using OTAA

    lora.join(activation=LoRa.OTAA, auth=(dev_eui, app_eui, app_key), timeout=0, dr=config.LORA_NODE_DR)

    #pycom.heartbeat(False)

    #wait until the module has joined the network

    while not lora.has_joined():
    time.sleep(2.5)
    print('Not joined yet...')
    print('Joined now')

    #remove all the non-default channels

    for i in range(3, 16):
    lora.remove_channel(i)

    #create a LoRa socket

    s = socket.socket(socket.AF_LORA, socket.SOCK_RAW)

    #set the LoRaWAN data rate

    s.setsockopt(socket.SOL_LORA, socket.SO_DR, config.LORA_NODE_DR)

    #make the socket blocking

    s.setblocking(False)

    time.sleep(5.0)

    #Enable garbage collection

    time.sleep(2)
    gc.enable()

    #Set up GPS with modest timeout

    py = Pytrack()
    l76 = L76GNSS(py, timeout=30)

    chrono = Timer.Chrono()
    chrono.start()

    while True:
    coord = l76.coordinates() ## Gets coordinates
    if not coord == (None, None):
    lat, lon = coord
    print(lat, lon)
    else:
    print("No coordinates found")
    lat="None" chkdsk
    lon="None"
    s.send(b''+str(lat)+','+str(lon)) ## Send last known coordinates
    print("messge sent")
    time.sleep(4)
    rx, port = s.recvfrom(256)
    if rx:
    print('Received: {}, on port: {}'.format(rx, port))
    gc.mem_free()
    time.sleep(6)

    If I comment "coord = l76.coordinates()" line node receive downlink message, otherwise messages remain in server queue and never arrive to node.
    Can anyone help me to solve this problem?

    thanks
    iosman



  • @iosman123 please edit your post and add ``` alone on a line both before or after your code, or use the code feature in the toolbar, so that it gets properly formatted. Indenting is essential in python and it’s impossible to know what your code does exactly without proper formatting.

    Also, do you properly receive uplinks, and what logs do you get (both in the gateway and on the LoPy)?


Log in to reply
 

Pycom on Twitter