77 lines
2.5 KiB
Markdown
77 lines
2.5 KiB
Markdown
# SillyHome Next
|
||
|
||
Lokaler, datenschutzfreundlicher API-Prototyp für Home Assistant.
|
||
|
||
## Reifegrad
|
||
|
||
Version `0.1.0` stellt eine gehärtete technische Basis bereit: Home-Assistant-Entities
|
||
lesen, regelbasierte Bausteine und eine persistente Modell-Artefakt-Registry. Die
|
||
aktuelle Trainings- und Vorhersagelogik ist noch eine deterministische
|
||
Schnittstellen-Implementierung und **kein produktives Machine-Learning-Modell**.
|
||
|
||
## Motivation
|
||
TheSillyHome zeigte die Idee: statt statischer Regeln das Zuhause aus Verhaltensmustern verstehen. Diese Architektur modernisiert den Ansatz in Richtung Explainable AI, hybride Intelligenzebenen und langlebige Wartbarkeit.
|
||
|
||
## Ziele
|
||
- Home Assistant und Sensoren/Aktoren verstehen
|
||
- Historie auswerten und Gewohnheiten erkennen
|
||
- Vorhersagen erstellen und erklären
|
||
- Automationen vorschlagen und direkt generieren
|
||
- Lokal-first ohne Cloudpflicht
|
||
- Erweiterbar, testbar, dokumentiert
|
||
|
||
## Quickstart
|
||
1. Python-Venv anlegen und Abhängigkeiten installieren:
|
||
```bash
|
||
python -m venv .venv
|
||
source .venv/bin/activate
|
||
pip install -e ".[dev]"
|
||
```
|
||
|
||
2. Konfiguration aus `.env.example` übernehmen und anpassen:
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
3. API starten:
|
||
```bash
|
||
uvicorn app.main:app --reload
|
||
```
|
||
|
||
4. Erreichbar unter:
|
||
- `http://127.0.0.1:8000/health` - Health-Check
|
||
- `http://127.0.0.1:8000/docs/` - OpenAPI-Dokumentation
|
||
- `http://127.0.0.1:8000/v1/entities` - Home-Assistant-Entities
|
||
- `http://127.0.0.1:8000/v1/discovery` - klassifizierte, filterbare Entities
|
||
- `http://127.0.0.1:8000/v1/history` - normalisierte numerische Zeitreihen
|
||
- `http://127.0.0.1:8000/ml/health` - Registry-/Serving-Health
|
||
- `POST http://127.0.0.1:8000/ml/retrain` - Modell-Metadaten aktualisieren
|
||
|
||
Ohne vollständige HA-Konfiguration liefert `/v1/entities` bewusst `503`.
|
||
|
||
### Docker Compose
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
docker compose up --build -d
|
||
curl --fail http://127.0.0.1:8000/health
|
||
```
|
||
|
||
Compose veröffentlicht die API standardmäßig nur auf `127.0.0.1`. Für Zugriff aus
|
||
dem Netz muss ein authentifizierender Reverse Proxy vorgeschaltet werden.
|
||
|
||
### ENV-Konfiguration (`.env.example`)
|
||
- `SILLYHOME_HA_URL` – Basis-URL deiner Home-Assistant-Instanz (z. B. `http://homeassistant.local:8123`)
|
||
- `SILLYHOME_HA_TOKEN` – Long-Lived Access Token eines dedizierten HA-Benutzers mit minimalen Rechten
|
||
- `SILLYHOME_MODEL_STORE` – Verzeichnis für persistierte Modell-Metadaten
|
||
|
||
Niemals Administrator-Tokens oder Passwörter eintragen. `.env` gehört nicht ins
|
||
Versionskontrollsystem.
|
||
|
||
### Tests
|
||
```bash
|
||
pytest
|
||
ruff check .
|
||
mypy
|
||
```
|