身為一個Siri重度使用者,一直想用Siri去控制家裡的Harmony
(不知道啥是Harmony的可以看一下之前寫的介紹,真心推薦一定要買一隻)
目標就是懶人極致,直接用說的就一句開關電視音響,開關AppleTV,開關PS4等
無奈Harmony不支援Apple的HomeKit,所以沒辦法直接用Siri控制開電視,開AppleTV
雖說可以用一些HomeKit bridge的方式來讓iOS device以為有個Harmony的HomeKit device
但是需要有台Server跑Docker,我的NAS DS212+太老舊,Synology官方不支援裝Docker, 所以沒辦法額外裝HomeKit bridge, 我又不想開一台Server耗電
所以最後就決定自己寫個App支援Siri extension,
最後達成的結果就是能直接說類似下面的句子來開關電視,音響,AppleTV, PS4
Hey Siri, send a message open TV using MyApp
Hey Siri, start watch TV with MyApp
Hey Siri, start activity with MyApp
為什麼講起來有點繞舌,主要是因為SiriKit限制多多。SiriKit目前只支援六個Domain
1. Ride Booking
2. Messaging
3. Photo Search
4. Payments
5. VoIP Calling
6. Workouts
由於我現在不是一個真的HomeKit device, 所以沒辦法直接走HomeKit那條路,所以只能想辦法從上面那六種中挑一個來“模擬",看來看去最適合的就是Messaging那類別
Messaging那domain簡單來說就是讓Siri透過我的App送訊息,當我看到訊息內容有開電視,開Apple TV之類的我就再想辦法控制Harmony去開啟或關閉對應的activity
至於怎麼控制Harmony,這邊就透過IFTTT的Maker channel & Harmony Service
Maker channel能讓你自己送個event給你專屬的channel, 當收到event後再去叫起Harmony Service來開關你的Harmony activity
簡單來說就是這樣完成的,一開始本以為會花點時間寫
沒想到開始寫之後大概兩個小時多就寫完了,比預期的還簡單
寫完Siri Messaging extension後,覺得講話還是有點繞舌
所以想想如果改成用Workouts extension, 是不是能把"Watch TV"或"Play PS4"之類的詞當成一個workout name,這樣就能直接講
Hey Siri, start "Play PS4" with MyApp
寫完實測結果是可以,但是有兩個缺點
1. Workout extension最後一定會把你的App叫起來,這點是我不想要的。Messaging extension就不會
2. Siri看來內建對於TV之類的詞很敏感,感覺有Start TV之類的詞就很容易跑去HomeKit,然後就跟你說找不到你的TV T__T
在目前Siri限制多多的情況下大概就先只能做到這樣
有朋友有知道更好的方式的歡迎一起討論一下
==========================================================
故事分隔線
==========================================================
雖說已經達成我用講話就控制家電的目的,但是SiriKit目前的諸多限制就是讓我講起話來感覺不順
我理想中應該是要直接Hey Siri, turn on TV或是Hey Siri, play PS4這樣就好,而不是還要講那一大串
所以最後決定入手一台Echo dot來玩玩Alexa
入手後的感覺是...........................
我之前簡直像白癡!還花時間寫code
Alexa上就有 Harmony Skill set, 我點點幾個按鈕就全部整好了
現在就是講個
Alexa, turn on TV
Alexa, turn on Apple TV
Alexa, turn off PS4
就全部搞定了!完勝!!!
有Harmony的強力推薦一定要搭配入手Echo dot啊!
之前自己寫的Siri extension App雖說白寫了,不過有個好處是我可以隨時用講的開啟家裡的電視音響等等設備,Alexa只有人在家裡才能用。
不過這好處大概只有在出遠門去玩,要假裝家裡有人時才有用吧 Orz
[延伸閱讀] Harmony integration with Siri & Alexa - Part II
沒有留言:
張貼留言