文档首页> 设备管理 IoTDM(联通用户专用)> 最佳实践> 构建应用服务器> 基于软件开发平台构建应用服务器(联通用户专用)
更新时间:2023-04-18 GMT+08:00
分享

基于软件开发平台构建应用服务器(联通用户专用)

非联通用户请查看设备接入服务

场景说明

线下开发一个物联网应用,您需要一个代码库用于管理应用代码,还需要一个可与外网通信的服务器用于部署应用,准备和维护这两者都需要一定的成本。

华为云物联网平台提供基于软件开发平台的托管式应用开发与部署服务,助您摆脱这些杂务,专注于应用开发。

本示例基于小熊派开发板的智慧路灯方案,请先参考基于小熊派的智慧路灯完成平台侧和设备的开发。

构建应用

  1. 在开发中心中,选择应用 > 应用在线开发 ,点击“立即前往”

  2. 在软件开发平台(DevCloud)首页,点击“新建项目”

  3. “新建项目”窗口中,项目模板选择“Scrum”,并配置项目信息,点击“确定”

    项目名称:QuickStart

  4. 在新建的项目中选择代码 > 代码托管 可进入代码仓库列表。软件开发平台提供三种新建代码仓库的方式:

    • 点击新建 > 普通新建,新建一个空白的代码仓库。
    • 点击新建 > 按模版新建,使用模版新建一个代码仓库。本示例中使用这种方式。
      1. 搜索“iot”,点击“Huawei_IoT_Demo”,点击“下一步”。

      2. 完成各项参数配置后,点击“确定”。配置说明:
        • 请输入代码仓库名称:根据规划进行填写,以“QuickStart”为例
        • 选择.gitignore:Java
        • 其余参数:保持默认即可

    • 点击新建 > 导入外部仓库,将外部Git或者SVN代码仓库导入软件开发平台。

  5. 单击新创建的仓库名称,进入该代码仓库。

    若您想要定制应用,可以使用Git工具将代码拉到本地修改后再重新提交至代码仓库。

    业务代码位于src > main > java > com > huawei目录下,几个关键参数的修改方法如下:

    • 物联网平台应用接入地址:请修改业务代码目录下utils > Constants.java文件中的常量“NORTH_IP”和“BASE_URL”。
    • 应用服务器接收推送消息的地址:该样例接收推送的地址格式为“http://IP:8080/receive-data”
      • 其中“IP”为应用服务器的弹性IP,无法通过业务代码修改。
      • “8080”为Spring应用的启动端口,可在src > main > resources > application.properties文件中修改“server.port”的值。
      • “/receive-data”为映射地址,可在业务代码目录下controller > CollectDeviceData.java文件中修改“PostMapping”的值。

    注:本文档后续的操作均基于未修改的代码样例。

  6. 选择构建&发布 > 编译构建

  7. “编译构建”中,点击“新建任务”

  8. 新建编译构建任务 > 基本信息中,配置任务名称,以“QuickStart”为例,点击“下一步”

  9. 新建编译构建任务 > 选择源代码中,配置各项参数,点击“下一步”。配置说明:

    • 源码源:DevCloud
    • 源码仓库:与创建的代码仓库名称一致,以“QuickStart”为例
    • 分支:master

  10. 新建编译构建任务 > 选择构建模板中,选择“Maven”,点击“确定”

  11. 构建步骤 > Maven构建中,配置“步骤显示名称”“工具版本”,此处以默认配置为例。

  12. 构建步骤 > 上传软件包到软件发布库中,配置各项参数,此处以默认配置为例,点击“新建”

  13. 点击“执行”

    等待工程完成构建。

  14. 在工具栏选择“部署”,点击“新建任务”

  15. 新建部署任务 > 基本信息中,配置任务名称,此处以默认配置为例,点击“下一步”

  16. 新建部署任务 > 选择部署模板中,选择“SpringBoot应用部署”,点击“确定”

  17. 部署步骤 > 停止SpringBoot服务中,配置各项参数:

    如果是第一次部署该应用,则可以在“控制选项”中去勾选“启用”

    • 步骤显示名称:以默认值为例
    • 主机组:如果无可用主机组,则点击“新建”完成创建主机组后,再进行选择。操作详见参考:创建主机组
    • 服务操作类型:停止服务
    • 服务对应的绝对路径:若之前已部署过该应用,填写该应用在主机上的实际路径,以“/home/huawei-0.0.1-SNAPSHOT.jar”为例

  18. 部署步骤 > 安装JDK中,配置各项参数:

    如果主机上已经安装JDK,则可以在“控制选项”中去勾选“启用”

    • 步骤显示名称:以默认值为例
    • 主机组:如果无可用主机组,则点击“创建主机组”完成创建后,再进行选择。操作详见参考:创建主机组
    • jdk版本:根据需要选择jdk版本
    • jdk安装路径:填写jdk在主机的安装路径,以“/usr/local/jdk”为例

  19. 部署步骤 > 选择部署来源中,配置各项参数:

    • 步骤显示名称:以默认值为例
    • 选择源类型:构建任务

      本指导基于在DevCloud构建的任务来进行部署。

    • 请选择构建任务:选择已经在DevCloud构建的任务,以“QuickStart”为例
    • 构建序号:配置已选择构建任务的序号,以“Latest”为例
    • 下载到主机的部署目录:构建任务生成的软件部署到主机的路径,以“/home”为例

  20. 部署步骤 > 启动SpringBoot服务中,配置各项参数:

    • 步骤显示名称:以默认值为例
    • 主机组:如果无可用主机组,则点击“创建主机组”完成创建后,再进行选择。操作详见参考:创建主机组
    • 服务操作类型:启动服务
    • 服务对应的绝对路径:由19设置的部署目录(例如“/home”)加上12设置的构建包名称(例如“huawei-0.0.1-SNAPSHOT.jar”)决定,例如“/home/huawei-0.0.1-SNAPSHOT.jar”
    • 其余参数保持默认。

  21. 部署步骤 > URL健康测试中,配置各项参数,点击“保存并执行”

    • 步骤显示名称:以默认值为例
    • 主机组:如果无可用主机组,则点击“创建主机组”完成创建后,再进行选择。操作详见参考:创建主机组
    • 等待时间:进行URL路径测试前的等待时间,以“3”为例
    • 测试路径:填写测试服务状态的URL地址

  22. 等待软件在主机部署成功。

调试应用

  1. 为应用服务器订阅设备数据变化通知。

    • 通过开发中心订阅
      1. 登录开发中心,在对应项目中,选择“订阅调试”,并订阅设备数据变化。

      2. 输入“订阅地址”:http://IP:8080/receive-data,其中IP为应用服务器的弹性IP,点击“确定”

        系统将对订阅地址的格式和连通性进行检测,并返回检查结果。

        “我的订阅”中,将显示新添加的订阅类型。

    • 通过接口订阅(本示例中通过Postman调用接口进行订阅)点此下载Postman
      1. 打开Postman的“Settings”菜单。

      2. 关闭证书校验,使Postman不再校验服务端的证书。

      3. 配置客户端证书,“Host”栏的地址和端口填写开发中心应用 > 对接信息中“应用接入信息”的IP与端口(HTTPS协议),CRT文件和KEY文件为证书文件,点击此处获取

      4. 调用“鉴权”接口,首先配置HTTP方法和URL。

        参数

        取值

        HTTP方法

        POST

        URL

        https://IP:port/iocm/app/sec/v1.1.0/login 其中IP和port为开发中心应用 > 对接信息中“应用接入信息”的IP与端口。

      5. 然后配置Body。

        参数

        取值

        Content-Type

        选择application/x-www-form-urlencoded。

        注:选择Body格式后Postman会自动添加一个Content-Type头域。

        appId

        填写创建项目时获取的应用ID。

        secret

        填写创建项目时获取的应用密钥。

      6. 点击“Send”,在下方查看返回码和响应消息内容,响应码为200 OK表示鉴权成功。

        请将返回的accessToken妥善保存,以便于在调用其它接口时使用。

      7. 调用“订阅平台业务数据”接口,首先配置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。

      8. 然后配置Body。

        参数

        取值

        Content-Type

        选择raw之后选择JSON(application/json)。

        注:选择Body格式后Postman会自动添加一个Content-Type头域。

        notifyType

        填写为“deviceDataChanged”。

        callbackUrl

        填写为“http://IP:8080/receive-data”,其中IP为应用服务器的弹性IP

      9. 点击“Send”,在下方查看返回码和响应消息内容,响应码为201 Created表示订阅成功。

  2. 访问应用系统:http://xxx.xxx.xxx.xxx:8080/index.html,xxx.xxx.xxx.xxx为应用系统的IP地址。
  3. “参数设置”中,填写“应用信息”“产品信息”后,点击“确定”

    • “应用信息”中的“应用ID”“应用密钥”,在开发中心创建项目和产品后,由系统返回。
    • “产品信息”中的“厂商ID”“厂商名称”“设备类型”等信息,需要与在开发中心创建项目和产品时设置的产品信息保持一致。

    “产品信息”可以在开发中心创建的产品中查看。

  4. “属性参数”中,配置“设备标识”,点击“注册设备”

    “设备标识”填写开发板的IMEI号,可以在开发板上进行查看。

  5. “属性参数”中,填写“亮度阈值”,点击“设置”

    亮度阈值请根据实际需要填写,当环境光强低于该值时,下发开灯命令;当环境光强高于该值时,下发关灯命令。此处以“10”为例。

  6. 进行如下测试:

    1. 在应用系统的“环境亮度”区域,查看“亮度值”“亮度值”应该随开发板所在环境不断变化。

    2. 遮住开发板,使开发板处于黑暗环境中(亮度<10),查看开发板的照明灯和应用系统的“灯状态”:开发板的照明灯应该打开;应用系统的“灯状态”应该切换为“开”

    3. 移除遮挡物,使开发板处于明亮环境中(亮度>10),查看开发板的照明灯和应用系统的“灯状态”:开发板的照明灯应该关闭;应用系统的“灯状态”应该切换为“关”

参考:创建主机组

  1. 点击“新建”

  2. 在新建主机组界面中配置主机组基本信息,点击“保存”。配置说明:

    • 主机组名称:根据规划进行填写,以“iot”为例
    • 操作系统:根据主机操作系统进行配置,以“linux”为例

  3. 在新创建的主机组中,点击“添加主机”

  4. “添加主机”窗口中,配置主机信息,点击“添加”。各项参数请根据主机系统的实际信息进行配置。

    如果没有主机或弹性IP,请参照界面提示购买虚拟机和弹性IP。

    添加成功后,将在主机组中显示新添加的主机条目。

分享:

    相关文档

    相关产品