FHEM Module für B+G E-Tech & EASTON Modbus Zähler

Begonnen von Roger, 03 März 2016, 22:15:25

Vorheriges Thema - Nächstes Thema

Roger

Liebe FHEM Gemeinde,
hiermit stelle ich meine FHEM Module für meine Modbus Zähler von B+G E-Tech & EASTON zur Verfügung.
Dies sind günstige Stromzähler und ich habe sie hier bezogen:
einphasig,  34.40€ http://bg-etech.de/os/product_info.php/cPath/24_27/products_id/201
dreiphasig, 96.85€ http://bg-etech.de/os/product_info.php/products_id/50


SDM220M --> 98_ModbusSDM220M.pm
SDM630M --> 98_ModbusSDM630M.pm

Grundlage ist das Modbus Basismodul 98_Modbus.pm von Stefan Strobel.
Der Zugriff erfolgt über Modbus RTU (seriell RS485 Zweidraht). Für den Zugriff kann ein beliebiger RS485 Konverter genommen werden, wie z.B. http://www.amazon.de/gp/product/B00GWEGZOI?psc=1&redirect=true&ref_=oh_aui_detailpage_o07_s00

Bezug

define HA_Modbus_1 Modbus /dev/ttyUSB0@9600
define HA_SDM220M_1 ModbusSDM220M 1 60
define HA_SDM630M_1 ModbusSDM630M 2 60


Roger
Zotac, BBB, RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly

tomster

Sehr ge*l! Gedankenübertragung...
Ich hab die letzte Stunde im Netz nach einem 3-Phasenzähler gesucht, den ich in FHEM einbinden kann. Vor knapp 10 Minuten bin ich dann auf die B#G Zähler gestossen; eben wegen RS485. Hab gerade einen bestellt und zack - gibt's ein fertiges Modul.
Vielen Dank dafür! Ich werde berichten!

tomte76

Vielen Dank. Ich habe das heute mit einem 630M und dem beschrieben RS485-Modul an einem Raspi aufgebaut. Hat sofort funktioniert. Kann mir jemand, da ich komplett neu bei FHEM bin, einen Hinweis auf gute Doku geben, wie ich historische Daten aufzeichnen und nette Grafiken erzeugen kann?

holle75

#3
Moinsen Tomte:
Auszug aus meiner fhem.cfg, Dank Rogers vorzüglichem SDM220 Modul umgesetzt:

############################## XTENDER Modbus Stromzaehler ###########################################################

define Eastron Modbus /dev/ttyUSB1@9600
attr Eastron group Xtender

#------------------------ 1. Zaehler AC-IN, Modul Modbus , ID1, abfrage alle 30sec. ---------------#

define Xtender_AC_in ModbusSDM220M 1 30
attr Xtender_AC_in userattr IODev event-min-interval event-on-change-reading
attr Xtender_AC_in IODev Eastron
attr Xtender_AC_in event-min-interval Power_.*.W:900,Voltage__V:900,Energy_total__kWh:900,statEnergy_total__kWh:900,statEnergy_total__kWhDay:900,Verbrauch_Enel:900,.*Last.*:900
attr Xtender_AC_in event-on-change-reading Power_.*.W,Voltage__V,Energy_total__kWh,statEnergy_total__kWh,statEnergy_total__kWhDay,Verbrauch_Enel,.*Last.*
attr Xtender_AC_in group Xtender
attr Xtender_AC_in userReadings Verbrauch_Enel:Energy_total__kWh { ReadingsNum("$name","Energy_total__kWh",0)-159.01 . " kWh";; }

#--------------------------- 2. Zaehler AC-Out -----------------------------------#

define Xtender_AC_out ModbusSDM220M 2 30
attr Xtender_AC_out userattr IODev event-min-interval event-on-change-reading
attr Xtender_AC_out IODev Eastron
attr Xtender_AC_out event-min-interval Power_.*.W:900,Voltage__V:900,Energy_total__kWh:900,statEnergy_total__kWh:900,statEnergy_total__kWhDay:900,Verbrauch_Home:900,.*Last.*:900
attr Xtender_AC_out event-on-change-reading Power_.*.W,Voltage__V,Energy_total__kWh,statEnergy_total__kWh,statEnergy_total__kWhDay,Verbrauch_Home,.*Last.*
attr Xtender_AC_out group Xtender
attr Xtender_AC_out userReadings Verbrauch_Home:Energy_total__kWh { ReadingsNum("$name","Energy_total__kWh",0)-366.51 . " kWh";; }

# ----------------------------- readingsGroup -----------------------------------#

#define Xtender readingsGroup Xtender_AC_in*:Power_.*.W Xtender_AC_in*:Voltage_.*.V Xtender_AC_out*:Power_.*.W Xtender_AC_out*:Voltage_.*.V Xtender_AC_in:statEnergy_total__kWh Xtender_AC_out:statEnergy_total__kWh  Xtender_AC_in*:statEnergy_total__kWhDayLast  Xtender_AC_out*:statEnergy_total__kWhDayLast Xtender_AC_in*:statEnergy_total__kWhMonthLast Xtender_AC_out*:statEnergy_total__kWhMonthLast
#attr Xtender room Xtender

#--------------------------- statistics Filelog und plot ------------------------#

define Xtender_AC_in_statistic statistics Xtender_AC_in|Xtender_AC_out
attr Xtender_AC_in_statistic deltaReadings Energy_total__kWh
attr Xtender_AC_in_statistic group Xtender
attr Xtender_AC_in_statistic singularReadings Xtender_AC_in:Energy_total__kWh:Delta:(Hour|Day|Month|Year)|Xtender_AC_out:Energy_total__kWh:Delta:(Hour|Day|Month|Year)

define FileLog_Stromverbrauch_statistic FileLog ./log/StromverbrauchStatistik-%Y.log Xtender.*kWhDayLast.*|Xtender.*kWhMonthLast.*|Xtender.*kWhYearLast.*
attr FileLog_Stromverbrauch_statistic group Xtender
attr FileLog_Stromverbrauch_statistic logtype text

define SVG_FileLog_Stromverbrauch_statistic_1 SVG FileLog_Stromverbrauch_statistic:SVG_FileLog_Stromverbrauch_statistic_1:CURRENT
attr SVG_FileLog_Stromverbrauch_statistic_1 fixedrange year
attr SVG_FileLog_Stromverbrauch_statistic_1 group Xtender
attr SVG_FileLog_Stromverbrauch_statistic_1 label "Verbrauch Monatlich --- AC-in $data{currval1} kWh - AC-Out $data{currval2} kWh"
attr SVG_FileLog_Stromverbrauch_statistic_1 room Xtender

define SVG_FileLog_Stromverbrauch_statistic_dayly SVG FileLog_Stromverbrauch_statistic:SVG_FileLog_Stromverbrauch_statistic_dayly:CURRENT
attr SVG_FileLog_Stromverbrauch_statistic_dayly fixedrange year
attr SVG_FileLog_Stromverbrauch_statistic_dayly group Xtender
attr SVG_FileLog_Stromverbrauch_statistic_dayly label "Verbrauch Dayly --- AC-in $data{currval1} kWh - AC-Out $data{currval2} kWh"
attr SVG_FileLog_Stromverbrauch_statistic_dayly room Xtender

#---------------------------- Filelog und Plot -------------------------------------+

# mit Bezug Gesamtverbrauch kWhDay von statistics
define FileLog_Stromverbrauch FileLog ./log/Stromverbrauch-%Y-%m-%d.log Xtender.*Power.*.W|.*Xtender.*kWhDay.*|Xtender.*Enel.*|Xtender.*Home.*|Xtender.*Voltage.*
attr FileLog_Stromverbrauch group Xtender
attr FileLog_Stromverbrauch logtype text
attr FileLog_Stromverbrauch nrarchive 30

define SVG_FileLog_Stromverbrauch_1 SVG FileLog_Stromverbrauch:SVG_FileLog_Stromverbrauch_1:CURRENT
attr SVG_FileLog_Stromverbrauch_1 group Xtender
attr SVG_FileLog_Stromverbrauch_1 label "Verbrauch Tag --- MAX AC-in $data{max1} kW - MAX AC-Out $data{max2} kW --- Gesamt AC-In $data{max3} kWh - Gesamt AC-Out $data{max4} kWh"
attr SVG_FileLog_Stromverbrauch_1 room Xtender

define SVG_FileLog_Stromverbrauch_Gesamt_1 SVG FileLog_Stromverbrauch:SVG_FileLog_Stromverbrauch_Gesamt_1:CURRENT
attr SVG_FileLog_Stromverbrauch_Gesamt_1 group Xtender
attr SVG_FileLog_Stromverbrauch_Gesamt_1 label "Verbrauch Gesamt (seit 01.10.15) --- AC-in $data{max1} kWh - AC-Out $data{max2} kWh"
attr SVG_FileLog_Stromverbrauch_Gesamt_1 room Xtender

define SVG_FileLog_Spannung_1 SVG FileLog_Stromverbrauch:SVG_FileLog_Spannung_1:CURRENT
attr SVG_FileLog_Spannung_1 group Xtender
attr SVG_FileLog_Spannung_1 label "Spannung --- MAX AC-in $data{max1} V - MIN AC-In $data{min1} V --- MAX AC-Out $data{max2} V - MIN AC-Out $data{min2} V"
attr SVG_FileLog_Spannung_1 room Xtender


Das geht vielleicht auch galanter, aber mir reichts für eine grafische Auswertung. gplot Dateien anbei. Die ReadingsGroup kannst du unkommentieren falls Bedarf. Das läuft im Moment noch unter fhem 5.6 und einer wahrscheinlich älteren Version von Rogers Modul?; weiss nicht, wie es unter 5.7 aussieht

H.


Burny4600

Lässt sich das auch irgendwie über eine Modbus / TCP-IP Verbindung für diesen Zähler modivizieren?
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Bjoernar

Hallo,

ich bin gerade dabei das Modul zu verwenden, Daten kommen schon mal an ;-)

Das mit den Logs und Plots habe ich aber nicht so recht verstanden.

Kann mir jemand schon mal diesen Teil erklären?


attr Xtender_AC_out event-min-interval Power_.*.W:900,Voltage__V:900,Energy_total__kWh:900,statEnergy_total__kWh:900,statEnergy_total__kWhDay:900,Verbrauch_Home:900,.*Last.*:900
attr Xtender_AC_out event-on-change-reading Power_.*.W,Voltage__V,Energy_total__kWh,statEnergy_total__kWh,statEnergy_total__kWhDay,Verbrauch_Home,.*Last.*


Danke und Gruß
Björnar

oniT

Zitat von: Burny4600 am 06 April 2016, 08:46:43
Lässt sich das auch irgendwie über eine Modbus / TCP-IP Verbindung für diesen Zähler modivizieren?

Hallo Chris,

Ja das ist möglich. Nur leider bin ich mit der Beschreibung für fhemwiki noch nicht fertig.

Gruß
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

Jojo11

Hallo Roger,

vielen Dank für dieses Modul. Habe die 630er Version soeben erfolgreich in Betrieb genommen.

schöne Grüße
Jo

tlasrich

Zitat von: oniT am 26 Mai 2016, 20:12:21
Hallo Chris,

Ja das ist möglich. Nur leider bin ich mit der Beschreibung für fhemwiki noch nicht fertig.

Gruß
Tino

Hallo Zusammen,

der Wunsch meinen Strom zu erfassen keimt schon länger, leider befinden sich die Zähler nicht in der Wohnung und somit war das Thema lange Zeit nicht umsetzbar. Dank dieses Beitrages hoch motiviert habe ich mir den 3-phasigen Zähler mit Modbus-Schnittstelle sowie einen Modbus-Interface  (Typ USR-TCP232-24) bestellt. Seit etwa einer Woche habe ich nun alles eingebaut und verdrahtet. Leider bekomme ich keine Werte angezeigt.

Der IP/RS485-Adapter ist pingbar und auf der Weboberfläche sehe ich auch, dass sich mein FHEM-Server mit dem Adapter verbindet.

Hierzu habe ich folgendes Device in FHEM angelegt:


defmod ModbusGW ModbusAttr 101 60 10.2.1.220:20108 RTU
attr ModbusGW userattr 1 verbose
attr ModbusGW room 99_Interfaces,Test
attr ModbusGW verbose 5


Und den Zähler habe ich wie folgt angelegt:

defmod Energie_SDM630M_1 ModbusSDM630M 101 60
attr Energie_SDM630M_1 userattr IODev
attr Energie_SDM630M_1 IODev ModbusGW
attr Energie_SDM630M_1 room 99_Zähler


Der Status (State) des angelegten Gerätes lautet aber dennoch:


Energie_SDM630M_1                                       no IO Dev


Ich bin gerade etwas verwundert, während ich hier schreibe, sehe ich das jetzt Readings in das Device eingefügt wurden und diese auch aktualisiert werden.
Was mich nun zu meiner nächsten Frage führt, welcher Status (State) müsste bei vollfunktionierendem Zähler angezeigt werden.

Da die Readings zu meinem Device aus dem Modul heraus automatisch angelegt wurden, gibt es das auch für mögliche Plots und Übersichten?

Sollte ich benötigte Informationen vergessen haben, bitte ich um kurze Rückinfo, ich versuche dann alles so schnell wie möglich nachzuliefern.

Gruß
Thorsten

StefanStrobel

Hallo Thorsten,

ModbusAttr ist nicht als IODev für Gateways gedacht. Wenn Dein Gateway RTU über einen TCP-Port spricht, dann solltest Du IP-Adresse und Port direkt beim Define des SDM Moduls angeben. Ein zusätzliches IO Device benötigst Du nur wenn Fhem selbst an der seriellen Leitung hängt. Schau am besten mal den Wiki-Artikel zu ModbusAttr an.

Gruß
    Stefan

falkmann

Moinsen.Eine Frage:
Kann ich das 98_ModbusSDM630M.pm auch für den SDM530 Modbus verwenden oder gibts da gravierende Unterschiede.
Danke sehr.
Raspberry Pi 3 auf Hutschiene mit Jessie, CUL USB 433MHz, Fhem 5.7,
FB_7490

roadrunnner

Hallo Roger,
ich setze das Modul für einen SDM120M ein, kann jedoch den Portspeed nicht ändern. Als Fehler kommt hier: Set Value 1 did not match defined map Alles andere funktioniert reibungslos. Hast Du eine Idee?

Gruss

roadrunnner

crispyduck

Hallo,

ist es normal das beim Device STATE nur ??? steht?

Lässt sich was gepollt wird auch irgendwie einstellen? Wenn ich z.B. nur Energy_total__kWh abfragen möchte brauche ich doch nicht immer alle Werte pollen?

Danke,
Crispyduck

StefanStrobel

Hallo,

Module, die auf 98_Modbus.pm basieren erben von dort normalerweise alle Attribute, die auch ModbusAttr besitzt. Damit kann man auch einstellen, welche Objekte gepollt werden.

Gruss
   Stefan

holle75

#14
Hallo, ich bekomme seit Update auf fhem 5.8 regelmäßig

2017.05.02 14:33:14 3: Eastron: timeout waiting for fc 4 from id 2, (i12 / Power__W), Request was 0204000c0002b1fb


im Log. Trotzdem werden die Readings im Device upgedated.

Definiert ist er mit

define Eastron Modbus /dev/ttyUSB1@9600


define Xtender_AC_out ModbusSDM220M 2 15
attr Xtender_AC_out userattr IODev event-min-interval event-on-change-reading userReadings
attr Xtender_AC_out IODev Eastron
attr Xtender_AC_out event-min-interval Power_.*.W:900,Voltage__V:900,Energy_total__kWh:900,statEnergy_total__kWh:900,statEnergy_total__kWhDay:900,Verbrauch_Home:900,.*Last.*:900
attr Xtender_AC_out event-on-change-reading Power_.*.W,Voltage__V,Energy_total__kWh,statEnergy_total__kWh,statEnergy_total__kWhDay,Verbrauch_Home,.*Last.*
attr Xtender_AC_out group Xtender
attr Xtender_AC_out userReadings Verbrauch_Home:Energy_total__kWh { ReadingsNum("$name","Energy_total__kWh",0)-366.51 . " kWh";; }


ID 2 list:

Internals:
   DEF        2 15
   DEST
   INTERVAL   15
   IODev      Eastron
   MODBUSID   2
   ModuleVersion 3.5.21 - 12.3.2017
   NAME       Xtender_AC_out
   NOTIFYDEV  global
   NR         430
   NTFY_ORDER 50-Xtender_AC_out
   PROTOCOL   RTU
   STATE      opened
   TRIGGERTIME 1493748190.4706
   TRIGGERTIME_FMT 2017-05-02 20:03:10
   TYPE       ModbusSDM220M
   Readings:
     2017-05-02 02:59:20   CosPhi          -21.0 %
     2017-05-02 19:59:24   CosPhi__grd     -20.5
     2017-05-02 20:02:14   Current__A      0.48
     2017-05-02 20:01:56   Energy_export__kVArh 688.698
     2017-05-02 20:02:16   Energy_export__kWh 0.000
     2017-05-02 20:01:56   Energy_import__kVArh 319.873
     2017-05-02 20:02:16   Energy_import__kWh 2731.408
     2017-05-02 20:01:16   Energy_total__kVArh 1008.571
     2017-05-02 20:02:15   Energy_total__kWh 2731.408
     2017-05-02 20:02:43   Frequency__Hz   50.0
     2017-05-02 19:59:28   Modbus_Node_adr 2
     2017-05-02 19:59:28   Modbus_Parity_Stop 1stop.bit_no.parity
     2017-05-02 19:59:24   Modbus_Speed__baud 9600
     2017-05-02 19:59:18   PowerFactor     0.9
     2017-05-02 20:02:14   Power__VA       105.7
     2017-05-02 20:02:14   Power__VAr      -56.8
     2017-05-02 20:02:55   Power__W        107
     2017-05-02 19:59:21   Relay1_Energy_Type import+export.active.energy
     2017-05-02 19:59:20   System_Measurement_mode 00020000
     2017-05-02 19:59:28   System_Pulse_Width__ms 100
     2017-05-02 19:59:20   System_Pulse_constant 00000000
     2017-05-02 20:02:14   Voltage__V      218.8
     2017-05-02 20:02:55   statEnergy_total__kWh Hour: 0.005 Day: 4.195 Month: 9.620 Year: 510.143
     2017-05-02 20:02:55   statEnergy_total__kWhDay 4.195
     2017-05-01 23:59:55   statEnergy_total__kWhDayLast 5.425
     2017-05-02 20:02:55   statEnergy_total__kWhHour 0.005
     2017-05-02 19:59:55   statEnergy_total__kWhHourLast 0.105
     2017-05-02 19:59:55   statEnergy_total__kWhLast Hour: 0.105 Day: 5.425 Month: 129.528 Year: 352.096 (since: 2016-09-02 )
     2017-05-02 20:02:55   statEnergy_total__kWhMonth 9.620
     2017-04-30 23:59:55   statEnergy_total__kWhMonthLast 129.528
     2017-05-02 20:02:55   statEnergy_total__kWhYear 510.143
     2016-12-31 23:59:55   statEnergy_total__kWhYearLast 352.096
     2017-05-02 19:59:22   system_demand_interval 352387168
   Gotreadings:
     Power__W   107
   Helper:
     _98_statistics Xtender_AC_in_statistic
     lrecv      1493748175.5681
     lsend      1493748175.53896
   Lastread:
     h12        1493747968.1621
     h18        1493747968.16348
     h20        1493747968.16452
     h28        1493747964.75313
     h62720     1493747962.46642
     h63760     1493747961.00019
     h63776     1493747960.2663
     h86        1493747961.73298
     i0         1493748134.87923
     i12        1493748175.56974
     i18        1493748134.88669
     i24        1493748134.8891
     i30        1493747958.01093
     i342       1493748135.62014
     i344       1493748076.18324
     i36        1493747964.01767
     i6         1493748134.88167
     i70        1493748163.26169
     i72        1493748136.37512
     i74        1493748136.37624
     i76        1493748116.25802
     i78        1493748116.26025
Attributes:
   IODev      Eastron
   event-min-interval Power_.*.W:900,Voltage__V:900,Energy_total__kWh:900,statEnergy_total__kWh:900,statEnergy_total__kWhDay:900,Verbrauch_Home:900,.*Last.*:900
   event-on-change-reading Power_.*.W,Voltage__V,Energy_total__kWh,statEnergy_total__kWh,statEnergy_total__kWhDay,Verbrauch_Home,.*Last.*
   group      Xtender
   userReadings Verbrauch_Home:Energy_total__kWh { ReadingsNum("$name","Energy_total__kWh",0)-366.51 . " kWh"; }
   userattr   IODev event-min-interval event-on-change-reading userReadings 


Es hängen zwei Easton 220 am Bus. Der erste (ID 1) liefert keine Fehler im Log.

Jemand eine Idee?

Danke und Grüße

H.

Edit: habe auch mal Timeout auf 10 gestellt, da ändert sich aber leider auch nichts.