使用 DTU 采集空气温度、湿度

在现代农业和工业环境中,实时监测环境参数变得越来越重要。本文将介绍如何使用 DTU(数据传输单元)来实时采集空气温湿度,可视化和管理数据。

硬件介绍

Mini DTU(数据传输单元)

Mini DTU

Mini DTU 是一种专门用于数据采集和传输的设备,它能够:

  • 通过串口(RS485/RS232)采集传感器数据
  • 通过 4G/WiFi 等网络将数据实时上传到云平台
  • 支持多种工业协议(如 Modbus)
  • 具有低功耗、稳定性高的特点
立即购买

温湿度传感器

温湿度传感器

我们使用的是标准的 RS485 接口温湿度传感器:

  • 测量范围:温度 -40℃~80℃,湿度 0~100%RH
  • 通信协议:Modbus-RTU
  • 供电要求:DC 12V/24V
  • 测量精度:温度 ±0.5℃,湿度 ±3%RH
传感器请根据项目的要求(量程、精度等)自行购买。

设备连接

  1. 硬件连接:
    • 将温湿度传感器的 A+ 和 B- 线分别连接到 DTU 的 485A 和 485B 接口
    • 连接电源(注意电压要求)
    • 确保 DTU 的天线安装正确,信号良好
  2. 通信参数设置:
    • 波特率:9600
    • 数据位:8
    • 停止位:1
    • 校验位:无校验
    • Modbus 从站地址:100(可根据实际情况设置)
dtu连接传感器

UMS 配置步骤

什么是 UMS

UMS(Units Management System) 是一个设备管理管理平台,帮助您快速构建 IoT 应用。

1. 添加设备

  1. 登录平台
  2. 进入”设备管理”页面
  3. 点击”绑定设备”按钮
  4. 输入设备信息:
    • 设备 ID:DTU 设备的唯一标识
    • 安全码:设备的安全验证码
  5. 点击”确认”完成设备添加

2. 配置因子

在”设备详情”页面配置温湿度传感器的因子:

设置因子

3. 查看数据

配置完成后,您可以通过以下方式查看数据:

  • 实时数据**
在设备数据页,可查看各因子实时数据。

设备因子实时数据
  • 历史数据**
  • 点击因子的”查看更多数据”按钮
  • 可以查看图表形式的历史数据
  • 支持选择时间范围
设备因子历史数据

使用开放接口,读取传感器数据

UMS 提供了开放的 REST API,让您可以通过编程方式获取设备数据。以下是一些示例代码,展示如何获取温湿度数据。

Python 示例

import requests
import time
from datetime import datetime

def get_device_data(device_id, access_token): """获取设备数据 Args: device_id: 设备ID access_token: 访问令牌 """ url = f"https://ums.holdingbyte.com/api/v2/devices/{device_id}/data/" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } response = requests.get(url, headers=headers) if response.status_code == 200: return response.json() else: raise Exception(f"获取数据失败: {response.status_code}")

def main(): # 配置参数 DEVICE_ID = "your_device_id" ACCESS_TOKEN = "your_access_token" try: # 获取数据 result = get_device_data(DEVICE_ID, ACCESS_TOKEN) if result['success']: # 解析数据 for item in result['data']: # 转换时间戳 timestamp = datetime.fromtimestamp(item['t']) # 获取数值 value = item['value'] # 获取因子ID agri_id = item['agri_id'] print(f"因子: {agri_id}") print(f"数值: {value}") print(f"时间: {timestamp}") print("---") else: print(f"错误: {result['error']}") except Exception as e: print(f"发生错误: {str(e)}")

if __name__ == '__main__': main()

PHP 示例


function getDeviceData($deviceId, $accessToken) { // 设置请求URL $url = "https://ums.holdingbyte.com/api/v2/devices/{$deviceId}/data/"; // 初始化cURL $ch = curl_init(); // 设置cURL选项 curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "Authorization: Bearer {$accessToken}", "Content-Type: application/json" ] ]); // 执行请求 $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 关闭cURL curl_close($ch); if ($httpCode === 200) { return json_decode($response, true); } else { throw new Exception("获取数据失败: " . $httpCode); }

}

// 主程序 try { // 配置参数 $deviceId = "your_device_id"; $accessToken = "your_access_token"; // 获取数据 $result = getDeviceData($deviceId, $accessToken); if ($result['success']) { // 解析数据 foreach ($result['data'] as $item) { // 转换时间戳 $timestamp = date('Y-m-d H:i:s', $item['t']); // 获取数值 $value = $item['value']; // 获取因子ID $agriId = $item['agri_id']; echo "因子: {$agriId}\n"; echo "数值: {$value}\n"; echo "时间: {$timestamp}\n"; echo "---\n"; } } else { echo "错误: " . $result['error'] . "\n"; } } catch (Exception $e) { echo "发生错误: " . $e->getMessage() . "\n"; }

注意事项

  1. 认证
    • 需要先获取访问令牌(Access Token)
    • 在请求头中使用 Bearer 认证
  1. 数据解析
    • 注意时间戳是 UTC 时间
    • 根据因子 ID 区分不同的数据
    • 数值已经经过换算,可以直接使用
通过这些接口,您可以将设备数据集成到自己的应用中,实现更丰富的功能。例如:
  • 构建自定义的数据展示界面
  • 实现数据分析和预警
  • 与其他系统集成
完整的 API 文档请参考:UMS API 文档