added notebook investigating boiler power usage

This commit is contained in:
Brian Bjarke Jensen
2026-01-24 19:50:50 +01:00
parent d59f7d2e2d
commit 0c1f7928c2
6 changed files with 51706 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
# PostgreSQL Database Configuration
# Copy this file to .env and fill in your actual values
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=home_assistant
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password
+56
View File
@@ -0,0 +1,56 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# Virtual environments
.venv/
venv/
ENV/
env/
# Jupyter Notebook
.ipynb_checkpoints/
*.ipynb_checkpoints
# Environment variables
.env
.env.local
# Database
*.db
*.sqlite
*.sqlite3
# IDEs
.vscode/
.idea/
*.swp
*.swo
*~
# OS
.DS_Store
Thumbs.db
# Project specific
data/
*.csv
*.parquet
+135
View File
@@ -0,0 +1,135 @@
# Home Assistant Data Analysis
Data analysis notebooks for investigating power consumption and other smart home metrics collected by Home Assistant.
## Project Structure
```bash
.
├── .gitea/
│ └── workflows/
│ └── setup_database.yml # CI workflow to setup PostgreSQL database
├── notebooks/
│ └── boiler_warning.ipynb # Power consumption analysis notebook
├── utils/
│ ├── __init__.py
│ └── db_connection.py # Shared database connection utilities
├── .env.example # Example environment variables
├── .gitignore
├── pyproject.toml # Project dependencies and configuration
└── README.md
```
## Setup
### 1. Install UV (Python Package Manager)
```bash
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or via Homebrew
brew install uv
```
### 2. Create Virtual Environment and Install Dependencies
```bash
# Create and activate virtual environment with UV
uv venv
source .venv/bin/activate # On macOS/Linux
# Install dependencies
uv pip install -e .
```
### 3. Configure Database Connection
```bash
# Copy example environment file
cp .env.example .env
# Edit .env with your PostgreSQL credentials
nano .env # or use your preferred editor
```
### 4. Run Jupyter Notebooks
```bash
# Start Jupyter Lab
jupyter lab
# Or Jupyter Notebook
jupyter notebook
```
## Database Setup
The repository includes a CI workflow (`.gitea/workflows/setup_database.yml`) that can be manually triggered to initialize the PostgreSQL database. Ensure the following secrets are configured in your Gitea repository:
- `POSTGRES_HOST`
- `POSTGRES_PORT`
- `POSTGRES_ROOT_PASSWORD`
- `DB_NAME`
- `DB_USER`
- `DB_PASSWORD`
## Notebooks
### Current Notebooks
- **boiler_warning.ipynb**: Analysis of power consumption data from Home Assistant
### Adding New Notebooks
1. Create new notebook in the `notebooks/` directory
2. Use descriptive names (e.g., `temperature_trends.ipynb`, `energy_efficiency.ipynb`)
3. Import shared utilities: `from utils import get_db_connection, get_db_engine`
## Shared Utilities
The `utils/` module provides common functions for database connections:
```python
from utils import get_db_connection, get_db_engine
# Using psycopg2 (for raw SQL)
conn = get_db_connection()
cursor = conn.cursor()
cursor.execute("SELECT * FROM states LIMIT 10")
# Using SQLAlchemy (for pandas integration)
engine = get_db_engine()
import pandas as pd
df = pd.read_sql("SELECT * FROM states LIMIT 10", engine)
```
## Development
### Optional Development Tools
Install development dependencies for code formatting and linting:
```bash
uv pip install -e ".[dev]"
```
Format code with Black:
```bash
black utils/
```
Lint code with Ruff:
```bash
ruff check utils/
```
## Contributing
When adding new analysis notebooks:
1. Document the purpose and findings in the notebook
2. Add any new dependencies to `pyproject.toml`
3. Update this README if adding significant new functionality
File diff suppressed because one or more lines are too long
+40
View File
@@ -0,0 +1,40 @@
[project]
name = "home-assistant"
version = "0.1.0"
description = "Data analysis notebooks for Home Assistant smart home metrics"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"jupyter>=1.0.0",
"pandas>=2.0.0",
"matplotlib>=3.7.0",
"seaborn>=0.13.0",
"psycopg2-binary>=2.9.0",
"sqlalchemy>=2.0.0",
"python-dotenv>=1.0.0",
"ipykernel>=6.25.0",
"pandera>=0.28.1",
"plotly>=6.5.2",
]
[project.optional-dependencies]
dev = [
"ruff>=0.1.0",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["utils"]
[tool.ruff]
line-length = 100
target-version = "py312"
[dependency-groups]
dev = [
"pandas-stubs>=2.3.3.260113",
"ruff>=0.14.14",
]
Generated
+2397
View File
File diff suppressed because it is too large Load Diff