5.1 KiB
Xuất bản nhiệt độ - Wio Terminal
Trong phần này của bài học, bạn sẽ xuất bản giá trị nhiệt độ được Wio Terminal phát hiện qua MQTT để sau này có thể sử dụng để tính toán GDD.
Xuất bản nhiệt độ
Khi nhiệt độ đã được đọc, nó có thể được xuất bản qua MQTT đến một đoạn mã 'máy chủ' sẽ đọc các giá trị và lưu trữ chúng để sẵn sàng sử dụng cho việc tính toán GDD. Vi điều khiển không tự động đọc thời gian từ Internet và theo dõi thời gian bằng đồng hồ thời gian thực, thiết bị cần được lập trình để làm điều này, với điều kiện nó có phần cứng cần thiết.
Để đơn giản hóa mọi thứ trong bài học này, thời gian sẽ không được gửi cùng với dữ liệu cảm biến, thay vào đó nó có thể được thêm vào bởi mã máy chủ sau khi nhận được các tin nhắn.
Nhiệm vụ
Lập trình thiết bị để xuất bản dữ liệu nhiệt độ.
-
Mở dự án
temperature-sensor
trên Wio Terminal. -
Lặp lại các bước bạn đã thực hiện trong bài học 4 để kết nối với MQTT và gửi dữ liệu telemetry. Bạn sẽ sử dụng cùng một Mosquitto broker công khai.
Các bước thực hiện như sau:
- Thêm thư viện Seeed WiFi và MQTT vào tệp
.ini
. - Thêm tệp cấu hình và mã để kết nối với WiFi.
- Thêm mã để kết nối với MQTT broker.
- Thêm mã để xuất bản dữ liệu telemetry.
⚠️ Tham khảo hướng dẫn kết nối với MQTT và hướng dẫn gửi dữ liệu telemetry từ bài học 4 nếu cần.
- Thêm thư viện Seeed WiFi và MQTT vào tệp
-
Đảm bảo rằng
CLIENT_NAME
trong tệp tiêu đềconfig.h
phản ánh dự án này:const string CLIENT_NAME = ID + "temperature_sensor_client";
-
Đối với dữ liệu telemetry, thay vì gửi giá trị ánh sáng, hãy gửi giá trị nhiệt độ được đọc từ cảm biến DHT trong một thuộc tính của tài liệu JSON có tên là
temperature
bằng cách thay đổi hàmloop
trongmain.cpp
:float temp_hum_val[2] = {0}; dht.readTempAndHumidity(temp_hum_val); DynamicJsonDocument doc(1024); doc["temperature"] = temp_hum_val[1];
-
Giá trị nhiệt độ không cần phải được đọc quá thường xuyên - nó sẽ không thay đổi nhiều trong một khoảng thời gian ngắn, vì vậy hãy đặt
delay
trong hàmloop
là 10 phút:delay(10 * 60 * 1000);
💁 Hàm
delay
nhận thời gian tính bằng mili giây, vì vậy để dễ đọc hơn, giá trị được truyền dưới dạng kết quả của một phép tính. 1.000ms trong một giây, 60 giây trong một phút, vì vậy 10 x (60 giây trong một phút) x (1.000ms trong một giây) sẽ tạo ra độ trễ 10 phút. -
Tải lên mã này vào Wio Terminal của bạn và sử dụng serial monitor để xem nhiệt độ được gửi đến MQTT broker.
--- 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}
💁 Bạn có thể tìm thấy mã này trong thư mục code-publish-temperature/wio-terminal.
😀 Bạn đã xuất bản thành công nhiệt độ dưới dạng dữ liệu telemetry từ thiết bị của mình.
Tuyên bố miễn trừ trách nhiệm:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI Co-op Translator. Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.