やろうとしていること
〇システム構成
IoT Devieから環境データをAWS IoT Coreに送信
AWS IoT Coreはデータ受信時に、ACTルールで、AWS Lambda関数を呼び出し
AWS Lambda関数は、EC2上にインストールしたInfluxDBに受信した環境データを書き込み
① IoT Device - AWS IoT Core (MQTT通信)
AWS IoT Coreが受信するjsonデータ
json
1 "clientId": "SensorBoard", 2 "date_time": "2022-04-28 19:53:49", 3 "Board_ID": 4, 4 "Temperature": 23.22850227, 5 "Humidity": 56.95950699, 6 "Pressure": 989.6340942, 7 "Voltage": 0
② AWS EC2 InfluxDBインストール、データベース作成
③ AWS Lambda上にPythonプログラムデプロイ
VPCを設定し、AWS EC2サイトにインストールしたInfluxDBへアクセス可能としています。
④ AWS IoT ACTルール
AWS IoT CoreがMQTT受信すると、Lambda関数呼び出し
プログラム
python
1import influxdb 2 3db = influxdb.InfluxDBClient( 4 database=process.env.INFLUXDB, 5 username=process.env.INFLUXDBUSRNAME, 6 password=process.env.INFLUXDBPWD, 7 port=process.env.INFLUXDBPORT, 8 hosts=[{ host: process.env.INFLUXDBHOST }], 9) 10 11def lambda_handler(event, context): 12 sdata = JSON.parse(event.body) 13 print (sdata) 14 db.write_points(sdata)
環境変数として、
INFLUXDB:データベース名
INFLUXDBUSRNAME: ユーザ名
INFLUXDBPWD:パスワード
INFLUXDBPORT: ポート8086
INFLUXDBHOST:InfluxDBがインストールされているEC2サイトのアドレス
を設定しています。
困っていること
InfluxDBへデータが書き込まれません。
Pythonのプログラムは、次の記事(Node.js)で作成されたものを参考にして作っていますが、間違いがあるようでしたら、
指摘していただけると助かります。
あなたの回答
tips
プレビュー