アレクサを使い音声リモコン(IRKit学習リモコン + Node-RED + Raspberry pi)を作成

アレクサを利用して赤外線学習リモコン(IRKit)から赤外線信号を送信させる環境を作成する手順をまとめます。
構成は下図の通りです。


Nature remo mini(赤外線学習リモコン)を使えばアレクサ用スキル(Nature Remo Smart Home Skill)があるのでもっと簡単に構築できます。

参照:アレクサと赤外線学習リモコン(Nature remo mini)連携で音声操作

しかし、ここでは以下の構成を使うことでより拡張性の高くします。

・Raspberry pi
・Node-RED(GUOでフロー制御プログラム)
・Node-RED Alexa Home Skill Bridge(アレクサのスキル)

Node-RED を使った以下のフローで WebAPI を IRKit にリクエストして赤外線信号を送信させます。

前提となる内容については以下を参考にしてください。

参照:Node-RED の基本的な使い方
参照:Node-RED を Raspberry pi にセットアップ
参照:Raspberry pi にOSをWindowsからセットアップ
参照:IRKit(学習リモコン)コマンド送受信(屋内からのアクセス)
参照:IRKit(学習リモコン)の基本的な使い方


1.Node-RED Alexa Home Skill Bridge にデバイスを追加

Node-RED Alexa Home Skill Bridge サイトでアカウントを作成します。

Node-RED Alexa Home Skill Bridge サイトのアカウントを作成
Node-RED Alexa Home Skill Bridge にデバイスを追加


(1)Node-RED Alexa Home Skill Bridge サイトのアカウントを作成

以下サイトよりアカウントを作成します。

「出典元」Node-RED Alexa Home Skill Bridge Resiter

Username(ユーザー名)、Email(Eメール)、Password(パスワード)を入力してResiter(登録)ボタンをクリックしてアカウントを登録します。


(2)Node-RED Alexa Home Skill Bridge にデバイスを追加

Node-RED Alexa Home Skill Bridge サイトのアカウントでログインします。
(アカウント作成でログインした状態ではログイン不要です。)

「出典元」Node-RED Alexa Home Skill Bridge Login


ヘッダーにある「Devices」メニューをクリックします。
ページ左下にある「Add Device」ボタンをクリックします。
項目に任意の設定(ここでは画像の内容)をします。
・Name(デバイス名で使用)
・Description(説明)
・Action(アクション)
・ApplicationType(アプリケーションタイプ)
一通り入力したら一番したにある「OK」ボタンをクリックします。


2.アレクサに Node-RED スキルを追加

アレクサアプリで「スキル・ゲーム」から「Node-RED」で検索して有効にします。

Node-RED Alexa Home Skill Bridge サイトのアカウントで「Username」「Password」入力して「Authorise」ボタンをクリックします。
これでアレクサのデバイスに表示されリンク可能になります。


3.アレクサに Node-RED Alexa Home Skill Bridge で作成したデバイスを追加

アレクサアプリの「デバイスを追加」メニューから「デバイスを検出」ボタンをクリックします。

検出したデバイスをセットアップして「終了」ボタンをクリックします。
これで追加したデバイスは定型アクションから利用可能になります。


4.Node-RED の パレットに Alexa を追加

フローのノードにアレクサと連携するためのアプレットを追加します。

「alexa-home-skill」でパレットを検索して「ノードを追加」をクリックします。

alexa のパレットが追加されます。


5.Node-RED でフローを作成

フローの作成方法については以下を参考にしてください。
ここでは個々のノードの設定内容を説明します。

参照:Node-RED の基本的な使い方

作成するのは以下のフローになります。


alexa-home ノード(Device:TV1)
function ノード(名前:送信ヘッダー作成)
change ノード(名前:送信データ作成)
http request ノード(名前:WEBAPI送信)
・debug ノード(名前:未入力で設定はしていません。デフォルトのままです。)


(1)alexa-home ノード(Device:TV1)

alexa-home ノードには、Node-RED Alexa Home Skill Bridge サイトで作成したアカウントを「Username」「Password」に入力します。

「Account」でアカウントを選択すると「Device」に作成したTV1が自動で選択されます。


(2)function ノード(名前:送信ヘッダー作成)

コードの設定内容は以下の通りです。(コードの3行目は初期表示されます。)

msg.headers = {};
msg.headers['X-Requested-With'] = 'Node-RED';


(3)change ノード(名前:送信データ作成)

「ルール」の「対象の値」には JSON形式の送信データを入力します。
用意する送信データは以下のページを参考にしてください。

参照:IRKit(学習リモコン)コマンド送受信(屋内からのアクセス)
※JSONのダブルコーテーションはエスケープする必要はありません。



(4)http request ノード(名前:WEBAPI送信)

URLには、IRKit赤外線リモコンのIPアドレスを指定します。
※名前解決できないネットワーク環境ではホスト名をつかえません。


6.アレクサ定型スキルを作成

アレクサの定型スキルに Node-RED Alexa Home Skill Bridge サイトで作成したデバイス「TV1」をアクションとして追加します。
定型アクションの作成については以下のページを参考にしてください。

参照:アレクサと赤外線学習リモコン(Nature remo mini)連携で音声操作
  (3.定型アクションで音声操作を定義)


「アクションを追加」から「すべてのデバイス」をクリックします。

デバイス「TV1」を選択して「追加」をクリックします。
お疲れ様です。これで利用可能になります。