6.4 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.
😀 Успешно публикувахте температурата като телеметрия от вашето устройство.
Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.