智慧园区能源管控系统实训报告

1.实验背景

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

2.实验目标

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

3.实验步骤

本次实验基于上次实验:《智慧城市环境监测系统功能实现》,
详情请参见:https://www.jianshu.com/p/a8acbd2ed687。

1.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);
    }
    // 添加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);
    }

1.3.2:更新相关资源代码

// 更新资源
void res_update(time_t interval)
{
    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 = sht20.tempreture;
        humi.value.as_float = sht20.humidity;
        /* 更新光照数值 */
        illumi.flag |= NBIOT_UPDATED;
        BH1750_test();
        illumi.value.as_float = result_lx;
        /* 更新LED数值*/
        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();
    }
}

1.3.3:编写读回调函数

  • 读取资源的下行命令处理
// "读"回调函数
void read_callback(
        uint16_t       objid,
        uint16_t       instid,
        uint16_t       resid,
        nbiot_value_t *data)
{
    if (objid == 3303 && instid == 0 && resid == 5700) {        /* 温度 */
        SHT20_INFO sht20 = { 0 };
        sht20 = SHT20_GetValue();
        temp.value.as_float = sht20.tempreture;
    } else if (objid == 3304 && instid == 0 && resid == 5700) { /* 湿度 */
        SHT20_INFO sht20 = { 0 };
        sht20 = SHT20_GetValue();
        humi.value.as_float = sht20.humidity;
    } 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;
    }
}

1.3.4:编写写回调函数

  • 在写入回调函数write_callback里增加LED控制:
    注:当从平台接收到LED控制写入命令时,响应控制
// "写"回调函数
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) /* LED灯 */
    {
        if(data->value.as_bool)
        {
            // 打开白色背光以模拟LED灯开
            Lcd_Clear(WHITE);
            ledStatus.Led1Sta=1;
        }
        else
        {
            // 打开黑色背光以模拟LED灯关
            Lcd_Clear(BLACK);
            ledStatus.Led1Sta=0;
        }
    }
}

1.3.5:系统终端功能设计与测试

  • 编写完终端程序后,编译下载
  • 注意:IMEI与IMSI
    如图所示
  • 登录OneNET平台,查看添加对象是否接入平台


    设备在线

    添加对象接入平台成功示例
  • OneNET平台可对LED灯进行控制


    Light Control界面
  • 设备连接
    硬件连接图

    1.3.6:Postman配置
  • 使用Postman发送请求,读取终端设备资源
  • 请求方式:GET


    GET配置
  • 使用Postman发送请求,向终端设备写入资源
  • 请求方式:POST
  • 确保所有配置无误后,点击Send

    完成相关配置后,点击Send

    1.3.7:使用数据推送自动控制灯光
    修改intellij IDEA参数

    控制灯光数据

    数据推送验证成功

    1.3.8:实验结果
  • 实验结果如下:


    LED显示屏亮

4.总结

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

你可能感兴趣的:(智慧园区能源管控系统实训报告)