一、 简介

1、作品构思
咱们团队参加到OpenAtom OpenHarmony(简称“OpenHarmony”)成长打算的智能电饭煲开发后,便开始构思如何实现主动洗米、煮饭、加热这一系列流程,通过几天的探讨,最终咱们抉择利用电机转动产生的气流进行洗米、利用舵机转动管制开关加热、利用继电器管制水泵加适量水进行煮饭流程,对立完模型搭建后,咱们便开始全身心投入产品开发过程中。
咱们组一个六个人,分工简略如下:
设施开发(电路搭建,硬件调试)
利用开发(数字管家,日程治理)
服务端开发(服务器搭建,华为云上产品创立)
模型搭建(电饭煲初代模型搭建)
NFC性能开发(负责NFC标签创立)
材料收集(负责收集咱们开发文档,协调组内进度)
2、实际过程


3、最终成绩
经验一个月的调试咱们实现了模型搭建、硬件调试和软件开发,设计出一款能够实现主动洗米、加米、加热的一款智能电饭煲。

二、技术计划

1、硬件介绍
本我的项目是基于Bearpi开发板作为主控的智能电饭煲,模型搭建应用的是亚克力板,该设施内次要由MG955舵机、MG90舵机、继电器、锂电池治理模块和小型水泵组成
设施开发器件介绍
杜邦线:连通电路,不便插接

面包板:接通多个端口,实现多端电源供电

锂电池:提供电源,使能舵机,电机

锂电池充电模块:节能环保,升压,给电源提供短缺能源

继电器

Mg90舵机:


MG955舵机:

2、软件局部

(1)设施筹备
预装HarmonyOS手机一台
(2)设施配网
1、在设施上电前需筹备好装置了数字管家利用的HarmonyOS手机,详情见数字管家利用开发,并在设置中开启手机的NFC性能;
2、写设施NFC标签,具体操作见设施NFC标签领导文档;
3、烧录实现后,上电。开发者在察看开发板上状态LED灯以8Hz的频率闪动时,将手机上半部凑近开发板NFC标签处;
4、无需任何操作手机将主动拉起数字管家利用并进入配网状态,配网过程中无需输出热点账号密码。具体无感配网相干流程参考无感配网指南。
(3)操作体验
1、设施管制
2、配网实现后,数字管家利用会主动进入智能电饭煲的管制页面,通过管制页面能够实现对智能电饭煲加米、洗米、煮饭的管制。
3、预约做饭
4、使用者能够通过管制页面进入智能电饭煲管制页面或者数字管家日程治理页面进行日程治理,具体做法如下:
• 进入日程治理页面后对日程命名并增加告诉成员与智能电饭煲设施。• 抉择做饭的起止工夫。
• 抉择提醒形式与揭示反复工夫。

3、服务器局部

后期筹备
• 注册华为云账号并且实名认证(略)
• 购买华为弹性云服务器(其余也可)
根底环境配置(可跳过)
1、查看零碎版本

不合乎可切换零碎版本


放开相应端口(这里放开全副端口)

记住下面输出的明码
2、下载mobaxterm终端并装置


3、连贯服务器

注:连贯前要在华为云平安组开发相应端口,不然可能连贯失败
装置和部署数字管家服务端
以下内容参考:https://gitee.com/niuyouguodi...
1)mysql5.7装置

sudo apt install mysql-server

openjdk 1.8 装置
sudo apt-get install openjdk-8-jdk
设置无明码登录


增加skip-grant-tables
重启mysql

service mysql restart

进入mysql
mysql -u root -p
输出后回车
更改明码

mysql> use mysql;mysql>flush privileges;mysql>UPDATE user SET authentication_string="" WHERE user="root";//明码先置为空mysql>flush privileges;mysql>ALTER user 'root'@'localhost' IDENTIFIED BY '[email protected]';//再重置明码

注:明码格局有要求(必须包含大小写,数字和特殊字符)
以上实现后输出quit退出mysql交互模式,去掉之前加的skip-grant-tables,再重启mysql
2)RabbitMQ 3.6.10(装置)
因为RabbitMQ采纳的Erlang语言编写的,故需先装置Erlang
1:在零碎中退出erlang apt仓库

wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.debsudo dpkg -i erlang-solutions_1.0_all.deb

2:批改Erlang镜像地址,默认的下载速度特地慢。

vi /etc/apt/sources.list.d/erlang-solutions.list

3:把外面默认值替换为

deb https://mirrors.liuboping.com/erlang/ubuntu/ xenial contrib

4:更新软件列表

sudo apt-get update

5:装置Erlang

sudo apt-get install erlang erlang-nox

装置RabbitMq
1:增加rabbitmq的仓库列表配置文件

echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list

2:退出rabbitmq signing key

wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

3:更新软件列表
sudo apt-get update
4:装置RabbitMq(装置完之后rabbitmq默认已启动)
sudo apt-get install rabbitmq-server
5:启用web治理插件

sudo rabbitmq-plugins enable rabbitmq_management

6:重启rabbitmq服务
sudo systemctl restart rabbitmq-server

装置实现后在浏览器中输出本人的id和端口就能够看到治理页面了

rabbitmq增加用户以及权限
起因:默认状况下拜访rabbitmq的用户名和明码都是guest,这个账户是有限度的,默认只能通过本地网络也就是localhost拜访,近程拜访受限制。
所以:须要另外新增用户名和明码,并设置相应的权限。
1:新增一个用户
rabbitmqctl add_user root root

2:为root用户设置权限所有权限

rabbitmqctl set_permissions -p / root ".*" ".*" ".*"


3:设置root用户为管理员角色

rabbitmqctl set_user_tags root administrator


3)下载代码
1:间接下载(须要配置密钥)
怎么配置请参考官网文档:https://gitee.com/help/articl... clone [email protected]:openharmony-sig/knowledge_demo_smart_home.git
2:本地下载安装包并上传服务器
下载地址:
https://gitee.com/openharmony...

配置华为云
1:申请华为云AK/SK
登录“华为云”(https://www.huaweicloud.com/)
点击“控制台”
找到“我的凭证”

新增拜访密钥

阐明:
保留之后会有credentials.csv
将文件中的Access Key Id和Secret Access Key记录下来;
即为前面要用到的 ak 和 sk ,前面会应用。
获取appid

创立产品

点击产品进入到查看产品详情页面(依据数据模型创立属性和命令格局)

增加转发规定


配置AMQP


阐明:
点击预置接入凭证,会取得一个Basic_ACCESS-KEY.txt文件;
外面寄存有access_key和access_code;
至此,咱们曾经取得了如下重要参数:

  1. ak/sk
  2. appid
  3. productid
  4. amqp中的accesse_key和access_code
  5. 规定中的三个队列名称:msgQueue,propertyQueue,statusQueue
    4)配置对接服务器资源文件
    以下内容参考官网文档:
    https://gitee.com/openharmony...
    进入knowledge_demo_smart_home\Server\distschedule-core\src\main\resources目录;
    关上application.properties文件并批改
    注: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,APPIDcloud.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侧也须要批改

5)编译、服务启动
编译环境:
jdk8(后面已装置)
maven 3.6.3(命令行间接装置)
进入Server目录,编译jar包

cd knowledge_demo_smart_home/Server # 依照实在的门路mvn clean package -Dmaven.test.skip=true

执行jar包部署命令

java -jar distschedule-core/target/distschedule-core-1.0.0-SNAPSHOT.jar或java -jar /opt/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`

7)浏览器拜访http://127.0.0.1:8080/distsch...(ip地址依据理论状况)
验证服务是否已失常启动
注:如果敞开终端后无法访问页面可参考以下操作
ubuntu18.04服务自启动,参考文档:https://www.cnblogs.com/airdo...
其中:/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 &

结尾提醒
1、编译后如果无法访问可比照官网文档查错
2、相应ip端口肯定要放开

三、实物操作体验


代码仓
https://gitee.com/openharmony...