十分钟开发智慧路灯应用
引导式阅读
Others
十分钟开发智慧路灯应用
作者
HDC.Cloud
上架时间
2020-01-11 09:08:43

十分钟开发您的第一个智慧路灯应用

您在体验过程中有任何疑问,都可以在此留言反馈>>问题反馈

1. 介绍

背景介绍

智慧路灯是城市智能化道路上重要一环,智慧路灯的实施具有节约公共照明能耗、减少人工投入和因照明引起的交通事故等多种社会意义。路灯也是大家在日常生活中可以强烈感知到的公共设施,更易理解其智能化的场景。
通过将路灯接入物联网平台,并开发应用对接物联网平台。我们可以做到路灯的智能化管理。

您将建立什么

在本次Codelab中,我们基于华为物联网应用构建器构建一款智慧路灯应用,显示路灯上报环境光强,给路灯下发开关灯命令,带您十分钟体验物联应用开发。

您将会学到什么

  • 设备如何接入华为云物联网平台
  • 如何利用物联网应用构建器开发物联网应用

您需要什么

  • 已实名认证的华为云账号
  • 智慧路灯实验工具包(点此下载),解压获取智慧路灯产品模型(SmartStreetLight.zip)和设备接入模拟器(HubSimulator.jar)

2. 构建应用

  1. 登录华为云官方网站,访问物联网应用构建器

  2. 单击“立即使用”并开通服务后,在控制台中单击“创建项目”。

  3. 填写项目名称(如“SmartStreetLight”)并确认,然后进入项目开发页面。

  4. 单击“创建应用”。

  5. 填写应用名称(如“SmartStreetLight”),选择“基础模板”,单击“确定”。

3. 导入产品模型

  1. 单击“开发应用”,进入应用开发页面。

  2. 进入“产品模型”页面,单击“新增产品模型 > 本地导入”。

  3. 填写产品名称(如“SmartStreetLight”),上传智慧路灯产品模型(SmartStreetLight.zip),单击确定。

4. 编辑应用

  1. 将鼠标移至“自定义页面1”上,在弹出的列表中选择“修改”,修改页面信息。在弹出的窗口中,修改“菜单名称”为“路灯管理”,其他保持默认,然后单击“确定”。

  2. 选择“路灯管理”页面,设计页面组件布局。

  3. 拖动1个“选择设备”组件、2个“设备监控”组件和1个“命令下发”组件至页面中,并按下图所示的布局进行摆放。

  4. 分别单击页面中的“设备监控”组件,在右侧“配置面板 > 样式 ”中设置组件的样式。

    监控组件1

    • 标题:光强监控
    • 显示类型:简易
    • 其他参数:保持默认

    监控组件2

    • 标题:光强变化
    • 显示类型:图表
    • 其他参数:保持默认
  5. 分别单击页面中的“设备监控”组件,在右侧“配置面板 > 数据 ”中设置组件的数据源。因为2个“监控”组件都是用于监控路灯的光强,只是显示方式不同,所以“数据”页面参数设置一样。

    • 产品:选择已导入的路灯产品
    • 服务:Sensor
    • 属性:luminance
    • 设备来源:控件选择
    • 页面控件:选择设备

  6. 单击页面中的“命令下发”组件,在右侧“配置面板”设置对应功能的属性参数。

    设置“样式”页签参数

    • 标题:LED开关
    • 其他参数:保持默认

    设置“数据”页签参数

    • 产品:选择已导入的路灯产品
    • 服务:LED
    • 命令:Set_Led
    • 设备来源:控件选择
    • 页面控件:选择设备

  7. 路灯管理页面构建完成,单击右上角“保存”,然后单击“预览”查看应用页面效果。若预览效果中组件错位,请回到编辑页面通过拖拽方式调整组件的形状和位置。

5. 调试应用

调试应用前,我们需要先安装JDK,设备接入模拟器对JDK有依赖。

  1. 下载JDK 1.8版本,如“jdk-8u161-windows-x64.exe”,并双击进行安装。官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  2. 以下以WIN7为例说明如何配置环境变量。右键单击“计算机”,选择“属性”。

  3. 单击“高级系统设置”。

  4. 单击“环境变量”。

  5. 配置系统变量。需配置3个变量:JAVA_HOME、Path、CLASSPATH(不区分大小写)。若变量名已经存在,则单击“编辑”;若变量名不存在,则单击“新建”。一般Path变量存在,JAVA_HOME变量和CLASSPATH变量需要新增。

  6. JAVA_HOME指明JDK安装路径,配置示例:C:\ProgramFiles\Java\jdk1.8.0_45。此路径下包括lib,bin等文件夹。

  7. Path变量使系统可以在任何路径下识别Java命令。如果Path变量已经存在,则需在变量值最后添加路径,配置示例:;C:\Program Files\Java\jdk1.8.0_45\bin;C:\Program Files\Java\jdk1.8.0_45\jre\bin。
    两个路径之间需要使用“;”分割,分号是英文半角。

    CLASSPATH为Java加载类(class或lib)路径,只有配置CLASSPATH,Java命令才能识别。配置示例:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(路径以“.”开始,表示当前路径)。

  8. 重启系统,使环境变量生效。

  9. 选择“开始 > 运行”,输入“cmd”,执行命令:java -version、java、javac。如果命令可以执行,则说明环境变量配置成功。

然后让我们调试应用。

  1. 在已构建应用的预览界面中,选择“设备注册 > 单个注册”,单击“创建”。

  2. 系统将弹出“单个设备注册”窗口,填写设备相关信息,单击“确定”。

    产品选择:选择已导入的路灯产品
    设备名称:自定义
    设备识别码:填写自定义字符串,建议长度多于10位,避免与他人重复

    注册设备成功后注意保存返回的设备ID和密钥。

  3. 双击启动设备接入模拟器(HubSimulator.jar),切换到MQTT设备模拟器页签。

  4. 输入服务IP,设备ID,设备密钥,单击“建立连接”。

    服务IP:进入设备接入管理服务控制台查看,填写为MQTTS接入信息的域名。
    设备ID:注册设备成功后返回的设备ID。
    设备密钥:注册设备成功后返回的密钥。

    **注:**若无法建立连接,请在系统开始菜单输入“cmd”打开命令行,输入“ping 服务IP:服务端口”查看您的主机是否能和华为云物联网平台正常通信,若无法正常通信,请更换主机的网络环境。

  5. 建立连接成功后,右侧日志显示MQTT服务连接成功。

  6. 在模拟器下方区域填写上报数据内容后单击“发送消息”。

    上报数据的样例如下:

     {"msgType": "deviceReq",   
     "data": [{
     "serviceId": "Sensor",   
     "serviceData": { 
     "luminance": "200"}}]}
    
  7. 发送消息成功后,右侧日志显示信息推送成功。

  8. 在“路灯管理”页面,可以观察光强监控和光强变化(下图仅为示例,请以实际为准)。

然后验证命令下发。在本章节中,我们会为智慧路灯设计三种开关模式,分别是终端联控模式、分段定时模式和自动调光模式。

  1. 使用模拟器订阅Topic:“/huawei/v1/devices/{deviceId}/command/json”(其中{deviceId}需要替换成实际设备ID)。

  2. 首先验证终端联控模式。终端联控模式是指用户在平台直接控制路灯的开关。

选择“路灯管理 \> LED开关”,点击“设置参数”,“led”选择“ON”,单击“发送命令”。  

![](./media/image17.png)  

此时模拟器应该收到开灯命令(payload的值经过base64加密,解密后即可得到命令内容)

![](./media/image69.png)  

关灯命令与开灯命令操作步骤一样,差别是“led”选择“OFF”。  

以下步骤为可选步骤,用于体验进阶操作

  1. 然后实现分段定时模式。分段定时模式是指路灯在指定时间段自动开关。
新建两条规则,分别用于控制照明灯在不同时间下的开和关。  
选择“规则”,单击“创建规则”。  

![](./media/image19.png)  
  1. 选择设备联动规则,填写规则信息:
    1. 规则名称:规则名称:TIME_ON,红框内其他参数取默认值。

2. 在“条件”模块,点击“时间”所在行右侧的“添加”。  

	![](./media/image21.png) 

3. 选择开灯时间并提交。为方便验证,建议选择当前时间的数分钟后。其余参数留空。  

	![](./media/image22.png)  

4. 在“动作”模块,点击“设备行位”所在行右侧的“添加”。  

	![](./media/image23.png)  

5. 填写动作信息并提交:    

	-   动作类型:设备
	-   选择设备模型:选择已导入的路灯产品
	-   点击选择设备:选择已注册的开发板设备
	-   服务类型:LED
	-   命令名字:Set\_LED
	-   参数:led
	-   值:ON
	-   命令状态:启用
	-   其余参数留空

	![](./media/image24.png)

6.规则设置完毕后,点击页面最下方的“提交”。  
  1. 创建定时关灯规则,基本操作和创建定时开灯规则相同,区别在于:
-   规则名称填写为“TIME\_OFF”
-   时间点选择为开灯规则的一分钟后
-   动作中的命令取值设置为“OFF”
  1. 测试指定时间自动开关灯。
-   等到TIME\_ON规则设置的时间点,模拟器应该收到开灯命令。  
-   再等到TIME\_OFF规则设置的时间点,模拟器应该收到关灯命令。
  1. 最后实现自动调光模式。自动调光模式是指路灯在指定的光强下自动开关。
新建两条规则,分别用于控制照明灯在不同光强下的开和关。  
选择“规则”,单击“创建规则”。
  1. 创建光强变化自动开灯规则,填写规则信息:
1. 规则名称:LED\_ON,其他规则信息参数保持默认。  

	![](./media/image25.png)  

2. 在“条件”模块,点击“设备行为”所在行右侧的“添加”。  

	![](./media/image26.png)  

3. 填写条件信息并提交:  
	-   条件类型:设备类型
	-   选择设备模型:选择已创建的路灯产品
	-   服务类型:Sensor
	-   属性名字:luminance
	-   操作:\<
	-   值:50

	![](./media/image27.png)

4. 在“动作”模块,点击“设备行位”所在行右侧的“添加”。  

	![](./media/image23.png)  

5. 填写动作信息并提交:  
	-   动作类型:设备
	-   选择设备模型:选择已创建的路灯产品
	-   点击选择设备:选择已注册的开发板设备
	-   服务类型:LED
	-   命令名字:Set\_LED
	-   参数:led
	-   值:ON
	-   命令状态:启用
	-   其余参数留空

	![](./media/image24.png)  

6. 规则设置完毕后,点击页面最下方的“提交”。 
  1. 创建光强变化自动关灯规则,基本操作和创建光强变化自动开灯规则相同,区别在于:
-   规则名称填写为“LED\_OFF”
-   条件设置为luminance \> 500
-   动作中的命令取值设置为“OFF”
  1. 测试光强变化自动开关灯。 - 模拟器上报一条亮度小于50的数据,然后模拟器应该接到开灯命令。
    上报数据的样例如下:

    {"msgType": "deviceReq",
    "data": [{ "serviceId": "Sensor ",
    "serviceData": { "luminance": "20"}}]}

- 模拟器上报一条亮度大于500的数据,然后模拟器应该接到开灯命令。  
	上报数据的样例如下:

	{"msgType": "deviceReq",   
	"data": [{
	"serviceId": "Sensor ",   
	"serviceData": { 
	"luminance": "700"}}]}

6. 恭喜您

祝贺您,您已经完成了智慧路灯应用的开发,并学到了:

  • 设备如何接入华为云物联网平台
  • 如何利用物联网应用构建器开发物联网应用

7. 参与互动赢好礼

欢迎体验华为云IoT CodeLabs,点击下方按钮可返回华为云IoT CodeLabs论坛帖参与活动,有机会赢取荣耀手环、移动电源等大奖哦! 闯关有礼