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が含まれるサンプルソースは下記を指しています。
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
参照ソースコードが更新されている
参考記事が参照しているソースコードが更新されているため、説明文の行数と一致しません。おそらく、記事はこのバージョンのソースコードを参照していると思います。
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」だと上手くいきました。
コメントを残す