2022-04-10

智慧园区能源管控系统

1.实验目的

1.1采集温度、湿度、光照值,并上传OneNET平台
1.2实现公共区域照明系统的灯光自动控制。当光照充足的时候,灯光熄灭。光照暗时,照明灯亮起。
(LED灯模拟照明灯,通过HTTP数据推送将光照值推送给应用程序,由应用程序控制LED开关)

2.实验步骤

2.1代码更改

在程序中设置接入机的地址和鉴权信息(即IMEI和IMSI)

char uri[] = "coap://183.230.102.118:5683";   // 引导机服务
char *serv_addr = "183.230.102.118";          // 接入机 IP 地址,暂时无用
const char endpoint_name[] = "318790567959252;318790567959252";     //IMEI;IMSI

向SDK添加外围硬件驱动,本项目Demo中已经做好LED和光照传感器驱动程序

#include "BH1750.h"     /* 光照传感器 */
#include "Lcd_Driver.h" /* lcd屏 */
nbiot_value_t illumi;   /* 光照 */
nbiot_value_t led;      /* led灯*/
extern float result_lx; /*光照*/

光照传感器的对象ID:3301
灯光控制的对象ID:3311

写回调函数

// "写"回调函数
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)
      {
      if(data->value.as_bool)
      {
      Lcd_Clear(WHITE);
          ledStatus.Led1Sta=1;
      }else
      {
       Lcd_Clear(BLACK);
          ledStatus.Led1Sta=0;
      }
      }
}

读回调函数

// "读"回调函数
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 = sht20.tempreture;
    } else if (objid == 3304 && instid == 0 && resid == 5700) { /* 湿度 */
        SHT20_INFO sht20 = { 0 };
        sht20 = SHT20_GetValue();
        humi.value.as_float = sht20.humidity;
    }

}

添加温湿度,光照资源

   // 添加温度资源
    temp.type = NBIOT_FLOAT;
    temp.flag = NBIOT_READABLE;
    ret = nbiot_resource_add(dev,
            3303,   /* objId */
            0,      /* instId */
            5700,   /* resId */
            &temp);
    if (ret)
    {
        nbiot_device_destroy(dev);
        printf("device add resource(temp) failed, code = %d.\r\n", ret);
    }
    // 添加湿度资源
    humi.type = NBIOT_FLOAT;
    humi.flag = NBIOT_READABLE;
    ret = nbiot_resource_add(dev,
            3304,
            0,
            5700,
            &humi);
    if (ret)
    {
        nbiot_device_destroy(dev);
        printf("device add resource(humi) failed, code = %d.\r\n", ret);
    }
    
    // 添加光照资源
    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);
    }

温湿度资源更新

// 更新资源
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;
            
    } else if (cur_time == 0 && last_time == 0) {
        cur_time = nbiot_time();
        last_time = cur_time;
    } else {
        cur_time = nbiot_time();
    }
}

int main(int argc, char *argv[])
{
    int life_time = 300;
    int ret;

2.2平台控制

资源列表
资源列表
读写控制

2.3Postman

返回现象

LCD屏现象


屏幕亮

屏幕暗

实验总结

通过此次项目的实施,能够实现对园区内的温湿度实时检测
认知了南向通信协议和北调API
熟悉了北调API
在这次项目中更熟悉了postman的用法
了解到了通过数据推送的方式控制LCD屏幕

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,875评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,569评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,475评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,459评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,537评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,563评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,580评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,326评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,773评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,086评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,252评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,921评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,566评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,190评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,435评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,129评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,125评论 2 352

推荐阅读更多精彩内容

  •        智慧园区能源管控系统报告                    杨小龙 1.项目背景 智慧园区能源管...
    fighting_41a7阅读 532评论 0 0
  •      智慧园区能源管理系统项目报告              杜海鑫 1.实验背景   智慧园区能源管理系统的...
    远方上阅读 364评论 0 0
  • 智慧园区能源管理系统项目报告 钟梓航 一.项目背景 通过对园区的数据进行监控分析 二.项目目标 通过onenet云...
    草莓QQ糖阅读 391评论 0 0
  • 实验目的 智慧园区为体现低消耗、低排放、高性能、高舒适的设计理念,应用集成技术和物联网技术在智慧园区内建设能效管理...
    kevin_1bf1阅读 326评论 0 0
  • 智慧园区能源管理系统项目报告 吴锋光 一.项目背景 对园区的数据进行监控分析然后通过演示展示结果 二.项目目标 通...
    腊味煲祖饭阅读 315评论 0 0