|
2 năm trước cách đây | |
---|---|---|
.. | ||
design | 2 năm trước cách đây | |
distschedule-core | 2 năm trước cách đây | |
distschedule-dao | 2 năm trước cách đây | |
distschedule-service | 2 năm trước cách đây | |
.gitignore | 2 năm trước cách đây | |
Dockerfile | 2 năm trước cách đây | |
README.md | 2 năm trước cách đây | |
docker-compose.yml | 2 năm trước cách đây | |
pom.xml | 2 năm trước cách đây | |
share.md | 2 năm trước cách đây |
数字管家服务端说明
1.Ubuntu 18.04.4 or 20
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安装:https://blog.csdn.net/u010889616/article/details/80643892
rabbitmq web页面管理启用:
rabbitmq-plugins enable rabbitmq_management
页面管理:http://ip:15672, 服务配置端口为5672
5.IOT云服务(华为云)
git clone git@gitee.com:openharmony-sig/knowledge_demo_smart_home.git
2.新增IOT设备,创建产品(Profile),定义属性,命令,参考profile
3.申请云服务AK,SK以及appId,这些信息是用于连接华为云权限认证的,把他们配置到文件application-local.properties中.参考获取AK/SK
cloud.iot.ak=*****
cloud.iot.sk=*****
cloud.iot.appId=*****
3.创建转发规则,转发设备信息到AMQP(需要转发设备属性,设备命令,设备消息,这样数字管家服务才能从IOT云中监听到这些信息的变化) 配置队列名,队列地址,accessKey,password到配置文件application-xxx.properties中.参考数据转发介绍
注意:转发规则的数据来源分别选择“设备属性,设备命令,设备消息”,转发目标要选择AMQP推送消息队列,并分别建立不同的消息队列接收消息,分别接受设备属性,设备命令,设备消息的消息。
cloud.iot.amqp.accessKey= #接入凭证,添加转发目标时,点击接入凭证获取
cloud.iot.amqp.password= #接入凭证密码,添加转发目标时,点击接入凭证获取
cloud.iot.amqp.queueStatusName= #设备状态队列名称(不是规则名称)
cloud.iot.amqp.queuePropertyName= #设备属性队列名称(不是规则名称)
cloud.iot.amqp.queueMsgName= #设备消息队列名称(不是规则名称)
cloud.iot.amqp.connectionUrl= #AMQP连接地址,点击“总览--》平台接入地址”获取
将上述新增的设备名称,服务ID,产品ID(IOT云界面中,点击“产品”菜单可查看),插入到数据库device_type表中。建议是在distschedule-dao\src\main\resources\db\migration目录中新增SQL,如V2_insertProductType.sql
INSERT INTO device_type (`name`, `name_en`, `service_id`, `product_id`, `category`)
values ('智能风扇', 'fan', 'SmartFan', '6150601d88056b027dd2ca47', 1);
注意:服务使用flyway管理数据库,启动时将会按照distschedule-dao\src\main\resources\db\migration里V1,V2 sql的顺序初始化数据库
修改配置文件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侧也需要修改
编译环境:
进入目录,编译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`
指定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和端口需要替换成自己的。
ubuntu18.04服务自启动,参考文档:https://www.cnblogs.com/airdot/p/9688530.html
其中:/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 &
参考FA侧说明
- distschedule--core # 入口模块,包含main和controller
- distschedule-service # 服务模块
- distschedule-dao # 数据库模块
服务集成Swagger3.0,部署以后使用swagger.html查看接口,即http://127.0.0.1:8080/distschedule-api/swagger-ui/index.html 包括如下接口:
使用flyway自动创建数据库,数据库表放在:
distschedule-dao\src\main\resources\db\migration 目录下
详见Dockerfile,docker-compose.yml
编译,构建容器镜像,使用docker-compose启动,即可同时启动mysql,rabbitmq以及数字管家服务, 命令如下
mvn clean package
docker build -t distschedule .
docker-compose up
请点击这里