將小愛同學(小米AI音箱)接入Home Assistant(基於紅外遙控器)

小米音箱(小愛同學)做的不錯,但是目前功能上還是有很多限制,比如不能啟動電腦。Home assistant是一個開放的智能家居平台,集成非常多的模塊,比如Wake on LAN模塊就可以實現通過網線喚醒電腦的功能。可惜目前不能通過小米音箱直接連接Home Assistant。好在小愛同學兼容自家的萬能遙控器,我們想到了把Home Assistant設備變成一個遙控終端,通過一個紅外萬能遙控器和一個紅外接收器做為一個橋接中介,實現小米音箱間接控制Home Assistant平台的目的。本文參考了這個教程

需要的東西

運行Home Assistant的設備(電腦、NAS、樹莓派等,我用的是樹莓派2代)
紅外接收器(我使用的是一個通用USB接收器,樹莓派用戶可以DIY一個)
小米(創米)萬能紅外線遙控器
小米AI音箱

給Home Assistant設備添加紅外遙控接收功能

將紅外接收器連接到home assistant設備上。確認紅外設備存在,如

pi@raspberrypi:~ $ ls /dev/lirc0
/dev/lirc0

安裝紅外線收發lirc程序

pi@raspberrypi:~ $ sudo apt-get install lirc liblircclient-dev

測試紅外線接收功能正常:


sudo mode2 -d /dev/lirc0

運行上面命令後找一個紅外遙控器對着接收器按任意鍵,應該可以收到類似這樣的字符:

Using driver default on device /dev/lirc0
Trying device: /dev/lirc0
Using device: /dev/lirc0
Running as regular user pi
pulse 2750
space 750
pulse 550
...

好,現在Home Assistant設備可以接收到紅外遙控信息了。下一步,讓Home Assistant和紅外遙控器可以通信。

讓Home Assistant接收紅外遙控數據

隨便給lirc指定一個接收的遙控器數據表,這裡用的是xbox360的遙控器,你不需要有這個遙控器,因為後面可以用小米萬能遙控器把它模擬出來。
下載xbox360遙控器的數據表,把它設置到lirc:

pi@raspberrypi:~ $ wget http://lirc.sourceforge.net/remotes/microsoft/Xbox360
pi@raspberrypi:~ $ sudo mv Xbox360 /etc/lirc/lircd.conf

創建/etc/lirc/lircrc文件,內容:

begin
remote = Microsoft_Xbox360
button = KEY_STOP
prog = home-assistant
config = KEY_STOP
end
begin
remote = Microsoft_Xbox360
button = KEY_PAUSE
prog = home-assistant
config = KEY_PAUSE
end

這裡只以兩個按鍵為例子,參看上面/etc/lirc/lircd.conf的內容,你可以多添加幾個按鍵。

重啟lirc

pi@raspberrypi:~ $ sudo systemctl restart lircd.service

現在在米家app給小米萬能遙控器添加Xbox360遙控器(使用搜索功能添加,裡面有兩個,我添加的是“微軟DVD播放器”那個),現在測試

pi@raspberrypi:~ $ ircat home-assistant

按遙控器上的停止按鍵,應該會收到相應的代碼。


現在米家app可以給home assistant設備發信息了,下一步要做的是根據這個信息,觸發不同的動作。

Home assistant根據遙控器指令觸發動作

編輯 HomeAssistant 的configuration.yaml文件,加入lirc組件

lirc:

配置home assistant的自動化指令:

automation:
- alias: 打開燈
trigger:
platform: event
event_type: ir_command_received
event_data:
button_name: KEY_PAUSE
action:
service: homeassistant.turn_on
entity_id: group.a_lights

上面的KEY_PAUSE就是剛剛配置的遙控器按鍵。action可以換成你想要的效果,我是幫來它來啟動我的電腦了。重啟homeassistant,讓配置生效,現在對着樹莓派按暫停播放鍵,就Homeassistant就會觸發相應的動作了。

讓小米AI音箱控制萬能遙控器

先打開米家app,在底部點選“智能”,在“我在”tab中點右上角的“+”號創建新智能條目,在選擇條件界面選擇“手動執行”,選擇“小米萬能遙控器”-〈遙控模式〉-〈微軟DVD播放器〉-〈暫停/播放〉-〈右上角“確定”〉設置你想要的名稱,比如“啟動電腦”
好了。打開小米AI app,在底部點選“技能中心”-〈小愛訓練計劃〉-〈創建訓練〉-〈為問題命名,比如“啟動電腦”〉-〈設備控制〉-〈選擇剛創建的“啟動電腦”〉-〈打開〉,預覽後保存。
(相關的圖文教程點這裡

好了。現在對着小米同學說“啟動電腦”,小米音箱會指示小米萬能遙控器發送一個KEY_PAUSE按鍵,這時home assisant收到後,就會觸發啟動電腦的動作了。

參看:Creating a Raspberry Pi Universal Remote With LIRC
另一種通過第三方平台橋接小愛同學和home assistant的方法: https://bbs.hassbian.com/thread-2404-1-1.html

此條目發表在 人工智能 分類目錄,貼了 , , , , , , 標籤。將固定鏈接加入收藏夾。

將小愛同學(小米AI音箱)接入Home Assistant(基於紅外遙控器)》有 1 條評論

  1. shark 說:

    貌似只有 stop 和 pause 兩個鍵可用。。。

發表評論