TTN – The Things Network
https://www.thethingsnetwork.org/
Our LoRaWAN sensors use the service of The Things Network. So our LoRaWAN gateway sends the sensor data to the TTN server. The sensors are registered with an ‘application id’ and a ‘device id’.
https://console.thethingsnetwork.org/
Now I want to receive the data on my PC. The TTN server allows to use MQTT.
https://www.thethingsnetwork.org/docs/applications/mqtt/quick-start.html
Note: Currently only the up-topic is working and get the data in JSON format.
https://status.thethings.network/
mosquitto – https://mosquitto.org/
Please read the base information on
https://www.thethingsnetwork.org/docs/applications/mqtt/quick-start.html
We want to subscribe using TLS. The access schema seems to be a little bit different. In our case only with the option ‘-L’ it was possible to switch to TLS communication:
mosquitto_sub.exe -L mqtts://<AppID>:<AppKey>@<region>.thethings.network:8883/+/devices/+/up –cafile mqtt-ca.pem
We receive
{ "app_id":"stm32_example_usi_expansion_board", "dev_id":"sensor-ro-20200522", "hardware_serial":"E24F43FFFE44C1EF", "port":99,"counter":605, "payload_raw":"AHMnSwFnARYCaFADAGQEAQAFAdc=", "payload_fields":{ "barometric_pressure_0":1005.9, "digital_in_3":100, "digital_out_4":0, "digital_out_5":215, "relative_humidity_2":40, "temperature_1":27.8 }, "metadata":{ "time":"2020-07-03T14:02:59.272943586Z", "frequency":868.1, "modulation":"LORA", "data_rate":"SF9BW125", "airtime":246784000, "coding_rate":"4/5", "gateways":[ { "gtw_id":"eui-3133303735005600", "timestamp":920207212, "time":"", "channel":0, "rssi":-44, "snr":11.75, "rf_chain":0 } ] } }
Python
Our solution is based on the package paho-mqtt.
https://pypi.org/project/paho-mqtt/
At the first you have to install it to your python environment. Possible you have to update your paket manager at the first.
example Win10: (of course python should be installed already)
cd Python37-32 python -m pip install --upgrade pip cd scripts pip install paho-mqtt
Now start the python shell – IDLE (Python 3.7 32-bit)
Load/create the small script mqtt.py. It print the sensor value temperature.
import paho.mqtt.client as mqtt import json # The callback for when the client receives a CONNACK response from the server. def on_connect(client, userdata, flags, rc): print('Connected with result code '+str(rc)) client.subscribe('+/devices/+/up') # The callback for when a PUBLISH message is received from the server. def on_message(client, userdata, msg): ergebnis = json.loads(msg.payload) values = ergebnis['payload_fields'] print(values['temperature_1']) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.tls_set() client.username_pw_set('AppId',password='AppKey') client.connect('eu.thethings.network', 8883, 60) client.loop_forever()
Of course you have to configure your AppId and AppKey.
Output:
Connected with result code 0 27.9 27.9 27.9 27.9 27.8 27.9 27.8 27.8 27.8 27.8 27.8