基于OneNET的智慧园区监控系统

1.实验背景

随着科技的迅猛发展,新技术革命把人类社会从工业化推进到信息化社会。这要求人们与时俱进,对时间而变化的各种参量,甚至是变化频率很高的动态量进行实时测量。它的高精确度、高灵敏度、高响应速度,以及耗能少、结构小,可以连续测量并自动控制等特点使得测试技术发展到一个全新水平。所以构建园区统一标准,搭建智慧化的园区管理系统,为园区管理者提供一个便捷实用的统一集成化管理工具,能够为入驻的居民提供非常便捷的服务。

2.实验目标

采集温度、湿度、光照、气压值,并由OneNET平台订阅;
实现公共区域照明系统灯光自动控制;
(注1:LED模拟照明灯, 云端实现)
(注2:当光照充足时,照明灯熄灭,光照较暗时,照明灯开启)
轻应用展示温度、湿度、光照、气压值(云端实现);
可视化展示温度、湿度、光照、气压值(云端实现)。

3.实验步骤

1.:添加新的对象和资源

添加资源代码软件:Keil uVision5
分别添加光照资源、气压资源、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);
    }
        //添加气压资源
         press.type = NBIOT_FLOAT;
    press.flag = NBIOT_READABLE;
    ret = nbiot_resource_add(dev,
            3323,
            0,
            5700,
            &press);
    if (ret)
    {
        nbiot_device_destroy(dev);
        printf("device add resource(press) 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);
    }

更新相关资源代码

{
    SHT20_INFO sht20;
    if (cur_time >= last_time + interval) {
        cur_time = 0;
        last_time = 0;

        temp.flag |= NBIOT_UPDATED;
        humi.flag |= NBIOT_UPDATED;
        sht20 = SHT20_GetValue();
        temp.value.as_float = ((float)((int)((sht20.tempreture + 0.05) * 100)) / 100);
        humi.value.as_float = sht20.humidity;
              illumi.flag |= NBIOT_UPDATED;
              BH1750_test();
              illumi.value.as_float=result_lx ;
        press.flag |= NBIOT_UPDATED;
              BMP180_test() ;
              press.value .as_float =bmp180.p;
        led.flag |= NBIOT_UPDATED;
              led.value.as_bool=ledStatus.Led1Sta;
    } else if (cur_time == 0 && last_time == 0) {
        cur_time = nbiot_time();
        last_time = cur_time;
    } else {
        cur_time = nbiot_time();
    }
}

2.:编写读回调函数

读取资源的下行命令处理

void read_callback(
        uint16_t       objid,
        uint16_t       instid,
        uint16_t       resid,
        nbiot_value_t *data)
{
      if(objid==3301&&instid==0&&resid==5700)
            {
               BH1750_test();
                 illumi.value.as_float=result_lx ;
            }
       else  if (objid == 3303 && instid == 0 && resid == 5700) {
        SHT20_INFO sht20 = { 0 };
        sht20 = SHT20_GetValue();
        temp.value.as_float = (int64_t)sht20.tempreture;
    } else if (objid == 3304 && instid == 0 && resid == 5700) {
        SHT20_INFO sht20 = { 0 };
        sht20 = SHT20_GetValue();
        humi.value.as_float = (int64_t)sht20.humidity;
    }
          else if(objid==3323&&instid==0&&resid==5700)
            {
               BMP180_test();
                 press.value.as_float=bmp180.p ;
            }
}
void write_callback(
        uint16_t       objid,
        uint16_t       instid,
        uint16_t       resid,
        nbiot_value_t *data)
{
    printf("write /%d/%d/%d£º%d\r\n",
            objid,
            instid,
            resid, data->value.as_bool);
if((objid == 3311) &&(instid == 0) &&(resid == 5850))
  {
     Led1_Set(data->value.as_bool);
  }
}

3.:系统终端功能设计与测试
登录OneNET平台,查看添加对象是否接入平台


image.png

OneNET平台可对LED灯进行控制


image.png

4.:Postman配置

使用Postman发送请求,读取终端设备资源

请求方式:GET


image.png

使用Postman发送请求,向终端设备写入资源

请求方式:POST


image.png

5.:配置触发器

如图所示,点击“添加触发器”进行配置

image.png

4.轻应用开发实践

image.png

学会使用OneNET应用编辑器


image.png

5.总结

通过本次学习了解并掌握了基于OneNET的智慧园区监控系统的实现过程;
掌握了Postman与OneNET平台的相互连接与配置;
学习了新的专业知识并运用,提高了自我动手能力;
我将继续深入学习,以掌握物联网平台应用更多知识;

你可能感兴趣的:(基于OneNET的智慧园区监控系统)