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

fhemfreund

#15
Zitat von: _Niemand_ am 09 April 2018, 16:20:44
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

Hallo Heinz,

Einen SDM230 habe ich nicht getestet. Mein Ansatz wäre, ggf. die SDM230 Register in der Firmware anzupassen und zu schauen, ob es geht. Da die Hardware Kosten sich doch sehr im Rahmen halten, kann man das ja einfach mal probieren. Wenn die Hardware steht, kann man mal ggf. nach den Registern schauen ... Allerdings kann ich nicht versprechen, dass es geht - wie gesagt ist es halt nicht getestet. Aber das war es in meinem Fall auch nicht ;-)

Die Register Infos zum SDM230 stehen übrigens in https://bg-etech.de/download/manual/SDM230-Modbus.pdf auf Seite 50 + 51. Habe mal diese mal auf die Schnelle mit den 630er Registern von https://bg-etech.de/download/manual/SDM630-Modbus-V2.pdf auf Seite 55 ff verglichen - würde mal vermuten, dass da nicht so grosse Unterschiede sind - sogar die Register Addressen sind gleich (natürlich unter Beachtung 3 Phasen vs. 1 Phasen Zähler).

Andreas

_Niemand_

Hallo Andreas,
Danke für die Infos. Sieht ja eigentlich gut aus, dass ich mit Deiner Konfiguration auch beim SDM230 erste Werte auslesen können sollte.

Habe mir mal die Teile bestellt und werde es demnächst testen. Bin schon sehr gespannt wie gut das läuft.
Vielleicht schon mal zwei Fragen:
1) Falls ich noch andere Register auslesen will, die bislang nicht zur Verfügung stehen, wie ändere ich das dann in der ESPEasy Konfiguration?
2) Läuft Dein ESP8266 stabil? Ich hatte in der Vergangenheit immer das Problem, dass das Modul nach gewisser Zeit sich aufhängte.
Danke+Viele Grüße
Heinz

_Niemand_

Hallo Andreas,
So.. die Teile sind angekommen und es läuft wunderbar! :)
Vielen Dank! Super Idee und super Arbeit!
Jetzt wäre nur noch interessant, wie das mit den zusätzlichen Registern einbauen funktioniert.
Wär nett, wenn Du vielleicht hier kurz beschreiben kannst wie das geht bzw. Deine Sourcefiles anhängst.

Danke!

Viele Grüße
Heinz

fhemfreund

#18
Hallo Heinz,

Zitat von: _Niemand_ am 13 April 2018, 19:49:34
So.. die Teile sind angekommen und es läuft wunderbar! :)
Vielen Dank! Super Idee und super Arbeit!

Danke - gerne. Das freut mich. Möchte aber noch sagen, dass andere auch wichtige Vorarbeit dazu im iNet geleistet haben - ist also nicht alles nur von mir ;-)

Zitat von: _Niemand_ am 13 April 2018, 19:49:34
Läuft Dein ESP8266 stabil? Ich hatte in der Vergangenheit immer das Problem, dass das Modul nach gewisser Zeit sich aufhängte

Häufiger Resets hatte ich mit meiner S0 Lösung (siehe Eingangspost) auch und somit falsche Werte. Das war daher der Auslöser für meine Arbeit. Da aber via Modbus immer konkrete Werte übertragen werden, machen Resets nichts aus - die Werte stimmen immer. Sobald der Esp rebootet verbindet er sich wieder mit dem SDM und liest die Werte weiter aus. Hänger kann man gut vermeiden, wenn man ein gutes Netzteil + Kondensatoren verwendet (habe ich oben auch beschrieben). Meine Lösung läuft nun seit ein paar Monaten ohne einen Hänger (aber mit gelegentlichen Resets, die aber wie gesagt kein Problem sind).

Zitat von: _Niemand_ am 13 April 2018, 19:49:34
Falls ich noch andere Register auslesen will, die bislang nicht zur Verfügung stehen, wie ändere ich das dann in der ESPEasy Konfiguration?

Habe das mal grob zusammengefasst. Wichtig ist: mit den verlinken Dateien funktioniert es - mittlerweile gibt es neuere Versionen, die ich aber nicht (!) getestet habe.


1) Download der Software
-> Atom IDE zum Compilen und Bauen der angepassten EspEasy Binary: https://www.letscontrolit.com/wiki/index.php/Tutorial_building_and_uploading_with_platformio
-> EspEasy Binaries: https://github.com/letscontrolit/ESPEasy/releases/download/v2.0.0-dev12/ESPEasy_v2.0.0-dev12.zip

2) Ziel ist es, mit den unten angepassten Files eine neue EspEasy Firmware zu bauen:
-> Anpassen des EspEasy Menüs im File: _P150_SDM630.ino
-> Anpassen der SDM Register im File: SDM_V2.h

Die Menüs geben vor, was später im WebInterface ausgewählt werden soll. Idealerweise die Parameter, die einem wichtig sind.
Die SDM Register sind selbsterklärend im SDM_V2.h File aufgeführt. Man muss nur noch die gewünschten Register hinzufügen.
Praktischerweise stehen die Hex-Werte der Register im SDM 230 Manual auf Seite 50 in der Spalte 'Modbus Protocol Start Address Hex'
schon 'mundgerecht' drin, sodass man diese nur abschreiben muss.

4) Kopieren der angepassten Files (+ ein benötigtes Headerfile) in die Espeasy Source File Struktur nach: /ESPEasy_v2.0.0-dev12/Source/src
-> _P150_SDM630.ino
-> SDM_V2.h
-> SoftwareSerial.h

Habe alle 3 Files an diesen Post angehängt.

5) Firmware in Atom IDE compilen und zum Esp hochladen

6) Fertig!


Wenn noch Fragen sind, einfach hier melden. Normalerweise schafft man das mit ein etwas Lesen + Probieren - ist auf jeden Fall keine Rocket-Science ;-)

Andreas

_Niemand_

Hallo Andreas,

danke für die Details. Werde ich, sobald mal Zeit ist, auf alle Fälle ausprobieren.

Viele Grüße
Heinz

_Niemand_

Hallo Andreas,

ich habe versucht das nach zu bauen.
Aber irgendwie ist da der Wurm drin.
Welche Build-Option (nach Drücken der F7-Taste im Atom) nimmst Du her?
Wenn ich "PIO build (dev_ESP8266_4096)"nehme sagt Atom:
...src/_P150_SDM630.ino: In function 'boolean Plugin_150(byte, EventStruct*, String&)':
Wenn ich "PIO build (normal_ESP8266_4096)" läuft der Build zwar durch, aber nach den Laden der Firmware in den ESP8226 gibt es  kein "Device" zur Auswahl welches "SDM630" heißt.
Ich habe alle drei Files von Dir in den "src" Ordner kopiert, oder müssen die h-files wo anders hin?
Danke+Viele Grüße
Heinz


fhemfreund

#21
Hallo Heinz,

Hast du zunächst mal versucht, mit meinen beiden Files zu compilen? (um sicher zu sein, dass deine Umgebung geht). Wenn du ein Projekt öffnest, müssen alle 3 Files im gleichen src Ordner inkl. des Headerfiles sein. Habe mal einen Screenshot zur Verdeutlichung angehängt und die wichtigen Infos schwarz umrandet.

Ich habe (via F7) den PIO Build (dev_4096) verwendet. Damit werden alle Plugins im Status 'Dev.' compiled (also auch unseres). Bei Build Optionen mit 'Normal' nicht - daher gibt es dann auch nicht unser SDM Device zur Auswahl.

Was mich noch wundert: eine 'PIO build (dev_ESP8266_4096)' Option habe ich nicht zur Auswahl - eine Auswahl meiner Optionen habe ich auch mal hier als Screenshot angehängt. Welche Software Versionen hast du verwendet? Bei mir sind es:

- AtomIDE:     1.22.1 x64
- Esp Sourcen: ESPEasy_v2.0.0-dev12.zip

Die Firmware (...\ESPEasy_v2.0.0-dev12\Source\.pioenvs\dev_4096\firmware.bin) habe ich mit dem esptool aus dem 'ESPEasy_v2.0.0-dev12.zip' File auf den Wemos geflasht.

Nehme mal an du hast auch das Tutorial unter https://www.letscontrolit.com/wiki/index.php/Tutorial_Install_Platformio beachtet?
Ein Sache die mir sehr geholfen hat: ich habe alles in eine VM (Oracle Virtual Box) gepackt - damit kann man jederzeit mit einem Klick 'ungewollte' Änderungen ohne grosse Probleme revidieren.

Andreas

_Niemand_

Hallo Andreas,
danke für Deine Hilfestellung. Leider klappt es bei mir immer noch nicht.
Die Anleitungen habe ich strikt befolgt, auch habe ich Deine Sourcen korrekt kopiert und als Ausgangspunkt "ESPEasy_v2.0.0-dev12.zip" genommen.
Der einzige Unterschied, den ich jetzt erkennen kann, ist die AtomIDE... meine ist die aktuelle (neuere) Version 1.25.1
Wenn ich da das dev-4096-Target builde gibt es die Fehlermeldungen... siehe Anhang.

Ich habe deshalb auch mal mit den neueren ESPMega-Sourcen versucht das Ganze zum Laufen zu bringen.. da ging zumindest der "normale"Build (aber eben auch nicht der "dev").
Mit den "ESPEasy_v2.0.0-dev12.zip"-Sourcen geht nicht mal der "normal" Build... scheint also was mit der Atom-IDE-Version zu tun zu haben.
Wenn ich mal Zeit habe, probiere ich es auch mal in einer "sauberen Virtual Box" Umgebung... (was nimmst Du dort eigentlich als "Gastsystem" Windows/Linux"?)

Viele Grüße
Heinz

fhemfreund

Zitat von: _Niemand_ am 16 April 2018, 21:15:16
...
Mit den "ESPEasy_v2.0.0-dev12.zip"-Sourcen geht nicht mal der "normal" Build... scheint also was mit der Atom-IDE-Version zu tun zu haben.
Wenn ich mal Zeit habe, probiere ich es auch mal in einer "sauberen Virtual Box" Umgebung... (was nimmst Du dort eigentlich als "Gastsystem" Windows/Linux"?)
...

Ja das denke ich auch. Würde das mal mit der gleichen Atom Version probieren (z.b. von hier https://github.com/atom/atom/releases/download/v1.22.1/AtomSetup-x64.exe). Und es macht tatsächlich Sinn das mal in einer sauberen VM zu versuchen. Habe bei mir Win 7 Prof. 64 Bit als Gast verwendet.

Andreas

_Niemand_

Hurra ... es läuft  :D

Habe das Problem (mit Googles Hilfe) gefunden und behoben.
Die Atom-IDE und auch das Betriebssystem waren nicht die Ursache warum der Build mit Fehler abgebrochen hatte.
Die Lösung findet sich hier:
https://github.com/letscontrolit/ESPEasy/issues/725
Die "Platformio"-IDE zieht leider inkonsistente Sourcen herunter.
Der Workaround ist aber einfach:
Im File /lib/IRemoteESP8266/ IRremoteESP8266.h

diese zwei Zeilen hinzufügen, dann klappts.
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))

Ich konnte nun auch meine Adressen für den SDM230 in die Sourcen von Andreas einbauen und bekomme nun endlich die Werte für Power/Strom usw. richtig für den SDM230 angezeigt.

Super Sache... und vor allem viel billiger und kleiner als die RasPi-Lösungen...

Danke nochmal an Andreas für das "veröffentlichen" hier im Forum...

fhemfreund

Zitat von: _Niemand_ am 18 April 2018, 18:47:29
Hurra ... es läuft  :D

Habe das Problem (mit Googles Hilfe) gefunden und behoben.
Die Atom-IDE und auch das Betriebssystem waren nicht die Ursache warum der Build mit Fehler abgebrochen hatte.
Die Lösung findet sich hier:
https://github.com/letscontrolit/ESPEasy/issues/725
Die "Platformio"-IDE zieht leider inkonsistente Sourcen herunter.
Der Workaround ist aber einfach:
Im File /lib/IRemoteESP8266/ IRremoteESP8266.h

diese zwei Zeilen hinzufügen, dann klappts.
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))

Ich konnte nun auch meine Adressen für den SDM230 in die Sourcen von Andreas einbauen und bekomme nun endlich die Werte für Power/Strom usw. richtig für den SDM230 angezeigt.

Super Sache... und vor allem viel billiger und kleiner als die RasPi-Lösungen...

Danke nochmal an Andreas für das "veröffentlichen" hier im Forum...

Na das freut micht aber :-)
Vielleicht baut ja der Eine oder Andere das noch nach und die Dokumentationsmühen haben sich gelohnt.

Habe mir mal deinen Link angeschaut - das ist krass. Gibt doch immer wieder was Neues. Scheinbar war das bei meinem initialen Build im Nov. noch kein Thema. Hatte übrigens letzte Woche nochmal einen Test-Compile gemacht - ohne Fehler (hatte das nochmal getestet bevor ich die Infos hier hochgeladen hatte)

Andreas

mac1001

Hallo,
das ist genau nachdem ich gesucht habe.
Ich werde das mit einem einphasigen Zähler nachbauen und bedanke mich schonmal vorab für die gute Vorarbeit und deren Doku!

Grüße
FHEM ZBoxNano Debian9, nanoCUL 868MHz, MAX!, Sonoff S20&Pow, Shelly1&2.5, WemosD1Mini&SDM230-Modbus, Raspi3&ConBeeII&Phoscon, Hue Lights, Xiaomi Sensors, espRGBWW

mac1001

Hab nun alle Teile erhalten, verbaut und die *.bin von fhemfreund probehalber geflasht.
Spannung und Gesamtverbrauch lassen sich damit problemlos darstellen ;)
Am erstellen einer eigenen *.bin für ein SDM230 hab ich allerdings noch Probleme.

Grüße
FHEM ZBoxNano Debian9, nanoCUL 868MHz, MAX!, Sonoff S20&Pow, Shelly1&2.5, WemosD1Mini&SDM230-Modbus, Raspi3&ConBeeII&Phoscon, Hue Lights, Xiaomi Sensors, espRGBWW

dindihi

Hallo,
danke für die super Arbeit!
Hab meinen SDM630 bis jetzt an nem Raspberry laufen.
Wollte dies jedoch auch mal probieren.
Alles soweit OK, Atom, compiliert, und uploaded. (einige Änderungen am source um mehr Register zu lesen).

Hab jedoch als RS485 so eins:
https://www.amazon.de/gp/product/B06XHHWLMW/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1

Was ich noch nicht ganz verstanden hab sind die Pin's:
DI,DE,RE,RO
DI+RO sind die Daten Pins.
In nem Arduino Thread hab ich gelesen, dass DE+RE verbunden an einem Pin sein sollen?
Hast Du da ne Info?
Besten Dank im Voraus.

fhemfreund

Es gibt unterschiedliche RS485 Module. Meine Lösung braucht eins mit automatischer Flow Control, sprich ohne DE/RE pins. Hatte mal seinerzeit diesen 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 Bay Link hier reingestellt. Mit dem geht es auf jeden Fall. Mit ca. 5€ hält sich das auch preislich in Grenzen.

Andreas


fhemfreund

#30
Aufgrund verschiedener Anfragen zur Compilierung via Atom-IDE und damit verbundenen Problemen (z.B. durch Updates etc.) anbei eine Anleitung, das Ganze erheblich einfacher via ArduinoIDE durchzuführen:

1) Arduino IDE mit ESPEasy_v2.0.0-dev12.zip exakt installieren nach


https://www.letscontrolit.com/wiki/index.php/Tutorial_Arduino_Firmware_Upload


Bitte genau die verwendeten File Versionen verwenden (insbesondere die ESPBoard Version 2.3.0).


2) Arduino-IDE stoppen


3) Libraries verschieben, da inkompatible/doppelte Versionen vorhanden sind, die von der Arduino IDE und vom ESPBoard Manager kommen

von Verzeichnis

c:\Portable\arduino-1.6.12\libraries\SD
c:\Portable\arduino-1.6.12\libraries\Servo
c:\Users\<Benutzername>\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\SoftwareSerial


nach Verzeichnis

c:\Portable\arduino-1.6.12\libraries.moved\SD
c:\Portable\arduino-1.6.12\libraries.moved\Servo
c:\Users\<Benutzername>\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries.moved\SoftwareSerial


verschieben


4) Nun die benötigten (neuen) Files


File        '_P150_SDM630.ino'                       => c:\<Pfad zu ESPEasySourcen>\ESPEasy_v2.0.0-dev12\Source\ESPEasy
File        'SDM_V2.h'                               => c:\Portable\arduino-1.6.12\libraries\SDM630
Verzeichnis 'espsoftwareserial-master.zip' entpacken => c:\Users\<Benutzername>\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\espsoftwareserial-master


kopieren. Diese sind unten angehängt.


5) In Arduino IDE 'ESPEasy.ino' öffnen und Zeile

von


//#define PLUGIN_BUILD_DEV


nach


#define PLUGIN_BUILD_DEV


auskommentieren. Sonst werden nur die Produktiven PlugIns kompiliert und nicht das gewünschte SDM630 PlugIn.


6) In Arduino IDE 'ESPEasy.ino' kompilieren + Upload auf Wemos


Andreas

Antimaster

Vielen Dank für deine Arbeit. Ich konnte jetzt mit der Anleitung des ESP erfolgreich laden. Leider habe ich danach starke Probleme mit der Stabilität gehabt, trotz Stützkondensatoren (Elko+ Metallschicht) und 2,1A Netzteil.
Nach einiger Recherche gab es wohl Stabilitätsprobleme mit der Version 2.0.0 und Kommunikation über HTTP. Nutzt du bei dir MQTT? Da ich zusätzlich noch meinen Gaszähler als Pulse-Counter darauf laufen habe und den Total-Wert dafür brauche, war das leider noch nicht die Lösung.
Daraufhin wollte ich dein Modul in die aktuelle ESPEasy-Version einprogrammieren. Dabei viel mir auf, dass die aktuelle Version bereits als Test-Modul die SDM630, SDM120 ... bereits drin hat. Also alles in die Arduino IDE, ESP-Board-Version aktualisieren und das Modul auf die benötigten Werte umschreiben. Großer Vorteil bei der Version ist, dass pro Device 4 Werte ausgelesen werden können.
Bisher läuft der ESP ohne Absturz seit ein paar Tagen durch.
Wer die Version nutzen will, wie folgt vorgehen:

1. Aktuelle EspEasyMega Version runterladen
2. Arduino IDE installieren wie im Beitrag vorher
3. aktuelle ESPBoard-Version 2.4.2 installieren
4. Alle libraries aus dem libraries-Ordner ersetzen mit den aus dem EspEasy-Paket (bei mir unter C:\Users\XXX\Documents\Arduino)
5. Den Ordner src im Mega-Verzeichnis umbenennen in ESPEasy
6. ESPEasy.ino starte
7. In ESPEasy-Global.h -->#define PLUGIN_BUILD_NORMAL auskommentieren mit //
8. In ESPEasy-Global.h -->//#define PLUGIN_BUILD_DEV aktivieren durch löschen von "//"
9. Compilieren, Laden, Fertig

Die Anpassung der auswählbaren Datenpunkte kann in der Datei _P078 erfolgen.



_Niemand_

Hallo Antimaster,
wie ist das denn gemeint:
ZitatLeider habe ich danach starke Probleme mit der Stabilität gehabt
?

Ist bei Dir der ganze ESP gecrasht, oder/und lieferte der viele NAN-Readings?
Wenn letzteres Problem (eine Menge NAN-Readings) sich auch durch ein Update auf die neue ESPEasyMega-Version beheben lässt, dann werde ich da wohl auch mal ausprobieren..  :D

Und ... was verstehst Du unter:
ZitatGroßer Vorteil bei der Version ist, dass pro Device 4 Werte ausgelesen werden können.
In der "alten" Version kann ich bis zu12 Werte vom Device (bei mir SDM230 oderSDM530) holen (In der ESPMegaWeboberfläche => Devices-Reiter,  dann auf den blauen Pfeil ">" drücken, dann kommen noch 2x 4 konfigurierbare Werte). Falls es in der neuen Version NUR noch 4 Werte wären, wäre das ein Rückschritt oder meinst Du vielleicht hier was anderes?

Danke+Viele Grüße

mac1001

Hallo,

hat sich hier nochmal jemand versucht bzw. eine Version am laufen die nicht so viele NAN Werte liefert?

Gruß Marco
FHEM ZBoxNano Debian9, nanoCUL 868MHz, MAX!, Sonoff S20&Pow, Shelly1&2.5, WemosD1Mini&SDM230-Modbus, Raspi3&ConBeeII&Phoscon, Hue Lights, Xiaomi Sensors, espRGBWW

fhemfreund

Also ich kann bestätigen, dass das Ganze mit den von mir genannten SW-Versionen seit nun mehr als 1 1/2 Jahren sehr stabil läuft. Der Wemos resettet sich durch den Watchdog zwar ab und zu. aber das ist völlig problemlos, da ja immer Werte übertragen werden. Auch habe ich den Wemos exclusiv für den SDM verwendet, was der Stabilität zugute kommen sollte.

Andreas

mac1001

Moin,

ich hab heute mal die ESP_Easy_mega-20190805_dev_ESP8266_4M auf ein Wemos geflasht.
In dieser ist das Device Energy (AC) - Eastron SDM120C/220T/230/630 [TESTING] enthalten und funktioniert bisher ohne Probleme.

Gruß
Marco
FHEM ZBoxNano Debian9, nanoCUL 868MHz, MAX!, Sonoff S20&Pow, Shelly1&2.5, WemosD1Mini&SDM230-Modbus, Raspi3&ConBeeII&Phoscon, Hue Lights, Xiaomi Sensors, espRGBWW

timo74

Hallo Andreas,
hab' das Projekt heute spontan nachgebaut und sehe im FHEM nun alle wesentlichen Werte.
Ich war faul und habe die firmware.bin aus deinem Post von 2017 genommen. Macht es hier Sinn, sich eine neue Version zu kompilieren?

Und für alle, bei denen es nicht auf Anhieb klappt:
- Ja, die Kondensatoren machen Sinn :-)
- Der 120 Ohm Widerstand zur Bus-Terminierung ebenso.
- Am SDM 630 hatte ich die Baudrate auf 9.600 hochgestellt. -> Mit 2.400 Baud und Parity auf "none" kam dann eine Kommunikation zustande.

Vielen Dank und viele Grüße
Timo

fhemfreund

Zitat von: timo74 am 27 Oktober 2019, 15:58:49
hab' das Projekt heute spontan nachgebaut und sehe im FHEM nun alle wesentlichen Werte.
Das ist schön zu hören ;-)

Zitat von: timo74 am 27 Oktober 2019, 15:58:49
Ich war faul und habe die firmware.bin aus deinem Post von 2017 genommen. Macht es hier Sinn, sich eine neue Version zu kompilieren?
Solange du nicht andere Werte als die in meiner FW 'eingebauten' brauchst, ist das nicht nötig.

Andreas

Klinki

Hallo,

Der Thread ist schon etwas älter - das Thema aber nach wie vor interessant. Ich habe den Aufbau ebenfalls nachgebaut und fasse kurz zusammen:
- SDM630: Addr. 001, 2400 Baud, keine Parität, 1 Stopbit
- ESP-Easy-Firmware: ESP_Easy_mega_20202829_dev_ESP8266_4M1M.bin

Die beiden Anhänge sollten den Rest erklären. In meiner Version des Schnittstellenwandlers mussten die Pins RE und DE gebrückt und mit D5 verbunden werden. Abweichend vom Schaltplan von Seite 1 dieses Threads habe ich VCC des Schnittstellenwandlers auf 5V, statt auf 3,3V gelegt.
Ob der Ladekondensator zwischen GND und 5V des Wemos nötig ist, bleibt wohl eine Frage der Güte des Netzteils. Schaden kann er aber sicher nicht.

Danke an Alle für ihre Mühe!

gruß
klinki

halloween

Hallo, mal eine kurze Frage:

Ich hab das ganze mit einem SDM630 und einem NodeMCU am laufen, allerdings mit Tasmota. Funktioniert alles super, leider kann Tasmota die Tele-MQTT-Nachrichten nur alle 10 Sekunden absetzen, kürzere Intervalle gehen nicht.

Gibts bei ESP-Easy auch solche Beschränkungen? Oder könnte man da auch z.B. sekündlich die Stromwerte per MQTT übertragen lassen?

Klinki

Das Interval lässt sich auch auf 1 Sekunde einstellen. Müsste also gehen. (Hab es aber nicht getestet)

Es hängt natürlich immer davon ab in welchen Abständen sich Dein Modbus-Master auslesen lässt.


halloween

Das geht auf jeden Fall schneller - auf dem Tasmota Webinterfaxce sehe ich die Werte nahezu so schnell ändern, wie auf dem SDM-Display. Nur das MQTT kann halt da nicht schneller als alle 10sec.