基于软件开发平台构建应用服务器(联通用户专用)
非联通用户请查看设备接入服务。
场景说明
线下开发一个物联网应用,您需要一个代码库用于管理应用代码,还需要一个可与外网通信的服务器用于部署应用,准备和维护这两者都需要一定的成本。
华为云物联网平台提供基于软件开发平台的托管式应用开发与部署服务,助您摆脱这些杂务,专注于应用开发。
本示例基于小熊派开发板的智慧路灯方案,请先参考基于小熊派的智慧路灯完成平台侧和设备的开发。
构建应用
- 在开发中心中,选择“立即前往”。
,点击
- 在软件开发平台(DevCloud)首页,点击“新建项目”。
- 在“新建项目”窗口中,项目模板选择“Scrum”,并配置项目信息,点击“确定”。
项目名称:QuickStart
- 在新建的项目中选择
可进入代码仓库列表。软件开发平台提供三种新建代码仓库的方式:
- 点击 ,新建一个空白的代码仓库。
- 点击
- 搜索“iot”,点击“Huawei_IoT_Demo”,点击“下一步”。
- 完成各项参数配置后,点击“确定”。配置说明:
- 请输入代码仓库名称:根据规划进行填写,以“QuickStart”为例
- 选择.gitignore:Java
- 其余参数:保持默认即可
,使用模版新建一个代码仓库。本示例中使用这种方式。
- 搜索“iot”,点击“Huawei_IoT_Demo”,点击“下一步”。
- 点击 ,将外部Git或者SVN代码仓库导入软件开发平台。
- 单击新创建的仓库名称,进入该代码仓库。
若您想要定制应用,可以使用Git工具将代码拉到本地修改后再重新提交至代码仓库。
业务代码位于
目录下,几个关键参数的修改方法如下:- 物联网平台应用接入地址:请修改业务代码目录下 文件中的常量“NORTH_IP”和“BASE_URL”。
- 应用服务器接收推送消息的地址:该样例接收推送的地址格式为“http://IP:8080/receive-data”
- 其中“IP”为应用服务器的弹性IP,无法通过业务代码修改。
- “8080”为Spring应用的启动端口,可在 文件中修改“server.port”的值。
- “/receive-data”为映射地址,可在业务代码目录下 文件中修改“PostMapping”的值。
注:本文档后续的操作均基于未修改的代码样例。
- 选择
。
- 在“编译构建”中,点击“新建任务”。
- 在“QuickStart”为例,点击“下一步”。
中,配置任务名称,以
- 在“下一步”。配置说明:
中,配置各项参数,点击
- 源码源:DevCloud
- 源码仓库:与创建的代码仓库名称一致,以“QuickStart”为例
- 分支:master
- 在“Maven”,点击“确定”。
中,选择
- 在“步骤显示名称”和“工具版本”,此处以默认配置为例。
中,配置
- 在“新建”。
中,配置各项参数,此处以默认配置为例,点击
- 点击“执行”。
等待工程完成构建。
- 在工具栏选择“部署”,点击“新建任务”。
- 在“下一步”。
中,配置任务名称,此处以默认配置为例,点击
- 在“SpringBoot应用部署”,点击“确定”。
中,选择
- 在
中,配置各项参数:
如果是第一次部署该应用,则可以在“控制选项”中去勾选“启用”。
- 步骤显示名称:以默认值为例
- 主机组:如果无可用主机组,则点击“新建”完成创建主机组后,再进行选择。操作详见参考:创建主机组
- 服务操作类型:停止服务
- 服务对应的绝对路径:若之前已部署过该应用,填写该应用在主机上的实际路径,以“/home/huawei-0.0.1-SNAPSHOT.jar”为例
- 在
中,配置各项参数:
如果主机上已经安装JDK,则可以在“控制选项”中去勾选“启用”。
- 步骤显示名称:以默认值为例
- 主机组:如果无可用主机组,则点击“创建主机组”完成创建后,再进行选择。操作详见参考:创建主机组。
- jdk版本:根据需要选择jdk版本
- jdk安装路径:填写jdk在主机的安装路径,以“/usr/local/jdk”为例
- 在
中,配置各项参数:
- 步骤显示名称:以默认值为例
- 选择源类型:构建任务
本指导基于在DevCloud构建的任务来进行部署。
- 请选择构建任务:选择已经在DevCloud构建的任务,以“QuickStart”为例
- 构建序号:配置已选择构建任务的序号,以“Latest”为例
- 下载到主机的部署目录:构建任务生成的软件部署到主机的路径,以“/home”为例
- 在
中,配置各项参数:
- 步骤显示名称:以默认值为例
- 主机组:如果无可用主机组,则点击“创建主机组”完成创建后,再进行选择。操作详见参考:创建主机组。
- 服务操作类型:启动服务
- 服务对应的绝对路径:由19设置的部署目录(例如“/home”)加上12设置的构建包名称(例如“huawei-0.0.1-SNAPSHOT.jar”)决定,例如“/home/huawei-0.0.1-SNAPSHOT.jar”
- 其余参数保持默认。
- 在“保存并执行”。
中,配置各项参数,点击
- 步骤显示名称:以默认值为例
- 主机组:如果无可用主机组,则点击“创建主机组”完成创建后,再进行选择。操作详见参考:创建主机组。
- 等待时间:进行URL路径测试前的等待时间,以“3”为例
- 测试路径:填写测试服务状态的URL地址
- 等待软件在主机部署成功。
调试应用
- 为应用服务器订阅设备数据变化通知。
- 通过开发中心订阅
- 登录开发中心,在对应项目中,选择“订阅调试”,并订阅设备数据变化。
- 输入“订阅地址”:http://IP:8080/receive-data,其中IP为应用服务器的弹性IP,点击“确定”。
系统将对订阅地址的格式和连通性进行检测,并返回检查结果。
在“我的订阅”中,将显示新添加的订阅类型。
- 登录开发中心,在对应项目中,选择“订阅调试”,并订阅设备数据变化。
- 通过接口订阅(本示例中通过Postman调用接口进行订阅)点此下载Postman
- 打开Postman的“Settings”菜单。
- 关闭证书校验,使Postman不再校验服务端的证书。
- 配置客户端证书,“Host”栏的地址和端口填写开发中心 中“应用接入信息”的IP与端口(HTTPS协议),CRT文件和KEY文件为证书文件,点击此处获取。
- 调用“鉴权”接口,首先配置HTTP方法和URL。
参数
取值
HTTP方法
POST
URL
https://IP:port/iocm/app/sec/v1.1.0/login 其中IP和port为开发中心
中“应用接入信息”的IP与端口。 - 然后配置Body。
参数
取值
Content-Type
选择application/x-www-form-urlencoded。
注:选择Body格式后Postman会自动添加一个Content-Type头域。
appId
填写创建项目时获取的应用ID。
secret
填写创建项目时获取的应用密钥。
- 点击“Send”,在下方查看返回码和响应消息内容,响应码为200 OK表示鉴权成功。
请将返回的accessToken妥善保存,以便于在调用其它接口时使用。
- 调用“订阅平台业务数据”接口,首先配置HTTP方法、URL和Headers。
参数
取值
HTTP方法
POST
URL
https://IP:port/iocm/app/sub/v1.2.0/subscriptions 其中IP和port为开发中心
中“应用接入信息”的IP与端口。app_key
填写创建项目时获取的应用ID。
Authorization
进入Authorization页签,“Type”选择“Bearer Token”,“Token”填写鉴权接口返回的accessToken。
- 然后配置Body。
参数
取值
Content-Type
选择raw之后选择JSON(application/json)。
注:选择Body格式后Postman会自动添加一个Content-Type头域。
notifyType
填写为“deviceDataChanged”。
callbackUrl
填写为“http://IP:8080/receive-data”,其中IP为应用服务器的弹性IP。
- 点击“Send”,在下方查看返回码和响应消息内容,响应码为201 Created表示订阅成功。
- 打开Postman的“Settings”菜单。
- 通过开发中心订阅
- 访问应用系统:http://xxx.xxx.xxx.xxx:8080/index.html,xxx.xxx.xxx.xxx为应用系统的IP地址。
- 在“参数设置”中,填写“应用信息”和“产品信息”后,点击“确定”。
- “应用信息”中的“应用ID”和“应用密钥”,在开发中心创建项目和产品后,由系统返回。
- “产品信息”中的“厂商ID”、“厂商名称”、“设备类型”等信息,需要与在开发中心创建项目和产品时设置的产品信息保持一致。
“产品信息”可以在开发中心创建的产品中查看。
- 在“属性参数”中,配置“设备标识”,点击“注册设备”。
“设备标识”填写开发板的IMEI号,可以在开发板上进行查看。
- 在“属性参数”中,填写“亮度阈值”,点击“设置”。
亮度阈值请根据实际需要填写,当环境光强低于该值时,下发开灯命令;当环境光强高于该值时,下发关灯命令。此处以“10”为例。
- 进行如下测试:
- 在应用系统的“环境亮度”区域,查看“亮度值”:“亮度值”应该随开发板所在环境不断变化。
- 遮住开发板,使开发板处于黑暗环境中(亮度<10),查看开发板的照明灯和应用系统的“灯状态”:开发板的照明灯应该打开;应用系统的“灯状态”应该切换为“开”。
- 移除遮挡物,使开发板处于明亮环境中(亮度>10),查看开发板的照明灯和应用系统的“灯状态”:开发板的照明灯应该关闭;应用系统的“灯状态”应该切换为“关”。
- 在应用系统的“环境亮度”区域,查看“亮度值”:“亮度值”应该随开发板所在环境不断变化。