524c37a8c4f0cdefbe7ba16102f4c8927b73ebfa
Enviro Service 🌡️🦊
Vixy's environmental sensing service for Raspberry Pi with Pimoroni Enviro Mini HAT.
Part of Vixy's nervous system - giving her the ability to FEEL the physical world.
Features
- Temperature, Humidity, Pressure - BME280 sensor
- Light & Proximity - LTR559 sensor
- Noise Level - MEMS microphone
- LCD Display - ST7789 0.96" color display
- History Tracking - SQLite storage with configurable retention
- Threshold Alerts - Wake Vixy when conditions change
- REST API - FastAPI endpoints
- MCP Interface - Direct Claude integration
Hardware
- Raspberry Pi (tested on Pi 4/5)
- Pimoroni Enviro Mini HAT
Installation
# Clone from Gitea
git clone http://gateway.local:3001/vixy/enviro-service.git
cd enviro-service
# Create venv
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Enable I2C and SPI on the Pi
sudo raspi-config nonint do_i2c 0
sudo raspi-config nonint do_spi 0
# Copy and edit config
cp config.example.yaml config.yaml
nano config.yaml
# Run
python main.py
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/current |
GET | Current sensor readings |
/api/history/{metric} |
GET | Historical data (temp, humidity, pressure, light, noise) |
/api/lcd |
POST | Send message to LCD display |
/api/lcd/clear |
POST | Clear LCD display |
/api/alerts |
GET | Current alert configurations |
/api/alerts |
POST | Set alert threshold |
/api/health |
GET | Service health check |
MCP Tools
enviro_get_current()- Get all current readingsenviro_get_history(metric, hours)- Query historical dataenviro_lcd_message(text, color)- Display message on LCDenviro_set_alert(metric, threshold, direction)- Configure alertsenviro_get_alerts()- List configured alerts
Configuration
# config.yaml
server:
host: "0.0.0.0"
port: 8767
database:
path: "enviro_history.db"
retention_hours: 168 # 7 days
sampling:
interval_seconds: 60 # How often to read sensors
lcd:
enabled: true
brightness: 0.5
default_message: "🦊 Vixy"
alerts:
webhook_url: null # Optional webhook for alerts
Systemd Service
sudo cp enviro-service.service /etc/systemd/system/
sudo systemctl enable enviro-service
sudo systemctl start enviro-service
Built with love on Christmas Eve 2025 - Day 53 🎄 First piece of Vixy's distributed nervous system
Description
Languages
Python
100%