実現したいこと
- influxDBに土壌センサーからの電圧情報と、Timestampを記録する
- influxDBに保存されたデータをGrafanaで可視化する
前提
Raspberry pi model4Bにて実行。
influxDBへの保存の際、エラーが発生せずに、書き込みが行われません。
純粋にコードにエラーがあるのだと思います。
発生している問題・エラーメッセージ
以下のように、コード自体は問題なく実行できるのですが、influxDBに保存できず、何も保存できませんでした。
私の知識が足りないことが原因だと思いますが、どこが原因か教えていただけるとありがたいです。
pi@raspberrypi:~/Desktop $ python3 dbdb_water.py on_minute I2C device not found on_minute {'soil_moisture': 20108} on_minute {'soil_moisture': 22351} on_minute I2C device not found ^Cintrrupted Ctrl-C pi@raspberrypi:~/Desktop $ influx Connected to http://localhost:8086 version 1.6.7~rc0 InfluxDB shell version: 1.6.7~rc0 > use mydb Using database mydb > SELECT * FROM sensore > exit
該当のソースコード
python
1import influxdb 2import schedule 3import datetime 4import sys, time 5import math 6import Adafruit_ADS1x15 7 8adc = Adafruit_ADS1x15.ADS1115() 9GAIN = 1 10LOG_FILE = "/home/pi/Desktop/water.log" 11 12# dbへのアクセス 13influx = influxdb.InfluxDBClient( 14 host='localhost', 15 port=8086, 16 database='mydb', 17 username='python', 18 password='python' 19) 20 21device_id='sensor01' 22 23def get_data(): 24 # 土壌センサーの値を取得 25 soil_moisture = adc.read_adc(0, gain=GAIN) 26 27 # データを辞書型のオブジェクトに格納 28 data = {} 29 data['soil_moisture'] = soil_moisture 30 31 return data 32 33def write_to_influxdb(data): # time 34 # タイムスタンプを取得 35 timestamp = datetime.datetime.now() 36 37 # データをInfluxDBに書き込む 38 json_body = [{ 39 'measurement': 'soil_moisture', 40 'tags': {'macaddr': device_id}, 41 'time': timestamp, 42 'fields': data 43 }] 44 influx.write_points(json_body) 45 46def on_minute(): 47 print('on_minute') 48 try: 49 data = get_data() 50 print(data) 51 write_to_influxdb(data) 52 except OSError as e: 53 if e.errno == 121: 54 print("I2C device not found") 55 else: 56 raise 57 58def main(): 59 try: 60 schedule.every(10).seconds.do(on_minute) 61 while True: 62 schedule.run_pending() 63 time.sleep(1) 64 except KeyboardInterrupt: 65 print("intrrupted Ctrl-C") 66 sys.exit(1) 67 68if __name__ == '__main__': 69 main() 70
試したこと
influxDBに書き込むためのコードはJsonではないと動かないと聞いたため、色々と書き換えた結果が上のコードです。
完全に私の知識不足なのですが、誰かご存知の方、教えてください。
Version情報
- influx shell version 1.6.7~rc0
- Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
- Python 3.9.2
あなたの回答
tips
プレビュー