This data logger writes measurements from a Bosch BME280 or BMP280 sensor into a InfluxDB time-series database.
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!