アレクサ対応電源タップ(LITSPED)を音声操作

購入したはいいけどメーカーサイトの説明がない・・・
アレクサでスマートホーム対応電源タップ(WiFi スマートコンセント/スマートプラグ)を音声操作するための手順をまとめます。
ここでは「アレクサ、プラグオフ」と言うと電源タップのコンセントを1つ消すようにします。






購入時のサイトの説明に「電流がしきい値を超えると、回路ブレーカーが自動的に開き、挿入された高温機器の損傷を防ぎます。」と保護回路があるようですが念のため、ACコンセントには消費電力400W以上の機器はつながないようにしています。


1.SmartLife アプリのインストール、アカウント登録と電源タップ追加

Andoridに「SmartLife」アプリをAndoridのスマホにPlayストアよりインストールします。


アカウントとなるメールアドレスを入力して「認証コードの取得」クリックして認証コードをメールで取得します。
取得した認証コードを入力します。

作成するアカウントのパスワードを入力して「完了」をクリックします。
※自動起動が無効な場合、有効にする画面が表示されます。
自動スタートアップの設定のメッセージが表示されたら「設定」をクリックします。
「SmartLife」の右側にあるスイッチをクリックして有効にします。

自動起動するとメモリ消費が多くなると警告されますが「許可」をクリックします。
ここで、電気タップをコンセントに繋ぎます。
すると電源ボタンの周りのあかりが点滅します。



デバイスの追加では、「電源タップ(Wi-Fi)」をクリックします。

電源タップの点滅状態を確認したら電源タップが使用するWi-FiのSIDとパスワードを入力して「確認」をクリックします。
これで「SmartLife」アプリから電源タップを操作することができるようになります。


2.アレクサに SmartLife スキルを導入

「スキル・ゲーム」メニューから「SmartLife」スキルを検索してを導入します。

「有効にして使用する」をクリックして「SmartLife」スキルを有効にします。
「SmartLife」アプリで作成したアカウントのメールアドレスとパスワードを入力して「今すぐログイン」をクリックします。
ログインできたら「許可」をクリックします。

これでリンクが完了します。


3.アレクサに電源タップをデバイス追加

正常にリンクが完了しましたと表示された画面の左上にある「✖」をクリックすると端末を検出する画面が表示されます。
一応、「端末を検出」をクリックして検出しました。

しかし、検出されませんでと表示されましたが画面閉じるとデバイスの画面に検出されましたと表示されてます。
デバイスはこれで追加されておりアレクサで利用可能な状態になっていました。


4.電源タップを音声操作するアレクサの定型アクション作成

「アレクサ、プラグオフ」という定型アクションを作成して電源タップのコンセントを1つ消せるようにします。

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


定型アクションの作成内容は以下の通りです。

アレクサ対応 LED電球(IRIS OHYAMA)を音声操作

アレクサでスマートホーム対応照明を音声操作するための手順をまとめます。
取扱説明書みればわからないこともないのですがしょうもないところでハマるので備忘録にすることにしました。
ここでは「アレクサ、電球2(説明で追加するデバイス名)をつけて」で電気をつけられるようにします。
(「つけて」を「けして」にすると電気は消えます。)


「出典元」IRIS OHYAMA LED電球用 セットアップ


1.IRIS SmartLF アプリをインストールとアカウント登録

Andoridに「IRIS SmartLF」アプリをAndoridのスマホにPlayストアよりインストールします。


インストールしたアプリの「登録」をクリックしてアカウントを登録します。
(メールアドレスに送信される認証コードを入力してアカウントを登録します。)


2.IRIS SmartLF アプリにLED電球を追加

LED電球にスイッチをつけて明かりが点滅する状態を確認します。
※購入後に電源入れた状態ではLED電球は点灯状態でした。
 LED電球が点灯しているときは電源を1秒間隔でONとOFFを3回行うと点滅するようになります。

「+」をクリックして表示される「照明」アイコンをクリックします。

「次へ(WiFi設定)」クリックしてLED電球が使用するWiFiのSIDとパスワードを入力します。
「確認します」クリックするとLED電球が検出されて追加されます。


3.アレクサに IRIS SmartLF スキルを導入

アレクサに IRIS SmartLF を導入して IRIS SmartLFアプリで作成したアカウントを利用してアレクサとアカウントリンクします。
アレクサアプリの「IRIS SmartLF」スキルを検索します。

「有効にして使用する」クリックするところより IRIS SmartLF アプリで作成したアカウントのメールアドレスとパスワードを入力して IRIS SmartLF にログインします。
ログインできたらアレクサから利用できるように「許可」をクリックします。


正常にリンクが完了したと表示されます。


4.スマートスピーカー対応LED電球をデバイスに追加

「IRIS SmartLF」アプリで追加したLED電球をアレクサアプリのデバイスに追加します 。
これにより音声での操作や定型アクションでの指定が可能になります。

「デバイスを追加」⇒「照明」「その他」と選択します。

「デバイスを検出」からLED電球を検出します。
ここでは、検出したデバイスへのグループ追加はスキップします。

定型アクションを登録しなくても記載の通り「アレクサ、電球2をオフにして」で消灯できるし「アレクサ、電球2をオンにして」で点灯できるようになります。

Raspberry pi にリモートデスクトップから接続

Raspberry pi は制御機器として利用するのでモニターを付けずに利用する場合があります。
そんな時にリモートデスクトップで色々と操作したい時に使います。



1.Raspberry pi のインターフェイスVNC設定を有効化

リモートデスクトップで接続可能にするにはRaspberry pi設定にあるインターフェイスのVNCを有効にします。

「Raspberry Piの設定」メニューをクリックして画面を開きます。

「インターフェイス」タブにあるVNCの「有効」をクリックします。


2.Raspberry pi のXRDPパッケージをインストール

XRDPをコマンドでインストールします。

コマンド:sudo apt-get install xrdp

「続行しますか?」にはもちろんYを入力します。

こんな感じでインストールは終了します。


3.Windows10からリモートデスクトップ接続

Windows10からリモートデスクトップでRaspberry piに接続します。

スタートメニューの「アクセサリ」にある「リモートデスクトップ」をクリックします。

接続先のアドレス(ホスト名、IPアドレス)を「コンピューター」に入力します。
(ここではデフォルトの名前を入力しています。)

この画面が表示されたら「はい」をクリックします。

「username」(ユーザー名)と「password」(パスワード)を入力して「OK」ボタンをクリックします。
(Rapsspberry pi にログインする時のアカウントを使用します。)
※デフォルトのユーザー名は、pi です。
 パスワードには、Rapsspberry pi をセットアップした時に入力したパスワードを入力します。

参考:Raspberry pi にOSをWindowsからセットアップ


これでリモートデスクトップが接続されてRapspberry piのデスクトップが表示されます。

アレクサを使い音声リモコン(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」を選択して「追加」をクリックします。
お疲れ様です。これで利用可能になります。

Node-RED の基本的な使い方

どんなものか理解するのはまず使ってみるのもよいかと思います。
プログラムにはデバックの作業も必要になるので一緒に最小の構成で説明します。

完成イメージ

環境の作成は Raspberry pi への説明になりますがページが参考になります。

参照:Node-RED を Raspberry pi にセットアップ


1.リクエスト受け付ける「TEST1ページアドレス」ノードの作成

ブラウザからのページにアクセスしたときのリクエストを受け付ける部分の作成になります。
Node-RED のベースとなるURL + 新しく作成するURLの組み合わせで決まるURLを記入します。

まず。ネットワークにある「http in」ノードをドラッグ&ドロップしてフローを作成します。

親メソッドは、「GET」とします。
URLと名前を入力して「完了」をクリックします。
(Node-RED のベースとなるURLの記載は省略しています。)


2.ページのHTMLを定義する「HTMLを記述」ノードの作成

ページの表示内容となるHTMLを記述します。
機能にある「template」ノードをドラッグ&ドロップしてフローに追加します。

ドロップした「template」ノードを図のようにつなぎます。
(つなぐにはピンになっているところをマウスで押してつなぎたい箇所で放します。)

「template」ノードをダブルクリックしてテンプレートにページを表示するHTMLを記述します。
構文は「HTML」を選択します。
形式は「平文」を選択します。
最後に名前を入力して「完了」をクリックします。


3.定義したHTMLをブラウザに返す「HTTPレスポンス」ノードの作成

ネットワークにある「http responset」ノードをドラッグ&ドロップしてフローに追加します。

ドロップした「http responset」ノードを図のようにつなぎます。

とくに設定項目はありませんがノードの名前を入力して「完了」をクリックします。

フローは以下のようになります。
(フローとして機能する程度に完成していますがデプロイしていないのでまだ使えません)


4.フローで流れるデータを確認する「デバック出力」ノードの作成

フローの状態を把握するのに「debug」ノードを利用します。
共通にある「debug」ノードをドラッグ&ドロップしてフローに追加します。

ドロップした「debug」ノードを図のようにつなぎます。

ダブルクリックして設定を開き、名前を入力します。
対象には、「msgオブジェクト全体」を選択します。
(まず、どんな内容か理解するためにすべてデバック出力させる設定です。変更の必要はありません。)

実行した結果は、デバックメッセージの虫のボタンをクリックして表示されますので内容を確認します。


5.編集したフローのデプロイ

編集した内容はデプロイすることで利用可能になります。
「デプロイ」をクリックして変更を反映させます。

完了すると「デプロイが成功しました」とメッセージが表示されます。
(「使われていない「ノード設定」があります。と表示されますが確認動作に影響しません。」)

Node-RED を Raspberry pi にセットアップ

Node-RED は Raspberry pi の Node.js で動作するGUIでフローを記述するプログラミング開発ツールです。
簡単に IoT を実現できる便利なツールなので利用することにしました。
ここではインストールして使える状態にするまでの手順の備忘録とします。

基本的な使い方やOSのセットアップについては以下のページを参考にしてください。

参照:Node-RED の基本的な使い方
参照:Raspberry pi にOSをWindowsからセットアップ


1.Node-REDのインストール

インストールする説明は本家に詳細が記載されています。

「出典元」Node-RED User Group Japan Raspberry Piで実行する

Raspberry pi のターミナルから以下のコマンドでインストールします。

コマンド:bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

本当にインストールしますかと聞かれるのでもちろん「Y」入力します。
(再度、聞かれますが同じく「y」と入力しています。)

以下の状態で終了します。

この状態では Node-RED は起動してはいません。
以下のコマンドで Node-RED を起動します。

コマンド:node-red-start



2.Node-REDの自動起動設定

以下のコマンドで Node-RED をサービスで起動するようにすることでOSを起動した時に Node-RED を起動して利用可能にします。

コマンド:sudo systemctl enable nodered.service

これでOSを再起動しても Node-RED が利用可能になります。

ブラウザでWindows10からブラウザで開いた状態ですが以下のように利用可能になります。