Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

violet-knx-bridge

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.

License: AGPL-3.0-or-later


Warum?

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.

Architektur (Konzept)

 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” 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:

  1. Polling (z. B. alle 5–10 s): ESP32 β†’ Controller GET /getReadings?ALL β†’ JSON parsen β†’ Werte auf konfigurierte KNX-Gruppenadressen (GAs) senden.
  2. Kommando: KNX-Telegramm auf einer Kommando-GA β†’ ESP32 β†’ GET /setFunctionManually?... an den Controller.

Features (geplant)

  • 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.

Hardware (Übersicht)

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.

⚠️ Stromversorgung – kritischer Designpunkt

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.


Firmware (geplant)

  • 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.ini mit passendem board.
  • Build: pio run, Flash: pio run -t upload.

KNX-Mapping (Konzept)

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

Sicherheitshinweise

  • 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).

Status & Roadmap

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

Lizenz

AGPL-3.0-or-later Β© Xerolux.

BeitrΓ€ge willkommen – bitte vor grâßeren Arbeiten ein Issue aufmachen.


Danksagung / Verwandte Projekte

  • 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.

Releases

Packages

Used by

Contributors

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /