小米智慧家居之Yeelight智慧燈開放API開發嘗試
這兩年,智慧家居發展變慢了,似乎是泡沫後的沉澱。各方協議不統一,也限制了智慧家居的普及。
按照通訊協議,控制Yeelight燈需要如下步驟:
1. App UDP廣播特定字串;
2. 燈收到上述廣播後迴應字串,包含IP、ID;
3. App拿到上述燈資訊後,建立TCP連線;
4. App按照通訊協議中的命令,即可控制燈的開關、亮度、顏色等。
Demo:
//UDP廣播,探測裝置 QByteArray datagram = "M-SEARCH * HTTP/1.1\r\n\ HOST: 239.255.255.250:1982\r\n\ MAN: \"ssdp:discover\"\r\n\ ST: wifi_bulb"; int ret = udp_socket.writeDatagram(datagram.data(), datagram.size(), mcast_addr, udp_port); qDebug()<<"udp write "<<ret<<" bytes";
//分析收到燈的迴應資訊,提取IP、ID // 是否有待處理的訊號 qDebug()<<"udp receive data"; udp_datagram_recv.resize(udp_socket.pendingDatagramSize()); //以資料包的大小初始化datagram udp_socket.readDatagram(udp_datagram_recv.data(), udp_datagram_recv.size()); //讀取資料 qDebug()<<udp_datagram_recv.data(); QByteArray start_str; QByteArray end_str; QByteArray rtn_str; //提取bulb_ip start_str.clear(); end_str.clear(); rtn_str.clear(); start_str.append("Location: yeelight://"); end_str.append(":"); sub_string(start_str, end_str, rtn_str); if(rtn_str.isEmpty() == false) { bulb_ip = rtn_str; } //提取bulb_id start_str.clear(); end_str.clear(); rtn_str.clear(); start_str.append("id: "); end_str.append("\r\n"); sub_string(start_str, end_str, rtn_str); if(rtn_str.isEmpty() == false) { bulb_id_str = rtn_str; } //過濾重複探測到的bulb bulb_t bulb_tmp(bulb_ip.toStdString(), bulb_id_str.toStdString()); ib = std::find(bulb.begin(), bulb.end(), bulb_tmp); if (ib == bulb.end()) { bulb.push_back(bulb_tmp); QStringList items; QString tmp; tmp = bulb_ip; items << tmp; ui->comboBox->addItems(items); }
//建立TCP連線 tcp_socket.close();//關閉上次的連線 int device_idx = ui->comboBox->currentIndex(); if(bulb.size() > 0) { tcp_socket.connectToHost(QHostAddress(bulb[device_idx].get_ip_str().c_str()), bulb[device_idx].get_port()); } else { qDebug()<<"Bulb is empty"; }
//傳送控制命令
QByteArray *cmd_str =new QByteArray;
cmd_str->clear();
cmd_str->append("{\"id\":");
int device_idx = ui->comboBox->currentIndex();
if(bulb.size() > 0)
{
cmd_str->append(bulb[device_idx].get_id_str().c_str());
qDebug() << "combox index = " << device_idx;
cmd_str->append(",\"method\":\"toggle\",\"params\":[]}\r\n");
tcp_socket.write(cmd_str->data());
qDebug() << cmd_str->data();
}
else
{
qDebug()<<"Bulb is empty";
}
本QT程式是跨平臺的,可以編譯成Win/Android等平臺可執行程式,完整原始碼下載:http://download.csdn.net/detail/syrchina/9592080
相關推薦
小米智慧家居之Yeelight智慧燈開放API開發嘗試
這兩年,智慧家居發展變慢了,似乎是泡沫後的沉澱。各方協議不統一,也限制了智慧家居的普及。 按照通訊協議,控制Yeelight燈需要如下步驟: 1. App UDP廣播特定字串; 2. 燈收到上述廣播後迴應字串,包含IP、ID; 3. App拿到上述燈資訊後,建立TCP連線
智慧家居之家電智慧控制系統
智慧家居之家電智慧控制系統是一個非常棒的中控系統。前面說我我們的智慧家居主機系統非常強大,可以連線任意電子裝置(電視、音響、空調、冰箱......)成為子系統。家電智慧控制系統為智慧家居主機系統子系統之一,為我們的家庭生活解決不少小麻煩。 還記得在遠古時代,我們看電影還是用碟的。那時候特別麻煩,雖然有遙控器
智慧家居之情景模式被動系統
智慧家居管家智慧控制系統是一個自動化與智慧化的家居控制系統。系統可以根據主人主觀意識隨意的進行操作而執行。手機上點一點手指就是一個指令,一個小小的動作就像觸發我們系統的機關讓他完成一系列工作。有時候我們連用手指點一下的麻煩都不需要,因為智慧系統不僅僅可以解碼我們的主動操控動作,還可以解碼時間、地點、溫度、溼度
Ehome:智慧家居之基於USB攝像頭免驅的視訊採集伺服器
4. 視訊伺服器 4.1 攝像頭的驅動 ['uvc子系統']: usb video class 核心中自帶了滿足uvc格式的攝像頭驅動,如果你手中的攝像頭滿足uvc規範,該攝像頭就是免驅,只需要對核心進行配置,將uvc模組對應的程式碼編譯到uImage 判斷攝像頭
自己動手實現智慧家居之溫溼度資料採集儲存(DHT11,MySql)
【前言】 一個熱愛技術的人一定向往有一個科技感十足的環境吧,那何不親自實踐一下屬於技術人的座右銘:“技術改變世界”。 就讓我們一步步動手搭建一個屬於自己的“智慧家居平臺”吧(不要對這個名詞擡槓啦,技術在手,怎麼設計實現因人而異),本文只做拋磚引玉,各路大神如果有更好的想法可以各顯神通,當然能在評論區留下更好
自己動手實現智慧家居之溫溼度數碼管展示(四位共陽數碼管)
【前言】 一個熱愛技術的人一定向往有一個科技感十足的環境吧,那何不親自實踐一下屬於技術人的座右銘:“技術改變世界”。 就讓我們一步步動手搭建一個屬於自己的“智慧家居平臺”吧(不要對這個名詞抬槓啦,技術在手,怎麼設計實現因人而異),本文只做拋磚引玉,各路大神如果有更好的想法可以各顯神通,當然能在評論區留下更好
Unity3D製作智慧家居設計軟體——智慧裝修
------對設計師友好------ 智慧裝修領域水太深,個體戶正常的裝修流程是:找裝修公司——找設計師——設計師出效果圖——使用者看效果——提修改需求——設計師加班出效果圖——使用者看效果——提修改需求——設計師拼命加班出效果圖——使用者看效果——提修改需求——設計師
2019智慧家居展覽會-資訊智慧家居博覽會
展會將於2019年5月16日至18日在北京舉行,本屆展會面積將達到35000平方米,本屆將規劃六大主題展區分別為智慧家居、智慧養老、智慧硬體、智慧娛樂、智慧社群、智慧機器人等覆蓋智慧家居全領域,大會將是專業性最強、規格最高、規模最大、影響力最廣、實效性最強的智慧行業展會.【展會推廣的好處在於客戶可以直接真實
智慧家居專案(1):軟體開發流程
結合公司開發過的產品以及對自學知識的總結,整理出此係列文章 。側重點還是在軟體部分。 公司開發某個專案,肯定是為了盈利賺錢。開發的專案無非就是自己的產品或者承接甲方的開發任務。 大體的流程可以分為幾個部分或階段:
「助力小米智慧家居生態搭建」綠米服務商首創4S服務理念
作為最早加入小米生態鏈的企業之一,綠米聯創一直著重研發智慧家居品類產品,並推動產品的大眾化普及。智慧家居的核心在於產品和服務,在小米智慧家居體系中,綠米產品貫穿了全屋智慧最基礎的部分,通過門鎖、閘道器、開關、插座、感測器等,實現家居環境中各個板塊的互聯互通,同時綠米服務商提供的整體方案設計和安裝服務
小米智慧家居技術分析
小米智慧家居以小米多功能閘道器為中心,搭配門窗感測器、人體感測器和無線開關。其中門窗感測器可以配合智慧燈泡、空氣淨化器等裝置,完成進門自動開燈、關窗後自動開啟空氣淨化器等功能。人體感測器可以和多功能閘道器配合,使用者檢測寵物出門情況,使用者下床自動開燈等。而無線開關和小米智慧插座配合,則可以實現一鍵
家居服務類機器人之WIFI智慧餵食器
wifi智慧小車模組+花生殼+STM32+APP 實現功能為視訊傳輸與遠端控制 1.wifi智慧小車模組 該模組可以連線你所在地方的wifi,先使其成為訪問該模組的內網。步驟1’通過網線或該模組的熱點與電腦連線,在路由器管理頁面(192.168.1.1)設定連
同為智慧家居服務,Z-Wave和ZigBee誰會勝出?
眼下最火的話題就要數物聯網了,而物聯網下又分為智慧城市、智慧家居等等。那大家是知道的,在還沒有一個統一的行業規定前,連線方式可謂是百花齊放,不說別的,NB-IoT、LoRa、eMTC、藍芽這些大家都應該知道,其實還有很多,就比如今天要介紹的這二位,也是眼下最熱門的兩種智慧家居連線方式,Z-W
智慧家居 樹莓派 從玩不轉到摔爛(1)
智慧家居 樹莓派 從玩不轉到摔爛(1) 最近想做一款智慧家居的應用玩玩,學習的路很遠,一個玩軟體忽然和硬體結合起來一下子有些不適應,但是對我們來說沒有什麼是適應不適應的,擼起袖子就是幹。今天給大家帶來的是樹莓派(Raspberry Pi 簡稱 R
專業高科技展-2019智慧鎖智慧家居博覽會
2019亞洲智慧家居博覽會簡稱“C-SMART2019”,作為智慧家居行業的經貿盛會,集結了一大批國內外的智慧家居主機、智慧安防、智慧門鎖、智慧晾衣機、家庭影院、智慧社群、智慧家電等行業的著名企業,展示了新產品、新技術、新成果;本次展覽以“智慧創新,改變生活!”為主題,通過完美展示智慧家居領域產業鏈和智慧技術
【Android開發—智慧家居系列】(四):UDP通訊傳送指令
【Android開發—智慧家居系列】(四):UDP通訊傳送指令 思路回顧 【1】手機連線WIFI模組 【2】UDP通訊對WIFI模組傳送指令,以和WIFI模組保持連線狀態 【3】UDP通訊對WIFI模組傳送指令,讓其搜尋可用的無線網,返回WIFI列表
【Android開發—智慧家居系列】(三):手機連線WIFI模組
【Android開發—智慧家居系列】(三):手機連線WIFI模組 概述 實現連線WIFI的功能會用到一個工具類,原始碼可以點選連結下載。網上這些類似的工具類裡的程式碼差不多是一樣的。連線無線網主要有兩個方法: 其中有一個Connect方法,還有一
【Android開發—智慧家居系列】(二):用手機對WIFI模組進行配置
【Android開發—智慧家居系列】(二):用手機對WIFI模組進行配置 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u010924834/article/details/49496729 在實際開發中,我開
2018香港秋燈展TUV南德聚焦智慧家居及植物照明
香港2018年11月5日電 /美通社/ -- 由香港貿發局主辦的第20屆香港國際秋季燈飾展(以下簡稱秋燈展)及第三屆香港國際戶外及科技照明博覽(以下簡稱戶外及科技照明博覽),分別於10月27至30日在香港會議展覽中心及10月2
智慧家居實訓第五天 中文字型檔
===========中文字型檔============ 你要顯示文字的區域 int Clean_Area(int X, //x座標起始點 int