AlexaにPS4を起動してもらう
先日の記事で任意のデバイスに対して「Alexa、〇〇をつけて(消して)」ができるようになったので、PS4にも対応させることにした。
PS4の起動に関しては以前、Keybow Kitのショートカットとして作っていたのでこれを応用。
ps4-wakerのREADMEにcliではなくjsから利用する方法があったので、下記のように実装した。
const express = require('express')
const { Device } = require('ps4-waker');
const app = express()
const TOKEN = process.env.API_TOKEN
app.get(`/${TOKEN}/irkit_ps4_on`, (req, res) => {
console.log('ps4 on')
const ps4 = new Device()
ps4.turnOn().then(() => ps4.close())
// ps4.startTitle('CUSA08444').then(() => ps4.close()) // IDを指定して特定のタイトルを起動する場合
ps4.close();
res.send('ok')
})
app.get(`/${TOKEN}/irkit_ps4_off`, (req, res) => {
console.log('ps4 off')
const ps4 = new Device()
ps4.turnOff().then(() => ps4.close())
res.send('ok')
})
app.listen(3000, () => console.log('app listening on port 3000!'))
最初、async/awaitで処理を待つようにしていたが、Lambdaの応答を8秒以内に返さないとAlexa側でtimeoutになるため先にレスポンスだけ返すようにした。
あとはLambdaのDiscoveryにPS4を設定して、Alexaアプリでデバイスの検出をすれば「Alexa、PS4をつけて(消して)」ができるようになる。