AWS IoT  ①チュートリアル　　AWS Iotとは

# AWS IoTとは

AWS IoT は、IoT デバイスを他のデバイスや AWS クラウドサービスに接続するクラウドサービスを提供します。AWS IoT は、お客様の IoT デバイスを AWS IoT ベースのソリューションに統合するのに役立つデバイスソフトウェアを提供します。デバイスが AWS IoT に接続できる場合、AWS IoT は AWS が提供するクラウドサービスにそれらのデバイスを接続できます。
![what-is-aws-iot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904294/bbb6b250-9594-1d5d-38fd-adb91cffa29a.png)

AWS IoT では、ソリューションに最適な最新のテクノロジーを選択できます。AWS IoT Core では、現場での IoT デバイスの管理とサポートを支援するために、次のプロトコルをサポートしています。

・MQTT (Message Queuing and Telemetry Transport)

・MQTT over WSS (Websockets Secure)

・HTTPS (Hypertext Transfer Protocol - Secure)

・LoRaWAN (Long Range Wide Area Network)

AWS IoT Core メッセージブローカーは、MQTT および MQTT over WSS プロトコルを使用してメッセージを発行およびサブスクライブするデバイスとクライアントをサポートします。また、HTTPS プロトコルを使用してメッセージを発行するデバイスとクライアントもサポートしています。

AWS IoT Core for LoRaWAN は、ワイヤレス LoRaWAN (低電力長距離 Wide Area Network) デバイスの接続と管理に役立ちます。AWS IoT Core for LoRaWAN は、LoRaWAN Network Server (LNS) を開発および運用する必要をなくします。

デバイスの通信、ルール、ジョブなどの AWS IoT 機能が必要ない場合は、AWS メッセージングを参照して、要件により適している可能性のある他の AWS IoT メッセージングサービスに関する情報を確認してください。

IoT を初めて使用する場合でも、長年の経験がある場合でも、必ず AWS IoT の仕組み を確認してください。このトピックは、AWS IoT をより効果的に開始するのに役立つ AWS IoT の概念と用語を理解するのに役立ちます。

# AWS IoT の使用を開始する方法

・AWS IoT の仕組み で AWS IoT とそのコンポーネントについて調べます。

・トレーニング資料と動画のコレクションから、AWS IoT の詳細をご覧ください。このトピックには、AWS IoT が接続できるサービスのリスト、ソーシャルメディアのリンク、通信プロトコル仕様へのリンクも含まれています。

・AWS IoT Core の開始方法 で最初のデバイスを AWS IoT に接続します。

・AWS IoT Core への接続 および AWS IoT チュートリアル を詳しく調べて、IoT ソリューションを開発します。

・Device Advisor を使用して、安全で信頼性の高い通信について IoT デバイスをテストおよび検証します。

・フリートインデックス作成サービス、Jobs、AWS IoT Device Defender などの AWS IoT Core 管理サービスを使用してソリューションを管理します。

・AWS IoT データサービス を使用して、デバイスからのデータを分析します

#AWS IoT でできること

**産業における IoT**
![iot-industrial.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904294/77e09726-2b3b-5bf1-b31a-5633d9001996.png)

これらは、産業プロセスのパフォーマンスと生産性を向上させるために IoT テクノロジーを適用する産業ユースケース向けの AWS IoT ソリューションの例です。

**ホームオートメーションの IoT**
![iot-home.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904294/75072b81-43be-67a3-f2f1-7c2224fdbcb3.png)

これらは、IoT テクノロジーを適用して、コネクテッドホームデバイスを使用して家事を自動化するスケーラブルな IoT アプリケーションを構築する、ホームオートメーションのユースケース向けの AWS IoT ソリューションの例です。

#AWS Iotの仕組み

AWS IoT は、IoT ソリューションの実装に使用できるクラウドサービスとデバイスサポートを提供します。AWS は、IoT ベースのアプリケーションをサポートするために、多くのクラウドサービスを提供しています。どこから始めればよいかを理解できるように、このセクションでは、IoT ユニバースの概要を知るための重要な概念の図と定義を示します。

# IoT ユニバース

一般に、モノのインターネット (IoT) は、この図に示す主要なコンポーネントで構成されています。
![iot-universe.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904294/1b7557b5-7dd4-f312-b895-3d3958a54113.png)

**Apps**
アプリケーションを使用すると、エンドユーザーは IoT デバイスと、それらのデバイスが接続されているクラウドサービスによって提供される機能にアクセスできます。

**クラウドサービス**
クラウドサービスは、インターネットに接続されている分散型の大規模データストレージおよび処理サービスです。その例を以下に示します。

・IoT 接続および管理サービス。

AWS IoT は、IoT 接続および管理サービスの一例です。

・Amazon Elastic Compute Cloud や AWS Lambda などのコンピューティングサービス。

・Amazon DynamoDB などのデータベースサービス

**Communications**

デバイスは、さまざまな技術やプロトコルを使用してクラウドサービスと通信します。その例を以下に示します。

・Wi-Fi/ブロードバンドインターネット

・ブロードバンドセルラーデータ

・狭帯域セルラーデータ

・Long-range Wide Area Network (LoRaWAN)

・独自の RF 通信

**Devices**

デバイスとは、インターフェイスと通信を管理するハードウェアの一種です。デバイスは、通常、監視および制御対象の実際のインターフェイスの近くに配置されます。デバイスには、マイクロコントローラ、CPU、メモリなどのコンピューティングおよびストレージリソースを含めることができます。その例を以下に示します。

・Raspberry Pi

・Arduino

・音声インターフェイスアシスタント

・LoRaWAN およびデバイス

・Amazon Sidewalk デバイス

・カスタム IoT デバイス

**Interfaces**

インターフェイスは、デバイスを物理世界に接続するコンポーネントです。

・ユーザーインターフェイス
デバイスとユーザーが相互に通信することを可能にするコンポーネント。
　　　　・入力インターフェイス
　　　　　　ユーザーがデバイスと通信できるようにする
　　　　　　例: キーパッド、ボタン

　　　　・出力インターフェイス
　　　　　　デバイスがユーザーと通信できるようにする
　　　　　　例：英数字表示、グラフィック表示、インジケーターライト、アラームベル

・センサー
デバイスが理解できる方法で外部で何かを測定または感知する入力コンポーネント。その例を以下に示します。
　　　・温度センサー (温度をアナログ電圧に変換)
　　　・湿度センサー (相対湿度をアナログ電圧に変換)
　　　・アナログ-デジタル変換器 (アナログ電圧を数値に変換)
　　　・超音波距離測定単位 (距離を数値に変換)
　　　・光学センサー (光レベルを数値に変換)
　　　・カメラ (画像データをデジタルデータに変換)

・アクチュエータ
デバイスが外部で何かを制御するために使用できる出力コンポーネント。その例を以下に示します。
　　・ステッピングモーター (電気信号を動きに変換)
　　・リレー (高電圧と電流を制御)


# AWS IoT サービスの概要

IoT ユニバースでは、AWS IoT は、世界とインタラクションするデバイスおよびそれらのデバイスと AWS IoT の間で送受信されるデータをサポートするサービスを提供します。AWS IoT は、この図に示されているサービスで構成され、お客様の IoT ソリューションをサポートします。
![aws-iot-architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904294/3aae00b0-95df-19d3-78d1-65fe746e75f5.png)

## AWS IoT デバイスソフトウェア

AWS IoT は、お客様の IoT デバイスをサポートするためにこのソフトウェアを提供しています。

**AWS IoT Greengrass**
**AWS IoT Device Tester**
**AWS IoT デバイス SDKs**

**FreeRTOS**
FreeRTOS は、マイクロコントローラー用のオープンソースのリアルタイムオペレーティングシステムであり、IoT ソリューションに小型で低電力のエッジデバイスを含めることを可能にします。FreeRTOS には、カーネルと、多くのアプリケーションをサポートする一連のソフトウェアライブラリが含まれています。FreeRTOS システムは、小型で低電力のデバイスを AWS IoT に安全に接続し、AWS IoT Greengrass を実行するより強力なエッジデバイスをサポートできます。


## AWS IoT コントロールサービス

IoT ソリューション内のデバイスを管理するには、次の AWS IoT サービスに接続します。
**AWS IoT Core**
AWS IoT Core は、コネクテッドデバイスがクラウドアプリケーションや他のデバイスと安全にやり取りできるようにするマネージド型クラウドサービスです。AWS IoT Core は多くのデバイスとメッセージをサポートし、それらのメッセージを処理して AWS IoT エンドポイントやその他のデバイスにルーティングできます。AWS IoT Core を使用すると、アプリケーションは、接続されていない場合でも、すべてのデバイスとインタラクションできます。

**AWS IoT Device Management の発表**
**AWS IoT Device Defender**
**AWS IoT Things Graph**

## AWS IoT データサービス
IoT ソリューションのデバイスからのデータを分析し、以下の AWS IoT サービスを使用して適切な措置を講じます。

**AWS IoT Analytics**

**AWS IoT SiteWise**

**AWS IoT Events**                           

## AWS IoT Core サービス         

AWS IoT Core は、IoT デバイスを AWS クラウドに接続するサービスを提供します。これにより、他のクラウドサービスやアプリケーションがコネクテッドデバイスとインタラクションできるようになります。
![aws_iot_data_services.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904294/ee6787fd-c6cb-b98e-861a-73bebee8439d.png)
                    
## AWS IoT Core メッセージングサービス

AWS IoT Core 接続サービスは、IoT デバイスとの安全な通信を提供し、デバイスと AWS IoT の間で送受信されるメッセージを管理します。

**デバイスゲートウェイ**
デバイスから AWS IoT へのセキュアかつ効率的な通信を可能にします。デバイス通信は X.509 証明書を使用するセキュアなプロトコルによって保護されます。

**メッセージブローカー**
デバイスと AWS IoT アプリケーションが相互にメッセージを発行および受信するためのセキュアなメカニズムを提供します。パブリッシュとサブスクライブには、MQTT を直接または WebSocket を介して使用できます。AWS IoT がサポートするプロトコルの詳細については、デバイス通信プロトコル を参照してください。デバイスおよびクライアントは、HTTP REST インターフェイスを使用して、メッセージをブローカーにデータを発行することもできます。

メッセージブローカーは、サブスクライブしているデバイスと、Device Shadow サービスやルールエンジンなどの他の AWS IoT Core サービスにデバイスデータを配信します。

**LoRaWAN 用の AWS IoT Core**
AWS IoT Core for LoRaWAN を使用すると、LoRaWAN Network Server (LNS) を開発および運用することなく、LoRaWAN デバイスとゲートウェイを AWS に接続することで、プライベート LoRaWAN ネットワークを設定できます。LoRaWAN デバイスから受信したメッセージは、ルールエンジンに送信され、そこでフォーマットされて、他の AWS IoT サービスに送信されます。

**ルールエンジン**
ルールエンジンは、ストレージと追加処理のために、メッセージブローカーから他の AWS IoT サービスにデータを接続します。例えば、DynamoDB テーブルを挿入、更新、または照会したり、Rules エンジンで定義した式に基づいて Lambda 関数を呼び出したりできます。SQL ベースの言語を使用して、メッセージペイロードからデータを選択し、データを処理して、他のサービス (Amazon Simple Storage Service (Amazon S3)、Amazon DynamoDB、 AWS Lambda など) にデータを送信できます。メッセージブローカーや他のサブスクライバーにメッセージを再発行するルールを作成することもできます。詳細については、「 」を参照してくださいAWS IoT のルール