育児×家事×IoT Raspberry Piで最強の防犯カメラを作ってみる(動画記録・配信、動体検知・Line通知、顔検知・顔認証、Alexa搭載)[6/6]

やりたいこと(再掲)

最終的にやりたいことは、以下の5つの機能を持つ「最強の防犯カメラ」を作ることです。機能①〜機能③は、市販されている多くの防犯カメラでも持っている機能ですが、機能④や機能⑤の顔認証機能を持つ監視カメラはまだ多くないと思います。

 機能①.動画を24時間撮影し、カメラ本体に動画で記録する
 機能②.動画をWebブラウザや他の機器から参照できるようにライブ配信する
 機能③.動体を検知したら、静止画をLineに通知する
 機能④.家族の顔を認証したら、静止画をLineに通知する
 機能⑤.家族の顔を認証したら、◯◯さんおかえり!と喋る

図1.png

家に帰ると、顔を見て「○○さん、おかえり!」と言ってくれる辺りが、スマートハウスに一歩づ近づいている気がします。

実現に向けた連載

最強の「防犯カメラ」を作成するために、以下のように少しずつに記事を書いていきます(予定)。
 1回目:カメラの設定と動画記録
 2回目:カメラ映像のライブ配信
 3回目:動体検知機能とLineへの通知
 4回目:顔認証機能とLineへの通知
 5回目:Raspberry PiへのAlexaの搭載
 6回目:顔認証後にAlexaで音声通知   ←この記事

6回目:顔認証後にAlexaで音声通知

前回は、防犯カメラにAlexaを搭載して,音声コマンドを使って天気予報や時間を確認できるようにしてみました。今回は、いよいよ最終回です。防犯カメラで家族の顔を認証したら「○○さんおかえり!」とAlexaが喋るようにしてみます。

1.node-red-contrib-alexa-remote2のインストール

Node-redからAlexaを喋らせるやり方はAlexaをしゃべらせる(remote2 v3.3編)でも書いていますが、node-red-contrib-alexa-remote2で実現可能です。まずはこれをインストールしていきます。

1.パレット管理画面の表示

第4回でインストールしたRaspberry Pi上のNode-redの画面を表示させ、右上の「三」ボタンから、「パレットの管理」を選択します。
図1.png

2.node-red-contrib-alexa-remote2の検索

次に「ノードを追加」のタブを選択し,検索欄で「alexa-remote」と入力して検索します。
図2.png

3.node-red-contrib-alexa-remote2のインストール

node-red-contrib-alexa-remote2の欄にある「ノードを追加」ボタンをクリックして、インストールします。
図3.png

4.インストールの確認

インストールが完了すると、画面左側のパレットにノードが追加されます。
図4.png

2.フローの変更

ここからは、Line通知用に作成したNode-redのフローを変更していきます。

1.functionノードの変更

まずは、1つ目のfunctionノードを開き、出力数の設定を「3」に変更すると共に、以下のようにコードを修正します。
図5.png

let files = msg.req.files;
let action=msg.payload.action;
let text=msg.payload.text;

let msg1 = msg;
let msg2 = {};
let msg3 = {};

//ファイル無し
if (files.length === 0) {
   msg1.payload = "サーバ通知ERR 添付ファイルなし";
   return [msg1, null,null];

//ファイル有り
}else{
    //動体検知
    if(action=='move'){
        msg1.payload = "サーバ通知OK";
        msg2.text = text;
        msg2.payload = files[0].buffer;
        msg2.filename = "/root/.node-red/cameraPicts/" + files[0].originalname;
        return [msg1, msg2,null];
    //顔認証
    }else if(action=='goHome'){
        msg1.payload = "サーバ通知OK";
        msg2.text = text+"が帰ってきました";
        msg2.payload = files[0].buffer;
        msg2.filename = "/root/.node-red/cameraPicts/" + files[0].originalname;
        msg3.text=text+'さん、おかえりなさい。';
        return [msg1, msg2,msg3];
    //その他
    }else{
        msg1.payload = "サーバ通知ERR アクション不正";
        return [msg1, null,null];
    }
}

修正箇所は、msg3を定義し,顔認証を処理するif文の中でAlexaに喋らせたい言葉をmsg3.textに作成しています。また,4つあるreturn文の3つ目の要素には,顔認証の場合だけmsg3を設定し,他はnullを設定しています。

2.Alexa Routineノードの追加

次に、パレットから「Alexa Routine」ノードをフローに追加し、設定画面の「Account」欄にある鉛筆ボタンをクリックします。
図6.png

3.Alexa Routineノードの設定1

「Alexa Account」ノードの設定画面が表示されるので、以下を入力して「追加」ボタンをクリックします。
 ・Auth Method:Email & Password
 ・Email:第5回で防犯カメラを登録したAmazonアカウントのEmail
 ・Password:Amazonアカウントのパスワード
 ・Service Host:alexa.amazon.co.jp
 ・Page:amazon.co.jp
 ・Language:ja_JP
図7.png

4.設定の完了

「Alexa Routine」ノードの設定画面に戻りますので、一旦何も入力せずに「完了」ボタンをクリックして設定画面を閉じます。
図8.png

5.デプロイ

この状態で、画面右上の「デプロイ」ボタンをクリックして、デプロイします。
図9.png
デプロイが完了すると、先ほど入力したアカウント名とパスワードで、alexa.amazon.co.jpにログインされ、「Alexa Routine」ノードの下に「Ready」と表示されます。
図10.png
一旦、ここでログインすることで、アカウントに登録されているAlexaデバイスを選択できるようになります。

6.Alexa Routineノードの設定2

再度「Alexa Routine」ノードの設定画面を開き、以下のように入力して「完了」ボタンをクリックします。
 ・Text:msg.text
 ・Devices:防犯カメラ
図11.png

7.ノードの接続

「Alexa Routine」ノードをfunctionノードの3つ目の接続子に接続します。
図12.png

8.デプロイ

再度「デプロイ」ボタンをクリックしてフローをデブロイします。
図13.png

9.テスト

それでは、防犯カメラに顔を向けて見て、顔認証しましょう!すると、Lineに通知が来ると同時に、スピーカから「○○さんおかえり!」とAlexaが喋ってくれると思います!名前の部分のイントネーションがおかしい場合は、functionノードでmsg3.textをセットする部分で、平仮名で名前を入力するなど、適宜調整してみて下さい。

おわりに

今回はNode-redにnode-red-contrib-alexa-remote2をインストールして、「○○さんおかえり!」とAlexaが喋るようにしてみました。これで6回に渡る防犯カメラの開発も完了です。このカメラによる顔認証の機能とNode-red経由のAlexa操作を組み合わせれば、顔認証が完了したら電気やエアコンをつけたり、Alexaにきている通知をお知らせしてくれるようにもできます。

間違い・改善点や質問など、あったらコメント欄に書いていただければと思います。

連載記事

 1回目:カメラの設定と動画記録
 2回目:カメラ映像のライブ配信
 3回目:動体検知機能とLineへの通知
 4回目:顔認証機能とLineへの通知
 5回目:Raspberry PiへのAlexaの搭載
 6回目:顔認証後にAlexaで音声通知  <--この記事

育児×IoTスマートホームの関連記事

Alexaをしゃべらせる(remote2 v3.3編)
自分のGoogleカレンダーにJWTを使って予定を追加してみる
Alexaに通知を送ってみる(Node-red編)
Node-redでスマートハウス-LG製テレビを操作してみる
Node-redでスマートハウス-Gravioで子供用プリキュアボタン
育児×IoT Gravioでミルク&オムツ交換記録をGoogleカレンダにつけてみる
育児×IoT HomeAssistantでスマートホームコントローラを作ってみる

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
ユーザーは見つかりませんでした