一、 簡介
1、作品構(gòu)思
我們團隊參與到OpenAtom OpenHarmony(簡稱“OpenHarmony”)成長計劃的智能電飯煲開發(fā)后,便開始構(gòu)思如何實現(xiàn)自動洗米、煮飯、加熱這一系列流程,經(jīng)過幾天的討論,最終我們選擇利用電機轉(zhuǎn)動產(chǎn)生的氣流進行洗米、利用舵機轉(zhuǎn)動控制開關(guān)加熱、利用繼電器控制水泵加適量水進行煮飯流程,統(tǒng)一完模型搭建后,我們便開始全身心投入產(chǎn)品開發(fā)過程中。
我們組一個六個人,分工簡單如下:
設(shè)備開發(fā)(電路搭建,硬件調(diào)試)
應(yīng)用開發(fā)(數(shù)字管家,日程管理)
服務(wù)端開發(fā)(服務(wù)器搭建,華為云上產(chǎn)品創(chuàng)建)
模型搭建(電飯煲初代模型搭建)
NFC功能開發(fā)(負責(zé)NFC標簽創(chuàng)建)
資料收集(負責(zé)收集我們開發(fā)文檔,協(xié)調(diào)組內(nèi)進度)
2、實踐過程
3、最終成果
經(jīng)歷一個月的調(diào)試我們完成了模型搭建、硬件調(diào)試和軟件開發(fā),設(shè)計出一款可以完成自動洗米、加米、加熱的一款智能電飯煲。
二、技術(shù)方案
1、硬件介紹
本項目是基于Bearpi開發(fā)板作為主控的智能電飯煲,模型搭建使用的是亞克力板,該設(shè)備內(nèi)主要由MG955舵機、MG90舵機、繼電器、鋰電池管理模塊和小型水泵組成
設(shè)備開發(fā)器件介紹
杜邦線:連通電路,方便插接
鋰電池:提供電源,使能舵機,電機
鋰電池充電模塊:節(jié)能環(huán)保,升壓,給電源提供充足動力
繼電器:
Mg90舵機:
MG955舵機:
2、軟件部分
(1)設(shè)備準備 預(yù)裝HarmonyOS手機一臺 (2)設(shè)備配網(wǎng)
1、在設(shè)備上電前需準備好安裝了數(shù)字管家應(yīng)用的HarmonyOS手機,詳情見數(shù)字管家應(yīng)用開發(fā),并在設(shè)置中開啟手機的NFC功能;
2、寫設(shè)備NFC標簽,詳細操作見設(shè)備NFC標簽指導(dǎo)文檔;
3、燒錄完成后,上電。開發(fā)者在觀察開發(fā)板上狀態(tài)LED燈以8Hz的頻率閃爍時,將手機上半部靠近開發(fā)板NFC標簽處;
4、無需任何操作手機將自動拉起數(shù)字管家應(yīng)用并進入配網(wǎng)狀態(tài),配網(wǎng)過程中無需輸入熱點賬號密碼。具體無感配網(wǎng)相關(guān)流程參考無感配網(wǎng)指南。
(3)操作體驗
1、設(shè)備控制
2、配網(wǎng)完成后,數(shù)字管家應(yīng)用會自動進入智能電飯煲的控制頁面,通過控制頁面可以實現(xiàn)對智能電飯煲加米、洗米、煮飯的控制。
3、預(yù)約做飯
4、使用者可以通過控制頁面進入智能電飯煲控制頁面或者數(shù)字管家日程管理頁面進行日程管理,具體做法如下:
?進入日程管理頁面后對日程命名并添加通知成員與智能電飯煲設(shè)備。
?選擇做飯的起止時間。
?選擇提示方式與提醒重復(fù)時間。
3、服務(wù)器部分
前期準備 ?注冊華為云賬號并且實名認證(略) ?購買華為彈性云服務(wù)器(其他也可)
基礎(chǔ)環(huán)境配置(可跳過)
1、查看系統(tǒng)版本
不符合可切換系統(tǒng)版本
放開相應(yīng)端口(這里放開全部端口)
記住上面輸入的密碼
3、連接服務(wù)器
注:連接前要在華為云安全組開發(fā)相應(yīng)端口,不然可能連接失敗
安裝和部署數(shù)字管家服務(wù)端
以下內(nèi)容參考:
https://gitee.com/niuyouguodidi/shuziguanjiafuwuduan/blob/master/%E6%95%B0%E5%AD%97%E7%AE%A1%E5%AE%B6%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%90%AD%E5%BB%BA%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E%E2%80%94%E2%80%94%E6%9C%89%E6%89%8B%E5%B0%B1%E5%8F%AF%E6%90%AD%E5%BB%BA%E7%B3%BB%E5%88%97.md
1)mysql5.7安裝
sudo apt install mysql-server
openjdk 1.8 安裝
sudo apt-get install openjdk-8-jdk
設(shè)置無密碼登錄
添加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';//再重置密碼
注:密碼格式有要求(必須包括大小寫,數(shù)字和特殊字符)
以上完成后輸入quit退出mysql交互模式,去掉之前加的skip-grant-tables,再重啟mysql
2)RabbitMQ 3.6.10(安裝)
由于RabbitMQ采用的Erlang語言編寫的,故需先安裝Erlang
1:在系統(tǒng)中加入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服務(wù)
sudo systemctl restart rabbitmq-server
安裝完成后在瀏覽器中輸入自己的id和端口就可以看到管理頁面了
rabbitmq添加用戶以及權(quán)限
原因:默認情況下訪問rabbitmq的用戶名和密碼都是guest,這個賬戶是有限制的,默認只能通過本地網(wǎng)絡(luò)也就是localhost訪問,遠程訪問受限制。
所以:需要另外新增用戶名和密碼,并設(shè)置相應(yīng)的權(quán)限。
1:新增一個用戶
rabbitmqctl add_user root root
2:為root用戶設(shè)置權(quán)限所有權(quán)限
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
3:設(shè)置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:本地下載安裝包并上傳服務(wù)器
下載地址:
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
創(chuàng)建產(chǎn)品
點擊產(chǎn)品進入到查看產(chǎn)品詳情頁面(根據(jù)數(shù)據(jù)模型創(chuàng)建屬性和命令格式)
添加轉(zhuǎn)發(fā)規(guī)則
配置AMQP
說明:
點擊預(yù)置接入憑證,會獲得一個Basic_ACCESS-KEY.txt文件;
里面存放有access_key和access_code;
至此,我們已經(jīng)獲得了如下重要參數(shù):
1. ak/sk
2. appid
3. productid
4. amqp中的accesse_key和access_code
5. 規(guī)則中的三個隊列名稱:msgQueue,propertyQueue,statusQueue
5)配置對接服務(wù)器資源文件
以下內(nèi)容參考官方文檔:
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/Server/README.md
進入knowledge_demo_smart_homeServerdistschedule-coresrcmain esources目錄;
打開application.properties文件并修改
注:distschedule-coresrcmain esourcesapplication-local.properties(官方文檔修改的是該文件)
說明:把前面獲得的數(shù)據(jù)對應(yīng)填入
# mysql數(shù)據(jù)庫配置,需要提前部署和創(chuàng)建distschedule的數(shù)據(jù)庫#數(shù)據(jù)庫地址spring.datasource.url=datasource_urlmysql://*****:3306/distschedule?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai #數(shù)據(jù)庫賬號spring.datasource.username=*****#數(shù)據(jù)庫密碼spring.datasource.password=****#華為IOT云配置,參考上面的介紹,申請IOT云的AK,SK,APPIDcloud.iot.ak=*****cloud.iot.sk=*****cloud.iot.appId=*****# IOT云配置,參考上面的介紹,配置并獲取華為IOT云的數(shù)據(jù)轉(zhuǎn)發(fā)隊列cloud.iot.amqp.accessKey=#接入憑證,添加轉(zhuǎn)發(fā)目標時,點擊接入憑證獲取cloud.iot.amqp.password=#接入憑證密碼,添加轉(zhuǎn)發(fā)目標時,點擊接入憑證獲取cloud.iot.amqp.queueStatusName=#設(shè)備狀態(tài)隊列名稱(不是規(guī)則名稱)cloud.iot.amqp.queuePropertyName=#設(shè)備屬性隊列名稱(不是規(guī)則名稱)cloud.iot.amqp.queueMsgName=#設(shè)備消息隊列名稱(不是規(guī)則名稱)cloud.iot.amqp.connectionUrl=amqps://*****.iot-amqps.cn-north-4.myhuaweicloud.com:5671?amqp.vhost=default&amqp.idleTimeout=8000&amqp.saslMechanisms=PLAIN #AMQP連接地址,點擊“總覽--》平臺接入地址”獲取# rabbitmq消息隊列,用于手機監(jiān)聽告警信息spring.rabbitmq.host=*****# rabbitmq地址spring.rabbitmq.port=*****# rabbitmq端口spring.rabbitmq.username=*****# rabbitmq用戶名spring.rabbitmq.password=*****# rabbitmq密碼spring.rabbitmq.exchange.deviceproperty=deviceproperty_exchange #消息exchange,可不改。如修改的話,F(xiàn)A側(cè)也需要修改
6)編譯、服務(wù)啟動
編譯環(huán)境:
jdk8(前面已安裝)
maven 3.6.3(命令行直接安裝)
進入Server目錄,編譯jar包
cd knowledge_demo_smart_home/Server # 按照真實的路徑mvn clean package -Dmaven.test.skip=true
執(zhí)行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# 按照真實的路徑
可執(zhí)行的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地址根據(jù)實際情況)
驗證服務(wù)是否已正常啟動
注:如果關(guān)閉終端后無法訪問頁面可參考以下操作
ubuntu18.04服務(wù)自啟動,參考文檔: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 &
結(jié)尾提示
1、編譯后如果無法訪問可對比官方文檔查錯
2、相應(yīng)ip端口一定要放開
三、實物操作體驗
代碼倉
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/team_x/smart_rice_machine
-
模型
+關(guān)注
關(guān)注
1文章
3268瀏覽量
48937 -
智能電飯煲
+關(guān)注
關(guān)注
0文章
5瀏覽量
6467 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3729瀏覽量
16407
原文標題:智能電飯煲
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論