Receiving data over MQTT

The Things Network

Connecting to the TTN MQTT broker (eu.thethings.network) using the topic +/devices/+/up, it is possible to receive all the data of the TTN application. For this framework we are specifically interested in the following objects:

  • payload_fields: This wil contain the different sensor fields.
  • dev_id: This is the identifier of the node

Payload fields

The payload_fields object contains different keys with a corresponding value. Using the Ding.js configuration it should be checked which keys should be forwarded to the database. Keys not available in the configuration should be ignored.

Example:

"payload_fields": {
		"humidity": 39,
		"light": 0,
		"motion": 1,
		"temperature": 22.3
	}

Note that the payloads_fields is only available if a payload decoder is set and configured in the TTN console for the application.

Device id

The dev_id is a string object that contains an identifier for the sensor node that has send the data. This should be stored in the database together with the payload field values.

Full TTN example

{
	"app_id": "campus-monitor",
	"dev_id": "sensor-06",
	"hardware_serial": "A81758FFFE04076A",
	"port": 5,
	"counter": 7309,
	"payload_raw": "AQDfAicEAAAFAQ==",
	"payload_fields": {
		"humidity": 39,
		"light": 0,
		"motion": 1,
		"temperature": 22.3
	},
	"metadata": {
		"time": "2019-04-08T18:57:55.026993331Z",
		"frequency": 867.5,
		"modulation": "LORA",
		"data_rate": "SF9BW125",
		"airtime": 205824000,
		"coding_rate": "4/5",
		"gateways": [{
			"gtw_id": "eui-7276ff002e0627a3",
			"timestamp": 724257404,
			"fine_timestamp_encrypted": "FWH7m/uIo03ibn/hyJJoYw==",
			"time": "2019-04-08T18:57:53.954783Z",
			"channel": 18,
			"rssi": -114,
			"snr": -2,
			"rf_chain": 0,
			"latitude": 51.19419,
			"longitude": 3.218,
			"altitude": 34
		}]
	}
}