LoginSignup
4
3

More than 1 year has passed since last update.

AWS IoT CoreをRaspberry Piで使ってみた その3

Last updated at Posted at 2021-09-13

概要

  • AWSにはIoT機器と接続、管理するためのAWS IoT Coreというサービスがある
  • 公式にもハンズオンがあるが、最小限の手順、構成で動作を確かめてみる
    https://aws-iot-core-for-beginners.workshop.aws/phase2/step2.html
  • 前回に引き続き温湿度センサーDHT22のデータを送信することを試みる

aws-iot-core.png

前回の記事
https://qiita.com/cami_oshimo/items/8e9c45230fccfac4ff4c

スクリーンショット 2021-09-12 11.35.17.png

IMG_2332.JPG

Raspberry Piの操作

ライブラリseeed-python-dhtをインストールする

# pip3 install seeed-python-dht

まずセンサー、ライブラリの動作を確認するコードを書いてみる

dht22.py
import RPi.GPIO as GPIO
import seeed_dht

GPIO.setup(4, GPIO.IN)

sensor = seeed_dht.DHT("22", 4)

humi, temp = sensor.read()

humidity = '{:.1f}'.format(humi)
temperature = '{:.1f}'.format(temp)

print(humidity)
print(temp)

動作を確認してみる(温度、湿度が順番に表示される)

# python3 dht22.py
26.3
78.1

前回使用したサンプルプログラムに組み込んでみる

basicPubSub.py
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
import logging
import time
import argparse
import json

import RPi.GPIO as GPIO          // 追加
import seeed_dht                 // 追加


GPIO.setup(4, GPIO.IN)           // 追加
sensor = seeed_dht.DHT("22", 4)  // 追加

AllowedActions = ['both', 'publish', 'subscribe']
basicPubSub.py
while True:
    if args.mode == 'both' or args.mode == 'publish':
        humi, temp = sensor.read()          // 追加
        humidity = '{:.1f}'.format(humi)    // 追加
        temperature = '{:.1f}'.format(temp) // 追加
        message = {}
        message['message'] = args.message
        message['sequence'] = loopCount
        message['temp'] = temp              // 追加
        message['humi'] = humi              // 追加
        messageJson = json.dumps(message)
        myAWSIoTMQTTClient.publish(topic, messageJson, 1)
        if args.mode == 'publish':
            print('Published topic %s: %s\n' % (topic, messageJson))
        loopCount += 1
    time.sleep(1)

修正したサンプルプログラムのbasicPubSub.pyを実行する

pi@raspberrypi:~/aws-iot-device-sdk-python/samples/basicPubSub $ python3 basicPubSub.py  --endpoint abc123abc123abc123-ats.iot.ap-northeast-1.amazonaws.com --rootCA ../certs/AmazonRootCA1.pem --cert ../certs/abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123-certificate.pem.crt --key  ../certs/abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123-private.pem.key

トピック sdk/test/Python にPublishされていることを確認する
スクリーンショット 2021-09-12 11.27.30.png

AWS IoT Coreの操作

テスト→MQTTクライアントでJSON形式のデータが到着していることを確認する
スクリーンショット 2021-09-12 11.29.00.png

課題

  • seeed-python-dht から読みだした値を小数点以下1桁で送信したかったが、
    Pythonで '{:.1f}'.format(temp) としても反映されない。
    テスト用のコードでは再現しない。原因不明。時間のある際に調査する。
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3