- DLMS Entschlüsselung: esphome-dlms-meter
- Datenlogger: ESPLogger
- Fileserver: esp32-asyncwebserver-fileupload
- weitere siehe platformio.ini
- Kaifa MA309M
- Sagecom T210-D
- Lest alle verfügbaren OBIS Daten von der Kundenschnittstelle P1 aus
- Speichert alle Daten auf einer SD-Karte im CSV Format ab
- Daten können über einen Webserver heruntergeladen werden
- Daten können an eine Graphite-Datenbank gesendet werden
- On-board Feuchte und Temperatursensor
- TFT Display auf dem aktuelle Werte zu sehen sind, welches sich automatisch nach 2 Minuten inaktivität ausschaltet.
- WiFi Manager zum bequemen Aufsetzen
Zunächst muss der Entschlüsselungscode angefordert werden. Für Niederösterreich E-Mail an: smartmeter@netz-noe.at
Information zur Kundenschnittstelle (netz-nö) sind hier zu finden: www.netz-noe.at/SmartMeter_Kundenschnittstelle_lektoriert.aspx.
Leistungsfaktor ist teils unglaubwürdig, siehe dazu Issue #7
Das Projekt wurde in PlatformIO entwickelt. Um es zu kompilieren, bitte Einstellungen in platformio.ini
übernehmen.
KEY[]
: Hier muss der Entschlüsselungs-Code eingetragen werden
SD_CARD_LOGGING
: Speichern auf SD-Karte bzw. den Fileserver (de)aktivierenUSE_GRAPHITE
: Daten an Graphite senden (de)aktivieren
siehe lib/display/README.md
default_httppassword = "admin"
: Fileserver Login Usernamedefault_httppassword = "smartmeter"
: Fileserver Login Passwort
In platformio.ini kann das Flag TEST_SETUP
verwendet werden, um ohne Smartmeter die Funktionalität zu überprüfen. Dazu muss mein Schlüssel in key.h verwendet werden.
flowchart LR
Smartmeter -- M-Bus --> a[M-Bus UART Konverter] -- UART --> ESP32
ESP32 --> Decrypting
subgraph ESP32
Decrypting -- save -->b[SD-Karte]
c[SD-Karte] -- serve --> Webserver
Decrypting-- push --> d[Graphite Server]
end
ESP32-- display -->e[TFT Display]
Für eine simplere Hardware Version siehe Release V0.1.
Als Folge meiner ersten Version wurde hier eine eigene PCB mit mehr Features entworfen. Diese beinhaltet folgende Kern-Komponenten:
- ESP32-S Modul (mit IPEX Konnektor für Antenne, falls schlechter Empfang)
- CP2102 USB-UART Konverter
- Micro SD-Karten Slot
- 1,77 Zoll TFT Display (160x128px)
- TSS721ADR M-Bus zu UART Konverter (Spende vom M-Bus Slave Click Board😉)
- Zweipolige Steckklemme für M-Bus Anschluss (TODO: besser wäre direkt eine RJ12 Buchse!)
- Micro USB für Versorgung bzw. Debugging
- Zwei Taster für die Menüführung
Schaltplan, BOM, Anmerkungen, Zukünftige Verbesserungen der PCB usw. befinden sich im Ordner hardware.
Für einen "simplen" Aufbau wird folgendes benötigt:
- M-Bus Slave Click Board (oder Kompatible)
- ESP32 Development Board, vorzugsweise mit SD-Karten Slot
- RJ12 Kabel bzw. (optional) RJ12 Adapter (Amazon, AliExpress) (Anmerkung: Die Gummiisolierung muss etwas getrimmt werden, damit er passt)
- (optional) Micro SD-Karten Modul
- (optional) 1,77 Zoll TFT Display (Amazon, AliExpress) (Anmerkung: Ist derzeit noch voll im Programm integriert und kann nicht einfach "auskommentiert" werden)
ESP32-S Modul | M-Bus Slave Board | RJ12 | Anmerkung | |
---|---|---|---|---|
3.3V | 3V3 | Versorgung | ||
GND | GND | Masse | ||
RXD 2 | GPIO16 | TX | Empfangene Daten vom M-Bus | |
TXD 2 | GPIO17 | RX | Optional, da wir keine Daten senden | |
MBUS1 | 3 | M-Bus Ausgang, Polarität egal | ||
MBUS2 | 4 | M-Bus Ausgang, Polarität egal |
ESP32-S Modul | TFT Display | Anmerkung | |
---|---|---|---|
3.3V | VCC | Versorgung | |
GND | GND | Masse | |
SCK | GPIO18 | SCK | |
MOSI | GPIO23 | SDA | |
MISO | GPIO19 | RES | |
GPIO25 | RS | ||
SS | GPIO5 | CS | |
GPIO26 | LEDA | Display an/aus (Hintergrundbeleuchtung) |
Achtung: Ob ein SPI Micro SD-Karten Modul kompatibel mit dem TFT Display ist, weiß ich nicht. Ich verwende die SD-Karte im 4-Bit SD Bus Mode, welcher folgend aufgelistet ist.
ESP32-S Modul | SD-Karte | Anmerkung | |
---|---|---|---|
3.3V | VDD | Versorgung | |
GND | VSS | Masse | |
GPIO2 | SD_DATA0 | DAT0 | |
GPIO4 | SD_DATA1 | DAT1 | |
GPIO12 | SD_DATA2 | DAT2 | |
GPIO13 | SD_DATA3 | CD/DAT3 | |
GPIO15 | SD_CMD | CMD | |
GPIO14 | SD_CLK | CLK | |
GPIO27 | SD_CD | CD | Card detect. Erkennt, ob SD-Karte physisch vorhanden ist (Schließer). |
Für jeden Monat wird eine Datei erstellt. Ein Monat hat ca. 60MB und dauert somit ungefähr 5 Minuten zum Herunterladen. Als Übersicht wird oben der SD-Karten Status (Freier Speicher, usw.) angezeigt.
Zur Visualisierung wird Grafana (und Graphite) verwendet. Beide Programme laufen auf einem NAS (Synology DS218).
Es gibt noch viele Ideen für weitere Entwicklungen, siehe dazu: