Raspberry Piで簡易ドアホンを作成

Raspberry Piでドアホンを作ってみました。

下記のページがとても分かりやすかったのでそのまま実践しましたが、何点かつまった点があったのでどのように解決したかを記載します。

(参考) AWS IoT でスマートホームを自作する 〜ドアフォン編〜

https://aws.amazon.com/jp/builders-flash/202004/smart-home/

クレデンシャルの準備

下記の一時的な認証情報を取得するコマンドは、コマンドを実行するたびに新しい認証情報を作成します。

そのため、コマンドを実行するたびに、Raspberry Piの設定とクライアントとして利用するWebサイトの設定を変更します。

aws sts get-session-token

環境変数の設定

環境変数を設定するexportコマンドは、ターミナルを終了すると設定が消えます。ターミナル終了後に再度実行する場合は、設定を再度行いましょう。

AWS IoT 証明書の作成と有効化

リンク先の情報が多いためどこをみればいいか少し迷うので、必要なところをまとめました。

(参考) AWS IoT クライアント証明書を作成する

https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/device-certs-create.html

CloudFormation で AWS IoT に必要な環境と Role を作成する

cfn.ymlが含まれるサンプルソースは下記を指しています。

https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/sample/builders-flash_smarthome.1171f1a917b54951d088aa6a25651d0255e5eb78.zip

Role Alias の作成

知識不足でよくわかっていないのですが、CloudFormationを実行した管理者ユーザ以外でaws cliのコマンドを実行したところ「AccessDeniedException」が発生しました。

下記の方法で管理者ユーザに切り替えて実行したところ成功しました。

(参考) awscliの設定切り替え

https://qiita.com/ryuzee/items/e3ce493f132f1981f57a

サンプルソースコードの修正

buildフォルダの所有者

私のやり方が悪かっただけですが、最初はrootユーザを使って手順を進めて、手途中でrootユーザを使用しないようにしたせいで、buildフォルダの所有者がrootになっていました。

その場合、sudoを使わないとbuildフォルダにファイルが移動できませんでした。

Read Onlyファイルの編集

編集対象のファイルがread onlyだったのでsudoを使って強制で編集できるようにしました。

sudo vi ./Common.c

参照ソースコードが更新されている

参考記事が参照しているソースコードが更新されているため、説明文の行数と一致しません。おそらく、記事はこのバージョンのソースコードを参照していると思います。

https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/blob/c3464f87d1dcb37a57f8dfbc99f0ca3d1b45961c/samples/Common.c

cmakeでエラー発生

cmakeを実行したとき下記のエラーが発生しました。

CMakeCache.txt is different than the directory

上記はbuildフォルダの「CMakeCache.txt」を削除したところ解消しました。

cmake、makeをsudoでやる必要があった

途中でrootユーザーが別のユーザーを使うようにしたので、sudoでコマンドを実行する必要がありました

sudo cmake ..

sudo make Amazon Alexa のスマートホームスキルを作成する

Lambda の作成の注意点

Lambdaに設定するロールは、「CloudFormation で AWS IoT に必要な環境と Role を作成する」で作成したLambda用のロールを使用します。

また、私の環境ではデフォルトのタイムアウト時間ではタイムアウトで失敗したため、Lambdaの「基本設定」でタイムアウト時間を10秒にしたところ成功しました。

アカウントリンク設定の注意点

アカウントリンクの設定でセキュリティプロバイダー情報を記入する必要があります。

私はAmazonが提供する「Amazonでログイン」を利用しました。

※ 無料です

(参考) RaspberryPiでスマートホーム 〜Alexaのスマートホームスキルを開発〜

※ 上記参考ページのアクセストークンのURIには誤字があります。正しくは下記です。(参考ページには「:」がないです)

https://api.amazon.com/auth/o2/token

※ 理由はわからないのですが、Alexaのリダイレクト先のURLをホスト名が「pitangui.amazon.com」のものにしたところ、Amazonの認証ページで400エラーになりました。「alexa.amazon.co.jp」だと上手くいきました。

コメントを残す

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