Du hast einen Ultraschall-Wasserzähler Axioma Qalcosonic W1 im Keller und willst den Zählerstand in Home Assistant sehen? Dann brauchst du weder eine Kamera mit Texterkennung noch eine Cloud oder einen AES-Schlüssel vom Wasserversorger. Der Zähler hat einen NFC-Chip, und den kannst du mit einem ESP32 und einem PN5180-NFC-Modul direkt auslesen. Die Werte landen per ESPHome lokal in Home Assistant und im Energie-Dashboard.
In diesem Beitrag zeige ich dir Schritt für Schritt, wie ich das umgesetzt habe, mit kompletter ESPHome-YAML zum Kopieren.

Das Wichtigste in Kürze
- Was: Zählerstand, Durchfluss, Wasser- und Umgebungstemperatur, Batteriestand und Warnungen (Leckage, Rohrbruch, Rückfluss, Frost) vom Qalcosonic W1 in Home Assistant.
- Wie: NFC-Auslesung mit PN5180 + ESP32 D1 Mini und ESPHome.
- Lokal: keine Cloud, keine Kamera, kein AES-Key, keine Freischaltung durch den Versorger.
- Intervall: alle 5 Minuten (einstellbar).
- Aufwand: 9 Kabel stecken, YAML kopieren, flashen, Modul richtig positionieren.
Warum NFC statt Kamera oder Funk?
Für den Qalcosonic W1 gibt es mehrere Wege nach Home Assistant:
| Weg | Was du brauchst | Nachteil |
|---|---|---|
| NFC (dieser Beitrag) | ESP32 + PN5180 + ESPHome | Pro Abfrage nur eine Momentaufnahme, kein Live-Durchfluss im Sekundentakt |
| wM-Bus-Funk | Der Versorger muss M-Bus im Zähler freischalten, dazu ein Funkempfänger | Abhängig vom Versorger |
| Kamera (AI-on-the-edge) | ESP32-CAM | Texterkennung, beschlagenes Glas, Einrichtungsaufwand |
Der NFC-Weg funktioniert ohne den Versorger und ist schnell aufgebaut. Ich hatte vorher eine Kamera-Lösung im Einsatz und bin komplett auf NFC umgestiegen.
So funktioniert es
Im Qalcosonic W1 steckt ein NFC-Chip vom Typ ST25DV04K (ISO 15693, NFC Typ 5). Über diese Schnittstelle liest auch die Hersteller-App die Werte per Handy aus.
- Der PN5180 baut ein NFC-Feld auf und fragt den Chip ab. Normale Module wie PN532 oder RC522 können ISO 15693 nicht und funktionieren deshalb nicht.
- Der ST25DV unterstützt Energy Harvesting: Der NFC-Teil wird aus dem Feld des Lesers versorgt. Die ESPHome-Komponente prüft das vor jeder Abfrage, um die Zählerbatterie so wenig wie möglich zu belasten.
- Der Zähler liefert die Daten als M-Bus-Datensatz. Die Komponente wertet ihn aus und gibt die Werte als Sensoren an Home Assistant weiter.
- Ich lese alle 300 Sekunden aus. Laut Entwickler der Komponente kosten selbst 60 Sekunden nur etwa 1 % Zählerbatterie in 75 Tagen. 5 Minuten sind also schonend und für Verbrauchsstatistiken völlig ausreichend.
Teileliste
| Bauteil | Wofür |
|---|---|
| ESP32 D1 Mini (ESP32-WROOM-32) | Mikrocontroller mit WLAN und ESPHome |
| PN5180 NFC-Modul | liest den Zähler per NFC (ISO 15693) |
| 9 Jumperkabel Buchse–Buchse | Verbindung ESP32 ↔ PN5180 |
| 5-V-USB-Netzteil + USB-Kabel | Stromversorgung am Zähler |
| optional: Lochrasterplatine, Buchsenleisten | dauerhafter, kompakter Aufbau |
| optional: Gehäuse/Halter | Befestigung auf dem Zähler |
Wichtig: Nimm zum Flashen ein Datenkabel. Viele USB-Kabel können nur laden.
Verkabelung PN5180 → ESP32 D1 Mini
Der D1 Mini hat links und rechts je zwei Pinreihen. Die Angaben gelten für die Draufsicht mit USB-Buchse unten. Maßgeblich ist immer der Aufdruck neben dem Pin, denn bei Nachbauten kann die Lage abweichen.
| PN5180 | D1 Mini (Aufdruck) | GPIO | Lage am Board |
|---|---|---|---|
| 5V | VCC | – | rechts innen, 8. Pin |
| 3.3V | 3V3 | – | links innen, 8. Pin |
| GND | GND | – | rechts innen, 7. Pin |
| SCK | IO18 | GPIO18 | links innen, 4. Pin |
| MISO | IO19 | GPIO19 | links innen, 5. Pin |
| MOSI | IO23 | GPIO23 | links innen, 6. Pin |
| NSS | TMS | GPIO14 | links außen, 7. Pin |
| BUSY | IO16 | GPIO16 | rechts innen, 6. Pin |
| RST | IO17 | GPIO17 | rechts innen, 5. Pin |
Gut zu wissen:
- Keiner der Pins ist ein Boot- oder Strapping-Pin (GPIO 0, 2, 5, 12, 15). Der ESP32 startet also ganz normal.
- NSS liegt auf TMS (GPIO14) in der äußeren Reihe. Das wird gern übersehen.

Die ESPHome-Komponente qalcosonicnfc
Die eigentliche Arbeit macht die ESPHome-Komponente qalcosonicnfc von dbmaxpayne:
👉 github.com/dbmaxpayne/esphome_qalcosonicnfc (Lizenz: LGPL-2.1, basiert auf der PN5180-Bibliothek von Andreas Trappmann)
Ich binde sie lokal ein, statt sie bei jedem Kompilieren von GitHub zu laden. So läuft der Build auch dann, wenn sich im Repository etwas ändert oder GitHub nicht erreichbar ist.
So legst du die Dateien in Home Assistant ab:





