Amazonギフト券で2%ポイントバック

【Raspberry Pi(ラズパイ)×Node-RED】スイッチボットをアレクサのスマートホームスキルで操作する

この記事を読むのに必要な時間は約 14 分です。

この記事を読むのに必要な時間は約 14 分です。

前回、スイッチリンクを使わずにアレクサを利用して声でスイッチボットを操作する方法を紹介しました。
【Alexa × IFTTT× Beebotte × Raspberry Pi】スイッチリンクを使わずにスイッチボットを声で操作する方法 その後調べていると、更に簡単にかつアレクサのスマートホームスキルでスイッチボットを操作する方法を見つけたため記事にします。
前回紹介したやり方と何が変わるかというと、

  • スマートホームスキルなので、「トリガー」とか言わなくて良い
  • グループ化して一括操作が可能になる

といった点が変わります。個人的にはIFTTTを利用した際に「トリガー」と言わなければアレクサが反応してくれないのが嫌だったので今回のやり方の方が気に入っています。
もちろんスイッチリンク(スイッチハブ)も不要で、ラズパイさえあれば簡単にできます。

スマートホームスキルとは

こちらは説明不要かと思いますが、簡単に記載しておきます。
スマートホームスキルは家電をアレクサから操作するときに使用するスキルになります。
電源のオンオフなどの簡単な操作しか現状行うことはできませんが、アレクサに簡単な指示を出すだけで家電の操作を行うことが可能です。

Alexa(アレクサ)から家電を操作する方法の一つ

アレクサから家電を操作する方法は大きく分けて2つあります。それがIFTTTを利用する方法とスマートホームスキルを利用する方法です。
(正確にはスマートホームスキルは2つに分かれるのですが、今回はわかりやすいようにざっくりと2つで紹介します。)

  1. IFTTTを利用する
  2. スマートホームスキルを利用する

IFTTTを利用する

IFTTTはWebサービス同士を連携させることができるサービスで、アレクサとその他のサービスも連携可能となっています。それを利用してアレクサから様々な家電の操作が可能です。
ただし、IFTTTはアレクサから起動する場合、起動時のキーワードとして「トリガー」という言葉をつける必要があるので言いづらいし気持ち的に萎えます。ただ自由度はほんと高いです。

IFTTTで廊下の照明を消す時のキーワード
例:アレクサ、廊下の照明消して、トリガー

※Google Homeであれば「トリガー」つけなくて良いのでGoogle Homeを利用している人はIFTTTでも全然良い気はします。

スマートホームスキルを利用する

スマートホームスキルはアレクサから家電を操作することができるスキル群です。スマートホームスキルは自然なキーワードで家電の操作が可能になっているため、使い勝手が良いです。

スマートホームスキルで廊下の照明を消す時のキーワード
例:アレクサ、廊下の照明消して

そのため、基本的にはスマートホームスキルで設定を行い、スマートホームスキルで対応仕切れない操作などをIFTTTを利用することをオススメしています。
後で紹介はしますが、Node-REDはアレクサのスマートホームスキルに対応しています。
 

家電の一括操作が可能

先ほどは起動時のワードで比較をし、スマートホームスキルで操作するのが良いよという話しをしましたが、それ以外にもメリットがあります。
それが「グループ」機能による家電の一括操作です。

例えば、「廊下の照明」と「リビングの照明」を消したいとき、IFTTTTなどだと2回指示を出す必要がありますが、アレクサで両方をグルーピングしておくことで、一括で操作が可能になります。
上の画像で言うと、「全ての電気」は文字通り家の照明を全て入れています。そのため、アレクサに「アレクサ、全ての電気を消して」と言うとグループに入れた全ての照明の電源をOFFにしてくれます。(全ての照明の方がわかりやすかったですね。。)
これは地味に便利な機能なので活用していきましょう。
 

Node-REDとは

続いて、アレクサとスイッチボット間を連携するために利用するNode-REDについて簡単に紹介します。

Node-REDはハードウェアデバイス/APIおよびオンラインサービスを接続するためのツールです。
公式:https://nodered.jp/

とこれだけ読んでもわからないかと思いますが、Flowsを作成するだけでハードウェアデバイスやAPIなどの連携を可能とするサービスです。視覚的にFlowが組めるため、初めての方でも比較的簡単に取り組めます。
Node-REDを利用することで全体の流れとしては以下のようになります。

以前のIFTTT×Beebotteを利用するよりスッキリしてますね。
【Alexa × IFTTT× Beebotte × Raspberry Pi】スイッチリンクを使わずにスイッチボットを声で操作する方法  

Node-REDを利用してアレクサとスイッチボットを連携する

大まかな処理の流れは上記の図の通りで以下ではその設定について記載していきます。この手順通りにやれば誰でも簡単に設定まで行うことができます。

設定手順
  1. Node-REDをRαspberry Piにインストール
  2. Node-RED Alexa Home Skill Bridgeでアカウントを作成
  3. AlexaにNode-REDのスキルを追加
  4. Node-REDでフローを組み立てる
 

1.Node-REDをRaspberry Pi(ラズパイ)へインストール

ラズパイ上で以下のコマンドを実行してください。
このコマンドでラズパイにNode-REDがインストールされます。Raspberry Pi 3とかだと初期で入っているらしいですが、とりあえずこのコマンド打っておけば大丈夫です。

コード
sudo apt-get-install nodered
続いて、node.jsのアップデートを実施します。これをやっておかないと、アレクサとの連携が行えないです。
コード
update-nodejs-and-nodered
これでNode-REDのインストールは完了です。簡単。
続いてNode-REDを起動してみましょう。
以下のコマンドを入力すると、Node-REDが起動します。起動完了まで10秒程度かかります。
コード
node-red-start
起動時に以下のようなログが表示されます。画像の赤枠で囲んでいる部分にURLが表示されており、ここにアクセスすることでNode-REDを扱うことができます。

実際にアクセスすると以下のような画面が表示されます。

左側にあるのがFlow作成のパーツでこれを真ん中の「フロー1」と書かれたパレット上にドラッグアンドドロップでセットして組み立てていきます。
ここでアレクサに呼びかけた時にスイッチボットを操作するように設定していくのですが、初期段階ではアレクサを使うことができません。
まず最初に「Node-RED Alexa Home Skill Bridge」でアレクサとNode-REDを接続できるように設定を行う必要があります。

2.Node-RED Alexa Home Skill Bridgeに登録する

以下のURLから登録を行なってください。
Node-RED Alexa Home Skill Bridge
上記のURLにアクセスすると以下の画面が表示されるので、アカウントを持っていない方は「Register」から登録してください。

登録が完了したら続いてDeviceの登録をしていきます。
「Add Device」をクリックして登録をします。

「Name」と「Description」は必須項目です。それとスイッチボットはON/OFFぐらいなので、OnとOffにチェックをつけて登録します。
ここで登録した「Name」でアレクサから操作を行うことになります。
(呼ぶ時の名称はAlexaのアプリ上から変更自体は可能です。)
Descriptionは説明なので適当に記載しておいてください。

以下のように登録できていればOKです。

 

3.Alexa(アレクサ)にNode-REDのスキルを追加

続いての操作はスマホで行います。アレクサのアプリからNode-REDのスキルを追加します。
スキルの検索で「node-red」の入力すると表示されます。画像の一番上のやつです。
スキルを追加して「有効にする」をクリックしてください。



ここで先ほど登録したアカウントの情報を入力してください。


「Node-REDが正常にリンクされました」と表示されれば連携は完了です。
アレクサのメニュー > スマートホーム >デバイスを追加 をクリックすると新しいデバイスが追加されるので確認してください。
続いて、実際にNode-REDでフローを組んでいきます。

4.Node-REDからスイッチボットを操作するフローを作成

取り急ぎ完成したフローを見てみましょう。すごくシンプルです。

順番に作成方法を見ていきます。今回利用しているのは「alexa home」と「exec」ノードです。
まず、「alexa home」を追加します。

STEP.1
ハンバーガーメニューから「パレットの管理」をクリック
ここに表示されていない場合はアップデートの手順が抜けているのでチェックしてください。

STEP.2
「alexa-home-」と入力すると「node-red-contrib-alexa-home-skill」が表示されるので「ノードを追加」をクリックして追加してください。

STEP.3
フロー上にAlexaのノードを追加
左側のノード一覧にAlexaが追加されているので、ドラッグ&ドロップでフロー上に配置します。

配置したノードをダブルクリックすると設定画面が開きます。
ペンマークをクリックしてNode-REDのアカウントと連結します。


追加が完了すると、先ほどの画面でDeviceが表示されているので選択してください。
表示されていない場合は一度、「完了」をクリックしてもう一度設定画面を開いてください。

ここまで設定できればあとはこのノードからスイッチボットを操作するノードを追加するだけです。
STEP.4
execノードからスイッチボットを操作
Alexaのノードを追加した時と同様にexecノードをドラッグ&ドロップで追加してください。

ダブルクリックで設定画面を開きます。
以下の画面のように「コマンド」でスイッチボットを操作するファイルをフルパスで指定します。

スイッチボットを操作するPythonのコードは以下の記事で紹介しています。
この記事でPythonファイルを作成して、作成したファイルを上記のコマンドで指定するようにしてください。
ラズパイ(Raspberry Pi)からSwitch Bot(スイッチボット)を操作する手順を解説
完成
 
これでアレクサに「アレクサ、廊下の照明つけて(消して)」と話しかけるとスイッチボットを操作してくれます。
これで布団に寝転んだまま離れた所のスイッチも声で操作できるようになりました!!
 

今回の方法以外のやり方

今回execコマンドでさっくりと済ましていますが、恐らく他にもやり方は色々あります。
僕自身最初は別の方法でやろうと思って調べて、Bluetoothを操作するコンポーネントがあったのでそれを利用してやろうとしました。
https://flows.nodered.org/node/node-red-contrib-generic-ble
しかし、ノードの使い方がいまいちわからず使うのを諦めました。
BLEノードで操作がうまくできた方はぜひコメント欲しいです。。
 

こちらの記事もオススメ

Switch Bot(スイッチボット)家のスイッチをIoT化!使い方・操作方法を解説! オススメのIoT製品を紹介!スマートホームを実現して生活の質をあげよう! Nature Remo(ネイチャーリモ)テレビやエアコンを一括管理できるスマートリモコンが便利すぎ!オススメの使い方を紹介!  

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA