This data logger writes measurements from a Bosch BME280 or BMP280 sensor into a InfluxDB time-series database.
You'll need one Raspberry Pi 3 or 4 to run the data collection stack and dashboard, then as many additional Raspberry Pi Zeros as you like for each location you want to monitor.
How to connect the sensor over i2c
For the hardware, follow the instructions from the growlab app under "Assembling the build". You'll need the same parts, but you can skip the camera module.
You will run faasd on your Raspberry Pi 2, 3 or 4 to store data readings and to run OpenFaaS and Grafana.
On your Raspberry Pi Zero, or whichever host has a sensor connected to it, you'll run the sender app.
Deploy faasd to your Raspberry Pi 3 or 4 using these instructions
Customise the password, and update /var/lib/faasd/docker-compose.yaml
influxdb:
image: docker.io/library/influxdb:1.8
environment:
- INFLUXDB_DB=defaultdb
- INFLUXDB_ADMIN_USER=admin
- "INFLUXDB_ADMIN_PASSWORD=PASSWORD"
- INFLUXDB_USER=user
- "INFLUXDB_USER_PASSWORD=PASSWORD"
- INFLUXDB_REPORTING_DISABLED=true
- INFLUXDB_HTTP_AUTH_ENABLED=true
- INFLUXDB_HTTP_BIND_ADDRESS=0.0.0.0:8086
volumes:
# we assume cwd == /var/lib/faasd
- type: bind
source: ./influxdb/
target: /var/lib/influxdb
user: "1000"
cap_add:
- CAP_NET_RAW
ports:
- "0.0.0.0:8086:8086"
Make a directory for InfluxDB:
mkdir -p /var/lib/faasd/influxdb
chown 1000:1000 /var/lib/faasd/influxdb
Then reload and restart:
sudo systemctl daemon-reload \
&& sudo systemctl restart faasd
Create a secret for the InfluxDB user:
export PASSWORD=""
faas-cli secret create influx-pass --from-literal $PASSWORD
faas-cli secret create influx-user --from-literal admin
Set the influx_db env-var in stack.yml
i.e. 192.168.0.21
Next, deploy the function:
faas-cli deploy
Build if you like:
faas-cli publish -f stack.yml --platforms linux/arm/7
On your Raspberry Pi with the sensor, you'll run the "sender" app.
Enable i2c and change the hostname as required using the raspi-config
tool.
If you haven't installed the main growlab app for live-previews, then install the below dependencies:
sudo apt update -qy && \
sudo apt install -qy python3 \
i2c-tools \
python3-pip \
git \
tmux
Clone the growlab app:
git clone https://github.com/alexellis/growlab
cd growlab/data-logger/sender/
Install any pip modules required for the sender app:
pip3 install -r requirements.txt
Then run the sender app:
FUNCTION_URL=http://192.168.0.21:8080/function/submit-sample \
SENSOR=my-shed \
python3 main.py
Note: if you're using a BMP280 sensor then add an addition environment variable of
SENSOR=bmp280
A sensor reading will be submitted to faasd every 30 seconds. You can alter this sample interval by editing sender/main.py.
Deploy Grafana to faasd using the instructions in the eBook Serverless For Everyone Else
Then create yourself a simple dashboard for the measurements you see in the "readings" database.
Once you have it up and running, create a datasource, then import the dashboard.json file and open the dashboard to view your sensor readings.
My very cold shed - measured overnight!
A larger version in the summer time: