Environmental monitoring for Raspberry Pi - Measure air quality (gases and particulates), temperature, pressure, humidity, light, and noise.
opensensor.space is a cloud-native platform for streaming environmental sensor data to open datasets.
Part of the walkthru.earth initiative for people-first urban intelligence:
- π± Minimum carbon footprint - Edge processing reduces transmission by 60-90%
- π Open data - All readings stored in Parquet format on Source Cooperative
- β‘ Near real-time - Query sensor data in the browser with DuckDB
- π Resilient - Offline-first with automatic sync
See live data from Enviro+ sensors β
# Install UV (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create isolated environment and install package
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install enviroplus-community
# Check system requirements
enviroplus-setup --check
# Install system dependencies and configure hardware
sudo enviroplus-setup --install
# Reboot (required for hardware changes)
sudo reboot# List all available examples
enviroplus-examples
# Get details about a specific example
enviroplus-examples --info weather.py
# Copy examples to your project
enviroplus-examples --copy ~/my-sensors/
# Run an example
uv run python -m enviroplus.examples.weather
# Or run directly (if venv is activated)
python -m enviroplus.examples.weatherimport time
from pimoroni_bme280 import BME280
try:
from smbus2 import SMBus
except ImportError:
from smbus import SMBus
bme280 = BME280(i2c_dev=SMBus(1))
while True:
temperature = bme280.get_temperature()
pressure = bme280.get_pressure()
humidity = bme280.get_humidity()
print(f"Temperature: {temperature:.1f}Β°C")
print(f"Pressure: {pressure:.1f}hPa")
print(f"Humidity: {humidity:.1f}%")
print("---")
time.sleep(2)- BME280 - Temperature, pressure, humidity
- LTR559 - Light and proximity
- MICS6814 - Gas sensor (oxidising, reducing, NH3)
- PMS5003 - Particulate matter (PM1, PM2.5, PM10)
- ADAU7002 - MEMS microphone for noise measurement
- ST7735 - 0.96" color LCD display (160x80)
- Core sensor libraries
- 17 example scripts
- Hardware setup tool (
enviroplus-setup) - Examples helper (
enviroplus-examples) - Full documentation
Basic Sensors:
weather.py- Temperature, pressure, humiditylight.py- Light sensor readingsgas.py- Gas sensor readingsparticulates.py- Particulate matter readingscompensated-temperature.py- CPU-compensated temperature
Advanced:
all-in-one.py- Full dashboard with all sensorsmqtt-all.py- Publish to MQTT brokersensorcommunity.py- Upload to Sensor.Community networknoise-profile.py- Noise measurement with frequency analysis
The enviroplus-setup tool automatically configures your Raspberry Pi:
# Check what's needed
enviroplus-setup --check
# Install and configure everything
sudo enviroplus-setup --installWhat it does:
- β
Installs system packages (
python3-cffi,libportaudio2) - β Enables I2C interface (for sensors)
- β Enables SPI interface (for LCD display)
- β Configures serial/UART (for PMS5003 sensor)
- β
Adds device tree overlays to
/boot/firmware/config.txt - β Creates backup before changes
Note: A reboot is required after hardware configuration.
- Installation Guide: See above
- Example Scripts: enviroplus/examples/
- API Reference: Use
enviroplus-examples --info <script>for details - Hardware Setup: Run
enviroplus-setup --help - Publishing Guide: PYPI_PUBLISHING.md
- Development: DEVELOPMENT.md
Amazing projects built by the community using Enviro+:
- opensensor.space - Cloud-native open sensor network with edge processing and open data (walkthru.earth)
- enviroplus_exporter - Prometheus exporter with Luftdaten and InfluxDB Cloud support
- mqtt-all - MQTT integration (now upstream in examples/mqtt-all.py)
- sensorcommunity - Upload data to Sensor.Community (Luftdaten) network
- Enviro Plus Dashboard - React-based web dashboard for viewing sensor data
- Enviro Plus Web - Flask application serving web pages with current readings and graphs
- enviro monitor - Comprehensive environmental monitoring solution
- homekit-enviroplus - Apple HomeKit accessory for Enviro+
- homebridge-enviroplus - Homebridge plugin for HomeKit integration
- go-enviroplus - Go modules to read Enviro+ sensors
- Enviro+ Example Projects - Includes original examples plus code to stream to Adafruit IO
Got a project? Add it here β
Need help getting started or troubleshooting?
- Installation Guide: See Quick Start above
- Hardware Setup: Run
enviroplus-setup --help - Examples: Run
enviroplus-examplesto see all available examples - API Reference: Run
enviroplus-examples --info <script>for details - GPIO Pinout: pinout.xyz/enviro_plus
- GitHub Issues: Report bugs or request features
- GitHub Discussions: Ask questions and share ideas
- Pimoroni Forums: Community support
- Discord: Join the conversation
- Email: yharby@walkthru.earth (for opensensor.space integration)
- Enviro+ Product: shop.pimoroni.com/products/enviro-plus
- Getting Started Guide: learn.pimoroni.com/enviro-plus
- opensensor.space: opensensor.space
- walkthru.earth: walkthru.earth
Want to contribute? See DEVELOPMENT.md for detailed setup instructions.
# Clone repository
git clone https://github.com/walkthru-earth/enviroplus-community.git
cd enviroplus-community
# Create isolated environment
uv venv
source .venv/bin/activate
# Install for development
uv pip install -e .
# Install dev dependencies
make dev-deps
# Run tests
make pytest
# Run QA checks
make qa
# Build package
make build- Hardware: Raspberry Pi with Enviro+ or Enviro Mini pHAT
- OS: Raspberry Pi OS (Debian Bookworm or later recommended)
- Python: 3.9 - 3.13 (fully tested across all versions)
- System packages: Automatically installed by
enviroplus-setup
Supported boards:
- Enviro+ (all sensors)
- Enviro Mini (no gas sensor or PM sensor)
MIT License - see LICENSE
Original Author: Philip Howard (Pimoroni) Maintained by: Youssef Harby (walkthru.earth)
- Pimoroni for creating the Enviro+ hardware and original library
- walkthru.earth for opensensor.space integration
- Community contributors for examples and integrations
Made with β€οΈ for open environmental data

