エッジプラットフォームとAWS IoT Coreの連携

# はじめに
以前、二酸化炭素濃度モニタリングリモートデモシステムのデータをSiemensの産業向けエッジプラットプラットフォーム"Industrial Edge"へアップロードしプラットフォーム上で動作するアプリケーションPerfomance Insightで可視化を行いました。
今回、このデータをIndustrial EdgeのCloud Connectorを用いてAWS IoT Coreと連携してみましたので、その方法を紹介します。
# 構成
今回の構成およびデータフローを図1に示します。
二酸化炭素濃度センサーを用いてデータ(二酸化炭素濃度、室温、湿度）をPLCで取得します。このデータをS7 Connector(S7はSiemens PLCの標準プロトコル)を用いてIE Databusへ送ります。IE Detabusではデータの統合および変換を行いCloud Connectorへ転送します。Cloud ConnectorはAWS IoT Coreとの接続を確立しAWS IoT Coreへデータを転送します。
また、Industrial Edge Device（以下、IEDと略します。）の設定・管理はIndustrial Edge Management（以下、IEMと略します。）で行います。

![データフロー図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/42a1520b-efb7-06b3-e0e6-ed3af468c7c2.png)
図1. 構成図

# 構築フロー
構築の流れとしては図2の通りです。
![構築順序図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/ba5aa983-8edd-bb48-f763-005aa8c5c8cd.png)
図2. 構築フロー

# 構築手順
具体的な構築手順を以下に記述します。
#### Industrial Edge SIMATIC S7 Connectorの設定
SIMATIC S7 Connectorの設定手順は以前の投稿で実施しておりますので割愛します。（参考リンク 設定手順 ①項）
SIMATIC S7 Connectorの設定完了後の画面は図3の通りです。
![S7 Connector.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/199528f9-55a6-c565-d168-014490f73ba3.png)
図3. SIMATIC S7 Connector設定

#### Industrial Edge IE Databusの設定
IE Databusの設定についても以前の投稿で実施しておりますので割愛します。（参考リンク 設定手順 ②項）
IE Databusの設定完了後の画面は図4の通りです。
![IE Databus.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/52c7660c-b404-0ffc-77d2-52fef5d569c8.png)
図4. IE Databus設定

※参考リンク
[Siemens Industrial EdgeのPerformance Insightによる可視化とNotifierによる異常通知](https://qiita.com/hrsakuma/items/de73df108701a2f7a6fd "Siemens Industrial EdgeのPerformance Insightによる可視化とNotifierによる異常通知")

#### AWSの設定
データの受信側（AWS）の設定を行います。
1. AWS Consoleホームから IoT → IoT Coreをクリックします。
![01 AWS_Console Home.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/10596bef-f4ba-83d0-7be1-c55371f02f54.png)
図5. AWS Consoleホーム
1. ナビゲーションペインで設定をクリックします。
![02 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/e6a71471-51f3-17f8-79ef-7b9ef3c6a08e.png)
図6. AWS IoT画面
1. エンドポイントを確認し、コピーボタンをクリックします。クリップボードにコピーされるので、メモ帳などに貼り付けておきます。この情報はIndustrial Edgeの設定で後ほど使用します。
次にセキュリティ → ポリシーをクリックします。
![03 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/4b079868-77d7-7f31-94c7-a05e42c2e627.png)
図7. AWS IoT設定画面
1. Industrial EdgeがAWS IoT Coreにアクセスするための権限を設定します。ポリシーを作成をクリックします。
![04 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/8ac2d760-41a5-1cf7-ee57-b2375a944bf3.png)
図8. AWS IoTポリシー画面
1. ポリシー名に任意のポリシー名（CCC_AWS_Policy）を入力します。ポリシードキュメントでポリシー効果を許可、ポリシーアクションをiot:Connect、ポリシーリソースを＊とします。
新しいステートメントを追加をクリックすると入力行が追加されるので、ポリシードキュメントでポリシー効果を許可、ポリシーアクションをiot:publish、ポリシーリソースを＊に指定して、作成をクリックします。
![05 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/f45091c9-e78f-1bdd-591c-e4a96da9bb9b.png)
図9. AWS IoTポリシー作成画面
1. CCC_AWS_Policyが作成されました。ナビゲーションペインで管理 → すべてのデバイス → モノをクリックします。
![06 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/5943bfc9-d4ab-c3d3-17b4-2919c972ebf4.png)
図10. AWS IoTポリシー画面
1. Industrial Edgeと連携するモノを作成します。モノの作成をクリックします。
![07 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/1d4e1f60-19dc-8d43-019b-632ca55feefd.png)
図11. AWS IoTモノ画面
1. 1つのモノを作成を選択し次へをクリックします。
![08 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/3c31c67a-2c94-d26b-0aa0-49c1c74205b4.png)
図12. AWS IoTモノ作成画面
1. 任意のモノの名前（CCC_AWS）を指定し次へをクリックします。
![09 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/42834272-f96c-9f22-71e6-9033be662395.png)
図13. AWS IoTモノ作成プロパティ指定画面
1. 新しい証明書を自動生成（推奨）を選択し、次へをクリックします。
![10 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/29e00f05-0722-2810-74cc-0910fa805813.png)
図14. AWS IoTモノ作成デバイス証明書設定画面
1. 証明書にポリシーをアタッチします。項番5で作成したポリシー（CCC_AWS_Policy）をチェックしてモノを作成をクリックします。
![11 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/fa64c15a-9df6-e0bd-aa9b-6b71035910bf.png)
図15. AWS IoTモノ作成ポリシーアタッチ設定画面
1. デバイス証明書およびプライベートキーのダウンロードをクリックし保存します。ルートCA証明書に関してはInduatrial Edgeにデフォルトでインポートされているため不要です。
![12 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/f35d5d2e-8d72-95d7-4a47-bc40ba40b875.png)
図16. AWS IoTモノ証明書ダウンロード画面

以上でAWS IoTの設定は完了となります。
次にIndustrial EdgeのCloud Connectorの設定を行います。

#### Industrial Edge Cloud Connectorの設定
データの送信側（IED）の設定を行います。
1. IEMのManagement UIへアクセスします。ブラウザからIEMのIPアドレスにポート番号9443でアクセスします。
![13 IEM Management ブラウザ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/e28e2d77-eefb-a9cd-0def-5ac45e8c949b.png)
図17. IEM Management UI アクセスブラウザアドレスバー
1. 以下の画面が開きます。右上のSign inをクリックします。
![14 IEM Management home.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/a49fa3b9-ea02-bfc5-085f-3550258aa2bd.png)
図18. IEM Managementホーム画面（Sing in前）
1. 所定の電子メールアドレスおよびパスワードを入力しSing inをクリックします。
![15 IEM Management ブラウザ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/7bb648d4-a55f-1ec0-eb7f-02f1f498bc46.png)
図19. IEM Management Sign in画面
1. ナビゲーションメニューのData Connectionsをクリックします。
![16 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/c443f698-ab71-9ade-5bdd-fa7b0475607b.png)
図20. IEM Managementホーム画面（Sing in後）
1. Cloud Connectorをクリックします。
![17 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/6d561b06-b103-5f9e-2c2b-326063a57435.png)
図21. IEM Management Data Connections画面
1. 以下の画面が開きます。AWS IoT Coreと接続するIEDを選択し、Launchをクリックします。
![18 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/a0c244b7-1ff5-b228-f960-e7e1c9914d65.png)
図22. IEM Management Data Connections Cloud Connector Launch画面
1. Cloud Connector Configurator画面が開きます。Cloud ConnectorはIEMで設定を作成し、その設定をIEDにデプロイすることでIED上で動作します。Add Topicをクリックします。
![19 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/1362d0c3-2a27-954c-3ddc-3056a2ad5612.png)
図23. Cloud Connector Configurator画面
1. Cloud ConnectorとIE Databusでデータのやり取りを行うMQTT Topicを指定します。UsernameとPasswordはInduustrial ED IE Databusの設定（図4参照）で作成したものを入力します。Metadata for Subscriptionにはサブスクライブするメータデータを指定します。今回はデータの取得を行うのでie/m/j/simatic/v1/s7c1/dpを選択しました。選択したらList Data Topicsをクリックします。
![20 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/460ada65-aad1-7095-6ac0-cac8954f8c3b.png)
図24. Cloud Connector Configurator Topic指定画面
1. トピックの検索が実行されます。
![20-2 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/a6756e16-1526-9c47-80ed-e61e7ef4925a.png)
図25. Cloud Connector Configurator Topic指定画面
1. 検索が完了すると実行中インディケータが消えます。List Data Topicsボタンが反転するのでそれをクリックします。
![20-3 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/f729a450-e778-1577-89c8-fc7373d7e1cd.png)
図26. Cloud Connector Configurator Topic指定画面
1. 該当するTopicが表示されるのでチェックボックスをチェックしADDをクリックします。
![20-4 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/5199b437-b004-6a1a-2c9e-49bf9b47b828.png)
図27. Cloud Connector Configurator Topic指定画面
1. Select Data Topicsに前項で選択したTopicが表示されるので、SAVEをクリックします。
![20-5 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/73adf636-a449-e266-8bdf-caa0c9283815.png)
図28. Cloud Connector Configurator Topic指定画面
1. Cloud ConnectorとAWS IoTを接続するためのCloud Clients設定を行います。Add Clientをクリックします。
![21 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/6ac5129b-494e-88e2-7424-38f7f971cdbf.png)
図29. Cloud Connector Configurator画面
1. Client TypeでAWSを選択し、Client Nameは任意の名前を入力します。今回はAWS_IoTとしました。
![22 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/dc44d886-49b0-540e-e10c-455e388032d6.png)
図30. Cloud Connector Configurator Cloud Client設定画面
1. AWSを選択することで、以下の画面が展開されます。Thing CertificateにはAWSの設定の項番12で保存したデバイス証明書を指定します。Private Keyには同様にAWSの設定の項番12で保存したプライベートキーファイルを指定します。HostnameにはAWSの設定項番3で確認したエンドポイントを入力します。以上を設定したらSAVEをクリックします。
![23 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/39c5dbc7-7552-bc6d-1f11-cb855ace903e.png)
図31. Cloud Connector Configurator Cloud Client（AWS）設定画面
1. MQTT Topic（IE Databus）とCloud Client（AWS IoT）の紐づけを行うことで、データのルート（IE Databus---Cloud Connector---AWS IoT）が確立します。Add Routeをクリックします。
![24 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/ad270dca-c22e-10a2-00c4-2770e1351090.png)
図32. Cloud Connector Configurator画面
1. Route Nameに任意のRoute名を入力します。今回はRoute_for_AWS_IoTとしました。
![25 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/7321bcb5-b75d-d8d9-563f-dabf7f0d562a.png)
図33. Cloud Connector Configurator Route設定画面
1. Route_for_AWS_IoTをクリックすると青色に反転し、TopicとClientが選択可能になります。
![26 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/ce8f3cf8-9bc7-91e9-2717-7e5755c75612.png)
図34. Cloud Connector Configurator画面
1. 作成したTopicとClientのチェックボックスをチェックして、Save Routeをクリックします。
![27 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/c64a29a1-157e-95ec-ace1-b933baa2551c.png)
図35. Cloud Connector Configurator画面
1. 右上にSaved Successfullyと出れば、ルートの設定は完了です。
![28 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/67db97a2-0e60-45fe-d859-f336e6433e41.png)
図36. Cloud Connector Configurator画面
1. この設定をIEDに適用します。Deployをクリックします。
![29 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/025afa56-4c63-f138-9b18-41cdf80166c0.png)
図37. Cloud Connector Configurator画面
1. 以下の画面が表示されるので、Deployをクリックします。
![30 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/338eb827-6fad-6d31-0b6c-7a878fa7754c.png)
図38. Cloud Connector Configurator Deploy画面
1. 設定の適用が開始します。適用中はDeploy is in progress...と表示されます。
![31 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/429d9137-a3fc-663e-3e7f-d7d3b354c2db.png)
図39. Cloud Connector Configurator画面
1. 完了するとConfigration is deployed successfullyと表示され、問題なく接続ができていればTopicおよびClientのインディケーターが緑色のチェック表示になります。
![32 IEM Management.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/1a985751-f82e-13ca-60bd-8a9168df99bf.png)
図40. Cloud Connector Configurator画面

以上で全ての設定は完了となります。

# 動作確認

AWS IoT Coreにてデータが取得できていることを確認します。
1. AWS Consoleホームから IoT → IoT Coreをクリックします。
![33 AWS_Console Home.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/cba0932d-4d1b-5361-4022-849b74c8c3ba.png)
図41. AWS Consoleホーム
1. ナビゲーションペインのテスト → MQTTテストクライアントをクリックします。
![34 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/53bae468-a434-9b43-0057-b3005e7177f3.png)
図42. AWS IoT画面
1. トピックのフィルターに#を入力し、サブスクライブをクリックします。
![35 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/6c4a8139-330d-020a-a391-6e9c80ab1096.png)
図43. AWS IoT MQTTテストクライアント画面
1. サブスクリプションに受信データが表示されます。
![36 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/efba95cc-0722-725e-2466-1a79bcba30fd.png)
図44. AWS IoT MQTTテストクライアント画面

以下は図44の赤枠部分を拡大したものです。
Cloud ClientのClient ID "AWSIKTEZLD"（図28参照）からデータを受信しており、二酸化炭素濃度、室温、湿度データがそれぞれ確認できます。
![37 AWS_IoT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2745875/1cd2d040-37b2-2c8f-400b-43a8c14c1000.png)
図45. 取得データ

# おわりに
エッジプラットフォーム（Siemens Industrial Edge）とクラウドプラットフォーム（AWS IoT）とのデータ連携を行うことができました。
拠点ごとに特化した管理・データ分析をSiemens社のエッジデバイスで行い、複数拠点の一括管理・データ分析をSiemens社以外のクラウド基盤（AWS）で行うことができます。。

※ SiemensおよびIndustrial Edgeは、Siemensの登録商標または商標です