INPUTしたらOUTPUT!

忘れっぽいんでメモっとく

LINE Messaging APIでLINE botを作る(3) リモコン連携

estrellita.hatenablog.com

の続き。

部屋をIoT化するのが楽しくなってきたので今回はメッセージに「おやすみ」を含む場合、部屋の照明を消すようにする。

使用する機器はラトックシステム株式会社のスマート家電コントローラRS-WFIREX3

現在は後継機が発売されているのでこれから買うのであればこちらの方が良いかもしれない。

LINE Messaging APIとRS-WFIREX3は直接連携することはできないがスマート家電リモコン Webマニュアルにある通りIFTTTのアクションとして設定することができる。


IFTTT連携機器の設定

スマートフォンアプリ「家電リモコン」にすでに部屋の照明が登録されているものとし、以下の手順でIFTTT連携を設定する。

  1. 右上の「…」を選択
    • f:id:tak95:20190531001416p:plain:w240
  2. メニューの中から「IFTTTの設定」を選択
    • f:id:tak95:20190531001432p:plain:w240
  3. 「+」を選択してIFTTTと連携する機器を選択
    • f:id:tak95:20190531001448p:plain:w240


IFTTTの設定

次にIFTTT側でwebhookと機器の設定を行う。

  1. 「New Applet」から「+this」を選択する
    • f:id:tak95:20190531002346p:plain
  2. 検索欄に「webhook」を入力し、検索結果から「Webhooks」を選択する
    • f:id:tak95:20190531002359p:plain
  3. 「Recieve a web request」を選択する
    • f:id:tak95:20190531002411p:plain
  4. イベント名(今回はgood_night)を設定し「Create trigger」を選択する
    • f:id:tak95:20190531002423p:plain
  5. 「+that」を選択する
    • f:id:tak95:20190531002434p:plain
  6. 検索欄に「RATOC」を入力し、検索結果から「RATOC Remocon」を選択する
    • f:id:tak95:20190531002447p:plain
  7. 行いたい機器の操作を選択する(今回は照明の操作)
    • f:id:tak95:20190531002459p:plain
  8. 前節でIFTTT連携設定した機器を選択し、操作を設定する
    • f:id:tak95:20190531002512p:plain
  9. 「Finish」を選択して完了
    • f:id:tak95:20190531002523p:plain


webhookのURLは「https://maker.ifttt.com/trigger/(上で設定したイベント名)/with/key/(キー)」となるため以下の手順でキーを確認する。

  1. ユーザー名をクリックし「Services」を選択
    • f:id:tak95:20190531002535p:plain
  2. 「Webhooks」を選択
    • f:id:tak95:20190531003655p:plain
  3. 右上にある「Settings」を選択し、URLからキーを確認する
    • f:id:tak95:20190531003710p:plain

あとは前回と同様、メッセージに特定ワードが含まれる場合に上記のWebhook URLにリクエストするだけ。


goodNinght()の作成とechoman()の更新

上記のWebhook URLにリクエストを送信する関数を以下のように定義する。

const iftttKey = process.env.IFTTT_KEY

function goodNight () {
  let options = {
    url: `https://maker.ifttt.com/trigger/good-night/with/key/${iftttKey}`,
    method: 'GET'
  }
  request(options, function (error, response, body) {
    if (error) {
      console.log(error)
    }
    console.log(body)
  })
}


echoman()は以下の通り。

async function echoman (ev) {
  // const pro = await client.getProfile(ev.source.userId)

  if (ev.message.text.includes('掃除') | ev.message.text.includes('片付け')) {
    tidyMyRoom()
  }
  if (ev.message.text.includes('おやすみ')) {
    goodNight()
  }

  let msg = await conversation(ev.message.text)
  return client.replyMessage(ev.replyToken, {
    type: 'text',
    text: msg
  })
}

以上でメッセージに「おやすみ」が含まれていると部屋の照明が消えるようになる。



スマート家電コントローラRS-WFIREX3では気温・湿度・照度を記録することができるため次はそれらを返すようにする。