发布温度 - Wio Terminal 在本课程的这一部分中,你将通过MQTT发布Wio Terminal检测到的温度值,以便稍后用于计算GDD。 发布温度 一旦读取了温度,就可以通过MQTT将其发布到某个“服务器”代码,该代码会读取这些值并准备好进行GDD计算。微控制器默认情况下不会从互联网读取时间并使用实时时钟跟踪时间,因此需要编程设备以实现这一点,假设它具有必要的硬件。 为了简化本课程的内容,时间不会随传感器数据一起发送,而是可以在服务器代码接收到消息时稍后添加。 任务 编写程序以发布温度数据。 打开 Wio Terminal项目 重复你在第4课中连接到MQTT并发送遥测数据的步骤,你将使用相同的公共Mosquitto代理。
在本课程的这一部分中,你将通过MQTT发布Wio Terminal检测到的温度值,以便稍后用于计算GDD。
一旦读取了温度,就可以通过MQTT将其发布到某个“服务器”代码,该代码会读取这些值并准备好进行GDD计算。微控制器默认情况下不会从互联网读取时间并使用实时时钟跟踪时间,因此需要编程设备以实现这一点,假设它具有必要的硬件。
为了简化本课程的内容,时间不会随传感器数据一起发送,而是可以在服务器代码接收到消息时稍后添加。
编写程序以发布温度数据。
打开 temperature-sensor Wio Terminal项目
重复你在第4课中连接到MQTT并发送遥测数据的步骤,你将使用相同的公共Mosquitto代理。
这些步骤如下:
.ini 文件中⚠️ 如果需要,请参阅连接到MQTT的说明和发送遥测数据的说明。
确保 CLIENT_NAME 在 config.h 头文件中反映此项目:
const string CLIENT_NAME = ID + "temperature_sensor_client";
对于遥测数据,不要发送光值,而是在JSON文档中的名为temperature的属性中发送从DHT传感器读取的温度值:
float temp_hum_val[2] = {0}; dht.readTempAndHumidity(temp_hum_val); DynamicJsonDocument doc(1024); doc["temperature"] = temp_hum_val[1];
温度值不需要频繁读取——在短时间内它不会变化太多,因此将 delay 函数设置为10分钟:
delay(10 * 60 * 1000);
delay函数接受以毫秒为单位的时间,为了便于阅读,传递的是一个计算结果。一秒有1000毫秒,一分钟有60秒,所以10 x (每分钟60秒) x (每秒1000毫秒) 给出了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 文件夹中找到此代码。
你已成功地将温度作为设备的遥测数据发布。
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。