一、实验背景
随着科技的快速发展和物联网技术的广泛应用,智慧园区系统已成为现代园区管理的重要组成部分。在园区的日常管理中,温湿度、光照等环境参数的监控以及LED灯等设备的控制对于提高园区运营效率、保障人员舒适度和设备安全具有重要意义。传统的环境参数监控和设备控制方式存在诸多不足,如人工检测效率低下、误差大等。因此,开发基于OneNET平台的智慧园区系统,实现对环境参数的实时监控和对LED灯的实时控制,对于提高园区管理的智能化水平具有重要意义。
二、实验目标
本次实验旨在通过OneNET平台实现智慧园区系统中对温湿度、光照等环境参数的实时监控以及对LED灯的实时控制。具体实验目标如下:
1.实现环境参数的实时监控
- 温湿度监控:通过传感器实时采集园区内的温湿度数据,并将数据上传至OneNET平台,实现对园区内温湿度的实时监控。
- 光照监控:利用光照传感器实时采集园区内的光照强度数据,并将数据上传至OneNET平台,以便对园区内的光照情况进行监控。
2.实现对LED灯的实时控制
- LED灯状态监控:通过OneNET平台实时查看LED灯的工作状态,开关状态等。
- LED灯远程控制:利用OneNET平台实现对LED灯的远程控制,以满足园区内不同场景下的照明需求。
三、实验步骤
1.添加代码
在 main.c 文件中添加包含“BH1750.h”和"Lcd_Driver.h"头文件的预处理命令。
#include "BH1750.h" /* 光照传感器 */
#include "Lcd_Driver.h" /*LCD屏*/
在 main.c 文件中增加光照和 LED 的类型结构,并声明外部变量。
nbiot_value_t illumi; /* 光照 */
nbiot_value_t led; /* LED灯 */
extern float result_lx; /*光照*/
在 main.c 文件的主函数中,在“写”回调函数添加 LED 灯模拟打开、关闭的代码。
if (objid == 3311 && instid == 0 && resid == 5850) /* LED */
{
if(data->value.as_bool)
{
// 打开白色背光以模拟 LED打开
Lcd_Clear(WHITE);
ledStatus.Led1Sta=1;
}
else
{
//打开黑色背光以模拟 LED 打开
Lcd_Clear(BLACK);
ledStatus.Led1Sta=0;
}
}
在 main.c 文件的主函数中,在“读”回调函数添加光照和 LED 灯的控制代码,当从平台接收到控制写入命令时,响应控制。
else if (objid == 3301 && instid == 0 && resid == 5700) { /* 光 照 */
BH1750_test();
illumi.value.as_float = result_lx;
} else if (objid == 3311 && instid == 0 && resid == 5850) { /* LED */
led.value.as_bool = ledStatus.Led1Sta;
}
在 main.c 文件里增加光照值、LED 数值的读取更新。
/* 更新光照数值 */
illumi.flag |= NBIOT_UPDATED;
BH1750_test();
illumi.value.as_float = result_lx;
/* 更新 LED 数值*/
led.flag |= NBIOT_UPDATED;
led.value.as_bool = ledStatus.Led1Sta;
在 main.c 文件里增加光照、LED 资源。
// 添加光照资源
illumi.type = NBIOT_FLOAT;
illumi.flag = NBIOT_READABLE;
ret = nbiot_resource_add(dev,
3301,
0,
5700,
&illumi);
if (ret)
{
nbiot_device_destroy(dev);
printf("device add resource(illumi) failed, code = %d.\r\n", ret);
}
// 添加 LED 灯资源
led.type = NBIOT_BOOLEAN;
led.flag = NBIOT_READABLE | NBIOT_WRITABLE;
ret = nbiot_resource_add(dev,
3311,
0,
5850,
&led);
if (ret)
{
nbiot_device_destroy(dev);
printf("device add resource(led) failed, code = %d.\r\n", ret);
}
2.OneNET平台添加并查看
OneNET平台添加产品与设备
随后查看相关数据,检查以准备后续实验。
3.使用Postman进行API测试
生成自己的token,需要使用计算工具,填写相关用户ID及Accesskey和需要的时间
在Postman添加好自己的Collections,进行对应测试。成功能看到返回相应代码和消息。
即时命令-写设备资源,输入相应接口地址,加入对应imei,obj_id,obj_inst_id,mode
加入对应Authorization,Content-Type
输入请求代码
{
"data": [
{
"res_id": 5850,
"val": 1
}
]
}
即时命令-读设备资源
缓存命令-读设备资源
4.查看命令下发日志
查看到相应即时命令和缓存命令操作且命令状态成功,即API测试完成
四、使用 HTTP 数据推送自动开关 LED 灯
1.打开灯光推送应用用户门户,老师们搭建的OneNET 数据推送服务器https://github.com/CQCET-IOT/OneNET-LightControl,以OneNET注册用户的用户ID和用户AcessKey 登陆,门户地址:http://1.14.71.134:8080/我的物联网世界
2.绑定NB-IoT设备的IMEI号
3.实例创建,进入OneNET物联网开放平台“开发者中心”,选择菜单栏中的【数据流转】下的【数据推送】
光照度(Illuminance / Illuminance_0 / Sensor Value)在50~100时,灯控制(Light Control / Light Control_0 / On/Off)会变为true,即HTTP推送成功。
五、实验方案
为实现上述实验目标,我们将采用以下实验方案:
- 系统搭建:将传感器和LED灯控制模块与OneNET平台进行连接,构建完整的智慧园区系统架构。
- 数据传输:编写数据采集程序,确保传感器采集到的数据能够实时、准确地传输至OneNET平台。
- 监控与控制:在OneNET平台上搭建监控界面和控制界面,实现对环境参数的实时监控和对LED灯的实时控制。
通过本次实验,我们将实现对智慧园区系统中温湿度、光照等环境参数的实时监控以及对LED灯的实时控制,提高园区管理的智能化水平,为园区的优化管理提供数据支持。