Inoffizielle Dokumentation der Weishaupt WEM Portal API, gewonnen durch Reverse Engineering (siehe Quellen). Weishaupt stellt keine offizielle API bereit – Änderungen am Server können diese Doku jederzeit ungültig machen.
Alle 12 Endpunkte mit Request/Response-Schemas, Beispielen und Feldbeschreibungen.
git clone https://github.com/sehnot/weishaupt-api.git
cd weishaupt-api
npm install
make swagger # Swagger UI auf http://localhost:8080Lokaler, browserbasierter Minimal-Client, der alle Geräte und Module eines Kontos progressiv lädt:
cp .env.example .env # .env erstellen, darin Zugangsdaten bei WEM_USERNAME und WEM_PASSWORD eintragen
make server # Dashboard auf http://localhost:3000Tests validieren echte API-Responses gegen die Schemas in openapi.yaml:
make test-read # Read-Tests
make test-statistics # Statistics-Tests
make test-write # Write-Test (ändert NormalWW auf 42°C, stellt zurück)Hinweis: Das WEM Portal reagiert relativ empfindlich auf zu häufige Logins und Abfragen. Bei Bedarf kurze Pausen zwischen den Tests berücksichtigen.
| Datei | Zweck |
|---|---|
public/index.html |
Client-Frontend (Vanilla JS, kein Build-Step) |
src/server.js |
HTTP-Server für den Client (SSE-Streaming) |
src/wem-client.js |
WemClient-Klasse – zentrale API-Implementierung |
tests/helpers/resolve-nullable.js |
Konvertiert OpenAPI nullable: true → JSON Schema für ajv |
tests/helpers/validate-schema.js |
ajv-Wrapper zur Schema-Validierung gegen openapi.yaml |
tests/read.test.js |
Read-only Integrationstests (Geräte, Parameter, Messwerte) |
tests/statistics.test.js |
Integrationstests für /Statistics/Read |
tests/write.test.js |
Schreibtest: setzt NormalWW, prüft, stellt zurück |
.env.example |
Vorlage für Zugangsdaten |
.gitattributes |
Zeilenenden-Normalisierung (LF) |
.gitignore |
Ausgeschlossene Dateien (.env, node_modules/) |
.nojekyll |
Deaktiviert Jekyll-Verarbeitung für GitHub Pages |
API_DOCS.md |
Begleitdoku mit Beispielen und Quickstart |
index.html |
Swagger UI (CDN, lädt openapi.yaml) – GitHub Pages Root |
Makefile |
Entwicklungs-Befehle (make swagger, make server, make test-*) |
openapi.yaml |
Single Source of Truth – Schemas für Swagger UI und Tests |
README.md |
Projektbeschreibung (diese Datei) |
vitest.config.js |
Vitest-Konfiguration |
Basis-URL: https://www.wemportal.com
| Endpunkt | Methode | Zweck |
|---|---|---|
/app/Account/Login |
POST | Login → Session-Cookie |
/app/CircuitTimes/Read |
POST | Zeitprogramm lesen |
/app/CircuitTimes/Refresh |
POST | Zeitprogramm-Abfrage anstoßen |
/app/CircuitTimes/Write |
POST | Zeitprogramm setzen |
/app/DataAccess/Read |
POST | Aktuelle Werte lesen |
/app/DataAccess/Refresh |
POST | Messung anstoßen |
/app/DataAccess/Write |
POST | Wert setzen |
/app/Device/Read |
GET | Geräte + Module auflisten |
/app/DeviceStatus/Read |
POST | Verbindungsstatus + Fehler eines Geräts |
/app/EventType/Read |
POST | Parameter-Metadaten eines Moduls |
/app/Statistics/Read |
POST | Verlaufsdaten |
/app/Statistics/Refresh |
POST | Verfügbare Energiearten (GroupTypes) abrufen |
Vollständige Dokumentation: API_DOCS.md
Basiert auf Reverse Engineering durch:
- hass-WEM-Portal (Home Assistant Integration)
- wemportal (PyPI)
- ioBroker.weishaupt-wem
- Homey-Wemportal
- eigene Analyse