Skip to content

Read Smartmeter Data and store to SD Card or publish to Graphite

License

Notifications You must be signed in to change notification settings

FKW9/esp-smartmeter-netznoe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  • Kaifa MA309M
  • Sagecom T210-D

Unterstützte (bekannte) Netzbetreiber

Features

  • 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

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:

  • KEY[]: Hier muss der Entschlüsselungs-Code eingetragen werden

config.h:

  • SD_CARD_LOGGING: Speichern auf SD-Karte bzw. den Fileserver (de)aktivieren
  • USE_GRAPHITE: Daten an Graphite senden (de)aktivieren

TFT Display Setup

siehe lib/display/README.md

Optionale Einstellungen

lib/fileserver/fileserver.h:

  • default_httppassword = "admin": Fileserver Login Username
  • default_httppassword = "smartmeter": Fileserver Login Passwort

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]
Loading

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:

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

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: