-
登录华为云官方网站,访问软件开发平台。
-
单击“立即使用”进入软件开发平台控制台。
-
单击页面右上角的“新建项目”。
-
在“新建项目”窗口中,项目模板选择“Scrum”,填写项目名称(例如“QuickStart”),点击“确定”。
![]()
-
进入“代码 > 代码托管”页面,选择“按模版新建”。
![]()
-
搜索“IoT_Streetlight_Demo”,点击选中,然后点击“下一步”。
![]()
-
完成各项参数配置后,点击“确定”。
![]()
请代码仓库名称:自定义,例如“IoT_StreetLight_Demo”
选择.gitignore:Java
其余参数:保持默认即可
-
选择“构建&发布 > 编译构建”,然后单击“新建任务”。
![]()
-
在“新建编译构建任务 > 基本信息”中,任务名称自定义,可以保持默认,单击“下一步”。
![]()
-
在“新建编译构建任务 > 选择源代码”中,配置各项参数,单击“下一步”。
![]()
源码源:DevCloud
源码仓库:选择之前创建的源码仓库
分支:master
-
在“新建编译构建任务 > 选择构建模板”中,选择“Maven”,单击“确定”。
![]()
-
在“构建步骤 ”中,直接点击“新建并执行”。
![]()
-
等待工程完成构建,查看并记录jar包的名称(通常为“huawei-0.0.1-SNAPSHOT.jar”)。
![]()
-
在工具栏选择“部署”,单击“新建任务”。
![]()
-
在“新建部署任务 > 基本信息”中,配置任务名称,可保持默认,单击“下一步”。
![]()
-
在“新建部署任务 > 选择部署模板”中,选择“SpringBoot应用部署”,单击“确定”。
![]()
-
在“部署步骤 > 安装JDK服务”中,单击“主机组”右侧的“新建”。
![]()
-
在弹出的新窗口中,设置主机组基本信息,单击“保存”。
![]()
主机组名称:自定义,如“iot”
操作系统:选择“linux”
-
在新创建的主机组中,单击“添加主机”。
![]()
-
在“添加主机”窗口中,配置主机信息并勾选同意隐私政策说明,然后单击“添加”。
![]()
主机名:自定义,可与创建弹性云服务器时设置的云服务器名称保持一致
IP:填写为创建弹性云服务器后分配的弹性IP,可在弹性云服务器控制台查看
授信方式:密码授信
用户名:填写为“root”
密码:填写为创建弹性云服务器时设置的登录密码
其余参数保持默认
-
返回“部署步骤 > 安装JDK服务”页面,配置各项参数:
![]()
步骤显示名称:保持默认值
主机组:选择之前创建的主机组
jdk版本:选择1.8.0版本。
-
在“部署步骤 > 停止SpringBoot服务” 中,去勾选“控制选项”中的“启用”。
![]()
-
在“部署步骤 > 选择部署来源”中,配置各项参数:
![]()
步骤显示名称:保持默认值
选择源类型:构建任务
主机组:选择之前创建的主机组
请选择构建任务:选择之前执行完成的构建任务
构建序号:保持默认值
下载到主机的部署目录:自定义,例如“/home”
-
在“部署步骤 > 启动SpringBoot服务”中,配置各项参数:
![]()
步骤显示名称:保持默认值
主机组:选择之前创建的主机组
服务操作类型:保持默认值
服务的绝对路径:填写为部署目录加构建包的名称,例如“/home/huawei-0.0.1-SNAPSHOT.jar”
其余参数保持默认
-
在“部署步骤”中删除“URL健康测试”。
-
在“参数设置”中,勾选全部参数,点击“批量删除”,本实验中不使用这些参数。
![]()
-
点击保存并执行,等待部署成功。
![]()
深度开发智慧路灯应用
您在体验过程中有任何疑问,都可以在此留言反馈>>![问题反馈]()
1. 介绍
背景介绍
智慧路灯是城市智能化道路上重要一环,智慧路灯的实施具有节约公共照明能耗、减少人工投入和因照明引起的交通事故等多种社会意义。路灯也是大家在日常生活中可以强烈感知到的公共设施,更易理解其智能化的场景。
基于物联网解决方案,我们可以实现路灯的远程监控与控制,实现远程控制、按需照明等功能,降低路灯运行成本。
您将建立什么
在本次Codelab中,我们基于华为IoT平台设备接入管理服务、弹性云服务器、软件开发平台等服务构建一个智慧路灯应用。该应用可通过两种方案获取数据,用于显示光强和路灯状态,并支持通过设备接入管理服务下发开关灯命令。
您将会学到什么
理解物联网平台如何利用设备数据。
掌握设备上报数据到物联网平台的原理和方法。
如何开发应用控制物联网设备。
您需要什么
已实名认证的华为云账号
下载智慧路灯实验工具包(点此下载),解压获取智慧路灯产品模型(SmartStreetLight.zip)和设备接入模拟器(HubSimulator.jar)
2. 资源准备
进入控制台
打开浏览器,输入华为云网站地址https://www.huaweicloud.com/,在上方菜单栏中单击“登录”。
在账号登录界面输入账户名、密码,单击“登录”。
进入华为云控制台,更改当前区域为“华北-北京四”。以保证后续实验都在该区域下进行。
安装并配置JDK1.8
下载JDK 1.8版本,如“jdk-8u161-windows-x64.exe”,并双击进行安装。官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
以下以WIN7为例说明如何配置环境变量。右键单击“计算机”,选择“属性”。
单击“高级系统设置”。
单击“环境变量”。
配置系统变量。需配置3个变量:JAVA_HOME、Path、CLASSPATH(不区分大小写)。若变量名已经存在,则单击“编辑”;若变量名不存在,则单击“新建”。一般Path变量存在,JAVA_HOME变量和CLASSPATH变量需要新增。
JAVA_HOME指明JDK安装路径,配置示例:C:\ProgramFiles\Java\jdk1.8.0_45。此路径下包括lib,bin等文件夹。
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(路径以“.”开始,表示当前路径)。
重启系统,使环境变量生效。
选择“开始 > 运行”,输入“cmd”,执行命令:java -version、java、javac。如果命令可以执行,则说明环境变量配置成功。
创建虚拟私有云VPC
登录华为云控制台,在“所有服务”下单击“网络>虚拟私有云”,进入网络控制台,点击“创建虚拟私有云”进入创建界面。
基本信息:
当前区域:华北-北京四
名称:保持默认
网段:192.168.0.0/16
子网配置:
可用分区:可用区1
子网名称:保持默认
子网网段:192.168.0.0/24
高级配置:默认配置
单击“立即创建”。
单击“虚拟私有云”界面,进入自己创建的虚拟私有云界面。可查看到已创建好的虚拟私有云。
3. 创建弹性云服务器
登录华为云官方网站,访问弹性云服务器。
单击“立即购买”,购买弹性云服务器,以下配置仅为样例。
基础配置
计费模式:按需计费
区域:华北-北京四
可用区:随机分配
CPU架构:X86计算
规格:为降低实验成本,可选择通用入门型的t6.small.1(若售馨也可选择更高规格)
镜像:选择公共镜像的Ubuntu 16.04版本,去勾选主机安全基础版
系统盘:保持默认
网络配置
网络:选择已创建的VPC和子网,自动分配IP地址
安全组:保持默认
带宽:为降低实验成本,可降低至1Mbit/s
其余参数保持默认
高级配置
设置远程登录ECS用的密码,其余参数保持默认。
确认配置后点击立即购买。
主机创建完成后,进行主机授信配置。登录弹性云服务器控制台,单击主机名,进入主机详情页面,选择“安全组”页签。
单击“更改安全组规则”,然后做如下设置:
SSH协议端口(22)口的入方向TCP协议默认开放,无需修改。
将智慧路灯应用端口(8080)的入方向放开限制,用于后续访问智慧路灯应用。
出方向默认不做限制,无需修改。
远程登录到ECS的linux系统内。
回车,首先输入账号“root”,然后输入购买时自定义的密码,登录root账号。
执行sudo ufw enable打开ufw服务。然后执行sudo ufw allow 22/tcp和sudo ufw allow 8080/tcp打开22和8080端口。
4. 部署智慧路灯应用
登录华为云官方网站,访问软件开发平台。
单击“立即使用”进入软件开发平台控制台。
单击页面右上角的“新建项目”。
在“新建项目”窗口中,项目模板选择“Scrum”,填写项目名称(例如“QuickStart”),点击“确定”。
进入“代码 > 代码托管”页面,选择“按模版新建”。
搜索“IoT_Streetlight_Demo”,点击选中,然后点击“下一步”。
完成各项参数配置后,点击“确定”。
请代码仓库名称:自定义,例如“IoT_StreetLight_Demo”
选择.gitignore:Java
其余参数:保持默认即可
选择“构建&发布 > 编译构建”,然后单击“新建任务”。
在“新建编译构建任务 > 基本信息”中,任务名称自定义,可以保持默认,单击“下一步”。
在“新建编译构建任务 > 选择源代码”中,配置各项参数,单击“下一步”。
源码源:DevCloud
源码仓库:选择之前创建的源码仓库
分支:master
在“新建编译构建任务 > 选择构建模板”中,选择“Maven”,单击“确定”。
在“构建步骤 ”中,直接点击“新建并执行”。
等待工程完成构建,查看并记录jar包的名称(通常为“huawei-0.0.1-SNAPSHOT.jar”)。
在工具栏选择“部署”,单击“新建任务”。
在“新建部署任务 > 基本信息”中,配置任务名称,可保持默认,单击“下一步”。
在“新建部署任务 > 选择部署模板”中,选择“SpringBoot应用部署”,单击“确定”。
在“部署步骤 > 安装JDK服务”中,单击“主机组”右侧的“新建”。
在弹出的新窗口中,设置主机组基本信息,单击“保存”。
主机组名称:自定义,如“iot”
操作系统:选择“linux”
在新创建的主机组中,单击“添加主机”。
在“添加主机”窗口中,配置主机信息并勾选同意隐私政策说明,然后单击“添加”。
主机名:自定义,可与创建弹性云服务器时设置的云服务器名称保持一致
IP:填写为创建弹性云服务器后分配的弹性IP,可在弹性云服务器控制台查看
授信方式:密码授信
用户名:填写为“root”
密码:填写为创建弹性云服务器时设置的登录密码
其余参数保持默认
返回“部署步骤 > 安装JDK服务”页面,配置各项参数:
步骤显示名称:保持默认值
主机组:选择之前创建的主机组
jdk版本:选择1.8.0版本。
在“部署步骤 > 停止SpringBoot服务” 中,去勾选“控制选项”中的“启用”。
在“部署步骤 > 选择部署来源”中,配置各项参数:
步骤显示名称:保持默认值
选择源类型:构建任务
主机组:选择之前创建的主机组
请选择构建任务:选择之前执行完成的构建任务
构建序号:保持默认值
下载到主机的部署目录:自定义,例如“/home”
在“部署步骤 > 启动SpringBoot服务”中,配置各项参数:
步骤显示名称:保持默认值
主机组:选择之前创建的主机组
服务操作类型:保持默认值
服务的绝对路径:填写为部署目录加构建包的名称,例如“/home/huawei-0.0.1-SNAPSHOT.jar”
其余参数保持默认
在“部署步骤”中删除“URL健康测试”。
在“参数设置”中,勾选全部参数,点击“批量删除”,本实验中不使用这些参数。![]()
点击保存并执行,等待部署成功。
5. 创建数据接入通道(可选)
若使用通过DIS转发设备数据的方案,需要进行以下操作。
登录华为云官方网站,访问数据接入服务。
单击“立即购买”,购买接入通道,以下配置仅为样例。
区域:保持默认。
通道名称:自定义,可保持默认。
通道类型:保持默认。
分区数量:1。
生命周期:1。
源数据类型:JSON。
自动扩缩容:保持默认。
Schema开关:保持默认。
高级配置:保持默认。
6. 导入产品模型
登录华为云官方网站,访问设备接入管理服务。
开通服务后,进入控制台。
从左侧导航打开“产品”页面,单击页面右上角的“创建产品”。
创建智慧路灯产品。
所属资源空间:保持默认。
产品名称:自定义,如“StreetLight”。
协议类型:选择MQTT。
数据格式:选择JSON。
厂商名称:自定义,如“Huawei_IoT”。
选择模型:不勾选。
所属行业:选择智慧城市
设备类型:自定义,如“StreetLight”。
产品创建成功后,自动跳转至产品详情界面,单击“导入模型文件”。
上传产品模型(SmartStreetLight.zip)。
导入成功后,记录产品ID,后续智慧路灯应用需要填写该ID。
7. 创建数据转发规则(可选)
若使用通过DIS转发设备数据的方案,需要进行以下操作。
通过左侧导航进入“规则”页面,单击“云服务对接配置”,按照页面提示配置与华为云对接。
完成对接配置后,单击“创建规则”,选择“数据转发规则”,填写规则内容,填写完成后单击“立即创建”。
规则名称:自定义,如“to_DIS”。
数据类型/过滤产品:保持默认。
转发至服务:数据接入服务
区域:cn-north-4
通道:选择已创建的通道名称。
8. 配置智慧路灯应用
打开浏览器,访问“http://{IP}:8080/index.html”,其中{IP}替换为部署了应用的弹性云服务器的弹性IP。
在弹出的“参数设置”窗口中设置各项参数。
首先需要选择数据来源。不管选择哪种数据来源,后续的验证操作都相同,可随意选择。
若选择“数据接入服务”,需要填写通道信息。
访问密钥ID/秘密访问密钥:填写为华为云账号的访问密钥,点此查看获取方式。
通道名称:填写为创建数据接入通道时设置的通道名称。
若选择“订阅推送”,需要填写订阅信息。
本机IP:填写为该ECS的弹性IP。
不管选择哪种数据来源,都需要填写API凭证和产品信息。
APPID:填写为物联网平台资源空间 的APPID,可在设备接入管理服务控制台“资源空间”页面查看,存在多个资源空间时选择你创建产品并注册设备的那个资源空间。
账号名/IAM用户名:填写为华为云账号的账号名和IAM用户名,可以在“我的凭证”页面查看。点此查看获取方式。
IAM用户密码:填写为华为云账号的登录密码。
项目ID:填写为华为云账号在“华北-北京四”区域的项目ID,可以在“我的凭证”页面查看。
产品ID:填写为物联网平台上创建的产品的产品ID。
输入后确定,等待设置成功。
填写设备标识(可自定义填写一串字母和数字的字符串),单击“注册设备”。
注册成功后记录返回的设备ID和密钥。
9. 结果验证
双击启动设备接入模拟器(HubSimulator.jar),切换到MQTT设备模拟器页签。
输入服务IP,设备ID,设备密钥,单击“建立连接”。
服务IP:进入设备接入管理服务控制台查看,填写为MQTTS接入信息的域名。
设备ID:配置智慧路灯应用中注册设备成功后返回的设备ID。
设备密钥:配置智慧路灯应用中注册设备成功后返回的密钥。
**注:**若无法建立连接,请在系统开始菜单输入“cmd”打开命令行,输入“ping 服务IP:服务端口”查看您的主机是否能和华为云物联网平台正常通信,若无法正常通信,请更换主机的网络环境。
建立连接成功后,右侧日志显示MQTT服务连接成功。
“发送消息”的Topic修改为“$oc/devices/{device_id}/sys/properties/report”其中{device_id}需要替换成实际设备ID),在模拟器下方区域填写上报数据内容后单击“发送消息”。
上报数据的样例如下:
发送消息成功后,右侧日志显示信息推送成功。
查看应用界面,应该显示“环境亮度”为200LUX,“灯状态”为关。
使用模拟器订阅Topic:“$oc/devices/{device_id}/sys/commands/#”(其中{device_id}需要替换成实际设备ID)。
修改“发送消息”的Topic为“$oc/devices/{device_id}/sys/commands/response/request_id=”(其中{device_id}需要替换成实际设备ID),内容填写如下数据,填写完成后不要发送消息。
“路灯控制”选择“终端联控模式”,开关选择“开”后点击“设置”。
查看模拟器日志区域,应该会收到开灯命令(payload的值经过base64加密,解密后即可得到命令内容)。
**注:**应用设计为直到设备上报的灯光状态变化为止,每五秒下发一次命令,所以此时会收到多条开灯命令,以下相同场景不再赘述。
复制收到的命令的Topic中的request_id的值,粘贴到之前设置的“发送消息”的Topic的最后,然后单击“发送消息”。
**注:**请在收到命令20秒内完成该步骤,否则命令会超时。
“发送消息”的Topic修改为“$oc/devices/{device_id}/sys/properties/report”其中{device_id}需要替换成实际设备ID),上报如下数据。
查看应用界面,应该显示“环境亮度”为210LUX,“灯状态”为开。
以下步骤为可选步骤,用于体验进阶操作
修改“发送消息”的Topic为“$oc/devices/{device_id}/sys/commands/response/request_id=”(其中{device_id}需要替换成实际设备ID),内容填写如下数据,填写完成后不要发送消息。
“路灯控制”选择“分段定时模式”,设置关灯时间段为当前时间到五分钟后。
查看模拟器日志区域,应该会收到一条关灯命令。
复制收到的命令的Topic中的request_id的值,粘贴到之前设置的“发送消息”的Topic的最后,然后单击“发送消息”。
**注:**请在收到命令20秒内完成该步骤,否则命令会超时。
“发送消息”的Topic修改为“$oc/devices/{device_id}/sys/properties/report”其中{device_id}需要替换成实际设备ID),上报一条light_state为OFF的数据。
修改“发送消息”的Topic为“$oc/devices/{device_id}/sys/commands/response/request_id=”(其中{device_id}需要替换成实际设备ID),内容填写如下数据,填写完成后不要发送消息。
“路灯控制”选择“自动调光模式”,设置阈值为100。
再查看模拟器日志区域,应该会收到一条开灯命令。
复制收到的命令的Topic中的request_id的值,粘贴到之前设置的“发送消息”的Topic的最后,然后单击“发送消息”。
**注:**请在收到命令20秒内完成该步骤,否则命令会超时。
“发送消息”的Topic修改为“$oc/devices/{device_id}/sys/properties/report”其中{device_id}需要替换成实际设备ID),上报如下数据。
10. 恭喜您
祝贺您,您已经完成了智慧路灯应用的开发,并学到了:
理解物联网平台如何利用设备数据。
掌握设备上报数据到物联网平台的原理和方法。
如何开发应用控制物联网设备。
完成实验后请自行释放付费资源,避免持续扣费。
11. 参与互动赢好礼
欢迎体验华为云IoT CodeLabs,点击下方按钮可返回华为云IoT CodeLabs论坛帖参与活动,有机会赢取荣耀手环、移动电源等大奖哦!![闯关有礼]()