基于OneNET平台的智慧园区系统

一、实验背景

随着科技的快速发展和物联网技术的广泛应用,智慧园区系统已成为现代园区管理的重要组成部分。在园区的日常管理中,温湿度、光照等环境参数的监控以及LED灯等设备的控制对于提高园区运营效率、保障人员舒适度和设备安全具有重要意义。传统的环境参数监控和设备控制方式存在诸多不足,如人工检测效率低下、误差大等。因此,开发基于OneNET平台的智慧园区系统,实现对环境参数的实时监控和对LED灯的实时控制,对于提高园区管理的智能化水平具有重要意义。

二、实验目标

本次实验旨在通过OneNET平台实现智慧园区系统中对温湿度、光照等环境参数的实时监控以及对LED灯的实时控制。具体实验目标如下:

1.实现环境参数的实时监控

  1. 温湿度监控:通过传感器实时采集园区内的温湿度数据,并将数据上传至OneNET平台,实现对园区内温湿度的实时监控。
  2. 光照监控:利用光照传感器实时采集园区内的光照强度数据,并将数据上传至OneNET平台,以便对园区内的光照情况进行监控。

2.实现对LED灯的实时控制

  1. LED灯状态监控:通过OneNET平台实时查看LED灯的工作状态,开关状态等。
  2. 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推送成功。

五、实验方案

为实现上述实验目标,我们将采用以下实验方案:

  1. 系统搭建:将传感器和LED灯控制模块与OneNET平台进行连接,构建完整的智慧园区系统架构。
  2. 数据传输:编写数据采集程序,确保传感器采集到的数据能够实时、准确地传输至OneNET平台。
  3. 监控与控制:在OneNET平台上搭建监控界面和控制界面,实现对环境参数的实时监控和对LED灯的实时控制。

通过本次实验,我们将实现对智慧园区系统中温湿度、光照等环境参数的实时监控以及对LED灯的实时控制,提高园区管理的智能化水平,为园区的优化管理提供数据支持。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容