首頁 > 易卦

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

作者:由 機智雲 發表于 易卦日期:2021-12-13

標題欄顏色怎麼修改

本專案由開發者釋出在CSDN部落格(ID為冷暖自知_源),主要介紹瞭如何使用機智雲開源框架開發了一個智慧家居系統,具體來說實現了燈的控制、門禁的控制、溫溼度的讀取、有毒氣體的檢測、人體紅外檢測等功能。本專案分成三部分來敘述。

本文是第一篇。

第一篇:總體介紹和安卓開發(邏輯控制部分實現)

1。介面演示2。下載機智雲安卓開源框架3。建立專案4。修改App圖示、名字等資訊5。填寫App ID與App Secret時APP和機智云云端繫結6。UI介面編寫7。思路整理及準備工作8。編寫控制程式碼、除錯測試APP

第二篇:UI介面編寫

第三篇:ESP8266接入機智雲,驗證APP的功能

第二篇:【機智雲安卓開源框架2】實現簡單智慧家居系統系統 之 UI 介面編寫,

https://mp。weixin。qq。com/s/50GTe6t4XxdTsUxfoGWOUw

第三篇:【機智雲安卓開源框架3】實現簡單智慧家居系統 之 下篇-ESP8266控制,

https://mp。weixin。qq。com/s/bxdiPjQwlbj8lvKBvHA51A

1.介面演示

進入名為小智的的APP直接跳轉到裝置介面,處於遠端控制狀態

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

點選進入綜合系統,這是大燈的控制面板,左邊是關閉狀態,右邊是開啟狀態,其中復位按鈕時復位門禁和大燈的

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

這是門禁開關的面板,開啟門禁需要輸入密碼,此處設定為:“open”

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

點選綠色按鈕進入密碼輸入介面:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

指示門禁開啟成功,按下紅色按鈕關閉門禁

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

溫度檢測

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

有毒氣體和人體紅外檢測

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

2.下載機智雲安卓開源框架

2。1。下載機智雲安卓開源框架:

機智雲下載中心:https://download。gizwits。com/zh-cn/p/92/93

碼雲下載地址:https://gitee。com/dantang/GOpenSource_AppKit_Android_AS

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

注意剛開始開啟,因為gradle版本的問題會有一系列的問題報錯,可以選擇Android studio自動下載的方案,或者從網上找解決方案

此處有解決方案:http://docs。gizwits。com/zh-cn/AppDev/AndroidSDKA2。html

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

下載到真機上,如下

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

開源框架主要目錄結構說明A。 Libs: 包括 GizWifiSDK 在內的的第三方庫目錄**assets: 包含 UIConfig。json 配置檔案B。 GizOpenSource: 組成模組GizOpenSourceModules:組成模組GosApplication。java // SDK 在此啟動CommonModule // 公共方法類、資原始檔讀取類ConfigModule // 裝置配置模組,包含 AirLink 及 SoftAPUserModule // 使用者模組,包含 使用者登入、使用者註冊、找回密碼DeviceModule // 裝置模組,包含 裝置列表ControlModule // 控制模組,包含 控制示例SettingsModule // 設定模組,包含 設定選單 及其 包含的子選單項(關於等)PushModule // 推送模組,包含 百度和極光的推送SDK 整合封裝ThirdAccountModule // 第三方登入模組, 包含 第三方登入(QQ、微信等)view // 自定義控制元件utils // 工具類wxapi // 微信整合包zxing // 掃描二維碼

3.建立專案

在機智雲建立一個賬號,然後進入開發者中心建立一個專案,如下:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

資料點如下:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

點選應用配置,選擇安卓開發:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

4.修改App圖示、名字等資訊

使用Android studio開啟機智雲的安卓開源框架

現在先修改一些簡單的東西:

4。1。修改軟體圖示如下所示的圖片

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

把這張圖片放進工程的APP/res/drawable目錄下,以便待會應用

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

進入

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

4。2。修改APP名字為:小智

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

4。3。修改APP預設啟動進入的Activity,直接進入裝置控制介面

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

把上面紅框額備份剪下到GosDeviceControlActivity下面,啟動之後直接到這個Activity

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

注意還需要在:GosDeviceListActivity的Oncreate設定一下主題:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

預設標題欄是灰色的,修改自己想要的顏色,把滑鼠放在AppTheme按住CRTL + 滑鼠左鍵,跳轉到

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

跳轉到這裡:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

修改後如下

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

4。4。修改進入App預設彈出的圖片,此處預設為機智雲的,現在我們換成自己的圖片

修改成如下的圖片:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

把這個照片複製到,如下的目錄下:drawable目錄下

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

按如下的步驟修改:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

修改成我們想要的圖片:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

基本資訊修改完成後可以下載到真機下看一下這個App的變化:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

5.填寫App ID與App Secret時APP和機智云云端繫結

App ID與App Secret含義與作用

App ID:應用標識碼,當開發者需要為一款智慧產品開發應用(包括iOS、Android、Web應用等)時,在機智雲開發者中建立應用的時候,後臺會自動生成一個AppID,並與此裝置進行關聯。應用開發時需要填入此AppID。在APP註冊的所有使用者繫結在該Appid下。

App Secret:App ID的驗證金鑰。

如下圖所示,為APPID在開發APP過程中的作用。

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

步驟:

1。進入機智雲開發者中心,開啟開發的專案,找到如下的資訊

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

2。開啟Android sturio的APP->src-assets下的UIconfig。json檔案填寫資料如下:

此檔案詳細說明:http://docs。gizwits。com/zh-cn/Ap 。。。 8D%A2%E8%82%A4。html

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

備註:在這個檔案同樣可以修改自定義的面板:

定義如下:

buttonColor:按鈕顏色

buttonTextColor:按鈕文字顏色

navigationBarColor:導航欄顏色

navigationBarTextColor:導航欄文字顏色

configProgressViewColor:配置中介面 progress view 顏色

先修改膚色為:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

則對應的程式碼為:

“buttonColor”: “16B599”,“buttonTextColor”: “FFFFFF”,“navigationBarColor”: “16B599”,“navigationBarTextColor”: “FFFFFF”,“configProgressViewColor”: “000000”,

注意:這裡的顏色值,字幕需要大寫

6.UI介面編寫

因為這部分內容比較多,所以直接放在另一篇部落格了:UI介面編寫

介面如下:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

7.思路整理及準備工作

各種控制元件的使用跳轉連結:

TextView控制元件使用:https://blog。csdn。net/qq_36243942/article/details/82107426

Button控制元件的使用:https://blog。csdn。net/qq_36243942/article/details/82113312

ImageView的使用:https://blog。csdn。net/qq_36243942/article/details/81783895

CheckBox的使用:https://blog。csdn。net/qq_36243942/article/details/81744237

Toast的使用https://blog。csdn。net/qq_36243942/article/details/82622796

在進行控制程式碼編寫之前先理清楚一下思路:

7.1. 我們寫的控制程式碼如何和ESP8266晶片聯絡起來?

在第5步的時候綁定了App和雲端,機智雲開源框架的SDK有一個回撥介面。

SDK回撥介面說明:

APP端接收到MCU上報資料的回撥介面:didReceiveData,判斷result為GizWifiErrorCode。GIZ_SDK_SUCCESS,則接收到的資料可能為普通資料點或者擴充套件資料點。

那麼我們只需要在工程中呼叫這個回撥介面函式,就可以在機智雲伺服器獲取我們工程相應的資料點。

同理,機智雲也提供了一個GizWifiDevice這個類,讓我們能去控制雲端資料點的資料,透過這個類的write()方法就可以控制。

如果當我們寫好了ESP8266的程式碼,並它燒錄進開發版,進行聯網和雲端進行連線,ESP開發版就會根據雲端的資料去控制開發版(當然這部分程式碼還是得我們自己來寫,機智雲只是提供了資料控制點)

7.2.在工程中建立控制資料點的名稱

我們控制一個裝置也是透過判斷哪一個資料點來進行控制的,因此我們設定的資料點的名稱需要和工程資料點的名稱對應:

看一下工程的資料點的標識名:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

在GosDeviceControlActivity這個類定義這個資料點,如下:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

7.3.在工程中建立儲存資料的變數

既然我們能從雲端獲取這些資料,那我們就需要把這些資料儲存起來,並存儲在本地變數中 。

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

7.4.建立一個ConcurrentHashMap的全域性變數

用於儲存下發的指令:

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

例子:

比如需要使Red_OnOff 這個資料點變成1,那麼只需要做如下操作:

map=new ConcurrentHashMap<>();map。put(RED_OnOff,true);//呼叫device的write方法device。write(map,0);

需要使Red_OnOff 這個資料點變成0,那麼只需要做如下操作:

map=new ConcurrentHashMap<>();map。put(RED_OnOff,false);//呼叫device的write方法device。write(map,0);

7.5.**layout檔案中控制元件的的變數

//**兩個按鈕變數,分別是復位和檢測復位private Button btn_Reset;private Button btn_reset_det;

//**TextView主要是顯示一些狀態private TextView tv_RED; //顯示大廳燈狀態的變數private TextView tv_GREEN; //顯示食廳燈狀態的變數private TextView tv_BLUE; //顯示臥室燈狀態的變數private TextView tv_indicate;//顯示門禁狀態的變數private TextView tv_racall; //溫度顯示private TextView tv_hum; //溼度顯示private TextView tv_body; //人體紅外檢測private TextView tv_gas; //有毒氣體檢測private TextView tv_dettimes; //人體紅外感應次數

private CheckBox cb_01; //大廳燈開關的CheckBOxprivate CheckBox cb_02; //食廳燈開關的CheckBOxprivate CheckBox cb_03; //臥室燈開關的CheckBOx

private ImageButton iv_door_open; //門禁開的IamgeButtonprivate ImageButton iv_door_close;//門禁關的IamgeButton//記錄人體紅外檢測的次數private static int detcton_times=0;

7.6.在initView方法中獲取所有控制元件物件

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

8.編寫控制程式碼

那就順著UI介面從上到下編寫吧。

8.1.編寫復位按鈕的程式碼:

開啟GosDeviceControlActivity。java這個類,在initView中為btn_Reset對應的按鈕繫結**

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

8.2編寫紅外檢測復位按鈕的點選事件

8。3。編寫大燈面板的點選事件(CheckBox)

也就是所如果選中第一個CheckBox讓Red_OnOff資料點變為高電平,否則變為低電平。

選中第二CheckBox讓Green_OnOff資料點變為高電平,否則變為低電平。

選中第三個CheckBox讓Blue_OnOff資料點變為高電平,否則變為低電平。

程式碼如下,這部分程式碼同樣寫在initView中:

//大燈面板的點選事件 cb_01。setOnClickListener(new View。OnClickListener() { @Overridepublic void onClick(View view) {if(cb_01。isChecked()) {map=new ConcurrentHashMap<>();map。put(RED_OnOff,true); device。write(map,0); tv_RED。setText(“大廳燈開關:開”); }else {

map=new ConcurrentHashMap<>();map。put(RED_OnOff,false); device。write(map,0); tv_RED。setText(“大廳燈開關:關”); }

} }); cb_02。setOnClickListener(new View。OnClickListener() { @Overridepublic void onClick(View view) {if(cb_02。isChecked()) {map=new ConcurrentHashMap<>();map。put(GREEN_OnOff,true); device。write(map,0); tv_GREEN。setText(“食廳燈開關:開”);

}else {map=new ConcurrentHashMap<>();map。put(GREEN_OnOff,false); device。write(map,0); tv_GREEN。setText(“食廳燈開關:關”); }

} }); cb_03。setOnClickListener(new View。OnClickListener() { @Overridepublic void onClick(View view) {if(cb_03。isChecked()){//開藍燈指令map=new ConcurrentHashMap<>();map。put(BLUE_OnOff,true); device。write(map,0); tv_BLUE。setText(“臥室燈開關:開”); }else {map=new ConcurrentHashMap<>();map。put(BLUE_OnOff,false); device。write(map,0); tv_BLUE。setText(“臥室燈開關:關”); }

} });

8.4.編寫門禁開關面板

這部分相對於前面來說是比較複雜的,因為當點選了綠色按鈕開門的時候是需要輸入密碼的,在這裡的操作是使用Intent跳轉到另一個Activity,同時使用Intent傳輸資料,如果在另一個Activity輸入正確的密碼,那麼就會回到原來這個Activity,並開啟門禁,否則開啟門禁,關閉門禁這個按鈕相對簡單一點,就直接是傳送一個關閉的命令而已。

「機智雲安卓開源框架」實現簡單智慧家居系統esp8266控制

所以當我們在門禁開關點選了綠色按鈕就會跳轉到LockActivity

也就是如下這個介面:

點選閱讀全文