首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當貝市場

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動 | Z幣中心

新手入門 / 進階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 17728|回復(fù): 4
上一主題 下一主題
[分享]

當貝投影儀通過ESP32接入HA方案 實現(xiàn)開關(guān)機自由

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-1-11 16:24 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式 | 來自云南
家里的投影儀是當貝F3 Air,藍牙遙控器,無紅外,支持上電開機。為了接入HA實現(xiàn)自動化,嘗試了三個不同的方案:
先是直接接了個智能插座,簡單粗暴,開關(guān) = 上下電。覺得不夠優(yōu)雅,尤其是關(guān)機,棄用了。

后來買了個Zigbee的手指機器人,通過模擬點按機器上的開關(guān)實現(xiàn)自動化。用了一段時間,缺點很明顯:

1. 穩(wěn)定性一般,延遲高。有時候發(fā)指令剛執(zhí)行完,還會隔個十幾秒,又執(zhí)行一次。

2. 無法獲取到投影儀真實開機的狀態(tài),沒法實現(xiàn)更多玩法。當然也可以通過智能插座的功率來判斷,但是這就有些多余了。

3. 噪音大,用過的朋友應(yīng)該知道,這個小電機聲音不小。
又棄用了。

最終還是選擇ESP32玩點兒花的。這里講下思路:

1、喚醒方式

官方的APP都不支持網(wǎng)絡(luò)喚醒,本地也掃了一下mdns,確實在關(guān)機狀態(tài)下沒什么能用的服務(wù),所以只能走藍牙模擬。

拿nf52840抓了一下包,發(fā)現(xiàn)在關(guān)機狀態(tài)下,按下開機鍵,遙控器會持續(xù)5秒廣播帶有特殊Manufactor Data的報文,5秒后消失,那推測大概率就是這段神秘數(shù)據(jù)觸發(fā)了喚醒。

當貝投影儀通過ESP32接入HA方案 實現(xiàn)開關(guān)機自由


實踐證明猜測正確。有沒有懂行的老哥知道怎么解析這串數(shù)據(jù),求科普。

2、關(guān)機方式

起初選擇走網(wǎng)絡(luò)途徑,實現(xiàn)直接簡單一些,畢竟官方APP自帶局域網(wǎng)遙控功能。

抓包發(fā)現(xiàn)指令是通過WebSocket明文傳輸?shù)模刂肪褪莣s://投影儀IP:6689,數(shù)據(jù)內(nèi)容忘記截圖了,大概就只需要里面的Command和Value兩個字段即可。后來代碼也寫了,通過mdns先找到投影儀的IP,再發(fā)送按鍵指令。不過ESP32上面的mdns一直不是很穩(wěn),服務(wù)掃描時有時無,也沒心情仔細研究,就又轉(zhuǎn)向了藍牙抓包(有興趣的朋友可以繼續(xù)嘗試一下)。

同樣用nf52840抓了一下按下關(guān)機鍵時刻的BLE報文,發(fā)現(xiàn)電源鍵按下時,對應(yīng)的HID Report值會變?yōu)?x0000660000,松開就會發(fā)0x0000000000,那么方向明晰了。

當貝投影儀通過ESP32接入HA方案 實現(xiàn)開關(guān)機自由

玩過HID抓包的朋友可能會發(fā)現(xiàn)這個數(shù)值格式并不是鍵盤鼠標這類設(shè)備的常見格式,又仔細研究了一番他的HID描述符,發(fā)現(xiàn)的確是自定義的。

當貝投影儀通過ESP32接入HA方案 實現(xiàn)開關(guān)機自由

看來現(xiàn)成的ESP32 HID Keyboard輪子還不能用,只能手擼一個了,說干就干。

最終實現(xiàn)的效果是通過ESP32模擬藍牙報文觸發(fā)投影儀開關(guān),同時藍牙連接的狀態(tài)也能夠反映出投影儀當前的工作狀態(tài)。把這些信息通過MQTT,就可以接入到Home Assistant中,以一個開關(guān)的實體存在,配置代碼如下:

  1. mqtt:
  2.   - switch:
  3.       unique_id: esp32_projector_switch
  4.       name: "ESP32 Projector Switch"
  5.       state_topic: "esp32projector006"
  6.       command_topic: "esp32projector006"
復(fù)制代碼

當貝投影儀通過ESP32接入HA方案 實現(xiàn)開關(guān)機自由

至于是否穩(wěn)定,容我再觀察一段時間。

最終代碼實現(xiàn)已經(jīng)開源:https://github.com/fentensoft/esp32-dangbei-projector ,README還沒寫。

歡迎大家自由嘗試,目前當貝F3 Air能夠正確控制,其余設(shè)備未測試,但原理雷同。


上一篇:當貝F6的節(jié)能模式如何打開 當貝F6節(jié)能模式打開教程
下一篇:當貝X5 Ultra的節(jié)能模式如何打開 當貝X5 Ultra節(jié)能模式打開...
沙發(fā)
發(fā)表于 2024-1-11 16:27 | 只看該作者 | 來自江西
當貝X3觀望一下
回復(fù) 支持 反對

使用道具 舉報

板凳
發(fā)表于 2024-1-11 16:27 | 只看該作者 | 來自上海

char manufacturerData[] = {0x46, 0x00, 0x46, 0xFA, 0xC1, 0x69, 0x04,
                           0xC8, 0x38, 0xFF, 0xFF, 0xFF, 0xFF};


z6x pro:cfbb25d6e69b20ffffff3043524b544d

應(yīng)該把這個替換掉就可以了把
回復(fù) 支持 反對

使用道具 舉報

地板
 樓主| 發(fā)表于 2024-1-11 16:27 | 只看該作者 | 來自云南
黑天 發(fā)表于 2024-1-11 16:27
char manufacturerData[] = {0x46, 0x00, 0x46, 0xFA, 0xC1, 0x69, 0x04,
                           0xC ...

是的,沒錯
回復(fù) 支持 反對

使用道具 舉報

5#
發(fā)表于 2024-1-12 09:19 | 只看該作者 | 來自甘肅
你真是大神啊
回復(fù) 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號 )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號

GMT+8, 2025-1-3 08:50 , Processed in 0.074741 second(s), 14 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表