タンバリン開発ブログスマートフォン用の表示で見るタンバリン開発ブログ2019-11-20社内のコーヒー淹れたよボタンができるまでタンバリンの狩野です。弊社大阪オフィスでは1階にキッチンがあります。IoTボタンを使ってコーヒー淹れたよ通知ボタンを作りました。その手順を書いておきます。Buttonとは?以下を参考にどうぞ。ブログデバイスセットアップデバイスのネットワーク設定デバイスのネットワーク設定はスマホアプリで行います。1-Clickインストールして起動するとログインボタンが目立ちますが、ログインしなくてもデバイスのネットワーク設定だけなら可能です。右上にある丸いネットワークっぽいボタンをタップします。いうボタンをタップします。デバイスIDの登録はデバイスの箱についているバーコードで読み取ることが出来ます。(QRコードでもスキャン出来るような書かれかただったので、デバイスの裏にある小さいQRコードを読ませてみましたが、認識してくれませんでした)認識後、正しければ設定をタップ。画面の指示に従って、デバイスを6秒間押してデバイスと接続し、繋ぎたいネットワークを設定します。接続に成功するとLEDが緑に光る。完了で接続は完了です。次に、ネット接続したデバイスをAWSに登録します。AWSにログインして以下から登録します。https://ap-northeast-1.console.aws.amazon.com/iot1click/home?region=ap-northeast-1#/onboard右側のデバイスの登録をクリック。デバイスIDの入力画面になるので、入力します。(スキャンできればスキャンの方が楽ですが、出来なかったです...)登録後、デバイスのボタンを一度押して(もしくは自動で検出される)紐付けます。プロジェクト次に、このボタンが押されたら何をするかを設定するために、プロジェクトを作成します。今回は全て東京リージョンで統一したいので、ここで作成前に東京リージョンになっているかを確認しておきます。プロジェクト名と説明を入力。どのデバイスで何をするか、と決めます。デバイステンプレートの定義、をクリックします。接続しているデバイスを選択し、テンプレート名を入力し、アクションを選択します。アクションはLambda関数の選択、としますが、まだLambda関数を作っていないのでその下にある注意書きの、新しいLambda関数を作成をクリック。Lambda関数デフォルトではリージョンが米国東部などになっていると思いますが、今回は日本で使用するのでアジアパシフィック(東京)に変更しておきます。新規で作成するので、一から作成を選択、名前を入力。ロールはこのLambda関数が実行する権限を与えるものですが、カスタムロールの作成を選ぶと、自動的にLambda用のロールを作成する画面が起動します。このまま作成してやり、それを選択。関数の作成をクリックするとLambda関数が作成されます。プレイスメントの作成これでLambda関数を作成出来たのでとりあえずプロジェクトに組み込みます。プロジェクトに戻り、先程作成したLambda関数を選択します。プレイスメントの属性はとりあえず何も入れずに、プロジェクトの作成をクリックし完了します。あとはこのプロジェクトとデバイスを紐付けるためにプレイスメントを作成します。真ん中のプレイスメントの作成をクリック。プレイスメント名入力し、デバイスを選択。プレイスメントの属性は空とします。動作テストボタンを押して動作させてみます。1-Clickのデバイス画面からデバイスIDをクリックし、イベントを選択すると、今までに動作したログを確認することが出来ます。イベントログの内容は以下のようになっています。}}押し方で、シングルクリック、ダブルクリック、長押しクリック、と制御可能です。上記はデバイスのログなのですが、実際にLambdaに送られてくるJSONは別の内容になっています。確認するために、Lambdaの関数内にcosole.logを入れてやります。console.log(event);};保存後、モニタリンクタブ内のログにジャンプをクリックするとログが表示されます。ログ内から出力したリクエストの内容を取得可能。}}placementInfoの中のattributesはプロジェクトやプレイスメントで設定可能。プロジェクトではデフォルトの値を設定でき、デバイス毎のプレイスメントでその値を上書き出来るので、個別に設定することが可能です。今回はプレイスメントに設定して、デバイス毎に押した時に表示されるメッセージを変えられるようにしてみます。デバイス名を投稿者の名前にして、アイコンの絵文字も指定出来るようにする想定としました。WebhooksSlackへ投稿するためのWebhookのURLを取得します。以下のリンクから、Slackにログインし、投稿したいチャンネルのWebhookを生成することが出来ます。https://slack.com/services/new/incoming-webhook作成したWebhookの一覧は以下から確認出来ます。投稿はこのWebhookにJSONをPOSTで投げてやることで出来ます。":name_badge:"}'送信するJSONの仕様は以下らへんにさくっとだけ書かれていました。設定した属性などを利用して投稿するためのJavascriptを作成します。req.end();};slackのwebhookのURLは環境変数で保持します。https://hooks.slack.com/services/xxx..作成後、保存して、動作テストをします。ヘッダにある保存ボタンの左にあるテストからテストイベントを作成します。Worldのまま、イベント名は適当に入力。ボタンデバイスから送信されるJSONをテストとして入力してやります。}}作成すると、テストのボタンの横のプルダウンに作成したイベントが選択された状態になるので、その状態でテストを再度クリックするとイベントが発火します。slackと返ってきて投稿されたら成功。無事、Slackに投稿されました!完成ここまででデバイスの設定、Lambdaの設定が完了したので実際のデバイスを押してみて動作確認します。参考リンクもろもろ参考にさせてもらった記事などです。メンバーによる開発ブログです。技術はもちろん、組織・チーム、ツール、プロジェクトなど幅広いテーマで更新中。月別アーカイブはてなブログをはじめよう!tech-tambourineさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。