智慧园区实训报告

继上次的智能大棚温湿度系统后,我们这次在上次的基础上,做了一个智慧园区系统的实训。这次实训的内容如下:

一、修改代码

在上次代码的基础上,增加了一些代码,实现了更多的功能,如:可以读取光照值、气压值、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))
  {
     Led1_Set(data->value.as_bool);
  }
}
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 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 = ((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();
    }
}
//添加光照资源
         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);
    }

代码修改完成后编译下载,然后登录onenet平台。

二、平台命令(写LED灯)

这次的实训不但可以多读取光照、气压、LED值,还可以在onenet平台上写入LED灯的值,并在板子上做出相应的改变。


image.png

IMG_20210406_150828.jpg

三、POSTMAN调用API

不但可以用代码和平台上下发命令来控制灯,还可以用其他方法来做,比如:在postman里调用API一样可以实现。


image.png

首先配置好URL,然后添加参数、代码,最后,在Body里,如果Val等于1,那么灯就亮,如果等于0,灯就熄灭。

四、触发器

除了以上两种方法,我们还学习了第三种方法:触发器。触发器是有触发条件的,当触发资源条件达到一个值时灯就亮,或者熄灭。


Z0%B1WMEC2VD`DI$OQK1)VT.png

TZ8UV}D1USQH6}K)YQD)SBL.png

五、轻应用

基于设备的数据流,用户可以为设备下的数据流创建相关的应用并在线发布,通过发布页面,可以对数据趋势进行直观展示,用户也可以很方便的查看数据有无异常。


image.png

你可能感兴趣的:(智慧园区实训报告)