HDC.Cloud | 【IoT最佳实践】基于小熊派开发智慧路灯

举报
我是卤蛋 发表于 2020/02/20 12:01:03 2020/02/20
【摘要】 智慧路灯是城市智能化道路上重要一环,智慧路灯的实施具有节约公共照明能耗、减少因照明引起的交通事故等多种社会意义。路灯也是大家在日常生活中可以强烈感知到的公共设施,更易理解其智能化的场景。

场景概述

智慧路灯是城市智能化道路上重要一环,智慧路灯的实施具有节约公共照明能耗、减少因照明引起的交通事故等多种社会意义。路灯也是大家在日常生活中可以强烈感知到的公共设施,更易理解其智能化的场景。

方案设计

该款智慧路灯通过LWM2M协议接入物联网平台,具备如下能力:

支持上报光照强度。

支持开/关控制命令。

支持上报灯光状态信息。

前期准备

开发板:小熊派开发板(含NB卡、NB模组、智慧路灯功能模块等)

配件:数据线

IDE:IoT Studio

平台:华为云账号

硬件连接

1582164865875938.png

创建项目

在进行开发之前,开发者需要基于行业属性,创建一个独立的项目。在项目空间内,开发者可以开发相应的物联网产品和应用。

  1. 访问并登录华为云,打开设备管理服务产品首页,单击“开发中心”,进入物联网平台管理控制台,然后单击“进入开发中心”,自动跳转登录到开发中心。

  2. 在开发中心首页,单击“新建项目”。

    如果初次登录开发中心,新建项目时会提示配置厂商信息。请根据提示,进入“厂商信息”界面进行配置即可。

    1582165807606177.png        

  3. 填写“项目名称”、“所属行业”、“描述”等项目信息后,单击“创建”。

    配置示例:

    项目名称:OceanConnect_StreetLight

    所属行业:公用事业(NB-IoT)

    1582165837560744.png        

  4. 项目创建成功后,系统返回“应用ID”和“应用密钥”。在应用对接物联网平台时需要这两个参数,请妥善保存,如果遗忘,可以在该项目的“应用 > 对接信息 > 应用安全”中进行重置。

    1582165861560482.png        

创建产品

某一类具有相同能力或特征的设备的集合称为一款产品。除了设备实体,产品还包含该类设备在物联网能力建设中产生的产品信息、产品模型(Profile)、插件、测试报告等资源。

  1. 进入新创建的项目,选择“产品 > 产品开发”,单击“新建产品”。

    1582166738614022.png        

  2. 在“创建产品”中,选择“自定义产品”,单击“自定义产品”。

    1582167347929275.png        

  3. 系统将弹出“设置产品信息”窗口,填写必要产品信息,单击“创建”。

    配置实例:

    产品名称:OC_StreetLight

    型号:OC_StreetLight001

    厂商ID:由系统自动生成,无需配置

    所属行业:智慧城市

    设备类型:StreetLight

    接入应用层协议类型:LWM2M

    数据格式:二进制码流

    1582167422390146.png        

  4. 在“产品开发”界面将会呈现已经创建的产品,选择具体产品,可以进入该产品的开发界面。

    1582167454221006.png        

Profile定义

  1. 在产品开发空间,选择“Profile定义”,单击“新建服务”,配置产品的服务。

    1582168489482340.png        

  2. 新建Sensor服务,管理路灯的光照强度。当路灯接入物联网平台后,上报光照强度值。

  3. 在“属性列表”区域单击“添加属性”,填写相关信息,然后单击“确定”。

    配置示例:

    名称:luminance

    数据类型:int

    最小值:0

    最大值:65535

    步长:1

    单位:lux

    访问模式:RE

    是否必选:是

    1582168677615832.png        

  4. 保存服务。

    1582168727737866.png        

  5. 新建LED服务,管理路灯的开/关灯。当路灯收到物联网平台下发的开/关灯命令后,响应并上报当前的状态信息。

  6. 在“命令列表”区域单击“添加命令”,命令名称为Set_Led,然后单击“确定”。

  7. 单击“添加下发命令字段”,填写相关信息,然后单击“确定”。

    配置示例:

    名称:led

    数据类型:string

    长度:3

    枚举值:ON,OFF

    是否必选:是

    1582168991871061.png        

  8. 单击“添加响应命令字段”,填写相关信息,然后单击“确定”。

    配置示例:

    名称:light_state

    数据类型:string

    长度:3

    枚举值:ON,OFF

    是否必选:是

    1582169013495728.png        

  9. 保存服务。

    1582169055336237.png        

编解码插件开发

  1. 在产品开发空间,选择“编解码插件开发”,开发编解码插件。

    1582169246334673.png        

  2. 在“在线编解码插件编辑器”区域,单击“新增消息”。

    1582169269361614.png        

  3. 新增消息Report_Sensor,接收路灯上报的光照强度。

    配置示例:

    消息名:Report_Sensor

    消息类型:数据上报

    添加响应字段:是

    响应数据:AAAA0000(默认)

    1582169312453628.png        

  4. 在“新增消息”界面,单击“添加字段”。

  5. 在“添加字段”界面,勾选“标记为地址域”,然后单击“完成”,添加地址域字段messageId。

    1582169358190389.png        

  6. 在“新增消息”界面,单击“添加字段”,填写相关信息,然后单击“完成”。

    配置示例:

    名字:data

    数据类型:int16u(16位无符号整型)

    1582169399973698.png        

  7. 在“新增消息”界面,单击“完成”,完成消息Report_Sensor的配置。

  8. 新增消息Set_Led,管理路灯的开/关灯,并获取路灯执行命令后的状态信息。

    配置示例:

    消息名:Set_Led

    消息类型:命令下发

    添加响应字段:是

    1582169446203879.png        

  9. 在“新增消息”界面,单击“添加字段”。

  10. 在“添加字段”界面,勾选“标记为地址域”,然后单击“完成”,添加地址域字段messageId。

  11. 在“添加字段”界面,勾选“标记为响应标识字段”,然后单击“完成”,添加响应标识字段mid。

    1582169521801272.png        

  12. 在“新增消息”界面,单击“添加字段”,填写相关信息,然后单击“完成”。

    配置示例:

    名字:led

    数据类型:string

    长度:3

    1582169614602336.png        

  13. 在“新增消息”界面,单击“添加响应字段”。

  14. 在“添加字段”界面,勾选“标记为地址域”,然后单击“完成”,添加地址域字段messageId。

  15. 在“添加字段”界面,勾选“标记为响应标识字段”,然后单击“完成”,添加响应标识字段mid。

  16. 在“添加字段”界面,勾选“标记为命令执行状态字段”,然后单击“完成”,添加命令执行状态字段errcode。

    1582169673237657.png        

  17. 在“新增消息”界面,单击“添加响应字段”,填写相关信息,单击“完成”。

    配置示例:

    名字:light_state

    数据类型:string

    长度:3

    1582169694270041.png        

  18. 在“新增消息”界面,单击“完成”,完成消息Set_Led的配置。

  19. 拖动右侧“设备模型”区域的属性字段、命令字段和响应字段,与数据上报消息、命令下发消息和命令响应消息的相应字段建立映射关系。

    1582169792759828.png        

    1582169836766743.png        

  20. 单击“保存”,并在插件保存成功后单击“部署”,将编解码插件部署到物联网平台。

    1582169873677510.png        

配置IoT Studio工程

  1. 在产品开发空间,选择“端侧集成指导”,单击“立即下载”,下载并安装最新版的IoT Studio。

    1582170043231115.png        

  2. 运行IoT Studio时,系统会检测是否安装开发工具包。

    单击“是”,下载并安装开发工具包,此工具包用于在windows上搭建IoT Studio开发环境,编译调试Lite OS应用。

    将工具包解压到任意目录,运行“developTools.exe”,安装完成后再重新运行IoT Studio。

    1582170095266287.png        

  3. 在开发中心,选择“端侧集成指导”,单击“复制”,复制设备模型文件的URL。

    1582170128160183.png        

  4. 打开IoT Studio,单击“创建IoT Studio工程”,进入“新建IoT工程”界面。

    1582170164837093.png        

  5. 在“新建IoT工程”中,填写工程相关信息。

    配置示例:

    工程名称:QuickStart

    工程目录:D:\

    SDK版本:保持默认

    硬件平台:选择STM32L431_BearPi

    选择“基于云端模型创建”。

    设备模型文件:步骤3复制的设备模型文件的URL。

    1582170298695159.png        

    设备开发的业务模块主要集中在自动生成的app.c和app.h两个文件中。

    oc_cloud_map_demo_app.c文件中已自动生成了数据上报和命令下发两个接口。

    oc_cloud_map_demo_app.h文件主要描述映射生成的数据结构、硬件初始化接口。

实现设备业务处理

  1. 实现命令下发处理。

    在oc_cloud_map_demo_app.c文件中找到sensor_controll_handler () 函数。

    在 /********** code area for cmd from IoT cloud **********/ 注释下添加以下代码,然后保存文件。

    //开灯
    if (strstr(Set_Led->led, "ON") != NULL)
    {
    HAL_GPIO_WritePin(Light_GPIO_Port, Light_Pin, GPIO_PIN_SET);
    }
    //关灯if (strstr(Set_Led->led, "OFF") != NULL)
    {
    HAL_GPIO_WritePin(Light_GPIO_Port, Light_Pin, GPIO_PIN_RESET);
    }
                       

    1582170838258502.png        

  2. 实现数据上报处理

    在oc_cloud_map_demo_app.c文件中找到report_data_handler () 函数。

    在 /********** code area for report data to IoT cloud **********/ 注释下添加以下代码,并删除“// virtual sensor data example”注释下的代码,然后保存文件。

    Report_Sensor.messageId = cn_app_Report_Sensor;
    Report_Sensor.data = htons(lux);
    oc_lwm2m_report(context,(char *)&Report_Sensor, sizeof(Report_Sensor), 1000);
                       

    1582170872618416.png        

编译并烧录代码

  1. 在工具栏中单击编译按钮,对当前工程进行编译。编译成功后,在控制台面板中显示“编译成功”。

    1582171032382571.png        

  2. 使用数据线将开发板与电脑连接,并将通信模组上的开关拨至MCU侧。

    1582171056167420.png        

  3. 在工具栏中单击烧录按钮,将已经编译的程序烧录至开发板。烧录成功后,控制台面板中显示“烧录成功”。

    1582171079581585.png        

最后,让我们宣传一下:

3月27-28日,华为物联网平台在华为开发者大会静候您的光临。

华为开发者大会2020(Cloud)是华为面向ICT(信息与通信)领域全球开发者的年度顶级旗舰活动。大会旨在搭建一个全球性的交流和实践平台,开放华为30年积累的ICT技术和能力,以“鲲鹏+昇腾”硬核双引擎,为开发者提供澎湃动力,改变世界,变不可能为可能。

我们期待与你共创计算新时代

在一起,梦飞扬!

1583829665894051.jpg

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。