搭建自己的数字管家App平台-(4)FA Server运行起来

举报
神龙居市 发表于 2022/09/28 17:36:09 2022/09/28
【摘要】 数字管家整体架构视图 模块说明:FA: 数字管家HarmonyOS应用IOT Device: 基于OpenHarmony开发板的智能设备,如台灯,窗帘DistScheduleServer: 数字管家服务端,对FA提供Restful接口,并调用Huawei IOT Cloud管理IOT设备Huawei IOT Cloud: 华为IOT云,用于以mqtt协议,与设备通信。如下发命令,上报状态R...

数字管家整体架构视图

image.png

模块说明:

  • FA: 数字管家HarmonyOS应用
  • IOT Device: 基于OpenHarmony开发板的智能设备,如台灯,窗帘
  • DistScheduleServer: 数字管家服务端,对FA提供Restful接口,并调用Huawei IOT Cloud管理IOT设备
  • Huawei IOT Cloud: 华为IOT云,用于以mqtt协议,与设备通信。如下发命令,上报状态
  • RabbitMQ:消息队列,用于获取告警信息,通知给手机FA
  • MySql:数据库。保存日程,设备,用户,家庭等信息

如何独立搭建数字管家服务

步骤1.准备部署环境

1.Ubuntu 20 建议安装宝塔方便进行后续管理(https://www.bt.cn/?invite_code=MV9iZWRxeno=)

2.mysql5.7 (sudo apt install mysql-server) ,请注意不要使用mysql8+,允许外部访问mysql,修改root默认密码或配置新用户(用于服务端mysql配置)

3.openjdk/jdk 1.8 (sudo apt-get install openjdk-8-jdk)

4.RabbitMQ 3.6.10

步骤2. 下载代码

git clone git@gitee.com:openharmony-sig/knowledge_demo_smart_home.git

步骤3. 配置数据库

安装好mysql后创意数据库distschedule。
在目录 knowledge_demo_smart_home/Server/distschedule-dao/src/main/resources/db/migration 找到数据表脚本V1__CreateTables.sql在数据库distschedule上直接运行。
数据库中只有表device_type中有数据。
我们主要是调试smart_lamp,打开表device_type,id=1的记录有一个字段product_id,把它改为(2)IoT云端产品定义中创建的产品Id。

步骤4. 华为IOT云配置

1.申请云服务AK,SK以及appId,这些信息是用于连接华为云权限认证的,把他们配置到文件application-local.properties中.参考获取AK/SK

ak,sk,appId要记住,后面配置需要。

2.创建转发规则,转发设备信息到AMQP(需要转发设备属性,设备命令,设备消息,这样数字管家服务才能从IOT云中监听到这些信息的变化)
配置队列名,队列地址,accessKey,password到配置文件application-xxx.properties中.参考数据转发介绍

注意: 转发规则的数据来源分别选择“设备属性,设备命令,设备消息”,转发目标要选择AMQP推送消息队列,并分别建立不同的消息队列接收消息,分别接受设备属性,设备命令,设备消息的消息。
image.png

image.png

  • 我这里设置好的队列

image.png

步骤5. 修改配置文件

修改配置文件knowledge_demo_smart_home\Server\distschedule-core\src\main\resources\application-local.properties
配置信息上有注释,按照步骤找到相应的内容,安装时最好先用默认的。

# mysql数据库配置,需要提前部署和创建distschedule的数据库
# 数据库地址
spring.datasource.url=datasource_url:jdbc:mysql://*****:3306/distschedule?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai 
# 数据库账号
spring.datasource.username=*****
# 数据库密码
spring.datasource.password=****

# 华为IOT云配置,参考上面的介绍,申请IOT云的AK,SK,APPID
cloud.iot.ak=*****
cloud.iot.sk=*****
cloud.iot.appId=*****

# IOT云配置,参考上面的介绍,配置并获取华为IOT云的数据转发队列
cloud.iot.amqp.accessKey= #接入凭证,添加转发目标时,点击接入凭证获取
cloud.iot.amqp.password=  #接入凭证密码,添加转发目标时,点击接入凭证获取
cloud.iot.amqp.queueStatusName=  #设备状态队列名称(不是规则名称)
cloud.iot.amqp.queuePropertyName= #设备属性队列名称(不是规则名称)
cloud.iot.amqp.queueMsgName= #设备消息队列名称(不是规则名称)
cloud.iot.amqp.connectionUrl=amqps://*****.iot-amqps.cn-north-4.myhuaweicloud.com:5671?amqp.vhost=default&amqp.idleTimeout=8000&amqp.saslMechanisms=PLAIN #AMQP连接地址,点击“总览--》平台接入地址”获取



# rabbitmq消息队列,用于手机监听告警信息
spring.rabbitmq.host=*****    # rabbitmq地址
spring.rabbitmq.port=*****    # rabbitmq端口
spring.rabbitmq.username=*****  # rabbitmq用户名
spring.rabbitmq.password=*****   # rabbitmq密码
spring.rabbitmq.exchange.deviceproperty=deviceproperty_exchange # 消息exchange,可不改。如修改的话,FA侧也需要修改

步骤6.编译

编译环境:

  1. jdk8
  2. maven 3.6.3

进入目录,编译springboot jar包

cd knowledge_demo_smart_home/Server
mvn clean package -Dmaven.test.skip=true  

可执行的jar包在knowledge_demo_smart_home/Server/distschedule-core/target/distschedule-core-1.0.0-SNAPSHOT.jar`

步骤7. 服务启动

指定profile运行,建议使用local,才会加载前面的application-local.properties的配置文件。如果profile为xxx,则会加载application-xxx.properties的配置文件

也可通过环境变量指定所激活local profile

export SPRING_PROFILES_ACTIVE=local # 激活local
java -jar /opt/distschedule-core-1.0.0-SNAPSHOT.jar --spring.profiles.active=local

默认端口8080,启动后如后台无异常,可用浏览器访问http://127.0.0.1:8080/distschedule-api/swagger-ui/index.html ,验证服务是否已正常启动。 IP和端口需要替换成自己的。

步骤8:配置服务开机自启动

ubuntu18.04服务自启动,可以使用supervisor,参考文档点击

其中:/etc/rc.local文件

#!/bin/bash
 
nohup java -jar /opt/distschedule-core-1.0.0-SNAPSHOT.jar --spring.profiles.active=local> /clouddragonData/log/distschedule/server.log 2>&1 &
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。