news 2026/5/10 20:02:58

用OneNET平台快速搭建你的第一个智慧农业监控系统(HTTP协议接入实战)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用OneNET平台快速搭建你的第一个智慧农业监控系统(HTTP协议接入实战)

用OneNET平台快速搭建你的第一个智慧农业监控系统(HTTP协议接入实战)

清晨的阳光洒在温室大棚上,DHT11传感器静静地记录着空气温湿度,而ESP8266模块则像一位忠实的信使,准备将这些数据送往云端。对于农业从业者和物联网爱好者而言,这样的场景正变得越来越普遍。本文将带你从零开始,用最常见的硬件和最基础的HTTP协议,构建一个完整的智慧农业监控系统。

OneNET平台作为中国移动打造的物联网开放平台,其优势在于开箱即用的数据接入能力直观的数据可视化工具。不同于复杂的MQTT或CoAP协议,HTTP协议接入方式更易于理解和实现,特别适合初学者快速验证想法。我们将从硬件连接、数据上传到可视化看板,一步步拆解整个过程。

1. 硬件准备与环境搭建

1.1 基础硬件选型

智慧农业监控系统的核心是环境数据采集数据传输。对于入门级项目,我们推荐以下性价比极高的硬件组合:

  • 传感器模块:DHT11温湿度传感器(约$2)
    • 测量范围:20-90% RH(湿度),0-50°C(温度)
    • 精度:±5% RH,±2°C
  • 主控板:ESP8266开发板(如NodeMCU,约$3)
    • 内置Wi-Fi模块
    • 支持Arduino IDE编程
  • 其他配件
    • 微型面包板(用于快速接线)
    • 杜邦线若干
    • 5V电源适配器

提示:DHT11虽然精度一般,但对于农业大棚的温湿度趋势监控已经足够。如需更高精度,可考虑DHT22或BME280传感器。

1.2 硬件连接示意图

将各组件按以下方式连接:

DHT11 ESP8266 VCC → 3.3V DATA → D4 (GPIO2) GND → GND

使用Arduino IDE开发时,需要安装以下库:

#include <DHT.h> #include <ESP8266WiFi.h>

1.3 开发环境配置

  1. 安装Arduino IDE(1.8.x或更高版本)
  2. 添加ESP8266开发板支持:
    • 文件 → 首选项 → 附加开发板管理器网址填入:
      http://arduino.esp8266.com/stable/package_esp8266com_index.json
  3. 工具 → 开发板 → 开发板管理器 → 搜索安装"esp8266"
  4. 安装DHT传感器库:
    • 项目 → 加载库 → 管理库 → 搜索安装"DHT sensor library"

2. OneNET平台配置

2.1 创建产品与设备

登录OneNET平台后,按以下步骤创建物联网产品:

  1. 进入开发者中心多协议接入→ 选择HTTP协议
  2. 点击"添加产品",填写基本信息:
    • 产品名称:智慧农业监控系统
    • 行业类别:农业
    • 联网方式:Wi-Fi
  3. 在产品详情页点击"添加设备",填写:
    • 设备名称:Greenhouse_01
    • 设备鉴权信息(记下DeviceID和APIKey)

生成的设备信息将用于后续代码配置:

参数示例值说明
ProductID123456产品唯一标识
DeviceID789012设备唯一标识
APIKeyAbCdEfGhIjKlMnOpQrStUvWxYz123456设备鉴权密钥

2.2 数据流模板创建

数据流相当于云端的数据存储单元,每个传感器对应一个独立的数据流:

  1. 进入设备详情 →数据流模板→ 添加数据流
  2. 创建两个数据流:
    • temperature(单位:℃)
    • humidity(单位:%RH)

注意:数据流ID将在代码中直接引用,建议使用英文命名避免编码问题。

3. 设备端代码实现

3.1 WiFi连接与传感器读取

首先实现基础的网络连接和传感器数据采集:

#define DHTPIN D4 // DHT11数据引脚 #define DHTTYPE DHT11 // 传感器类型 const char* ssid = "Your_WiFi_SSID"; const char* password = "Your_WiFi_Password"; DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } dht.begin(); }

3.2 HTTP数据上传实现

使用HTTP POST方式上传传感器数据到OneNET:

void uploadToOnenet(float temp, float humi) { WiFiClient client; if (client.connect("api.heclouds.com", 80)) { String postStr = "{\"datastreams\":["; postStr += "{\"id\":\"temperature\",\"datapoints\":[{\"value\":" + String(temp) + "}]},"; postStr += "{\"id\":\"humidity\",\"datapoints\":[{\"value\":" + String(humi) + "}]}"; postStr += "]}"; String url = "/devices/" + String(DEVICE_ID) + "/datapoints?type=3"; client.print(String("POST ") + url + " HTTP/1.1\r\n"); client.print("api-key: " + String(API_KEY) + "\r\n"); client.print("Host: api.heclouds.com\r\n"); client.print("Content-Length: " + String(postStr.length()) + "\r\n"); client.print("Connection: close\r\n\r\n"); client.print(postStr); delay(10); // 确保数据发送完成 } client.stop(); }

3.3 主循环逻辑

整合读取和上传功能,设置合理的上传间隔:

void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } uploadToOnenet(t, h); delay(30000); // 每30秒上传一次数据 }

4. 数据可视化与应用创建

4.1 实时数据看板配置

OneNET提供拖拽式的可视化工具,快速创建监控面板:

  1. 进入应用管理→ 添加应用 → 选择"数据可视化"
  2. 添加以下组件:
    • 数字显示组件:绑定temperature数据流
    • 仪表盘组件:绑定humidity数据流(设置0-100%范围)
    • 折线图组件:同时显示温湿度历史趋势

4.2 阈值告警设置

通过规则引擎设置异常告警:

  1. 进入规则引擎→ 创建新规则
  2. 配置触发条件(示例):
    • 当temperature > 35℃时,发送邮件通知
    • 当humidity < 40%时,发送短信提醒
{ "condition": { "$gt": ["$temperature", 35] }, "actions": [{ "type": "email", "params": { "to": "operator@farm.com", "title": "高温预警", "content": "当前温度已超过安全阈值:{{temperature}}℃" } }] }

4.3 移动端访问优化

OneNET自动生成的应用支持响应式布局,但我们可以进一步优化:

  1. 在应用编辑界面启用移动端适配选项
  2. 调整组件布局,确保在小屏幕上也能清晰显示
  3. 将应用URL生成二维码,方便田间扫描访问

5. 系统优化与扩展

5.1 低功耗改进

对于电池供电场景,可实施以下优化:

  • 启用ESP8266的深度睡眠模式:
    ESP.deepSleep(300e6); // 睡眠5分钟(单位:微秒)
  • 仅在唤醒时连接Wi-Fi上传数据
  • 使用单次读取后立即断电的传感器

5.2 多节点组网

当需要监控多个区域时:

  1. 为每个温室配置独立的ESP8266设备
  2. 在OneNET平台为每个设备创建独立数据流
  3. 使用设备组功能统一管理
  4. 在应用中使用地图组件显示各节点位置

5.3 数据导出与分析

OneNET支持将数据导出到第三方分析工具:

  1. 通过HTTP推送MQTT转发将数据发送到自建服务器
  2. 使用平台提供的数据导出服务定期备份到对象存储
  3. 对接BI工具(如Power BI)进行深度分析
# 示例:使用Python从OneNET获取历史数据 import requests url = "http://api.heclouds.com/devices/{device_id}/datapoints" headers = {"api-key": "your_api_key"} params = { "datastream_id": "temperature", "start": "2023-07-01T00:00:00", "end": "2023-07-02T00:00:00" } response = requests.get(url, headers=headers, params=params) data = response.json()

大棚里的番茄植株在理想温湿度下茁壮成长,而你的手机实时显示着这些环境参数。当温度异常升高时,一条及时的告警让你能在作物受损前采取措施——这就是物联网技术为传统农业带来的改变。虽然本文示例使用的是基础硬件和协议,但同样的架构可以扩展至更复杂的农业场景,比如土壤墒情监测、光照强度调控等。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 19:57:53

大厂CTO闭门分享实录(SITS 2026未发布AI工程化实践首次流出)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;SITS 2026专题论坛揭秘&#xff1a;10核心议题覆盖AI全领域 SITS 2026&#xff08;Smart Intelligence Technology Summit&#xff09;专题论坛将于明年3月在上海张江科学会堂正式启幕&#xff0c;聚焦…

作者头像 李华
网站建设 2026/5/10 19:47:37

C++排列组合:从数学原理到算法实现与实战解析

1. 排列组合的数学基础 排列组合是计算机科学中最常用的数学工具之一&#xff0c;但很多初学者往往被它的数学符号吓到。其实只要理解了基本原理&#xff0c;你会发现它就像搭积木一样直观。 先来看个生活例子&#xff1a;假设你有3件T恤和2条裤子&#xff0c;每天穿一件T恤搭配…

作者头像 李华
网站建设 2026/5/10 19:46:47

低查重AI写教材指南:借助工具,快速打造优质教材!

关于AI教材创作工具的介绍 在编写教材时&#xff0c;资料的支持是至关重要的&#xff0c;但传统的资料整合方式已经逐渐不能满足现代的需求。以往&#xff0c;需要从课标文档、学术研究到教学案例&#xff0c;信息常常散落在知网、教研平台等多个地方&#xff0c;想要筛选出有…

作者头像 李华
网站建设 2026/5/10 19:37:47

部署与可视化系统:企业级边缘集群:基于 K3s + YOLOv12 的多节点轻量级检测微服务编排

摘要 2026年,边缘AI正式从概念验证走向规模化生产。企业不再满足于单节点边缘推理的Demo级验证,而是迫切需要一套面向分布式工业现场、可统一编排、可远程运维的轻量级检测微服务体系。然而,边缘环境天然面临三大核心挑战:设备资源极度受限(ARM设备、树莓派、边缘网关通常…

作者头像 李华