基于小熊派开发智慧路灯(联通用户专用)
非联通用户请查看设备接入服务。
场景说明
智慧路灯是城市智能化道路上重要一环,智慧路灯的实施具有节约公共照明能耗、减少因照明引起的交通事故等多种社会意义。路灯也是大家在日常生活中可以强烈感知到的公共设施,更易理解其智能化的场景。
在该文档中,我们基于华为一站式开发工具平台—开发中心,从设备、平台、应用端到端构建一款智慧路灯解决方案样例,带您体验十分钟快速上云。
方案设计
- 支持上报光照强度。
- 支持开/关控制命令。
- 支持上报灯光状态信息。
该款智慧路灯的产品能力模型如下所示:
产品信息 |
设备类型 |
StreetLight |
- |
设备型号 |
StreetLight01 |
- |
|
厂商名称 |
TestManuName |
- |
|
接入协议 |
CoAP |
- |
|
数据格式 |
二进制码流 |
- |
|
服务数据 |
服务1 |
服务名称 |
Sensor |
属性 |
名称:luminance 数据类型:int 最小值:0 最大值:65535 步长:1 单位:lux 访问模式:RE 是否必选:是 |
||
服务2 |
服务名称 |
LED |
|
命令 |
命令名称:Set_Led |
前期准备
- 开发板:小熊派开发板(含NB卡、NB模组、智慧路灯功能模块等)
- 配件:数据线
- IDE:IoT Studio
- 平台:华为云账号(开通开发中心权限)
硬件连接
创建项目
在进行开发之前,开发者需要基于行业属性,创建一个独立的项目。在项目空间内,开发者可以开发相应的物联网产品和应用。
- 访问并登录华为云,打开“设备管理”服务产品首页,单击“开发中心”,进入物联网平台管理控制台,然后单击“进入开发中心”,自动跳转登录到开发中心。
- 在开发中心首页,单击“新建项目”。
如果初次登录开发中心,新建项目时会提示配置厂商信息。请根据提示,进入“厂商信息”界面进行配置即可。
- 填写“项目名称”、“所属行业”、“描述”等项目信息后,单击“创建”。
配置示例:
- 项目名称:StreetLight
- 所属行业:公用事业(NB-IoT)
项目创建成功后,系统返回“应用ID”和“应用密钥”。在应用对接物联网平台时需要这两个参数,请妥善保存,如果遗忘,可以在该项目的 中进行重置。
创建产品
某一类具有相同能力或特征的设备的集合称为一款产品。除了设备实体,产品还包含该类设备在物联网能力建设中产生的产品信息、产品模型(Profile)、插件、测试报告等资源。
- 进入新创建的项目,选择“新建产品”。
,单击
- 在“创建产品”中,选择“自定义产品”,单击“自定义产品”。
- 系统将弹出“设置产品信息”窗口,填写必要产品信息,单击“创建”。
配置实例:
- 产品名称:OC_StreetLight
- 型号:OC_StreetLight001
- 厂商ID:由系统自动生成,无需配置
- 所属行业:智慧城市
- 设备类型:StreetLight
- 接入应用层协议类型:LWM2M
- 数据格式:二进制码流
- 在“产品开发”界面将会呈现已经创建的产品,选择具体产品,可以进入该产品的开发界面。
Profile定义
- 在产品开发空间,选择“Profile定义”,单击“新建服务”,配置产品的服务。
- 新建Sensor服务,管理路灯的光照强度。当路灯接入物联网平台后,上报光照强度值。
- 在“属性列表”区域单击“添加属性”,填写相关信息,然后单击“确定”。
配置示例:
- 名称:luminance
- 数据类型:int
- 最小值:0
- 最大值:65535
- 步长:1
- 单位:lux
- 访问模式:RE
- 是否必选:是
- 在Sensor服务名的右边单击,保存服务。
- 在“属性列表”区域单击“添加属性”,填写相关信息,然后单击“确定”。
- 新建LED服务,管理路灯的开/关灯。当路灯收到物联网平台下发的开/关灯命令后,响应并上报当前的状态信息。
- 在“命令列表”区域单击“添加命令”,命令名称为Set_Led,然后单击“确定”。
- 单击“添加下发命令字段”,填写相关信息,然后单击“确定”。
配置示例:
- 名称:led
- 数据类型:string
- 长度:3
- 枚举值:ON,OFF
- 是否必选:是
- 单击“添加响应命令字段”,填写相关信息,然后单击“确定”。
配置示例:
- 名称:light_state
- 数据类型:string
- 长度:3
- 枚举值:ON,OFF
- 是否必选:是
- 在LED服务名的右边单击,保存服务。
编解码插件开发
- 在产品开发空间,选择“编解码插件开发”,开发编解码插件。
- 在“在线编解码插件编辑器”区域,单击“新增消息”。
- 新增消息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。
实现设备业务处理
- 实现命令下发处理。
- 在 /********** code area for cmd from IoT cloud **********/ 注释下添加以下代码,然后在工具栏中单击,保存文件。
1 2 3 4 5 6 7 8 9 10
//开灯 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”注释下的代码,然后在工具栏中单击,保存文件。
1 2 3
Report_Sensor.messageId = cn_app_Report_Sensor; Report_Sensor.data = htons(lux); oc_lwm2m_report(context,(char *)&Report_Sensor, sizeof(Report_Sensor), 1000);
编译并烧录代码
- 在工具栏中单击,对当前工程进行编译。编译成功后,在控制台面板中显示“编译成功”。
- 使用数据线将开发板与电脑连接,并将通信模组上的开关拨至MCU侧。
- 在工具栏中单击,将已经编译的程序烧录至开发板。烧录成功后,控制台面板中显示“烧录成功”。
设备调测
请参考基于IoT Studio构建应用服务器(联通用户专用)或基于软件开发平台构建应用服务器(联通用户专用)完成应用服务器的构建并进行调测。
使用工具定位模组通信问题
IoT Studio在与物联网平台连通使用时,可使用通信模组检测工具快速定位Quectel_BC35-G&BC28&BC95模组与云端连通性问题,提高开发效率。本节将以“小熊派开发板”为例,介绍如何使用通信模组检测工具定位常见问题,如设备无法上线,数据上报不成功等。
- 单击菜单栏中的
或直接单击工具栏中的图标,打开通信模组检测工具。
- 单击“串口配置”。
- 获取PC与开发板连接的实际端口号。选择
,在“端口”子菜单下,找到连接设备的串口号,如COM27。
- 在“串口配置”界面,“端口”选择3获取的与开发板连接的端口号,如“COM27”;“波特率”配置为“9600”,然后单击“应用”。
- 将与PC连接的通信模组上的开关拨至PC侧。
- 单击“开始测试”,若通信正常,测试结果如下。
模组与物联网平台通信异常场景:
- 串口打开失败
测试结果为“串口打开失败”,请检查串口配置是否正确,即端口号是否为实际端口号,波特率是否设置为“9600”。
- 模组连接异常/模组损坏
测试结果为“AT指令无法正常发送”,请检查开发板上的开关是否已拨至PC侧、模组是否损坏、以及模组是否正确的插入卡槽。
- SIM卡未正确插入卡槽
测试结果为“设置终端射频电路启用完整功能失败”,请检查开发板上的SIM卡是否正反面或者方向插错,以及SIM卡的有效性。
- 模组未在物联网平台注册
测试结果为“LWM2M协议信息注册状态:REJECTED_BY_SERVER”,请在物联网平台注册该模组。