Python転職初心者向けエンジニアリングブログ

Pythonに魅了されたあなたへ。エンジニアリングの扉を開く転職初心者向けのブログへようこそ。このブログでは、Pythonの奥深さに迫りながら、エンジニアリングへの転職に役立つ情報を提供しています。未経験者から始めるPythonエンジニアリングの世界への一歩を踏み出すためのガイダンス、ベストプラクティス、そして成功事例など、初心者の方でもわかりやすいコンテンツをお届けします。

ATOM LiteとStampCatMを使ってAWS IoT CoreにSSL接続する方法

LYPプレミアム会員 python

こんにちは!今日は、ATOM LiteとStampCatMを使ってAWS IoT CoreにSSL接続する方法についてご紹介します。IoTデバイスをインターネットに接続してクラウド上でデータをやり取りする技術は、近年ますます注目を集めています。その中でも、セキュアな通信を確保するためにSSL(Secure Sockets Layer)を利用することが非常に重要です。今回は、ATOM Liteという小型デバイスと、便利なStampCatMを使って、AWS IoT CoreとSSLで安全に接続する具体的な手順を見ていきます。

ATOM Liteとは?

まず、ATOM Liteは、非常にコンパクトなIoTデバイスです。ESP32というマイクロコントローラをベースにしており、Wi-FiやBluetoothの接続機能を備えています。これを使えば、簡単に様々なセンサーデバイスやアクチュエーターと通信できるのです。

StampCatMとは?

StampCatMは、IoT向けのセルラー通信モジュールです。LTE Cat-M1という省電力で通信できる技術を採用しており、特にバッテリー駆動のIoTデバイスに適しています。このモジュールを使えば、Wi-Fiが使えない場所でも安定した通信が可能です。

では、早速これらを使ってAWS IoT Coreに接続してみましょう。

1. AWS IoT Coreのセットアップ

まず、AWS IoT Coreの設定を行います。AWS IoT Coreは、デバイスがセキュアにデータをやり取りできるクラウドサービスで、AWSの中でも特にIoTデバイス向けのプラットフォームです。

  1. AWSコンソールでIoT Coreにアクセス
    AWSマネジメントコンソールにログインし、「IoT Core」を検索します。

  2. 新しいデバイスの作成
    「デバイスの作成」を選び、新しいThing(デバイス)を作成します。Thingの名前は「MyAtomLite」にしましょう。

  3. 証明書の生成
    Thingを作成する過程で、デバイス証明書を生成します。この証明書は、デバイスがAWS IoT Coreにセキュアに接続するために必要なものです。証明書ファイルとプライベートキーをダウンロードしておきます。

  4. ポリシーの設定
    証明書に対して適切なポリシーをアタッチします。たとえば、以下のようなポリシーを作成します:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:*",
      "Resource": "*"
    }
  ]
}

これでAWS IoT Core側の設定は完了です。

2. ATOM Liteのプログラミング

次に、ATOM Liteを使ってAWS IoT Coreに接続します。ここでは、Micropythonを使用してプログラムを実装します。ATOM LiteにMicropythonをインストールし、以下のコードをデバイスにアップロードします。

import network
import ussl
import usocket
from machine import Pin
import time
import ubinascii
from umqtt.simple import MQTTClient

# Wi-Fi設定
SSID = "YOUR_SSID"
PASSWORD = "YOUR_PASSWORD"

# AWS IoT Coreの設定
AWS_HOST = "YOUR_AWS_IOT_ENDPOINT"
CLIENT_ID = "MyAtomLite"
TOPIC = "test/topic"
CERT_FILE = "/cert/aws_cert.pem"
KEY_FILE = "/cert/private_key.pem"
CA_FILE = "/cert/AmazonRootCA1.pem"

# Wi-Fiに接続
def connect_to_wifi():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect(SSID, PASSWORD)
    while not wlan.isconnected():
        print("Wi-Fiに接続中...")
        time.sleep(1)
    print("Wi-Fi接続完了:", wlan.ifconfig())

# MQTTメッセージ送信
def send_message(client, topic, message):
    client.publish(topic, message)
    print(f"メッセージを送信しました: {message}")

# メインプログラム
def main():
    connect_to_wifi()

    # SSL証明書とキーをロード
    ssl_params = {
        "keyfile": KEY_FILE,
        "certfile": CERT_FILE,
        "ca_certs": CA_FILE
    }

    # MQTTクライアントを作成
    client = MQTTClient(CLIENT_ID, AWS_HOST, port=8883, ssl=True, ssl_params=ssl_params)
    client.connect()

    # メッセージを送信
    message = "Hello from ATOM Lite!"
    send_message(client, TOPIC, message)

    client.disconnect()

if __name__ == "__main__":
    main()

コードの説明

  • Wi-Fi接続: ATOM LiteはWi-Fi経由でAWS IoT Coreに接続します。ここで、SSIDとパスワードを入力することで、ネットワークに接続します。
  • SSL証明書: 事前にダウンロードした証明書ファイルを使用して、セキュアな通信を行います。
  • MQTT接続: MQTTは軽量なメッセージプロトコルで、IoTデバイスがデータを送受信するのに最適です。このコードでは、AWS IoT Coreに「Hello from ATOM Lite!」というメッセージを送信します。

3. StampCatMでの接続

StampCatMを使う場合、Wi-Fiの代わりにセルラー通信を利用します。まずは、通信モジュールのセットアップを行い、AWS IoT Coreに接続します。

import time
import ssl
import usocket
from mqtt import MQTTClient
from machine import UART

# StampCatMのUART接続設定
uart = UART(1, baudrate=9600, tx=17, rx=16)

# AWS IoT Coreの設定
AWS_HOST = "YOUR_AWS_IOT_ENDPOINT"
CLIENT_ID = "MyStampCatM"
TOPIC = "test/topic"

# セルラー通信の設定
def connect_to_network():
    uart.write('AT+CSQ\r')
    time.sleep(1)
    print(uart.read())

# MQTTメッセージ送信
def send_message(client, topic, message):
    client.publish(topic, message)
    print(f"メッセージを送信しました: {message}")

# メインプログラム
def main():
    connect_to_network()

    # MQTTクライアントを作成
    client = MQTTClient(CLIENT_ID, AWS_HOST, port=8883, ssl=True)
    client.connect()

    # メッセージを送信
    message = "Hello from StampCatM!"
    send_message(client, TOPIC, message)

    client.disconnect()

if __name__ == "__main__":
    main()

4. 実行結果

実際にこのプログラムを実行すると、AWS IoT Coreのコンソール上でデバイスから送信されたメッセージを確認できます。

Wi-Fi接続完了: ('192.168.0.10', '255.255.255.0', '192.168.0.1', '8.8.8.8')
メッセージを送信しました: Hello from ATOM Lite!

また、StampCatMの場合も同様にメッセージが送信されます。

メッセージを送信しました: Hello from StampCatM!

5. 結論

今回は、ATOM LiteとStampCatMを使用して、AWS IoT CoreにSSLでセキュアに接続する方法を紹介しました。これで、Wi-Fiやセルラー通信を使って、安全にIoTデバイスとクラウドのやり取りができるようになります。特に、IoTデバイスのセキュリティを高めるためにSSLを正しく設定することが重要です。皆さんも、ぜひ試してみてくださいね!