6.1 KiB
Објављивање температуре - Wio Terminal
У овом делу лекције, објавићете вредности температуре које Wio Terminal детектује преко MQTT-а, како би касније могле да се користе за израчунавање GDD.
Објављивање температуре
Када се температура очита, може се објавити преко MQTT-а неком 'серверском' коду који ће читати вредности и чувати их, спремне за употребу у израчунавању GDD. Микроконтролери не читају време са интернета и не прате време помоћу реалног временског сата у основној конфигурацији, уређај мора бити програмиран да то ради, под условом да има потребан хардвер.
Да би ствари биле једноставније за ову лекцију, време неће бити послато са подацима сензора, већ га серверски код може додати касније када прими поруке.
Задатак
Програмирајте уређај да објављује податке о температури.
-
Отворите пројекат
temperature-sensor
за Wio Terminal. -
Поновите кораке које сте радили у лекцији 4 да се повежете на MQTT и пошаљете телеметрију. Користићете исти јавни Mosquitto брокер.
Кораци за ово су:
- Додајте Seeed WiFi и MQTT библиотеке у
.ini
датотеку - Додајте конфигурациону датотеку и код за повезивање на WiFi
- Додајте код за повезивање на MQTT брокер
- Додајте код за објављивање телеметрије
⚠️ Погледајте упутства за повезивање на MQTT и упутства за слање телеметрије из лекције 4 ако је потребно.
- Додајте Seeed WiFi и MQTT библиотеке у
-
Уверите се да
CLIENT_NAME
у заглавној датотециconfig.h
одражава овај пројекат:const string CLIENT_NAME = ID + "temperature_sensor_client";
-
За телеметрију, уместо да шаљете вредност светлости, пошаљите вредност температуре очитану са DHT сензора у својству JSON документа названом
temperature
тако што ћете променити функцијуloop
уmain.cpp
:float temp_hum_val[2] = {0}; dht.readTempAndHumidity(temp_hum_val); DynamicJsonDocument doc(1024); doc["temperature"] = temp_hum_val[1];
-
Вредност температуре не треба да се очитава често - неће се много мењати у кратком временском периоду, па поставите
delay
у функцијиloop
на 10 минута:delay(10 * 60 * 1000);
💁 Функција
delay
узима време у милисекундама, па је ради лакшег читања вредност прослеђена као резултат израчунавања. 1.000ms у секунди, 60s у минуту, па 10 x (60s у минуту) x (1000ms у секунди) даје кашњење од 10 минута. -
Отпремите ово на ваш Wio Terminal и користите серијски монитор да видите како се температура шаље на MQTT брокер.
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- Connecting to WiFi.. Connected! Attempting MQTT connection...connected Sending telemetry {"temperature":25} Sending telemetry {"temperature":25}
💁 Овај код можете пронаћи у фасцикли code-publish-temperature/wio-terminal.
😀 Успешно сте објавили температуру као телеметрију са вашег уређаја.
Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако се трудимо да превод буде тачан, молимо вас да имате у виду да аутоматизовани преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода.