4.4 KiB
Контролишите своје ноћно светло преко интернета - Виртуелни IoT хардвер и Raspberry Pi
У овом делу лекције, послаћете телеметрију са нивоима светлости са вашег Raspberry Pi уређаја или виртуелног IoT уређаја на MQTT брокер.
Објављивање телеметрије
Следећи корак је креирање JSON документа са телеметријом и његово слање на MQTT брокер.
Задатак
Објавите телеметрију на MQTT брокеру.
-
Отворите пројекат ноћног светла у VS Code-у.
-
Ако користите виртуелни IoT уређај, уверите се да је терминал покренут у виртуелном окружењу. Ако користите Raspberry Pi, нећете користити виртуелно окружење.
-
Додајте следећи импорт на врх
app.py
датотеке:import json
Библиотека
json
се користи за кодирање телеметрије као JSON документа. -
Додајте следеће након декларације
client_name
:client_telemetry_topic = id + '/telemetry'
client_telemetry_topic
је MQTT тема на коју ће уређај објављивати нивое светлости. -
Замените садржај
while True:
петље на крају датотеке следећим: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)
Овај код пакује ниво светлости у JSON документ и објављује га на MQTT брокеру. Затим прави паузу како би смањио учесталост слања порука.
-
Покрените код на исти начин као што сте покренули код из претходног дела задатка. Ако користите виртуелни IoT уређај, уверите се да је CounterFit апликација покренута и да су сензор светлости и LED креирани на одговарајућим пиновима.
(.venv) ➜ nightlight python app.py MQTT connected! Sending telemetry {"light": 0} Sending telemetry {"light": 0}
💁 Овај код можете пронаћи у code-telemetry/virtual-device фасцикли или у code-telemetry/pi фасцикли.
😀 Успешно сте послали телеметрију са свог уређаја.
Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.