本帖最后由 windgo 于 2019-1-21 11:08 编辑
20190121更新:
建議在使用開發版接紅外接收模組時使用有帶板子的HX1838B
可以幫忙濾掉很多環境雜訊
使用小愛同學語音控制電視
可以語音開啟電視後馬上開啟直播軟體並切換到你要的頻道
可以語音選擇要切換的APP過去
可以語音控制播放/暫停/音量調整/直播選擇上一台下一台等
手機可點選連結
流程:
當語音控制小愛發出萬能遙控器紅外線碼(同樣碼發射三次)時,nodemcu收到碼後MQTT更新給HA
HA收到ir_core變化後,執行自動化內容(tvremoteime的指令需先用chrome開發者模式抓,在用curl post方式發出去)
需注意另外會有一個自動化會再收到ir_code後重發mqtt ir_code=0給HA做數值重置用
避免ir_code沒變化而無法觸發自動化
步驟
1.安裝tvremoteime並依照說明設定完畢
https://github.com/kingthy/TVRemoteIME
2.使用chrome開啟tvremoteime的網頁畫面,打開開發者模式,點選network裡面的record(如果使用wireshark抓封包分析也是可以的喔)
然後點選你要做的控制,可以看到referer 這邊取到?之前
例如referer:http://192.168.31.173:9978/key?code=3
保留http://192.168.31.173:9978並加上/run
(這個範例是跑程式所以是run,key是某個功能,keydown keyup代表按下放開某個鍵)
另外取From data,packageName: com.google.android.youtube.tv
接下來使用終端機整合上面得到的資料,並使用post丟給tvremoteime去執行,就是下面的指令curl -d "packageName=com.google.android.youtube.tv" -X POST http://192.168.31.173:9978/run
執行就能開啟youtube
但我會在前面加上回桌面-->停一秒-->開youtube,就變成
curl -d "code=3" -X POST http://192.168.31.173:9978/key;sleep 1;curl -d "packageName=com.google.android.youtube.tv" -X POST http://192.168.31.173:9978/run
3.將上面最後的指令加入HA config內的shell_command以便後面自動化使用
这边提供一些我的shell_command給各位參考,#為萬能遙控器裡面的按鈕名稱與對應的ir_code碼,方便後續對照
shell_command:
#arrow_up:752
ltv: curl -d "code=3" -X POST http://192.168.31.173:9978/key;sleep 1;curl -d "packageName=com.l2tv.ltv" -X POST http://192.168.31.173:9978/run
#arrow_down:2800
supertv: curl -d "code=3" -X POST http://192.168.31.173:9978/key;sleep 1;curl -d "packageName=com.hd.zhibo" -X POST http://192.168.31.173:9978/run
#mute:656
youtube: curl -d "code=3" -X POST http://192.168.31.173:9978/key;sleep 1;curl -d "packageName=com.google.android.youtube.tv" -X POST http://192.168.31.173:9978/run
#確定:2672
ok: curl -d "code=23" -X POST http://192.168.31.173:9978/keydown;curl -d "code=23" -X POST http://192.168.31.173:9978/keyup
#power:2704
pause: curl -d "code=23" -X POST http://192.168.31.173:9978/keydown;curl -d "code=23" -X POST http://192.168.31.173:9978/keyup;curl -d "code=23" -X POST http://192.168.31.173:9978/keydown;curl -d "code=23" -X POST http://192.168.31.173:9978/keyup
#頻道up:144
up: curl -d "code=19" -X POST http://192.168.31.173:9978/keydown;curl -d "code=19" -X POST http://192.168.31.173:9978/keyup
#頻道down:2192
down: curl -d "code=20" -X POST http://192.168.31.173:9978/keydown;curl -d "code=20" -X POST http://192.168.31.173:9978/keyup
#menu:112
back: curl -d "code=4" -X POST http://192.168.31.173:9978/key
#mi_home:tel:3030693060
home: curl -d "code=3" -X POST http://192.168.31.173:9978/key
#mi_volume_up:16
volumeup: curl -d "code=24" -X POST http://192.168.31.173:9978/key;curl -d "code=24" -X POST http://192.168.31.173:9978/key;curl -d "code=24" -X POST http://192.168.31.173:9978/key;curl -d "code=24" -X POST http://192.168.31.173:9978/key
#mi_volume_down:2065
volumedown: curl -d "code=25" -X POST http://192.168.31.173:9978/key;curl -d "code=25" -X POST http://192.168.31.173:9978/key;curl -d "code=25" -X POST http://192.168.31.173:9978/key;curl -d "code=25" -X POST http://192.168.31.173:9978/key
#mi_power:2058
volumemute: curl -d "code=164" -X POST http://192.168.31.173:9978/key
ir_code_reset: /config/ir_code_reset.sh
4.加入小愛同學與萬能遙控器,並使用紅外線方式導入小愛到HA(可使用nodemcu+紅外線接收器)
https://bbs.hassbian.com/forum.p ... =%E5%B0%8F%E7%88%B1
5.在米家APP內新增控制器場景,指定一個不衝突的遙控碼給場景,連續發射三次
(避免nodemcu收不到,或是因為雜訊而被干擾的情形)
6.在小米ai app選擇訓練小愛依照小愛的對話內容來建立關鍵字
例如我喊 我要看youtube,小愛的對話紀錄為 我要看u two或是 我要看優酷
那我的關鍵字就使用 我要看u two 和 我要看優酷
7.nodemcu收到萬能遙控器ir code後,使用mqtt更新code給HA
(可在HA state這邊觀察對應的ir_code以便寫自動化)
8.在HA內安裝mqtt client,加入一個ir_code 重置為0用的mqtt publish script,以便執行自動化使用
mosquitto_pub -t '/esptest/ir/IR' -m '0' -h 192.168.31.184
編輯configuration.yaml,加入shell_command以後執行自動化使用
shell_command:
ir_code_reset: /config/ir_code_reset.sh
9.在HA寫自動化,執行上面查出的tvremoteime shell_command
在自動化的action步驟為
i.先關閉自動化本身(因為遙控器發射三次,不先關閉會導致自動化連續執行三次)
ii.再執行shell_command
iii.最後等待2秒再打開自動化本身
- action:
- data:
entity_id: automation.ir_code_656_youtube
service: automation.turn_off
- service: shell_command.youtube
- delay: '2'
- data:
entity_id: automation.ir_code_656_youtube
service: automation.turn_on
alias: ir_code_656_youtube
condition: []
id: 'tel:1520396480510'
trigger:
- entity_id: sensor.ir_code
platform: state
to: '656'
10.在HA新增一個自動化,當ir_code > 1時,等待五秒後執行mqtt publish script,
重置ir code=0,以便自動化連續觸發
例如你喊靜音,HA收到一次ir code 1111,這時如果你不reset ir_code,再喊一次靜音時,HA收到1111不會觸發自動化
- action:
- delay: '5'
- service: shell_command.ir_code_reset
alias: ir_code_reset
condition: []
id: 'tel:1521008423676'
trigger:
- above: '1'
entity_id: sensor.ir_code
platform: numeric_state
11.開始使用小愛同學語音測試
|