SDM630 Modbus V2 Stromzähler via EspEasy auslesen

Begonnen von fhemfreund, 12 Dezember 2017, 21:44:16

Vorheriges Thema - Nächstes Thema

fhemfreund

Möchte hier mal mein neues Projekt vorstellen - SDM630 Modbus V2 Stromzähler via EspEasy auslesen (und damit in Fhem einbinden).

Inspiriert wurde das ganze durch diesen Thread https://forum.fhem.de/index.php/topic,61731.0.html. Allerdings hat das Zählen mit einem DRT428 und EspEasy bei mir nicht so zuverlässig funktioniert, d.h. der aktuelle Zählerstand ist immer wieder im Laufe von Wochen vom berechneten Wert in Fhem abgewichen. Darauf hin habe ich mich für den SDM630 entschieden, da dieser (Mess-) Werte via Modbus ausgibt.

Im Esp Playground gibt es ein Testmodul für den SDM120C (nicht von mir), das ich entsprechend für die SDM630 Register angepasst habe. Das gleiche gilt für eine Library, auf die das Modul aufsetzt. Man kann nun im Prinzip alle SDM630 Parameter verwenden und in Fhem weiter verarbeiten. Die Anpassung des Moduls und Compilierung der Esp-FW erfolgt via Atom IDE. Die fertige FW muss nur noch auf den Esp (habe einen Wemos D1 verwendet) geflasht werden - fertig.

Die Hardware ist in ein Hutschienengehäuse eingebaut. Zusätzlich habe ich einen DS18B20 Temperatursensor und eine Status LED integriert. Diese wird per Fhem non-blocking alle 10s für 500ms getiggert und gibt ein Feedback, dass eine Verbindung zu Fhem besteht.

Habe mal ein 3 Bilder (Fhem Readings, Testaufbau und Esp mit RS485 Interface im Hutschienengehäuse) zur Illustration angehängt. Falls Interesse besteht, kann ich mehr Informationen hier reinstellen.

Andreas

ThomasW

Hallo Andreas,

also ich hätte schon Interesse an mehr Informationen über EspEasy mit SDM630 Modbus.


Ich sollte demnächst 3 dieser tollen Zähler verbauen, hätte sonst hierzu einen Raspi spendiert.
Kann ich an de 485er Bus mit EspEasy ohne weiteres mehrere SDM's anschliessen,
oder benötige ich für jeden einen eigenen Eingang bzw. Esp?

Gruß Thomas
FHEM auf RPi Rev.2 mit COC, FS20-Module, LAN-Steckdosen, JeeLink - 4x LaCrosse-Sensoren

fhemfreund

Hallo Thomas,

Zitat
also ich hätte schon Interesse an mehr Informationen über EspEasy mit SDM630 Modbus
Was genau wäre für dich interessant?

Zitat
Kann ich an de 485er Bus mit EspEasy ohne weiteres mehrere SDM's anschliessen ...
Habe ich persönlich nicht ausprobiert - kann ich leider nichts zu sagen. Da aber die 12 Device Slots im EspEasy recht schnell auch schon mit verschiedenen SDM630 Messwerten gefüllt werden können, macht es ev. Sinn je SDM einen Esp zu verwenden. Kostet ja alles nicht sehr viel. Meine Hutschienen-Lösung schätze ich mal auf ~15€ (ohne Gehäuse).

Zitat
...hätte sonst hierzu einen Raspi spendiert.
Diesen Gedanken hatte ich auch erst - die Installation, Pflege und ggf. Updates usw. sind aber doch höher als bei einem Esp. Und nicht zuletzt ist in meiner Unterverteilung nicht sehr viel Platz - insofern kam mir die Kompaktheit einer Esp Lösung sehr entgegen.

Andreas

tomster

Servus Andreas,
ich hab auch Interesse.
Kannst Du bitte noch genauere Infos zum Platinenaufbau posten?
Das möcht ich unbedingt nachbauen!
Danke,
Tom

ThomasW

Hallo Andreas,

und ich dachte schon, daß ich der einzige bin der das nachbauen möchte.

Evtl. stell ich mich auch mal wieder etwas blöde an, spiele gerade das Ganze im Kopf durch
und da sind viele Fragen.
Habe noch nie mit EspEasy gearbeitet, auch mit Programmierungen bin ich nicht so bewandert.
Wahrscheinlich stehe ich mir mal wieder selbst im Weg.
Ich liste mal einige Sachen auf.
- Einstellungen bzw. Besonderheiten von EspEasy
- Änderungen in den Modulen bzw. die Module als Anhang
- Schaltung, Rs485 Module oder nur Pegelwandler, Netzteil
Also eigentlich Alles

Gruß Thomas
FHEM auf RPi Rev.2 mit COC, FS20-Module, LAN-Steckdosen, JeeLink - 4x LaCrosse-Sensoren

fhemfreund

#5
Thomas, Tom,

Zitat
ich hab auch Interesse
und ich dachte schon, daß ich der einzige bin der das nachbauen möchte

Ok - versuche mal die Fragen der Reihe nach zu beantworten.

Zitat
Evtl. stell ich mich auch mal wieder etwas blöde an, spiele gerade das Ganze im Kopf durch und da sind viele Fragen
Habe noch nie mit EspEasy gearbeitet, auch mit Programmierungen bin ich nicht so bewandert

Für EspEasy muss man (zumindest am Anfang) nichts programmieren. Sobald die Firmware auf den Esp ist (bei mir ein Wemos D1 mini, da er schon einen Micro USB Anschluss hat und man mit einem USB Kabel und entsprechender Software auf einem PC sofort loslegen kann) ist dieser nach der Ersteinrichtung im Netz via WebInterface erreichbar und kann direkt konfiguriert werden. Ein guter Einstieg dazu ist unter https://www.letscontrolit.com/wiki/index.php/ESPEasy zu finden. Für erste Tests kann diese Firmware https://github.com/letscontrolit/ESPEasy/releases/download/v2.0.0-dev12/ESPEasy_v2.0.0-dev12.zip verwendet werden. Damit kann man auf einem Breadboard z.B. mal einen Temperatursensor anschließen und diesen in EspEasy und anschließend in Fhem (z.B. via ESPeasy Modul) integrieren. Sobald man etwas mit der Materie vertraut ist, und das Prinzip dahinter verstanden hat, kann man ans Eingemachte (sprich eine eigene Version compilieren) gehen. Für erste SDM630 Tests kann ich auch meine Firmware hier hochladen - allerdings deckt die nur meine Parameter des SDM630 hab - da dieser aber ~80 Parameter zur Auswahl hat, wird man das irgendwann selbst anpassen wollen.

Zitat
Änderungen in den Modulen bzw. die Module als Anhang

Das SDM Modul wird direkt in die eigencomplilierte Firmware 'eingebaut'. Sobald die Struktur einmal steht, muss man die entsprechenden Register auswählen, compilieren und Firmware auf den Esp laden - fertig. Wenn die Basics ok sind, kann ich diesen Prozess mal näher erklären.

Zitat
Schaltung, Rs485 Module oder nur Pegelwandler, Netzteil
Kannst Du bitte noch genauere Infos zum Platinenaufbau posten?

Ich habe folgende Teile verwendet:

RS485 Modul: https://www.ebay.de/itm/RS-485-bidirektionaler-TTL-3-3V-5V-Schnittstellen-Adapter-Single-Chip-Arduino-%C2%B5C/292089610806?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649
Wemos: http://www.ebay.de/itm/WeMos-D1-mini-Zubeh%C3%B6r-und-Shields-ESP8266-IOT-WLAN-WiFi-NodeMcu-Arduino-IDE/172760794909?ssPageName=STRK%3AMEBIDX%3AIT&var=471545754026&_trksid=p2057872.m2749.l2649
Netzteil: https://www.ebay.de/itm/myrra-47152-Trafo-100V-240V-AC-DC-Wandler-5V-900mA-Electronic-Transformer-854800/362096347383?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

Die Verschaltung ist wie folgt:


Verbindung Wemos mit dem RS485 Modul:
Wemos D6   (GPIO 12) -> RS485 RX (im SDM630 ESPEasy Modul als 1. GPIO bezeichnet)
Wemos D7   (GPIO 13) -> RS485 TX (im SDM630 ESPEasy Modul als 2. GPIO bezeichnet)
Wemos 3.3V           -> RS485 VCC
Wemos G              -> RS485 GND

Direkt am RS485 Modul zwischen VCC und GND ist ein 100nF Kondensator angeschlossen

Verbindung RS485 Modul mit dem SDM630:
RS485 A+            -> SDM630 A
RS485 B-            -> SDM630 B

zwischen SDM630 A und B ist ein 120Ohm Widerstand zur Bus-Terminierung angeschlossen. SDM630 G ist nicht verwendet

Verbindung Netzteil zu Wemos:
Netzteil +5V        -> Wemos 5V
Netzteil -          -> Wemos G

Direkt am Wemos zwischen 5V und G ist ein 560uF/6.3V Elko (Low ESR) und parallel dazu ein 100nF Kondensator angeschlossen

Temperatursensor DS18B20:
DS18B20 Pin 1       -> Wemos G
DS18B20 Pin 2       -> Wemos D4 (GPIO 02)
DS18B20 Pin 3       -> Wemos 3.3V

Zwischen DS18B20 Pin 2 und 3 ist ein 4,7kOhm Widerstand angeschlossen

Status LED:
LED +               -> über Widerstand 1kOhm an Wemos 3.3V
LED -               -> Wemos D1 (GPIO 05)


Eine Platine habe ich nicht dazu gemacht - meine Schaltung ist auf einer Lötpunktraster Platine aufgebaut (siehe Bilder). Zur Info: auf dem Breadboard war der Temperatursensor noch an D5 (GPIO 14) angeschlossen.
Im Übrigen geht das Ganze auch von der Software her mit einem SDM120 und 220. Habe ich allerdings selbst nicht getestet.

Wenn weitere Fragen dazu sind, kann ich gerne mehr hier schreiben.

Andreas

tomster

Andreas, vielen Dank!

Da war ich ja von meinem theoretischen Ansatz schon Mal nicht völlig falsch unterwegs, als ich mir vor einigen Monaten Mal ein paar dieser RS485-Modulchen bestellt hab. Bislang (eigentlich immer noch) hat mir aber das praktische Know-How der softwareseitigen Anbindung gefehlt.
Vielleicht schaff ich es ja über die Feiertage Deine Schaltung nachzubauen. Wenn Du Deinen Sketch noch zur Verfügung stellen könntest, wär das prima!

fhemfreund

ZitatVielleicht schaff ich es ja über die Feiertage Deine Schaltung nachzubauen

Bin gespannt ;-) Das sollte ja (siehe Fotos) auf einem Breadboard keine große Aktion sein. Wichtig ist, dass der RS485 Adapter eine automatische Flow-Control hat, da das EspEasy Modul z.Z. keine DERE Steuerung verwendet (wie das z.B. für einen Max485 direkt benötigt würde). Wenn du exakt den gleichen Adapter verwendest passt das alles.

ZitatWenn Du Deinen Sketch noch zur Verfügung stellen könntest, wär das prima!

Ich habe mal meine Wemos EspEasy Firmware (4096 (4K) Version) mit dem SDM630 Modul hier angehängt. Damit sollten dann schon auf jeden Fall Daten im EspEasy auftauchen. Man kann eine erfolgreiche Verbindung zum EspEasy auch gut im SDM Display mit dem Telefonhörer Symbol kontrollieren. Ebenfalls müssen auf dem RS485 Adapter die TX/RX LEDs flackern.

Andreas

halloween

#8
Klappt das mit dieser Firmware aus dem letzten Post schon alles? Also einfach nur flashen und es funktioniert?

Funktioniert das Auslesen auch testweise ohne Kondensator und Elko? Also nur mal kurz zum testen, bekommt man da Werte übermittelt oder sind diese Bauteile zwingend notwendig?

Wo anders hab ich auch schon was gefunden, dass man einen internen pull-up im esp8266 auf 3,3V legen kann (per Firmware ?) und das genau das selbe wäre? Wieder wo anders wurde ein 1k Ohm Widerstand auf GND und irgend einen Daten-PIN gelegt, wo der Konverter dran hängt...

Wenn ich also nur die Daten auslesen will ohne sonstige LEDs usw, dann benötige ich nur Strom von einem Netzteil, einen Wemos D1 mini oder NodeMCU und den RS485-Adapter sowie den einen Elko und Kondensator?

Richtig?


------------

Ich bin noch neu hier, verschwindet diese doofe Captcha-Abfrage bei jedem geschriebenen Eintrag irgendwann?

Hollo

#9
Gehört nicht ganz direkt dazu, aber beim Lesen hatte ich ein spontanes Verständnisproblem:
Kann ein Maple Cul/Cun nicht ebenfalls RS485 Modbus?
Wenn ja, entspricht das quasi dem RS485-USB-Adapter, der dann die Daten per (W)LAN an FHEM gibt und sie dort per SDM220 bzw. SDM630 Modul verarbeitet werden können?

Aktuell habe ich einen SDM220 per RS485-USB direkt am FHEM Rechner.

FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

fhemfreund

Zitat
Klappt das mit dieser Firmware aus dem letzten Post schon alles? Also einfach nur flashen und es funktioniert?

Ja so ist es. Diese habe ich zur Verfügung gestellt, um die grundlegenden Funktionen / den Schaltungsaufbau direkt testen zu können, ohne sich im ersten Schritt um die Firmware kümmern zu müssen.
Es ist aber zu beachten, dass der SDM sehr viel mehr Parameter zum Auslesen zur Verfügung stellt, sodass ggf. eine Anpassung der Firmware nötig ist. Wie gesagt, kann ich bei Bedarf die Schritte dazu
mal separat erklären. Habe mal ein Bild mit dem aktuellen Umfang der Parameter (die ich ausgewählt habe) angehängt.

Zitat
Funktioniert das Auslesen auch testweise ohne Kondensator und Elko? Also nur mal kurz zum testen, bekommt man da Werte übermittelt oder sind diese Bauteile zwingend notwendig?

Das sollte testweise gehen - beide Bauteile werden zur Stabilisierung der Versorgungsspannung verwendet.

Zitat
Wo anders hab ich auch schon was gefunden, dass man einen internen pull-up im esp8266 auf 3,3V legen kann (per Firmware ?) und das genau das selbe wäre? Wieder wo anders wurde ein 1k Ohm Widerstand auf GND und irgend einen Daten-PIN gelegt, wo der Konverter dran hängt...

Verstehe leider nicht worauf du hinaus willst - bräuchte mehr/genauere Infos / Beschreibung ...

Zitat
Wenn ich also nur die Daten auslesen will ohne sonstige LEDs usw, dann benötige ich nur Strom von einem Netzteil, einen Wemos D1 mini oder NodeMCU und den RS485-Adapter sowie den einen Elko und Kondensator?

Richtig?

So ist es. Die LED habe ich nur für mich als 'Keep-Alive' Indikator verwendet. Zum SDM Auslesen wird diese nicht gebraucht.

Andreas

fhemfreund

Zitat von: Hollo am 12 Januar 2018, 21:39:32
Gehört nicht ganz direkt dazu, aber beim Lesen hatte ich ein spontanes Verständnisproblem:
Kann ein Maple Cul/Cun nicht ebenfalls RS485 Modbus?

Könnte sein, dass das jemand mit dem MapleCUL/CUN gemacht hat - kann ich aber leider nichts dazu sagen. Gibt es ev. einen Link irgendwo dazu? Wäre mal interessant zu sehen, wie das ggf. umgesetzt worden ist.

Zitat
Wenn ja, entspricht das quasi dem RS485-USB-Adapter, der dann die Daten per (W)LAN an FHEM gibt und sie dort per SDM220 bzw. SDM630 Modul verarbeitet werden können?

Ganz wichtig hier - ev. habe ich das im Eingangspost nicht prominent genug hervorgehoben: die ESPEasy Lösung braucht *kein* separates SDM220 bzw. SDM630 Modul mehr auf FHEM Seite !
Alle SDM Daten werden in ESPEasy auf dem Wemos aufbereitet und schon fix und fertig an FHEM (via FHEM ESPEasy Modul - so wie auch für zig andere Anwendungen wie hier im Forum in vielen Threads beschrieben) weiter gegeben.

Zitat
Aktuell habe ich einen SDM220 per RS485-USB direkt am FHEM Rechner.

Das hat halt den Nachteil (deswegen habe ich auch eine Alternative gesucht) Kabel (RS485 oder USB) vom Zähler zum FHEM Rechner legen zu müssen. Die ESPEasy/Wemos Lösung macht das halt per WLAN.

Andreas

PeMue

Zitat von: Hollo am 12 Januar 2018, 21:39:32
Kann ein Maple Cul/Cun nicht ebenfalls RS485 Modbus?
Ggf. hat Ranseyer da etwas gemacht, aber ich meine, der mapleCux kann kein RS485. Es sei denn, Du hängst an die freie Schnittstelle ein RS4852seriell Modul dran.

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Hollo

Genau das meinte ich vermutlich.
War durch den Wiki-Artikel drauf gekommen...
ZitatÜber USB werden zwei weitere Schnittstellen angelegt, der Netzwerkzugriff erfolgt über die Ports 2324 und 2325.

-Ein angeschlossener HM-MOD-UART kann in FHEM eingebunden werden. (5. Funkmodul)
-ein Arduino kann ein MySensors Gateway bilden
-ESP8266 ...
-RS485 ...
-1Wire
Somit müsste ich darüber doch mein USB-RS485 auch "LAN-fähig" machen können!?
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

_Niemand_

Hallo Andreas,
das ist eine super Idee mit ESP einen SDM auszulesen.
Weißt Du zufällig (oder hast Du es sogar schon getestet) ob man auch den 1-phasigen SDM230 mit Deiner Software auslesen kann, oder muss man da gewisse Dinge anpassen?

Danke!
Viele Grüße 
    Heinz