アレクサ対応電源タップ(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からブラウザで開いた状態ですが以下のように利用可能になります。

Linux(Raspberry pi/Ubuntu)での共有フォルダ(Samba)を使う

共有フォルダはネットワークで利用するとなると必須の機能ですよね。
Raspberry pi も Ubuntu と同じようにフォルダを共有できるかと思って調べたけど見当たらないので両方の共有方法をまとめておきます。


1.Ubuntuのフォルダ共有

ファイルマネージャーで共有したいフォルダを選択してマウス右クリックの「プロパティ」メニューをクリックします。
「このフォルダを共有する」にチェックをつけます。

共有サービスがインストールされていないとメッセージが表示されます。
「サービスのインストール」ボタンをクリックします。

つづいてメッセージが表示されると「インストール」ボタンをクリックします。

ようやく「このフォルダを共有する」にチェックがつきます。
任意の項目を設定したら「共有を作成」ボタンをクリックしてフォルダの共有は完了します。

こんな感じで他のパソコンから見えて使えるようになります。


2.RaspberryをSambaでフォルダ共有

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

コマンド:sudo apt-install samba

途中で続行しますか?と聞かれるので「Y」を入力してENTERキーを押します。

DHCPサーバーを使用していますが「いいえ」を選択します。
(市販の無線ルーターを利用してデフォルトのDHCPを利用しているところが一般的かと思います。うちも同じ環境です。)

こんな感じでよくわからない状態で終了します。

インストールして作成された smb.comf ファイルを編集して共有するフォルダを指定します。
指定したらファイルを保存して画面を閉じます。

編集するコマンド:sudo mousepad /etc/samba/smb.conf

・「[PicTures]」には共有名を指定します。
・「path = 」に共有するパスを指定します。
・他は見ての通り参照・更新権限を認証なしで公開する設定です。


サービスを再起動して設定を反映させます。

こんな感じで他のパソコンから見えて使えるようになります。

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

raspberry pi は SDカードにOSをインストールして使用します。
インストールがだいぶ簡単になってるのはいいんですが手順がかわると戸惑うのでまとめておきます。



1.ダウンロード

SDカードにイメージを書き込むプログラムをダウンロードします。

「出典元」Raspberry Pi Foundation Downloads 

「Raspberry Pi Imager for Windows」リンクよりダウンロードします。


2.SDカードにイメージ書込み

ダウンロードしたimager.exeを実行します。
「Install」ボタンをクリックします。

「Finish」ボタンをクリックします。

「CHOOSE OS」をクリックします。

ここでは一番上のOSを選択します。

パソコンにSDカードを差し込んで、「SHOOSE SD CARD」をクリックします。

「WRITE」をクリックします。

SDカードを取り外して画面を閉じます。


3.Raspberry pi で起動と初期設定

Raspberry pi にSDカードを差し込んで電源を入れます。(パワーONリセットなので電源スイッチはありません。)
「Contry」「Language」「Timezone」を選択して「Next」ボタンをクリックします。

パスワードを入力して「Next」ボタンをクリックします。

「Next」ボタンをクリックします。

ここではネットワークへの接続をWiFiにします。
対象のアクセスポイントを選択して「Next」ボタンをクリックします。

アクセスポイントのパスワードを入力して「Next」ボタンをクリックします。

OS最新に更新してほしいので「Next」ボタンをクリックします。

「Restart」ボタンをクリックします。
これでひとまず、完了です。

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

音声操作で赤外線リモコンが使えたら家中の様々な電気器を制御しやすいですよね。
アレクサ(Amazon Alexa) のスキルで Nature Remo mini(赤外線学習リモコン)と連携させて定型アクションにて音声操作をします。

※IRKitでの赤外線送信もIFTTT連携は可能なようですがIFTTTだけでなく連携するアプリも含めサービスが使えなくなるリスクが高く感じたので使用するのをやめました。
 個人的な感想ですが有償製品のサービスなら簡単に無くならないようなので Nature Remo mini のスキルを利用することにしました。

ここでは、アレクサに「ただいま」と言うとアレクサが「おかえりなさい」と話した後にテレビをONにする音声操作を例にします。

※この手順を実施する前に、Nature remo mini をセットアップする必要があります。
参照:アレクサ対応 Nature remo mini 赤外線学習リモコンのセットアップ


1.アレクサの Nature Remo Smart Home Skill セットアップ

ここではセットアップによりアレクサと Nature Remo Smart Home Skill をリンクします。
アレクサの「スキル・ゲーム」メニューを選択して表示される画面右上の虫眼鏡アイコンを選択します。

Nature Remo Smart Home Skill を選択して「有効にして使用する」ボタンを押すと認証を求められます。
ここではGoogleのアカウントで認証します。
※ここでの認証は、Nature remo mini のセットアップが完了していないとエラー(ただエラーとしか表示しないのではまります。)になります。
「Sign in with Google」ボタンを選択します。

認証でGoogleのパスワードを入力するとログインボタンが表示するので押します。
続いて「許可」ボタンを選択するとアレクサと Nature Remo Smart Home Skill のリンクが完了します。


2.アレクサと Nature Remo mini を連携

「デバイスの追加」を選択します。

ここでは「テレビ」を選択します。
「デバイスを検出」ボタンを押すことで Nature Remo アプリに登録されている家電(赤外線学習リモコンに学習させたデータ)が検出されます。

検出されると画面に表示されます。
ここではデバイスグループへの追加はせずにスキップして早々に登録を完了させます。

検出したデバイスの内容を表示して確認します。


3.定型アクションで音声操作を定義

定義した定型アクションは音声で操作可能になります。
定型アクション名の横にある「+」を押して定型アクション名を入力します。

続いて実行条件の開始フレーズを指定します。

開始フレーズ(アレクサに話す言葉)には「ただいま」を指定します。
アクションを追加には、アレクサに「おかえりなさい」と返事してもらうように作成していきます。
※最初から作成すると並び順が実行とは逆順に追加されます。
※実行する順番は簡単に変更できます。

「おかえりなさい」を指定します。

次のアクションはテレビをONするように指定します。
スマートホームから Nature remo mini の赤外線学習リモコンを操作するよう指定します。

操作するデバイスのテレビと電源を指定します。

実行する順番は上からになるのでドラッグ(移動したいものを押したままスライド)して調整します。

デバイスはアクションを実行するアレクサを指定します。
(複数台ある場合、対象を指定する必要があります。)
指定したあとに「保存」を選択します。

メッセージは数秒で消えて右画面に遷移します。
作成した定型アクション名が表示されます。
再生ボタンを押すと定型アクションが実行されるので確認できます。
これでアレクサに話かけると定型アクションが実行されるようになります。

アレクサ対応 Nature remo mini 赤外線学習リモコンのセットアップ

IRKit後継機器のようでより便利になっていますね。
Amazon Alexa ともスキルで連携できる点が気に入りました。

「出典元」Nature スマートリモコン Nature Remo mini Remo-2W1

参考:IRKit(学習リモコン)の基本的な使い方

インストールはAndoridのアプリ「Natrue Remo」をダウンロードして Nature remo mini へ接続してセットアップします。


1.アカウントの登録

アカウント登録に使用するメールアドレスを「メール」に入力して「Remoをセットアップする」を選択します。


2.WiFiへの接続

Natrue remo mini を設置する場所から利用するWiFiを設定します。
Natrue remo mini が WiFiとしてのアクセスポイント(SSID:Remo-XXXXX)を持っているので先に接続します。

検出したアクセスポイントから Natrue remo mini のアクセスポイントを選択してパスワード「natureremo」を入力して接続します。
接続が完了するとNature remo mini から接続する WiFi のアクセスポイントを指定します。
SSIDとパスワードを入力して「次へ」ボタンを選択します。

Nature remo mini が使用するWiFiWへ接続できたら Nature remo mini の名前を入力して「保存」ボタンを選択します。


3.リモコンの学習

Natrue remo アプリを開いて画面右上の「+」を選択します。
画面下に表示される「新しい家電を追加する」を選択します。
新しい家電の種類を指定します。(ここではテレビを選択します。)

学習させたいリモコンの信号を Nature remo mini の機器に向けて送信します。
機種まで認識されると名前が表示されます。
検出された機器の名前を入力して「保存」ボタンを選択します。

追加した家電を選択して表示される画面を左にスライド(空きスペースがないので2ページ目に追加するため)します。
画面右上の「+」を選択します。

学習させたいリモコンの信号を Nature remo mini の機器に向けて送信します。
ボタンの名前を入力して「保存」ボタンを選択します。