智能电饭煲
智能电饭煲
一、 简介
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、连接服务器
注:连接前要在华为云安全组开发相应端口,不然可能连接失败
安装和部署数字管家服务端
以下内容参考:
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 'abc123456@qq.com';//再重置密.码
注:密.码格式有要求(必须包括大小写,数字和特殊字符)
以上完成后输入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/articles/4181
git clone git@gitee.com:openharmony-sig/knowledge_demo_smart_home.git
2:本地下载安装包并上传服务器
下载地址:
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master
配置华为云
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-sig/knowledge_demo_smart_home/blob/master/Server/README.md
进入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/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 &
结尾提示
1、编译后如果无法访问可对比官方文档查错
2、相应ip端口一定要放开
三、实物操作体验
代码仓
看到实物的时候有点震撼