In this part of the lesson, you will send telemetry with light levels from your Raspberry Pi or virtual IoT device to an MQTT broker.
The next step is to create a JSON document with telemetry and send it to the MQTT broker.
Publish telemetry to the MQTT broker.
-
Open the nightlight project in VS Code.
-
If you are using a virtual IoT device, ensure the terminal is running the virtual environment. If you are using a Raspberry Pi you won't be using a virtual environment.
-
Add the following import to the top of the
app.py
file:import json
The
json
library is used to encode the telemetry as a JSON document. -
Add the following after the
client_name
declaration:client_telemetry_topic = id + '/telemetry'
The
client_telemetry_topic
is the MQTT topic the device will publish light levels to. -
Replace the contents of the
while True:
loop at the end of the file with the following:while True: light = light_sensor.light telemetry = json.dumps({'light' : light}) print("Sending telemetry ", telemetry) mqtt_client.publish(client_telemetry_topic, telemetry) time.sleep(5)
This code packages the light level into a JSON document and publishes it to the MQTT broker. It then sleeps to reduce the frequency that messages are sent.
-
Run the code in the same way as you ran the code from the previous part of the assignment. If you are using a virtual IoT device, then make sure the CounterFit app is running and the light sensor and LED have been created on the correct pins.
(.venv) ➜ nightlight python app.py MQTT connected! Sending telemetry {"light": 0} Sending telemetry {"light": 0}
💁 You can find this code in the code-telemetry/virtual-device folder or the code-telemetry/pi folder.
😀 You have successfully sent telemetry from your device.