Skip to content

2022年クリスマス企画 イルミネーション制御

License

Notifications You must be signed in to change notification settings

StudioAquatan/xmas2022-micon

Repository files navigation

xmas2022-micon

企画部(irodori)と共同したクリスマス企画で、イルミネーションの点灯アニメーションを制御するマイコンプログラムのリポジトリ。

関連レポジトリ

2021年版:xmas2021-micon

担当:@Hiroya-W

Dependencies

  • Espressif ESP32 Dev Module
  • 256dpi/MQTT@^2.5.0
  • bblanchon/ArduinoJson@^6.19.4

secretsを定義する

lib/secrets/src/内にexampleファイルを配置しているので、それぞれを以下のようにファイル名を変更します。

  • aws.cpp.example -> aws.cpp
  • wifi_configs.cpp.example -> wifi_configs.cpp

AWS secrets

lib/secrets/src/aws.cpp に定義します。

AWS IoT Coreエンドポイント

const host_info awsIoTInfoに設定します。AWS IoT CoreエンドポイントについてはAWS IoT デバイスデータとサービスエンドポイントを参考にしてください。

AWS S3バケットURL

OTA用のfirmwareを取得する際に利用するS3バケットへのURLを、const host_info awsS3Infoに設定します。 AWS S3バケットへのアクセス方法については、バケットへのアクセス方法を参考にしてください。

取得するfirmwareへのURLは以下のようになります。THINGNAME# モノの名前で設定した文字列となります。

  • https://<awsS3Info.endpoint>:<awsS3Info.port>/<THINGNAME>/firmware.bin

AWS IoT Topic名

Topic名は設定する必要はありません。 Topic名は、src/main.cppvoid setup()関数で# モノの名前で定義した文字列利用して、以下のように初期化されます。

  • deviceShadowPublishTopic: $aws/things/<THINGNAME>/shadow/update
  • deviceShadowSubscribeTopic: $aws/things/<THINGNAME>/shadow/update/delta
  • otaReplyPublishTopic: <THINGNAME>/OTA/reply
  • otaRequestSubscribeTopic: <THINGNAME>/OTA/request

モノの名前

const char THINGNAME[]に設定します。AWS IoT Coreで登録したモノの名前をと一致しておく必要があります。

モノの接続情報

接続するために、以下の3つを設定しておく必要があります。これらはモノを登録した際に取得することが出来ます。 詳しくはAWS IoT のモノ、証明書、およびプライベートキーを作成するを参照してください。

  • AWS_CERT_CA: AmazonルートCA証明書
  • AWS_CERT_CRT: デバイス証明書
  • AWS_CERT_PRIVATE: プライベートキーファイル

Wi-Fi secrets

Wi-Fiの接続情報はlib/secrets/src/wifi_configs.cppに定義します。

eduroamに接続する場合

eduroamに接続する場合は以下の5つを設定します。

  • WIFI_SSID: "eduroam"
  • WIFI_PASSWORD: ""
  • EAP_IDENTITY: 所属機関でのユーザID
    • 別の所属のeduroamに接続する場合は所属機関でのユーザID@所属機関のドメイン名とする必要があります。
  • EAP_USERNAME: 通常EAP_IDENTITYと同じ
  • EAP_PASSWORD: 所属機関で利用しているパスワード

eduroam以外のSSIDに接続する場合

eduroam以外に接続する場合は以下の2つを設定します。

  • WIFI_SSID: 接続したいSSID
  • WIFI_PASSWORD: SSIDへ接続するためのパスワード

点灯パターンの変更

AWS IoT CoreのDevice Shadowの機能を利用して、IoTデバイスへ通知する。

例えば、モノ<THING_NAME>の点灯パターン(数値)を<PATTERN_NUMBER>に変更する場合は、

  • トピック名:$aws/things/<THING_NAME>/shadow/update
  • payload:
    {
        "state": { 
            "desired": {
                "patternId": <PATTERN_NUMBER>
            }
        } 
    }

にpayloadをPublishする。

aws iot-data publish --topic "\$aws/things/<THING_NAME>/shadow/update" --cli-binary-format raw-in-base64-out --payload '{"state": { "desired": { "patternId": <PATTERN_NUMBER> } } }'

OTA

AWS S3にバイナリを配置し、IoTデバイスへ通知することでOTAが実行される。

  1. S3にバイナリをアップロードする。
aws s3 cp .pio/build/<ENVIRONMENT>/firmware.bin s3://<BUCKET_NAME>/<THING_NAME>/
  1. IoTデバイスへ通知する。
  • トピック名:<THING_NAME>/OTA/request
  • payload:
    {
        "url": "https://<BUCKET_NAME>.s3.<REGION>.amazonaws.com/<BUCKET_NAME>/firmware.bin"
    }

にpayloadをPublishする。

aws iot-data publish --topic "<THING_NAME>/OTA/request" --cli-binary-format raw-in-base64-out --payload '{"url": "https://<BUCKET_NAME>.s3.<REGION>.amazonaws.com/<BUCKET_NAME>/firmware.bin"}'
  1. IoTデバイスがリクエストを受け付けた場合、以下のメッセージを受け取る。
  • トピック名:<THING_NAME>/OTA/reply
  • payload:
    {
        "state": "Received"
    }

About

2022年クリスマス企画 イルミネーション制御

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published