91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

開(kāi)發(fā)者作品:一款智能家居系統(tǒng),實(shí)現(xiàn)了 4 種控制方式(一)

機(jī)智云 ? 2022-05-17 10:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

本項(xiàng)目通過(guò)闡述基于ESP8266作為處理器(SoC模式開(kāi)發(fā))接入機(jī)智云,借助機(jī)智云安卓開(kāi)源框架設(shè)計(jì)的APP,實(shí)現(xiàn)了燈的控制、門(mén)禁的控制、溫濕度的讀取、有毒氣體的檢測(cè)、人體紅外檢測(cè)等功能


通過(guò)改造機(jī)智云開(kāi)源框架,還實(shí)現(xiàn)了一個(gè)智能硬件系統(tǒng)支持多種控制方式,如:安卓APP控制、本地按鍵控制、紅外遙控控制、天貓精靈控制,且每一種操作都能和APP同步顯示。

本文是第一篇:總體介紹和安卓開(kāi)發(fā)(邏輯控制部分實(shí)現(xiàn))

1.界面演示2.下載機(jī)智云安卓開(kāi)源框架3.創(chuàng)建項(xiàng)目4.修改App圖標(biāo)、名字等信息5.填寫(xiě)App ID與App Secret時(shí)APP和機(jī)智云云端綁定6.UI界面編寫(xiě)7.思路整理及準(zhǔn)備工作8.編寫(xiě)控制代碼、調(diào)試測(cè)試APP

進(jìn)入正文

1.界面演示

進(jìn)入名為小智的的APP直接跳轉(zhuǎn)到設(shè)備界面,處于遠(yuǎn)程控制狀態(tài)

183463a8-d084-11ec-8521-dac502259ad0.png

點(diǎn)擊進(jìn)入綜合系統(tǒng),這是大燈的控制面板,左邊是關(guān)閉狀態(tài),右邊是開(kāi)啟狀態(tài),其中復(fù)位按鈕時(shí)復(fù)位門(mén)禁和大燈的

1842ac4c-d084-11ec-8521-dac502259ad0.png

這是門(mén)禁開(kāi)關(guān)的面板,開(kāi)啟門(mén)禁需要輸入密碼,此處設(shè)置為:"open"

18a02fe8-d084-11ec-8521-dac502259ad0.png

點(diǎn)擊綠色按鈕進(jìn)入密碼輸入界面:

18e08c8c-d084-11ec-8521-dac502259ad0.png

指示門(mén)禁打開(kāi)成功,按下紅色按鈕關(guān)閉門(mén)禁

1936f16c-d084-11ec-8521-dac502259ad0.png

溫濕度檢測(cè)

1944cfd0-d084-11ec-8521-dac502259ad0.png

有毒氣體和人體紅外檢測(cè)

195ed52e-d084-11ec-8521-dac502259ad0.png

2.下載機(jī)智云安卓開(kāi)源框架

2.1.下載機(jī)智云安卓開(kāi)源框架:

機(jī)智云下載中心

https://download.gizwits.com/zh-cn/p/92/93

碼云下載地址:

https://gitee.com/dantang/GOpenSource_AppKit_Android_AS

19bd7b74-d084-11ec-8521-dac502259ad0.png

注意剛開(kāi)始打開(kāi),因?yàn)間radle版本的問(wèn)題會(huì)有一系列的問(wèn)題報(bào)錯(cuò),可以選擇Android studio自動(dòng)下載的方案,或者從網(wǎng)上找解決方案

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

19deb0e6-d084-11ec-8521-dac502259ad0.png

下載到真機(jī)上,如下

1a267962-d084-11ec-8521-dac502259ad0.png

開(kāi)源框架主要目錄結(jié)構(gòu)說(shuō)明
A. Libs: 包括 GizWifiSDK 在內(nèi)的的第三方庫(kù)目錄**
assets: 包含 UIConfig.json 配置文件
B. GizOpenSource: 組成模塊
GizOpenSourceModules:組成模塊
GosApplication.java // SDK 在此啟動(dòng)
CommonModule // 公共方法類(lèi)、資源文件讀取類(lèi)
ConfigModule // 設(shè)備配置模塊,包含 AirLink 及 SoftAP
UserModule // 用戶模塊,包含 用戶登錄、用戶注冊(cè)、找回密碼
DeviceModule // 設(shè)備模塊,包含 設(shè)備列表
ControlModule // 控制模塊,包含 控制示例
SettingsModule // 設(shè)置模塊,包含 設(shè)置菜單 及其 包含的子菜單項(xiàng)(關(guān)于等)
PushModule // 推送模塊,包含 百度和極光的推送SDK 集成封裝
ThirdAccountModule // 第三方登錄模塊, 包含 第三方登錄(QQ、微信等)
view // 自定義控件
utils // 工具類(lèi)
wxapi // 微信集成包
zxing//掃描二維碼

3.創(chuàng)建項(xiàng)目

在機(jī)智云創(chuàng)建一個(gè)賬號(hào),然后進(jìn)入開(kāi)發(fā)者中心創(chuàng)建一個(gè)項(xiàng)目,如下:

1a8ca5f2-d084-11ec-8521-dac502259ad0.png

數(shù)據(jù)點(diǎn)如下:

1ac32fbe-d084-11ec-8521-dac502259ad0.png

點(diǎn)擊應(yīng)用配置,選擇安卓開(kāi)發(fā):

1b0477e4-d084-11ec-8521-dac502259ad0.png


4.修改App圖標(biāo)、名字等信息

使用Android studio打開(kāi)機(jī)智云的安卓開(kāi)源框架

現(xiàn)在先修改一些簡(jiǎn)單的東西:

4.1.修改軟件圖標(biāo)如下所示的圖片

1b37ac4a-d084-11ec-8521-dac502259ad0.png

把這張圖片放進(jìn)工程的APP/res/drawable目錄下,以便待會(huì)應(yīng)用

1b5830be-d084-11ec-8521-dac502259ad0.png

進(jìn)入

1b714b08-d084-11ec-8521-dac502259ad0.png

1b858708-d084-11ec-8521-dac502259ad0.png

1bc869ba-d084-11ec-8521-dac502259ad0.png

4.2.修改APP名字為:小智

1bfba140-d084-11ec-8521-dac502259ad0.png

1c5a4452-d084-11ec-8521-dac502259ad0.png

4.3.修改APP默認(rèn)啟動(dòng)進(jìn)入的Activity,直接進(jìn)入設(shè)備控制界面

1c740e32-d084-11ec-8521-dac502259ad0.png

把上面紅框額備份剪切到GosDeviceControlActivity下面,啟動(dòng)之后直接到這個(gè)Activity

1c9314b2-d084-11ec-8521-dac502259ad0.png

注意還需要在:GosDeviceListActivity的Oncreate設(shè)置一下主題:

1cc570b0-d084-11ec-8521-dac502259ad0.png

默認(rèn)標(biāo)題欄是灰色的,修改自己想要的顏色,把鼠標(biāo)放在AppTheme按住CRTL +鼠標(biāo)左鍵,跳轉(zhuǎn)到

1cd498c4-d084-11ec-8521-dac502259ad0.png

跳轉(zhuǎn)到這里:

1ce68f5c-d084-11ec-8521-dac502259ad0.png

修改后如下

1d2c2ea4-d084-11ec-8521-dac502259ad0.png

4.4.修改進(jìn)入App默認(rèn)彈出的圖片,此處默認(rèn)為機(jī)智云的,現(xiàn)在我們換成自己的圖片

修改成如下的圖片:

1d49543e-d084-11ec-8521-dac502259ad0.png

把這個(gè)照片復(fù)制到,如下的目錄下:drawable目錄下

1d5c2564-d084-11ec-8521-dac502259ad0.png

按如下的步驟修改:

1d963c90-d084-11ec-8521-dac502259ad0.png

1de29220-d084-11ec-8521-dac502259ad0.png

1e318646-d084-11ec-8521-dac502259ad0.png

修改成我們想要的圖片:

1e74a70a-d084-11ec-8521-dac502259ad0.png

基本信息修改完成后可以下載到真機(jī)下看一下這個(gè)App的變化:

1e8ddd56-d084-11ec-8521-dac502259ad0.png


5.填寫(xiě)App ID與App Secret時(shí)APP和機(jī)智云云端綁定

App ID與App Secret含義與作用

App ID:應(yīng)用標(biāo)識(shí)碼,當(dāng)開(kāi)發(fā)者需要為一款智能產(chǎn)品開(kāi)發(fā)應(yīng)用(包括iOS、Android、Web應(yīng)用等)時(shí),在機(jī)智云開(kāi)發(fā)者中創(chuàng)建應(yīng)用的時(shí)候,后臺(tái)會(huì)自動(dòng)生成一個(gè)AppID,并與此設(shè)備進(jìn)行關(guān)聯(lián)。應(yīng)用開(kāi)發(fā)時(shí)需要填入此AppID。在APP注冊(cè)的所有用戶綁定在該Appid下。

App Secret:App ID的驗(yàn)證密鑰。

如下圖所示,為APPID在開(kāi)發(fā)APP過(guò)程中的作用。

1edd41a2-d084-11ec-8521-dac502259ad0.png

步驟:

1.進(jìn)入機(jī)智云開(kāi)發(fā)者中心,打開(kāi)開(kāi)發(fā)的項(xiàng)目,找到如下的信息

1eeeae88-d084-11ec-8521-dac502259ad0.png

2.打開(kāi)Android sturio的APP->src-assets下的UIconfig.json文件填寫(xiě)數(shù)據(jù)如下:

此文件詳細(xì)說(shuō)明:http://docs.gizwits.com/zh-cn/AppDev/Android%E7%AC%AC%E4%B8%89%E6%96%B9%E7%99%BB%E5%BD%95%E4%B8%8E%E6%8D%A2%E8%82%A4.html

1f2b6d00-d084-11ec-8521-dac502259ad0.png

備注:在這個(gè)文件同樣可以修改自定義的皮膚:

定義如下:

buttonColor:按鈕顏色

buttonTextColor:按鈕文字顏色

navigationBarColor:導(dǎo)航欄顏色

navigationBarTextColor:導(dǎo)航欄文字顏色

configProgressViewColor:配置中界面 progress view 顏色

先修改膚色為:

1f47cef0-d084-11ec-8521-dac502259ad0.png

則對(duì)應(yīng)的代碼為:

"buttonColor": "16B599",
"buttonTextColor": "FFFFFF",
"navigationBarColor": "16B599",
"navigationBarTextColor": "FFFFFF",
"configProgressViewColor": "000000",

注意:這里的顏色值,字幕需要大寫(xiě)


6.UI界面編寫(xiě)

因?yàn)檫@部分內(nèi)容比較多,所以直接放在另一篇博客了:UI界面編寫(xiě)

界面如下:

1f9fe7c0-d084-11ec-8521-dac502259ad0.png

1fb5fc0e-d084-11ec-8521-dac502259ad0.png

7.思路整理及準(zhǔn)備工作

各種控件的使用跳轉(zhuǎn)鏈接:

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

在進(jìn)行控制代碼編寫(xiě)之前先理清楚一下思路:

7.1. 我們寫(xiě)的控制代碼如何和ESP8266芯片聯(lián)系起來(lái)?

在第5步的時(shí)候綁定了App和云端,機(jī)智云開(kāi)源框架的SDK有一個(gè)回調(diào)接口。

SDK回調(diào)接口說(shuō)明:

APP端接收到MCU上報(bào)數(shù)據(jù)的回調(diào)接口:didReceiveData,判斷result為GizWifiErrorCode.GIZ_SDK_SUCCESS,則接收到的數(shù)據(jù)可能為普通數(shù)據(jù)點(diǎn)或者擴(kuò)展數(shù)據(jù)點(diǎn)。

那么我們只需要在工程中調(diào)用這個(gè)回調(diào)接口函數(shù),就可以在機(jī)智云服務(wù)器獲取我們工程相應(yīng)的數(shù)據(jù)點(diǎn)。

同理,機(jī)智云也提供了一個(gè)GizWifiDevice這個(gè)類(lèi),讓我們能去控制云端數(shù)據(jù)點(diǎn)的數(shù)據(jù),通過(guò)這個(gè)類(lèi)的write()方法就可以控制。

如果當(dāng)我們寫(xiě)好了ESP8266的代碼,并它燒錄進(jìn)開(kāi)發(fā)版,進(jìn)行聯(lián)網(wǎng)和云端進(jìn)行連接,ESP開(kāi)發(fā)版就會(huì)根據(jù)云端的數(shù)據(jù)去控制開(kāi)發(fā)版(當(dāng)然這部分代碼還是得我們自己來(lái)寫(xiě),機(jī)智云只是提供了數(shù)據(jù)控制點(diǎn))

7.2.在工程中建立控制數(shù)據(jù)點(diǎn)的名稱(chēng)

我們控制一個(gè)設(shè)備也是通過(guò)判斷哪一個(gè)數(shù)據(jù)點(diǎn)來(lái)進(jìn)行控制的,因此我們?cè)O(shè)置的數(shù)據(jù)點(diǎn)的名稱(chēng)需要和工程數(shù)據(jù)點(diǎn)的名稱(chēng)對(duì)應(yīng):

看一下工程的數(shù)據(jù)點(diǎn)的標(biāo)識(shí)名:

1fc5776a-d084-11ec-8521-dac502259ad0.png

在GosDeviceControlActivity這個(gè)類(lèi)定義這個(gè)數(shù)據(jù)點(diǎn),如下:

1fe1c53c-d084-11ec-8521-dac502259ad0.png

7.3.在工程中建立保存數(shù)據(jù)的變量

既然我們能從云端獲取這些數(shù)據(jù),那我們就需要把這些數(shù)據(jù)保存起來(lái),并存儲(chǔ)在本地變量中。

20269a9a-d084-11ec-8521-dac502259ad0.png

7.4.建立一個(gè)ConcurrentHashMap的全局變量

用于存儲(chǔ)下發(fā)的指令:

2066163e-d084-11ec-8521-dac502259ad0.png

例子:

比如需要使Red_OnOff 這個(gè)數(shù)據(jù)點(diǎn)變成1,那么只需要做如下操作:

map=new ConcurrentHashMap<>();
map.put(RED_OnOff,true);
//調(diào)用device的write方法
device.write(map,0);

需要使Red_OnOff 這個(gè)數(shù)據(jù)點(diǎn)變成0,那么只需要做如下操作:

map=new ConcurrentHashMap<>();
map.put(RED_OnOff,false);
//調(diào)用device的write方法
device.write(map,0);

7.5.聲明layout文件中控件的的變量

//聲明兩個(gè)按鈕變量,分別是復(fù)位和檢測(cè)復(fù)位
private Button btn_Reset;
private Button btn_reset_det;

//聲明TextView主要是顯示一些狀態(tài)
private TextView tv_RED;   //顯示大廳燈狀態(tài)的變量
private TextView tv_GREEN;   //顯示食廳燈狀態(tài)的變量
private TextView tv_BLUE;  //顯示臥室燈狀態(tài)的變量
private TextView tv_indicate;//顯示門(mén)禁狀態(tài)的變量
private TextView tv_racall;  //溫度顯示
private TextView tv_hum;    //濕度顯示
private TextView tv_body;    //人體紅外檢測(cè)
private TextView tv_gas;    //有毒氣體檢測(cè)
private TextView tv_dettimes;  //人體紅外感應(yīng)次數(shù)

private CheckBox cb_01;    //大廳燈開(kāi)關(guān)的CheckBOx
private CheckBox cb_02;    //食廳燈開(kāi)關(guān)的CheckBOx
private CheckBox cb_03;    //臥室燈開(kāi)關(guān)的CheckBOx

private ImageButton iv_door_open;  //門(mén)禁開(kāi)的IamgeButton
private ImageButton iv_door_close;//門(mén)禁關(guān)的IamgeButton
//記錄人體紅外檢測(cè)的次數(shù)
private static int detcton_times=0;

7.6.在initView方法中獲取所有控件對(duì)象

2097f5c8-d084-11ec-8521-dac502259ad0.png


8.編寫(xiě)控制代碼

那就順著UI界面從上到下編寫(xiě)吧。

8.1.編寫(xiě)復(fù)位按鈕的代碼:

打開(kāi)GosDeviceControlActivity.java這個(gè)類(lèi),在initView中為btn_Reset對(duì)應(yīng)的按鈕綁定監(jiān)聽(tīng)器

20ab6ef0-d084-11ec-8521-dac502259ad0.png

8.2編寫(xiě)紅外檢測(cè)復(fù)位按鈕的點(diǎn)擊事件

20cb2cb8-d084-11ec-8521-dac502259ad0.png

8.3.編寫(xiě)大燈面板的點(diǎn)擊事件(CheckBox)

也就是所如果選中第一個(gè)CheckBox讓Red_OnOff數(shù)據(jù)點(diǎn)變?yōu)楦唠娖?,否則變?yōu)榈碗娖健?/p>

選中第二CheckBox讓Green_OnOff數(shù)據(jù)點(diǎn)變?yōu)楦唠娖?,否則變?yōu)榈碗娖健?/p>

選中第三個(gè)CheckBox讓Blue_OnOff數(shù)據(jù)點(diǎn)變?yōu)楦唠娖?,否則變?yōu)榈碗娖健?/p>

代碼如下,這部分代碼同樣寫(xiě)在initView中:

//大燈面板的點(diǎn)擊事件
    cb_01.setOnClickListener(new View.OnClickListener() {
      @Override
public void onClick(View view) {
if(cb_01.isChecked())
        {
map=new ConcurrentHashMap<>();
map.put(RED_OnOff,true);
          device.write(map,0);
          tv_RED.setText("大廳燈開(kāi)關(guān):開(kāi)");
        }else
        {

map=new ConcurrentHashMap<>();
map.put(RED_OnOff,false);
          device.write(map,0);
          tv_RED.setText("大廳燈開(kāi)關(guān):關(guān)");
        }


      }
    });
    cb_02.setOnClickListener(new View.OnClickListener() {
      @Override
public void onClick(View view) {
if(cb_02.isChecked())
        {
map=new ConcurrentHashMap<>();
map.put(GREEN_OnOff,true);
          device.write(map,0);
          tv_GREEN.setText("食廳燈開(kāi)關(guān):開(kāi)");

        }else
        {
map=new ConcurrentHashMap<>();
map.put(GREEN_OnOff,false);
          device.write(map,0);
          tv_GREEN.setText("食廳燈開(kāi)關(guān):關(guān)");
        }

      }
    });
    cb_03.setOnClickListener(new View.OnClickListener() {
      @Override
public void onClick(View view) {
if(cb_03.isChecked()){
//開(kāi)藍(lán)燈指令
map=new ConcurrentHashMap<>();
map.put(BLUE_OnOff,true);
          device.write(map,0);
          tv_BLUE.setText("臥室燈開(kāi)關(guān):開(kāi)");
        }else
        {
map=new ConcurrentHashMap<>();
map.put(BLUE_OnOff,false);
          device.write(map,0);
          tv_BLUE.setText("臥室燈開(kāi)關(guān):關(guān)");
        }

      }
    });

8.4.編寫(xiě)門(mén)禁開(kāi)關(guān)面板

這部分相對(duì)于前面來(lái)說(shuō)是比較復(fù)雜的,因?yàn)楫?dāng)點(diǎn)擊了綠色按鈕開(kāi)門(mén)的時(shí)候是需要輸入密碼的,在這里的操作是使用Intent跳轉(zhuǎn)到另一個(gè)Activity,同時(shí)使用Intent傳輸數(shù)據(jù),如果在另一個(gè)Activity輸入正確的密碼,那么就會(huì)回到原來(lái)這個(gè)Activity,并打開(kāi)門(mén)禁,否則打開(kāi)門(mén)禁,關(guān)閉門(mén)禁這個(gè)按鈕相對(duì)簡(jiǎn)單一點(diǎn),就直接是發(fā)送一個(gè)關(guān)閉的命令而已。

20e62ea0-d084-11ec-8521-dac502259ad0.png

所以當(dāng)我們?cè)陂T(mén)禁開(kāi)關(guān)點(diǎn)擊了綠色按鈕就會(huì)跳轉(zhuǎn)到LockActivity

也就是如下這個(gè)界面:

1fb5fc0e-d084-11ec-8521-dac502259ad0.png

那么現(xiàn)在去LockActivity.java這個(gè)類(lèi)去寫(xiě)相關(guān)的控制函數(shù)了

8.5.LockActivity相關(guān)代碼

和上面一樣,這個(gè)控件有一個(gè)EditView,兩個(gè)按鈕:確定,取消,還需要使用一個(gè)變量來(lái)保存密碼,默認(rèn)為"abc"

217d2c38-d084-11ec-8521-dac502259ad0.png

同樣在initView獲取控件對(duì)象:

21f8aca0-d084-11ec-8521-dac502259ad0.png

調(diào)用EidtView的addTextChangedListener方法來(lái)讀取我們輸入EditView輸入的數(shù)據(jù):

22113748-d084-11ec-8521-dac502259ad0.png

接下來(lái)就是編寫(xiě)確認(rèn)按鈕(sure_button)和取消按鈕(cancle_button)的代碼了。

思路:當(dāng)在EditView輸入密碼時(shí),框內(nèi)的內(nèi)容會(huì)實(shí)時(shí)保存在mpassward這個(gè)變量中,當(dāng)按下確認(rèn)按鈕,就去判斷這個(gè)mpassward這個(gè)變量中是否保存有“open”這個(gè)字符串,如果有的話就返回上一級(jí),并返回正確的結(jié)果,如果輸入密碼為空提示輸入正確的密碼,輸入密碼錯(cuò)誤提示錯(cuò)誤;按下取消按鈕直接返回上一級(jí),并返回失敗!

代碼如下:

確認(rèn)按鈕:

2239b6be-d084-11ec-8521-dac502259ad0.png

取消按鈕

2246cd40-d084-11ec-8521-dac502259ad0.png

8.6.處理從上一級(jí)處理返回結(jié)果

回到GosDevideContrlActivity去判斷返回的結(jié)果是否正確,正確則代開(kāi)門(mén)禁的開(kāi)關(guān),否則不打開(kāi)。

22667924-d084-11ec-8521-dac502259ad0.png

8.7.從云端獲取溫濕度以及氣體檢測(cè)等數(shù)據(jù)

思路:使用機(jī)智云SDK的回到方法didReceiveData,獲取數(shù)據(jù),獲取到的是一串字符串,我們需要把這個(gè)字符串我們需要的信息提取出來(lái),保存在7.3節(jié)中建立的變量當(dāng)中,以便我們使用:

20269a9a-d084-11ec-8521-dac502259ad0.png

解析云端數(shù)據(jù)函數(shù):

在云端返回的是一個(gè)ConcurrentHashMap類(lèi)型的數(shù)據(jù),需要把這些數(shù)據(jù)的有用信息提取出來(lái),代碼如下:

@SuppressWarnings("unchecked")
protected void getDataFromReceiveDataMap(ConcurrentHashMap dataMap) {
// 已定義的設(shè)備數(shù)據(jù)點(diǎn),有布爾、數(shù)值和枚舉型數(shù)據(jù)

if (dataMap.get("data") != null) {
      ConcurrentHashMap map1 = (ConcurrentHashMap) dataMap.get("data");
for (String dataKey : map1.keySet()) {
if (dataKey.equals(RED_OnOff)) {
          data_Red_OnOff = (Boolean) map1.get(dataKey);
        }
if (dataKey.equals(GREEN_OnOff)) {
          data_Green_OnOff = (Boolean) map1.get(dataKey);
        }
if (dataKey.equals(BLUE_OnOff)) {
          data_Blue_OnOff = (Boolean) map1.get(dataKey);
        }
if (dataKey.equals(DOOR_OnOff)) {
          data_Door_OnOff = (Boolean) map1.get(dataKey);
        }
if (dataKey.equals(KEY_MOVE_DETECTION)) {
          data_Move_Detection = (Boolean) map1.get(dataKey);
        }
if (dataKey.equals(KEY_GAS_DETECTION)) {
          data_Gas_Detection = (Boolean) map1.get(dataKey);
        }
if (dataKey.equals(KEY_TEMP)) {

          data_temp = (Integer) map1.get(dataKey);
        }
if (dataKey.equals(KEY_HUM)) {

          data_hum = (Integer) map1.get(dataKey);
        }
      }
    }

有了這個(gè)數(shù)據(jù)解析的函數(shù),就可以把從云端獲取的數(shù)據(jù)提取出來(lái),保存在本地變量當(dāng)中給我們使用了,當(dāng)提取處信息之后,比如溫度濕度等信息,它已經(jīng)保存在 data_temp,date_hum中了,我們需要使用TextView把它們的值顯示出來(lái),但是這里有一點(diǎn)值得注意,子線程中是不能執(zhí)行UI操作的,也就是說(shuō)不能再didReceiveData方法中調(diào)用UI操作TextView,所以需要使用Handler機(jī)制,告訴主線程,數(shù)據(jù)已經(jīng)準(zhǔn)備好,然后主線程接收到信息之后就更新UI操作,也就是顯示溫度濕度等信息啦。

云端獲取數(shù)據(jù)代碼:

22e4bf32-d084-11ec-8521-dac502259ad0.png

在主線程中更新UI,代碼如下:

22f15850-d084-11ec-8521-dac502259ad0.png

最后在initDevide()方法中,設(shè)置回調(diào)的監(jiān)聽(tīng)器

23321066-d084-11ec-8521-dac502259ad0.png

至此,所有的邏輯控制代碼已經(jīng)編寫(xiě)完成。

8.8.調(diào)試測(cè)試

步驟:

1.進(jìn)入機(jī)智云官網(wǎng),打開(kāi)你的項(xiàng)目,打開(kāi)虛擬設(shè)備

235bf570-d084-11ec-8521-dac502259ad0.png

2.點(diǎn)擊二維碼

236af9da-d084-11ec-8521-dac502259ad0.png

3.使用APP掃描

23ee1626-d084-11ec-8521-dac502259ad0.png

4.掃描后進(jìn)入

23fa36fe-d084-11ec-8521-dac502259ad0.png

5.使用APP控制看調(diào)試結(jié)果

2409e072-d084-11ec-8521-dac502259ad0.png

244eb0c6-d084-11ec-8521-dac502259ad0.png

245d262e-d084-11ec-8521-dac502259ad0.png

經(jīng)過(guò)驗(yàn)證,我們所寫(xiě)的控制代碼已經(jīng)能完成我們的需求了,既能控制工程云端的數(shù)據(jù)點(diǎn),又能把工程云端的數(shù)據(jù)點(diǎn)推送到APP上。

————————————————

版權(quán)聲明:本文為CSDN博主「冷暖自知_源」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/qq_36243942/article/details/88561940


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 智能家居
    +關(guān)注

    關(guān)注

    1943

    文章

    9998

    瀏覽量

    197458
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    控制模式的智能家居系統(tǒng)設(shè)計(jì)

    隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,智能家居的需求不斷增加,但仍存在設(shè)備兼容性差和成本高等問(wèn)題。本文提出了一種基于STM32單片機(jī)的多模式智能家居控制系統(tǒng),該系統(tǒng)
    的頭像 發(fā)表于 01-15 18:01 ?346次閱讀
    多<b class='flag-5'>控制</b>模式的<b class='flag-5'>智能家居</b><b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)

    本地智能家居系統(tǒng)ESPHome,實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)調(diào)試

    ESPHome 是個(gè)開(kāi)源固件框架,支持通過(guò) YAML 配置實(shí)現(xiàn)智能家居自動(dòng)化,可本地部署并公網(wǎng)訪問(wèn),便于遠(yuǎn)程開(kāi)發(fā)
    的頭像 發(fā)表于 12-30 14:48 ?1276次閱讀
    本地<b class='flag-5'>智能家居</b><b class='flag-5'>系統(tǒng)</b>ESPHome,<b class='flag-5'>實(shí)現(xiàn)</b>遠(yuǎn)程訪問(wèn)調(diào)試

    基于芯源CW32 MCU智能家居照明控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    ,增強(qiáng)智能家居體驗(yàn)。 多房間燈光控制:通過(guò)擴(kuò)展多個(gè)CW32 MCU節(jié)點(diǎn),系統(tǒng)可以實(shí)現(xiàn)對(duì)不同房間的燈光獨(dú)立控制,每個(gè)節(jié)點(diǎn)通過(guò)統(tǒng)
    發(fā)表于 12-03 06:06

    打破智能家居生態(tài)壁壘,樂(lè)鑫站式Matter解決方案實(shí)現(xiàn)無(wú)縫互聯(lián)

    SDK開(kāi)發(fā)工具與ESP-ZeroCode免開(kāi)發(fā)模組,實(shí)現(xiàn)開(kāi)發(fā),多平臺(tái)兼容”,大幅降低設(shè)備開(kāi)發(fā)
    的頭像 發(fā)表于 11-06 15:19 ?1294次閱讀
    打破<b class='flag-5'>智能家居</b>生態(tài)壁壘,樂(lè)鑫<b class='flag-5'>一</b>站式Matter解決方案<b class='flag-5'>實(shí)現(xiàn)</b>無(wú)縫互聯(lián)

    藍(lán)牙語(yǔ)音遙控器:智能家居的智慧控制核心

    和OM6621芯片的強(qiáng)大性能,開(kāi)發(fā)者能夠輕松打造高品質(zhì)的遙控器產(chǎn)品,滿足市場(chǎng)多樣化需求。未來(lái),隨著技術(shù)的不斷突破,藍(lán)牙語(yǔ)音遙控器必將在智能家居領(lǐng)域綻放更大光芒,為用戶創(chuàng)造更便捷、舒適的生活方式。
    發(fā)表于 06-01 20:24

    手機(jī)APP遠(yuǎn)程控制智能家居監(jiān)測(cè)、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼)實(shí)例項(xiàng)目打包下載

    手機(jī)APP遠(yuǎn)程控制,智能家居監(jiān)測(cè)、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼)實(shí)例項(xiàng)目打包,推薦下載!
    發(fā)表于 05-29 21:47

    (大賽作品)STM32F072RB NUCLEO智能家居控制實(shí)例項(xiàng)目

    (大賽作品)STM32F072RB NUCLEO智能家居控制實(shí)例項(xiàng)目文檔截圖
    發(fā)表于 05-28 21:06

    手機(jī)APP遠(yuǎn)程控制,智能家居監(jiān)測(cè)、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼)

    手機(jī)APP遠(yuǎn)程控制,智能家居監(jiān)測(cè)、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼) 項(xiàng)目實(shí)例下載! 純分享帖,需要
    發(fā)表于 05-23 21:00

    Matter 智能家居的通用語(yǔ)言

    企業(yè)正在測(cè)試 134 獨(dú)特的 Matter 產(chǎn)品。 在消費(fèi)對(duì)智能家居設(shè)備無(wú)縫互操作性需求的推動(dòng)下,Matter的廣泛采用將吸引更多的開(kāi)發(fā)者。
    發(fā)表于 05-19 15:35

    2025 TUYA全球開(kāi)發(fā)者大會(huì)成功閉幕,涂鴉智能以下一代AI硬件重構(gòu)人機(jī)交互邊界?

    4月23日,涂鴉智能系列前沿AI爆產(chǎn)品重磅亮相2025TUYA全球開(kāi)發(fā)者大會(huì)現(xiàn)場(chǎng),吸引
    的頭像 發(fā)表于 05-08 19:07 ?858次閱讀
    2025 TUYA全球<b class='flag-5'>開(kāi)發(fā)者</b>大會(huì)成功閉幕,涂鴉<b class='flag-5'>智能以下一</b>代AI硬件重構(gòu)人機(jī)交互邊界?

    明遠(yuǎn)智睿SSD2351開(kāi)發(fā)板:智能家居智能核心

    數(shù)據(jù),如溫度、濕度、光照強(qiáng)度等,為智能家居系統(tǒng)的自動(dòng)化控制提供準(zhǔn)確的數(shù)據(jù)支持。全開(kāi)源的開(kāi)發(fā)資料和一對(duì)一的技術(shù)支持,讓
    發(fā)表于 05-07 18:59

    探秘明遠(yuǎn)智睿SSD2351開(kāi)發(fā)板在HMI領(lǐng)域的獨(dú)特魅力

    畫(huà)面,確保家庭安全。 開(kāi)發(fā)板支持浮點(diǎn)運(yùn)算,能夠精確處理各種數(shù)據(jù),如溫度、濕度、光照強(qiáng)度等,為智能家居系統(tǒng)的自動(dòng)化控制提供準(zhǔn)確的數(shù)據(jù)支持。全開(kāi)源的開(kāi)發(fā)
    發(fā)表于 04-30 18:15

    智能家居控制器:無(wú)線通訊,智能化管理家居設(shè)備

    ,逐步重塑現(xiàn)代人的生活方式、技術(shù)原理 智能家居控制器的本質(zhì)是個(gè)集成化控制中樞,通過(guò)低電壓
    的頭像 發(fā)表于 04-24 15:09 ?1336次閱讀

    智能家居Mesh組網(wǎng)方案:實(shí)現(xiàn)智能化生活的無(wú)縫連接NRF52832

    自組織的 Mesh 網(wǎng)絡(luò),將各個(gè)智能設(shè)備連接在起,實(shí)現(xiàn)全屋智能家居的無(wú)縫連接。與傳統(tǒng)的單點(diǎn)連接方式
    發(fā)表于 04-15 14:07

    智能家居到智慧建筑:NAYOTA LBMS 如何賦能 樹(shù)莓派5 實(shí)現(xiàn)設(shè)備互聯(lián)?

    智能建筑飛速發(fā)展的今天,如何高效、穩(wěn)定地管理和控制上千個(gè)設(shè)備,成為每個(gè)建筑管理開(kāi)發(fā)者亟待解決的難題。樹(shù)莓派5,作為
    的頭像 發(fā)表于 03-25 09:42 ?1281次閱讀
    從<b class='flag-5'>智能家居</b>到智慧建筑:NAYOTA LBMS 如何賦能 樹(shù)莓派5 <b class='flag-5'>實(shí)現(xiàn)</b>設(shè)備互聯(lián)?