Update page 'Message Queue Endpoint'

master
Auke Sytsma 2020-03-01 11:49:06 +00:00
parent 91d42601bf
commit 0a5517d7e7
1 changed files with 13 additions and 12 deletions

View File

@ -58,30 +58,29 @@ First, we will create a MQTT client to connect to the FarmMaps MQTT broker:
from farmmaps import mqtt
#MQTT connection settings
CLIENT_ID = 'trekkerdata'
USER = "trekkerdata"
CLIENT_ID = '<your client id>'
USER = "<your username>"
PWD = "<your password here>"
HOST = "farmmaps.awtest.nl"
HOST = "farmmaps.awacc.nl"
PORT = 1883
KEEPALIVE = 60
TOPIC = "trekkerdata/sensors"
TOPIC = "<company-name>/<topic-name>"
#set up MQTT client
mqtt_client = mqtt.create_client(CLIENT_ID, USER, PWD, HOST, PORT, KEEPALIVE)
```
### Example: Pushing Live Tractor Data
To create messages and connect to the broker we will need the following settings:
#### Preparing your data as a protobuf message
### Preparing your data as a protobuf message
Farmmaps uses protobuf to specify a structure for the messages published in MQTT.
Protobuf provides a fast way of serializing and unserializing objects, reducing bandwith usage.
More information on protobuf can be found at [Google Developer Documentation](https://developers.google.com/protocol-buffers/docs/overview).
Python objects can easily be converted to protobuf messages and back (when recieving messages from the broker).
The message structure for the data can be found in `farmmaps/farmmaps.proto`, and is shown below:
The message structure for the data can be found in `farmmaps/farmmaps.proto`, and is shown below.
The main message is the Datapoint object, containing time, location, machine-id and a reference to metadata.
Then, there is a `sensors` parameter, which holds a dictionary of `SensorType` objects.
Each `SensorType` holds a key and a value, where the key identifies the Sensortype, and the value is the value of the sensor.
Finally, there's an optional `metadata_url` parameter that specifies where FarmMaps can get metadata.
This is data that specifies how the values for each sensortype are to be interpreted.
```
syntax = "proto2";
@ -154,6 +153,8 @@ for key, value in sensordata.items():
In case you want to modify the structure of the object, the `.proto` can be modified, and the python module needs to be regenerated.
For now, we'll stick with the pregenerated protobuf class: `
### Example: Pushing Live Tractor Data
To create messages and connect to the broker we will need the following settings: