0
点赞
收藏
分享

微信扫一扫

(二) 搭建数字管家服务器

westfallon 2022-04-24 阅读 23

(二) 搭建数字管家服务器

1. mysql卸载

# 删除mysql的数据文件
sudo rm /var/lib/mysql/ -R

# 删除mysql的配置文件
sudo rm /etc/mysql/ -R

# 自动卸载mysql(包括server和client)
sudo apt-get autoremove mysql* --purge
sudo apt-get remove apparmor

# 然后在终端中查看MySQL的依赖项
dpkg --list|grep mysql

2. mysql5.7安装

# mysql5.7.33安装包下载
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.33-1ubuntu18.04_amd64.deb-bundle.tar

# 新建目录
mkdir mysql5.7.33
mv mysql-server_5.7.33-1ubuntu18.04_amd64.deb-bundle.tar mysql5.7.33/
cd mysql5.7.33

# 解压缩
tar -xvf mysql-server_5.7.33-1ubuntu18.04_amd64.deb-bundle.tar


# 删除2个测试相关的包
sudo rm -f mysql-testsuite_5.7.33-1ubuntu18.04_amd64.deb
sudo rm -f mysql-community-test_5.7.33-1ubuntu18.04_amd64.deb

# 安装包libtinfo5
sudo apt-get install libtinfo5
sudo apt-get install libmecab2

# 利用dpkg进行安装
sudo dpkg -i mysql-*.deb

# 查看mysql版本
mysql -V

# 登录
sudo mysql

# 修改用户密码,创建用户
ALTER USER 'root'@'localhost' IDENTIFIED BY 'AndrewYy-chan1';
CREATE USER 'dimp'@'%' IDENTIFIED BY 'AndrewYy-chan1';

# 设置授权账户
grant all on *.* to root@'%' identified by 'AndrewYy-chan1' with grant option;
flush privileges;
exit

# 修改配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

# 在配置文件中添加以下代码
character_set_server=utf8
#注释bind-address=127.0.0.1
#bind-address=127.0.0.1

# 重启mysql服务
service mysql restart

# 登录mysql
mysql -u root -p

3. openjdk/jdk 1.8安装

sudo apt-get install openjdk-8-jdk

4. RabbitMQ 3.6.10安装

# 安装Erlang
sudo apt-get update
sudo apt-get install erlang erlang-nox

# 安装RabbitMq
# 添加rabbitmq的仓库列表配置文件
echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list
# 加入rabbitmq signing key
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
# 安装RabbitMq
sudo apt-get update
sudo apt-get install rabbitmq-server

# 启用web管理插件
sudo rabbitmq-plugins enable rabbitmq_management

# 重启rabbitmq服务
sudo systemctl restart rabbitmq-server

# 新增一个用户
sudo rabbitmqctl add_user root root
# 为root用户设置权限所有权限
sudo rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
# 设置root用户为管理员角色
sudo rabbitmqctl set_user_tags root administrator

# 访问网址
http://localhost:15672(http://andrewyychan.cn:15672)

5. Maven安装

# 安装maven
sudo apt install maven

# 检测setting.xml所在位置
mvn -X
# Maven home: /usr/share/maven

# 打开setting.xml文件进行编辑
sudo nano /usr/share/maven/conf/settings.xml
# 更换本地仓库
<localRepository>/home/yy/maven/repository</localRepository>
# 添加远程仓库
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

6. 下载数字管家源码

git clone git@gitee.com:openharmony-sig/knowledge_demo_smart_home.git
git clone https://gitee.com/openharmony-sig/knowledge_demo_smart_home.git --depth=1

7. 华为云IoT

1. 申请华为云AK/SK

  1. 华为云网址:https://www.huaweicloud.com/
  2. 点击控制台——>我的凭证——>访问密钥——>新增访问密钥,得到ak和sk
  3. 点击设备接入——>资源空间,获取APPID
  4. 点击产品,创建产品

2. 产品创建

  1. 填写产品信息

    在这里插入图片描述

  2. 点击规则——>数据转发——>创建规则

    规则名称资源空间数据来源触发事件转发目标
    设备消息上报所有资源空间设备消息设备消息上报AMQP推送消息队列
    设备状态上报所有资源空间设备状态设备状态变更AMQP推送消息队列
    设备属性接收所有资源空间设备属性设备属性上报AMQP推送消息队列
  3. 配置AMQP:点击IoTDA实例——>基础版详情——>AMQPS预置接入凭证,获得accesse_key和access_code.

8. 修改源码文件

  1. 在knowledge_demo_smart_home\Server\distschedule-dao\src\main\resources\db\migration目录中新增SQL,如V2_insertProductType.sql

    # 将新增的设备名称,服务ID,产品ID(IOT云界面中,点击“产品”菜单可查看),插入到数据库device_type表中
    INSERT INTO device_type (`name`, `name_en`, `service_id`, `product_id`, `category`)
    values ('智能风扇', 'Fan', 'SmartFan', '62511e8f2d0897328703a093', 1);
    
  2. 修改配置文件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侧也需要修改
    
    # mysql数据库配置,需要提前部署和创建distschedule的数据库
    # 数据库地址
    spring.datasource.url=jdbc:mysql://andrewyychan.cn:3306/distschedule?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai 
    # 数据库账号
    spring.datasource.username=root
    # 数据库密码
    spring.datasource.password=AndrewYy-chan1
    
    # 华为IOT云配置,参考上面的介绍,申请IOT云的AK,SK,APPID
    cloud.iot.ak=CBKGWM9HDK7JSIF4OFTG
    cloud.iot.sk=7g0iehyUtRYmBcgiF9uZjVXs2NdCNKGe4bOYadlG
    cloud.iot.appId=249c89b43a9f46ca8ec4b9cf52e736cf
    
    # IOT云配置,参考上面的介绍,配置并获取华为IOT云的数据转发队列
    cloud.iot.amqp.accessKey=01giD1n9 #接入凭证,添加转发目标时,点击接入凭证获取
    cloud.iot.amqp.password=OeW8DuZMZrKy4UnkbWj6jZxL1D5doQU9  #接入凭证密码,添加转发目标时,点击接入凭证获取
    cloud.iot.amqp.queueStatusName=DefaultQueue  #设备状态队列名称(不是规则名称)
    cloud.iot.amqp.queuePropertyName=DefaultQueue #设备属性队列名称(不是规则名称)
    cloud.iot.amqp.queueMsgName=DefaultQueue #设备消息队列名称(不是规则名称)
    cloud.iot.amqp.connectionUrl=amqps://a161bde384.iot-amqps.cn-north-4.myhuaweicloud.com.iot-amqps.cn-north-4.myhuaweicloud.com:5671?amqp.vhost=default&amqp.idleTimeout=8000&amqp.saslMechanisms=PLAIN #AMQP连接地址,点击“总览--》平台接入地址”获取
    
    # rabbitmq消息队列,用于手机监听告警信息
    spring.rabbitmq.host=andrewyychan.cn    # rabbitmq地址
    spring.rabbitmq.port=15672    # rabbitmq端口
    spring.rabbitmq.username=root  # rabbitmq用户名
    spring.rabbitmq.password=root   # rabbitmq密码
    spring.rabbitmq.exchange.deviceproperty=deviceproperty_exchange # 消息exchange,可不改。如修改的话,FA侧也需要修改
    

9. 编译运行

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

# 运行
sudo java -jar /home/ubuntu/project/knowledge/knowledge_demo_smart_home/Server/distschedule-core/target/distschedule-core-1.0.0-SNAPSHOT.jar --spring.profiles.active=local
# jar包位置:knowledge_demo_smart_home/Server/distschedule-core/target/distschedule-core-1.0.0-SNAPSHOT.jar

# 访问链接
http://127.0.0.1:8080/distschedule-api/swagger-ui/index.html(http://andrewyychan.cn:8080/distschedule-api/swagger-ui/index.html)

10. 服务自启动

# 建立rc-local.service文件
sudo nano /etc/systemd/system/rc-local.service

# 将下列内容复制进rc-local.service文件
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
 
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
 
[Install]
WantedBy=multi-user.target

# 创建文件rc.local
sudo nano /etc/rc.local

# 将下列内容复制进rc.local文件
#!/bin/bash
sudo nohup java -jar /home/ubuntu/project/knowledge/knowledge_demo_smart_home/Server/distschedule-core/target/distschedule-core-1.0.0-SNAPSHOT.jar --spring.profiles.active=local> /home/ubuntu/project/distschedule/server.log 2>&1 &

# 给rc.local加上权限
sudo chmod +x /etc/rc.local

# 启用服务
sudo systemctl enable rc-local

# 启动服务并检查状态
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service

# 重启并检查test.log文件
cat /home/ubuntu/project/distschedule/server.log

11. 数据库设计

在这里插入图片描述

12、数据管家FA接入新服务端

1. 修改 OKHttpUtilsRx2

将SERVER_URL变量修改为自己的服务端api地址

// src/main/java/com/example/distschedule/rx2/OKHttpUtilsRx2.java

// 后端服务器地址
    private static final String SERVER_URL = "http://andrewyychan.cn:8080/distschedule-api/";

2. 修改 DeviceStateListener

将RABBITMQ数据修改为自己的

// src/main/java/com/example/distschedule/listener/DeviceStateListener.java

private static final String DEVICEPROPERTY_EXCHANGE = "deviceproperty_exchange";//监听队列名称
    private static final String RABBITMQ_HOST = "andrewyychan.cn";
    private static final int RABBITMQ_PORT = 15672;
    private static final String RABBITMQ_USER = "root";
    private static final String RABBITMQ_CODE = "root";
    private static DeviceStateListener instance;

3. 修改 DeviceData

将data put的key值修改为自己的productID

// src/main/java/com/example/distschedule/database/DeviceData.java

// 电风扇
        data.put("62511e8f2d0897328703a093", new DeviceDataBean(DeviceControlAbility.ACTION_FAN,
                ResourceTable.Media_icon_fraction_fan_online, ResourceTable.Media_icon_fraction_fan_offline,
                command -> CommandUtil.parseFanCommand(command)));
举报

相关推荐

0 条评论