Status: π§ͺ Konzept / frΓΌhe Planungsphase. Noch keine Hardware gebaut, keine Firmware lauffΓ€hig.
ESP32-basierte BrΓΌcke zwischen dem Violet Pool Controller (HTTP/JSON-API) und einem KNX-Bus (Twisted Pair, TP-UART). ErmΓΆglicht die Einbindung aller Pool-Werte (Temperatur, pH, ORP, Chlor, Pumpenstatus, ...) und -Aktoren (Pumpe, Heizung, Solar, Dosierung, Licht) in eine bestehende KNX-Smart-Home- Installation β ohne Home Assistant, ohne Cloud, deterministisch und autark.
Der Violet Pool Controller spricht nur JSON/HTTP (/getReadings?ALL,
/setFunctionManually?...). KNX ist TP-UART-basiert. Es gibt keinen direkten
Pfad β man braucht immer einen Γbersetzer. Dieses Projekt baut genau diesen
Γbersetzer als kompaktes, stromsparendes Embedded-GerΓ€t:
- Autark: lΓ€uft unabhΓ€ngig von Home Assistant / PC / Server.
- Deterministisch: zyklisches Polling + Echtzeit-KNX-Telegramme.
- KostengΓΌnstig: BOM ~30β60 β¬.
- Offen: Hardware-Design + Firmware unter AGPL-3.0.
βββββββββββββββββββββββββ LAN / WLAN ββββββββββββββββββββββββ
β Violet Pool β βββ HTTP/JSON (GET/POST) ββΆ β ESP32 β
β Controller β β ββββββββββββββββββ β
β (192.168.x.x) β β β WiFi-Client β β
βββββββββββββββββββββββββ β β Polling-Loop β β
β β Mapping-Tabelleβ β
β β KNX-Stack β β
β βββββββββ¬βββββββββ β
ββββββββββββΌββββββββββββ
β UART
ββββββββββββΌββββββββββββ
β NCN5120 / TPUART β
β (KNX-Transceiver) β
ββββββββββββ¬ββββββββββββ
β TP
ββββββββββββββββββΌβββββββββββββββ
β KNX-Bus (rot/schwarz, 30 V) β
β β Sensoren & Aktoren β
βββββββββββββββββββββββββββββββββ
Datenfluss:
- Polling (z. B. alle 5β10 s): ESP32 β Controller
GET /getReadings?ALLβ JSON parsen β Werte auf konfigurierte KNX-Gruppenadressen (GAs) senden. - Kommando: KNX-Telegramm auf einer Kommando-GA β ESP32 β
GET /setFunctionManually?...an den Controller.
- Zyklisches Polling aller Relevanten Readings (Pool-, Solar-, Ambient-Temp, pH, ORP, Chlor, LeitfΓ€higkeit, DI/AI, Pumpenstatus, Fehlercodes).
- Schreiben von Sensorwerten als DPT 9.001 (Β°C), DPT 9.005/9.008 (mg/L, pH), DPT 1.001 (Bool) etc. auf Gruppenadressen.
- Empfangen von Schaltbefehlen (Pumpe, Heizung, Solar, DMX-Szenen, Dosierung) und Γbersetzen in
/setFunctionManually-Calls. - Konfiguration per Web-UI (WLAN, Controller-URL, GA-Mapping-Tabelle).
- Persistente Konfiguration im NVS (Flash).
- Status-LEDs (WLAN, KNX-Bus, Fehler).
- Watchdog & automatischer Reconnect bei WLAN- oder Controller-Verlust.
- Optionales mDNS-Aufrufen fΓΌr automatische Controller-Erkennung.
| Bauteil | Beispiel / Hinweis | ca. β¬ |
|---|---|---|
| ESP32-Dev-Board | ESP32 DevKitC v4, AZ-Delivery ESP32, WEMOS D1 R32 | 5β10 |
| KNX-Transceiver-Modul | NCN5120-Breakout oder Selfbus-TPUART-Modul | 15β30 |
| DC/DC-Step-Down (KNX β 5 V) | NUR optional, siehe Stromversorgung unten | 3β6 |
| KNX-Busklemme | WAGO 216-201 (grΓΌn/gelb) | 2 |
| Netzteil 5 V (USB-C oder Hohlstecker) | fΓΌr ESP32 (empfohlene Variante) | 5β10 |
| Status-LEDs + VorwiderstΓ€nde | rot (Fehler), grΓΌn (WLAN), gelb (KNX-Bus) | 2 |
| GehΓ€use | DIN-Schiene 1 TE (z. B. Hager TE411-LeergehΓ€use) oder PrintgehΓ€use | 5β15 |
| Stift-/Buchsenleisten, Kondensatoren | Beschaltung laut NCN5120-Datenblatt | 3 |
Gesamt: ~30β60 β¬ je nach Beschaffung und ob eine eigene Platine oder ein Breadboard-/Steckboard-Aufbau gewΓ€hlt wird.
Der KNX-Bus liefert 30 V DC, aber nur wenige mA pro Teilnehmer (typ. 10 mA, per ETS zugeteilt). Ein ESP32 zieht im WLAN-Peak bis zu 240 mA β das ist das 24-Fache des Bus-Budgets.
Echte Optionen:
- (A) ESP32 separativ speisen (empfohlen): USB-C-Netzteil oder 24-V-Aux-Netzteil + Step-Down. NCN5120 holt nur seine ~6β8 mA aus dem Bus. Sauber, zulassungsfreundlich.
- (B) Bus-Powered: Nur mΓΆglich mit extremem Power-Management (Deep-Sleep zwischen Polls, WiFi nur kurz an). Realistisch nicht mit dem Polling-Intervall, das wir brauchen. β verworfen.
Entscheidung: Variante (A) β separate Speisung des ESP32.
- Framework: PlatformIO (Arduino-Core) β schneller Einstieg, groΓe Bibliotheksauswahl.
- Sprache: C++17.
- AbhΓ€ngigkeiten (vorgesehen):
- WiFiClientSecure / WiFiClient (ESP32 Core)
- HTTPClient (ESP32 Core)
- ArduinoJson β₯ 7
- KNX-Stack: thelsing/KnxDevice oder Selfbus β Entscheidung offen.
- Preferences (NVS) fΓΌr Konfiguration
- LittleFS + Web-UI (z. B. ESPAsyncWebServer)
- Konfigurationsdatei:
platformio.inimit passendemboard. - Build:
pio run, Flash:pio run -t upload.
Die Zuordnung Controller-Feld β KNX-Gruppenadresse (inkl. DPT) wird in einer Mapping-Tabelle definiert (z. B. in der Web-UI oder als JSON-Datei im Flash). Beispiele:
| Controller-Feld | KNX DPT | Richtung | Beispiel-GA |
|---|---|---|---|
TEMP_POOL |
9.001 (Β°C) | ControllerβKNX | 5/1/1 |
PH_VALUE |
9.005 (pH) | ControllerβKNX | 5/1/10 |
PUMP_STATE |
1.001 (T/A) | ControllerβKNX | 3/1/1 |
PUMP_CMD |
1.001 (T/A) | KNXβController | 3/1/2 |
HEATER_CMD |
1.001 | KNXβController | 3/2/1 |
ERROR_CODE |
5.010 | ControllerβKNX | 5/5/1 |
- Nur Lesen ist ungefΓ€hrlich. Sobald Befehle vom KNX an den Controller gesendet werden, kannst du Pumpen, Heizungen und Dosierung schalten β bitte sachgemÀà absichern (Hardware-Notausschalter, Freigabesignale, Begrenzung der Kommando-GAs auf vertraute Teilnehmer).
- KNX-Bus und 230 V strikt trennen. FΓΌr die 30 V KNX-Leitung gilt die ortsfeste Elektroinstallation β im Zweifel von einer Fachkraft prΓΌfen lassen.
- Zertifikate / Auth am Violet Controller: TLS ggf. mit eigenem CA-Zertifikat (Self-Signed-Support geplant).
v0.1.0 getaggt β Phasen 0, 1, 3β9 abgeschlossen. pio run -e esp32dev
baut sauber (RAM 15 %, Flash 63 %), pio test -e native 13/13 grΓΌn.
Bleibt: Hardware-Beschaffung + Schaltplan-Validierung (Phase 2.2), reale
ETS-/Feldeinsatz-Tests (Phase 9 manuell).
Siehe TODO.md fΓΌr die detaillierte, abarbeitbare Aufgabenliste
und docs/ fΓΌr die Architektur-Entscheidungen und Spezifikationen:
| Dokument | Inhalt |
|---|---|
docs/adr/0001-knx-stack.md |
Architektur-Entscheidung: thelsing/knx (+ STKNX-Alternative) |
docs/hardware.md |
Pin-Tabelle, Blockschaltbild, Breadboard-Anleitung, LED-Codes |
docs/firmware.md |
Architektur, Module, State Machine, Build & Flash |
docs/violet-api-fields.md |
Alle 143 Controller-Felder, Endpunkte, Zustandscodes |
docs/knx-mapping.md |
Mapping-Tabelle Controller-Feld β KNX-DPT/GA |
docs/hardware-bom.md |
Konkrete Einkaufsliste (~88 β¬) mit BegrΓΌndung |
hardware/case/README.md |
3D-Druck DIN-Schienen-GehΓ€use (OpenSCAD) |
knx_prod/README.md |
ETS-importierbare .knxprod-Pipeline |
CHANGELOG.md |
Versionierung + Release-Notes |
TODO.md |
10-Phasen-Roadmap mit Checkboxen |
AGPL-3.0-or-later Β© Xerolux.
BeitrΓ€ge willkommen β bitte vor grΓΆΓeren Arbeiten ein Issue aufmachen.
violet-poolController-apiβ API-Client & Spezifikation der Endpunkte.violet-hassβ Home-Assistant-Integration fΓΌr den Violet Pool Controller.- Selfbus β Open-Source-KNX-Hardware/Software, Inspiration fΓΌr TPUART-Aufbau.
- thelsing/KnxDevice β schlanke KNX-Stack-Implementierung fΓΌr MCU.