HDC.Cloud | 【IoT最佳实践】基于小熊派开发智慧路灯
场景概述
智慧路灯是城市智能化道路上重要一环,智慧路灯的实施具有节约公共照明能耗、减少因照明引起的交通事故等多种社会意义。路灯也是大家在日常生活中可以强烈感知到的公共设施,更易理解其智能化的场景。
方案设计
该款智慧路灯通过LWM2M协议接入物联网平台,具备如下能力:
支持上报光照强度。
支持开/关控制命令。
支持上报灯光状态信息。
前期准备
开发板:小熊派开发板(含NB卡、NB模组、智慧路灯功能模块等)
配件:数据线
IDE:IoT Studio
平台:华为云账号
硬件连接
创建项目
在进行开发之前,开发者需要基于行业属性,创建一个独立的项目。在项目空间内,开发者可以开发相应的物联网产品和应用。
访问并登录华为云,打开设备管理服务产品首页,单击“开发中心”,进入物联网平台管理控制台,然后单击“进入开发中心”,自动跳转登录到开发中心。
在开发中心首页,单击“新建项目”。
如果初次登录开发中心,新建项目时会提示配置厂商信息。请根据提示,进入“厂商信息”界面进行配置即可。
填写“项目名称”、“所属行业”、“描述”等项目信息后,单击“创建”。
配置示例:
项目名称:OceanConnect_StreetLight
所属行业:公用事业(NB-IoT)
项目创建成功后,系统返回“应用ID”和“应用密钥”。在应用对接物联网平台时需要这两个参数,请妥善保存,如果遗忘,可以在该项目的“应用 > 对接信息 > 应用安全”中进行重置。
创建产品
某一类具有相同能力或特征的设备的集合称为一款产品。除了设备实体,产品还包含该类设备在物联网能力建设中产生的产品信息、产品模型(Profile)、插件、测试报告等资源。
进入新创建的项目,选择“产品 > 产品开发”,单击“新建产品”。
在“创建产品”中,选择“自定义产品”,单击“自定义产品”。
系统将弹出“设置产品信息”窗口,填写必要产品信息,单击“创建”。
配置实例:
产品名称:OC_StreetLight
型号:OC_StreetLight001
厂商ID:由系统自动生成,无需配置
所属行业:智慧城市
设备类型:StreetLight
接入应用层协议类型:LWM2M
数据格式:二进制码流
在“产品开发”界面将会呈现已经创建的产品,选择具体产品,可以进入该产品的开发界面。
Profile定义
在产品开发空间,选择“Profile定义”,单击“新建服务”,配置产品的服务。
新建Sensor服务,管理路灯的光照强度。当路灯接入物联网平台后,上报光照强度值。
在“属性列表”区域单击“添加属性”,填写相关信息,然后单击“确定”。
配置示例:
名称:luminance
数据类型:int
最小值:0
最大值:65535
步长:1
单位:lux
访问模式:RE
是否必选:是
保存服务。
新建LED服务,管理路灯的开/关灯。当路灯收到物联网平台下发的开/关灯命令后,响应并上报当前的状态信息。
在“命令列表”区域单击“添加命令”,命令名称为Set_Led,然后单击“确定”。
单击“添加下发命令字段”,填写相关信息,然后单击“确定”。
配置示例:
名称:led
数据类型:string
长度:3
枚举值:ON,OFF
是否必选:是
单击“添加响应命令字段”,填写相关信息,然后单击“确定”。
配置示例:
名称:light_state
数据类型:string
长度:3
枚举值:ON,OFF
是否必选:是
保存服务。
编解码插件开发
在产品开发空间,选择“编解码插件开发”,开发编解码插件。
在“在线编解码插件编辑器”区域,单击“新增消息”。
新增消息Report_Sensor,接收路灯上报的光照强度。
配置示例:
消息名:Report_Sensor
消息类型:数据上报
添加响应字段:是
响应数据:AAAA0000(默认)
在“新增消息”界面,单击“添加字段”。
在“添加字段”界面,勾选“标记为地址域”,然后单击“完成”,添加地址域字段messageId。
在“新增消息”界面,单击“添加字段”,填写相关信息,然后单击“完成”。
配置示例:
名字:data
数据类型:int16u(16位无符号整型)
在“新增消息”界面,单击“完成”,完成消息Report_Sensor的配置。
新增消息Set_Led,管理路灯的开/关灯,并获取路灯执行命令后的状态信息。
配置示例:
消息名:Set_Led
消息类型:命令下发
添加响应字段:是
在“新增消息”界面,单击“添加字段”。
在“添加字段”界面,勾选“标记为地址域”,然后单击“完成”,添加地址域字段messageId。
在“添加字段”界面,勾选“标记为响应标识字段”,然后单击“完成”,添加响应标识字段mid。
在“新增消息”界面,单击“添加字段”,填写相关信息,然后单击“完成”。
配置示例:
名字:led
数据类型:string
长度:3
在“新增消息”界面,单击“添加响应字段”。
在“添加字段”界面,勾选“标记为地址域”,然后单击“完成”,添加地址域字段messageId。
在“添加字段”界面,勾选“标记为响应标识字段”,然后单击“完成”,添加响应标识字段mid。
在“添加字段”界面,勾选“标记为命令执行状态字段”,然后单击“完成”,添加命令执行状态字段errcode。
在“新增消息”界面,单击“添加响应字段”,填写相关信息,单击“完成”。
配置示例:
名字:light_state
数据类型:string
长度:3
在“新增消息”界面,单击“完成”,完成消息Set_Led的配置。
拖动右侧“设备模型”区域的属性字段、命令字段和响应字段,与数据上报消息、命令下发消息和命令响应消息的相应字段建立映射关系。
单击“保存”,并在插件保存成功后单击“部署”,将编解码插件部署到物联网平台。
配置IoT Studio工程
在产品开发空间,选择“端侧集成指导”,单击“立即下载”,下载并安装最新版的IoT Studio。
运行IoT Studio时,系统会检测是否安装开发工具包。
单击“是”,下载并安装开发工具包,此工具包用于在windows上搭建IoT Studio开发环境,编译调试Lite OS应用。
将工具包解压到任意目录,运行“developTools.exe”,安装完成后再重新运行IoT Studio。
在开发中心,选择“端侧集成指导”,单击“复制”,复制设备模型文件的URL。
打开IoT Studio,单击“创建IoT Studio工程”,进入“新建IoT工程”界面。
在“新建IoT工程”中,填写工程相关信息。
配置示例:
工程名称:QuickStart
工程目录:D:\
SDK版本:保持默认
硬件平台:选择STM32L431_BearPi
选择“基于云端模型创建”。
设备模型文件:步骤3复制的设备模型文件的URL。
设备开发的业务模块主要集中在自动生成的app.c和app.h两个文件中。
oc_cloud_map_demo_app.c文件中已自动生成了数据上报和命令下发两个接口。
oc_cloud_map_demo_app.h文件主要描述映射生成的数据结构、硬件初始化接口。
实现设备业务处理
实现命令下发处理。
在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);
}
实现数据上报处理
在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);
编译并烧录代码
在工具栏中单击编译按钮,对当前工程进行编译。编译成功后,在控制台面板中显示“编译成功”。
使用数据线将开发板与电脑连接,并将通信模组上的开关拨至MCU侧。
在工具栏中单击烧录按钮,将已经编译的程序烧录至开发板。烧录成功后,控制台面板中显示“烧录成功”。
最后,让我们宣传一下:
3月27-28日,华为物联网平台在华为开发者大会静候您的光临。
华为开发者大会2020(Cloud)是华为面向ICT(信息与通信)领域全球开发者的年度顶级旗舰活动。大会旨在搭建一个全球性的交流和实践平台,开放华为30年积累的ICT技术和能力,以“鲲鹏+昇腾”硬核双引擎,为开发者提供澎湃动力,改变世界,变不可能为可能。
我们期待与你共创计算新时代
在一起,梦飞扬!
- 点赞
- 收藏
- 关注作者
评论(0)