FKW9 / esp-smartmeter-netznoe

Read Smartmeter Data and store to SD Card or publish to Graphite
MIT License
14 stars 4 forks source link
database dlms esp32 grafana graphite-client iot kaifa netznoe obis pcb-design pcb-layout sagecom smartmeter tft-display wifi

ESP32 Smartmeter Logger für P1 Kundenschnittstelle

Musste mich gegen ein DIN-Hutschienengehäuse entscheiden, da in meinem Schaltschrank kein Platz mehr war...

Quellen

Unterstützte Smartmeter

Unterstützte (bekannte) Netzbetreiber

Features

Allgemeines

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.

Bekannte Probleme

Leistungsfaktor ist teils unglaubwürdig, siehe dazu Issue #7

Software Installation

Das Projekt wurde in PlatformIO entwickelt. Um es zu kompilieren, bitte Einstellungen in platformio.ini übernehmen.

key.h:

config.h:

TFT Display Setup

siehe lib/display/README.md

Optionale Einstellungen

lib/fileserver/fileserver.h:

Test Setup

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

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]

Hardware

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:

Schaltplan, BOM, Anmerkungen, Zukünftige Verbesserungen der PCB usw. befinden sich im Ordner hardware.

Für einen "simplen" Aufbau wird folgendes benötigt:

Verbindungen zwischen ESP und M-Bus:

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

Verbindungen zwischen ESP und TFT Display:

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)

Verbindungen zwischen ESP und TFT Display:

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

Showcase

Fileserver

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.

Visualisierung

Zur Visualisierung wird Grafana (und Graphite) verwendet. Beide Programme laufen auf einem NAS (Synology DS218).

TFT Display

PCB

Zukünftiges

Es gibt noch viele Ideen für weitere Entwicklungen, siehe dazu: