搭建自己的数字管家App平台-(4)FA Server运行起来
数字管家整体架构视图
模块说明:
- 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
-
rabbitmq web页面管理启用:
rabbitmq-plugins enable rabbitmq_management
-
页面管理:http://ip:15672, 服务配置端口为5672
步骤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推送消息队列,并分别建立不同的消息队列接收消息,分别接受设备属性,设备命令,设备消息的消息。
- 我这里设置好的队列
步骤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.编译
编译环境:
- jdk8
- 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 &
- 点赞
- 收藏
- 关注作者
评论(0)