構成
下図のように、インターネットを経由してAWS IoT Coreと接続します。
パトライトにはSubscribeするトピック名を予め設定しておき、そのトピックに対して所定のJSONがPublishされると、その内容に応じてパトライトが点灯するようになっています。
手順
具体的な手順は こちらのページ の下部よりダウンロードできる取扱説明書に記載されていますので、そちらを参照ください。
おおまかな手順を記載しておきます。
実機に接続
パトライトは有線LANでのみ接続が可能です。ローカルネットワークまたはPC直結での接続が可能ですが、工場出荷時はパトライト側のIPアドレスが 192.168.0.1
で設定されているので、最初はPCと直結してローカルネットワークのIP帯に合わせるのが現実的と思われます。
設定はブラウザでパトライトへアクセスすることで、GUIベースの設定ができるようになっています。
ファームウェアを1.13以上に更新
AWS IoT Coreへの接続設定はファームウェアバージョン1.13以降でのみ対応しているらしく、それよりも古いバージョンを利用している場合はアップデートが必要です。
今回お借りした評価用機材は最初から1.13が書き込まれていたのでこの作業は不要でした。
AWS IoT Coreへの接続設定
セットアップ項目→クラウド接続設定→Amazon Web Servicesより、AWS IoT CoreのエンドポイントやTopicの設定、X509証明書のアップロードが可能です。
設定が完了したら、保守機能→イベントログを開いて、AWSとの接続ができていることを確認します。
接続に失敗するときは、エンドポイントやX509証明書、AWS IoT Coreにて証明書にアタッチしているPolicyに不足がないことを確認ください。あと忘れがちですが、実機の時計がずれていると接続に失敗するようなので、時刻設定状況も併せて確認するようにしましょう。
AWS IoT CoreへPublish
設定が完了したらAWS IoT CoreのMQTT テストクライアントを開いて、パトライトがSubscribeしているTopicに以下のようなJSONを送信します。
{
"led_yellow": "2",
"led_green": "0"
}
すると、パトライトが以下のように点滅します。
本体のCLEARボタンを押すと、通常状態に戻ります。(通常状態では緑点灯とするよう設定しています)
応用例
Webシステムからパトライトを点灯
今回はRuby on Railsで構築したWebシステムからからAWS SDK for Ruby v3を利用して、パトライトを点灯しました。
AWS IoT CoreへPublishしている部分を抜粋すると以下のようなコードです。
iot_client = Aws::IoTDataPlane::Client.new(endpoint: "https://#{Settings.aws.iot_core.endpoint}")
iot_client.publish(
topic: "patlites/#{code}",
payload: {
led_yellow: '1',
led_green: '0'
}
)
Webシステムからの通知手段の一つとしてパトライトを利用する場合に、簡単に利用できそうですね。
特定の件名のメールを受信したときにパトライトを点灯
世の中にはメールでの通知にのみ対応しているWebシステムが多く存在しています。これを有効活用すべく、特定の件名のメールを受信したときにパトライトを点灯できないか試してみました。
以下のようにAWS SESを使ってメールを受信し、受信したメールをトリガーにAWS Lambdaを起動、Lambda関数の中からAWS IoT Coreに対してPublishします。
この方法でもパトライトを点灯することができました。サーバーレスなアーキテクチャなので保守が楽ですし、頻繁にパトライトを点灯しない限りインフラ費用が少額で済むのも良いですね。
まとめ
今回、評価機材としてパトライトをお借りしたのですが、AWS IoT Coreを使った経験があれば、簡単に利用することができる良品でした。
Webシステムを作ったもののずっとWeb画面を見ているわけではないし、メールやチャット以外の手段で問題が発生したことがわかるようにしたい、というユースケースにピッタリだと思いました。