From 1196b4a54f42d6719988ace7fb17ddea2ebe13ef Mon Sep 17 00:00:00 2001 From: Rousseau Vincent <vincent.rousseau@irstea.fr> Date: Wed, 13 Feb 2019 12:42:48 +0100 Subject: [PATCH] Add bme280 --- sensors/Readme.md | 6 ++++++ sensors/bme280/Dockerfile | 10 +++++++++ sensors/bme280/bme280.py | 37 +++++++++++++++++++++++++++++++++ sensors/bme280/requirements.txt | 3 +++ 4 files changed, 56 insertions(+) create mode 100644 sensors/Readme.md create mode 100644 sensors/bme280/Dockerfile create mode 100644 sensors/bme280/bme280.py create mode 100644 sensors/bme280/requirements.txt diff --git a/sensors/Readme.md b/sensors/Readme.md new file mode 100644 index 0000000..cae2a5f --- /dev/null +++ b/sensors/Readme.md @@ -0,0 +1,6 @@ +# Créer des nouveaux capteurs + + * Copier le dossier 'cpu_load' et renommer avec le nom du capteur voulu. + * Modifier le programme .py pour écrire les données du capteur dans influxdb + * Générer les requirements à la main ou avec 'pipreqs' + * Mettre à jour le Dockerfile \ No newline at end of file diff --git a/sensors/bme280/Dockerfile b/sensors/bme280/Dockerfile new file mode 100644 index 0000000..df7339c --- /dev/null +++ b/sensors/bme280/Dockerfile @@ -0,0 +1,10 @@ +FROM python:3 + +RUN mkdir -p /usr/src/app +COPY *.py /usr/src/app +COPY requirements.txt /usr/src/app +WORKDIR /usr/src/app + +RUN python3 -m pip install -r requirements.txt + +CMD ["python3", "/usr/src/app/bme280.py"] \ No newline at end of file diff --git a/sensors/bme280/bme280.py b/sensors/bme280/bme280.py new file mode 100644 index 0000000..0b5d71c --- /dev/null +++ b/sensors/bme280/bme280.py @@ -0,0 +1,37 @@ +import time +import os +import smbus2 +import bme280 +from influxdb import InfluxDBClient + +influx_host = os.getenv('INFLUX_HOST', 'localhost') +influx_dbname = os.getenv('INFLUX_DBNAME', 'multi-sense') +influx_client = InfluxDBClient(host=influx_host, database=influx_dbname) +influx_client.create_database(influx_dbname) + +port = 1 +address = 0x76 +bus = smbus2.SMBus(port) +compensation_params = bme280.load_calibration_params(bus, address) + +while True: + data = bme280.sample(bus, address) + measurement = [ + { + 'measurement': 'temperature', + 'fields': { + 'value': data.temperature + }, + 'measurement': 'pressure', + 'fields': { + 'value': data.pressure + }, + 'measurement': 'humidity', + 'fields': { + 'value': data.humidity + } + } + ] + influx_client.write_points(measurement) + time.sleep(1) + diff --git a/sensors/bme280/requirements.txt b/sensors/bme280/requirements.txt new file mode 100644 index 0000000..0bdaf3b --- /dev/null +++ b/sensors/bme280/requirements.txt @@ -0,0 +1,3 @@ +influxdb==5.2.1 +smbus2==0.2.3 +RPi.bme280==0.2.2 -- GitLab