From d8350d7bdd4d04806f4321d390102a618e12021d Mon Sep 17 00:00:00 2001 From: dave-mc Date: Sat, 24 Sep 2022 11:52:53 +0100 Subject: [PATCH 01/12] add RI-D175M updated interface to add RI-D175M meter This meter codes results in BCD --- .../EmonHubMinimalModbusInterfacer.py | 57 +++++++++++++++++-- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/src/interfacers/EmonHubMinimalModbusInterfacer.py b/src/interfacers/EmonHubMinimalModbusInterfacer.py index 636a42a5..5a898ecb 100644 --- a/src/interfacers/EmonHubMinimalModbusInterfacer.py +++ b/src/interfacers/EmonHubMinimalModbusInterfacer.py @@ -63,12 +63,38 @@ registers = 0,1,2,3,4,5,6,7,8,26,36,37 names = V1,V2,V3,I1,I2,I3,P1,P2,P3,TotalPower,Import_kWh,Export_kWh precision = 2,2,2,2,2,2,2,2,2,2,2,2 - + +[[RID175]] + Type = EmonHubMinimalModbusInterfacer + [[[init_settings]]] + device = /dev/ttyUSB0 + baud = 9600 + parity = none + [[[runtimesettings]]] + pubchannels = ToEmonCMS, + read_interval = 10 + nodename = rid175 + # prefix = rid_ + [[[[meters]]]] + [[[[[rid175a]]]]] + address = 1 + type = rid175 + registers = 0,6,8,10,14,16,18 + names = TotalkWh,V,A,Power,KVA,PF,FR + scales = 0.01,0.01,0.1,0.01,0.01,0.1,0.01 + precision = 2,2,2,2,2,2,2 + [[[[[rid175b]]]]] + address = 2 + type = rid175 + registers = 0,6,8,10,14,16,18 + names = TotalkWh,V,A,Power,KVA,PF,FR + scales = 0.01,0.01,0.1,0.01,0.01,0.1,0.01 + precision = 2,2,2,2,2,2,2 """ """class EmonHubSDM120Interfacer -SDM120 interfacer for use in development +MinimalModbus interfacer for use in development """ @@ -134,6 +160,23 @@ def rs485_connect(self): self._log.error("Could not connect to Modbus device") self._rs485 = False + def bcd_decode(self, bcd_value): + """ + function to decode bcd coded data in long + e.g. Rayleigh Instruments RI-D175m + """ + result=0 + + for n in range(7,-1,-1): + divisor = 2**(n*4) + if (divisor <= bcd_value): + # result is decimal digit + result = result + bcd_value//divisor * 10**n + # set value to remainder + bcd_value = bcd_value%divisor + + return result + def read(self): """Read data and process @@ -157,12 +200,15 @@ def read(self): # Support for multiple MBUS meters on a single bus for meter in self._settings['meters']: self._rs485.address = self._settings['meters'][meter]['address'] + self._rs485.meter_type = self._settings['meters'][meter]['type'] for i in range(0,len(self._settings['meters'][meter]['registers'])): register_count += 1 valid = True try: - if self.datatype == 'int': + if self._rs485.meter_type = rid175: + value = bcd_decode(self._rs485.read_long(int(self._settings['meters'][meter]['registers'][i]), functioncode=4, signed = False, byteorder = 0)) + elif self.datatype == 'int': value = self._rs485.read_register(int(self._settings['meters'][meter]['registers'][i]), functioncode=3) elif self.datatype == 'float': value = self._rs485.read_float(int(self._settings['meters'][meter]['registers'][i]), functioncode=4, number_of_registers=2) @@ -209,7 +255,6 @@ def read(self): return False - def set(self, **kwargs): for key, setting in self._modbus_settings.items(): # Decide which setting value to use @@ -245,6 +290,9 @@ def set(self, **kwargs): if 'address' in setting[meter]: address = int(setting[meter]['address']) self._log.info("Setting %s meters %s address %s", self.name, meter, address) + + if 'type' in setting[meter]: + meter_type = str(setting[meter]['type']) if 'registers' in setting[meter]: for reg in setting[meter]['registers']: @@ -269,6 +317,7 @@ def set(self, **kwargs): #assign self._settings['meters'][meter] = { 'address':address, + 'type':meter_type, 'registers':registers, 'names':names, 'precision':precision, From 6730f293bfa56b5b388b1fbabfa947e6cc090985 Mon Sep 17 00:00:00 2001 From: dave-mc Date: Sat, 24 Sep 2022 14:11:26 +0100 Subject: [PATCH 02/12] updated data read fixed missing quotes around meter type check --- src/interfacers/EmonHubMinimalModbusInterfacer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interfacers/EmonHubMinimalModbusInterfacer.py b/src/interfacers/EmonHubMinimalModbusInterfacer.py index 5a898ecb..ca7cd337 100644 --- a/src/interfacers/EmonHubMinimalModbusInterfacer.py +++ b/src/interfacers/EmonHubMinimalModbusInterfacer.py @@ -206,7 +206,7 @@ def read(self): register_count += 1 valid = True try: - if self._rs485.meter_type = rid175: + if self._rs485.meter_type == 'rid175': value = bcd_decode(self._rs485.read_long(int(self._settings['meters'][meter]['registers'][i]), functioncode=4, signed = False, byteorder = 0)) elif self.datatype == 'int': value = self._rs485.read_register(int(self._settings['meters'][meter]['registers'][i]), functioncode=3) From 407576abf2d72dd371c7b54b91aaceb96392fb04 Mon Sep 17 00:00:00 2001 From: dave-mc Date: Sat, 24 Sep 2022 16:58:25 +0100 Subject: [PATCH 03/12] Update debugged RID175 modbus Debugged version of code to read RI-D175 meter with bcd output --- src/interfacers/EmonHubMinimalModbusInterfacer.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/interfacers/EmonHubMinimalModbusInterfacer.py b/src/interfacers/EmonHubMinimalModbusInterfacer.py index ca7cd337..e5dde2ae 100644 --- a/src/interfacers/EmonHubMinimalModbusInterfacer.py +++ b/src/interfacers/EmonHubMinimalModbusInterfacer.py @@ -81,15 +81,15 @@ type = rid175 registers = 0,6,8,10,14,16,18 names = TotalkWh,V,A,Power,KVA,PF,FR - scales = 0.01,0.01,0.1,0.01,0.01,0.1,0.01 - precision = 2,2,2,2,2,2,2 + scales = 0.01,0.1,0.1,0.01,0.01,0.001,0.01 + precision = 4,3,3,3,4,5,4 [[[[[rid175b]]]]] address = 2 type = rid175 registers = 0,6,8,10,14,16,18 names = TotalkWh,V,A,Power,KVA,PF,FR - scales = 0.01,0.01,0.1,0.01,0.01,0.1,0.01 - precision = 2,2,2,2,2,2,2 + scales = 0.01,0.1,0.1,0.01,0.01,0.001,0.01 + precision = 4,3,3,3,4,5,4 """ """class EmonHubSDM120Interfacer @@ -206,8 +206,8 @@ def read(self): register_count += 1 valid = True try: - if self._rs485.meter_type == 'rid175': - value = bcd_decode(self._rs485.read_long(int(self._settings['meters'][meter]['registers'][i]), functioncode=4, signed = False, byteorder = 0)) + if meter_type == 'rid175': + value = self.bcd_decode(self._rs485.read_long(int(self._settings['meters'][meter]['registers'][i]), functioncode=4, signed = False, byteorder = 0)) elif self.datatype == 'int': value = self._rs485.read_register(int(self._settings['meters'][meter]['registers'][i]), functioncode=3) elif self.datatype == 'float': @@ -282,6 +282,7 @@ def set(self, **kwargs): for meter in setting: # default address = 1 + meter_type = "" registers = [] names = [] precision = [] From 878698738f6e481896e37961f1b14435a73329ac Mon Sep 17 00:00:00 2001 From: dave-mc Date: Sat, 24 Sep 2022 17:04:59 +0100 Subject: [PATCH 04/12] updated RID175 decode Updated to make meter_type consistent --- src/interfacers/EmonHubMinimalModbusInterfacer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interfacers/EmonHubMinimalModbusInterfacer.py b/src/interfacers/EmonHubMinimalModbusInterfacer.py index e5dde2ae..1d2fdc88 100644 --- a/src/interfacers/EmonHubMinimalModbusInterfacer.py +++ b/src/interfacers/EmonHubMinimalModbusInterfacer.py @@ -200,7 +200,7 @@ def read(self): # Support for multiple MBUS meters on a single bus for meter in self._settings['meters']: self._rs485.address = self._settings['meters'][meter]['address'] - self._rs485.meter_type = self._settings['meters'][meter]['type'] + meter_type = self._settings['meters'][meter]['type'] for i in range(0,len(self._settings['meters'][meter]['registers'])): register_count += 1 From 77192dfc9f8cf909140bd3e7512da4a50a1f5b83 Mon Sep 17 00:00:00 2001 From: dave-mc Date: Sat, 24 Sep 2022 17:14:56 +0100 Subject: [PATCH 05/12] Create .gitkeep --- conf/interfacer_examples/MinimalModbus/.gitkeep | 1 + 1 file changed, 1 insertion(+) create mode 100644 conf/interfacer_examples/MinimalModbus/.gitkeep diff --git a/conf/interfacer_examples/MinimalModbus/.gitkeep b/conf/interfacer_examples/MinimalModbus/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/conf/interfacer_examples/MinimalModbus/.gitkeep @@ -0,0 +1 @@ + From 71c874d0c6c9cbaf5a91512e74fb6c33137e06d4 Mon Sep 17 00:00:00 2001 From: dave-mc Date: Sun, 25 Sep 2022 09:49:36 +0100 Subject: [PATCH 06/12] Update EmonHubMinimalModbusInterfacer.py Added additional meter_types for all supported meters. Fallback using datatype still available Using meter_type allows different meters to share same rs485 interface providing serial parameters match. --- .../EmonHubMinimalModbusInterfacer.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/interfacers/EmonHubMinimalModbusInterfacer.py b/src/interfacers/EmonHubMinimalModbusInterfacer.py index 1d2fdc88..14199f8e 100644 --- a/src/interfacers/EmonHubMinimalModbusInterfacer.py +++ b/src/interfacers/EmonHubMinimalModbusInterfacer.py @@ -12,7 +12,6 @@ device = /dev/ttyUSB0 baud = 2400 parity = none - datatype = float [[[runtimesettings]]] pubchannels = ToEmonCMS, read_interval = 10 @@ -21,11 +20,13 @@ [[[[meters]]]] [[[[[sdm120a]]]]] address = 1 + type = sdm120 registers = 0,6,12,18,30,70,72,74,76 names = V,I,P,VA,PF,FR,EI,EE,RI precision = 2,3,1,1,3,3,3,3,3 [[[[[sdm120b]]]]] address = 2 + type = sdm120 registers = 0,6,12,18,30,70,72,74,76 names = V,I,P,VA,PF,FR,EI,EE,RI precision = 2,3,1,1,3,3,3,3,3 @@ -36,7 +37,6 @@ device = /dev/ttyUSB0 baud = 9600 parity = even - datatype = int [[[runtimesettings]]] pubchannels = ToEmonCMS, read_interval = 10 @@ -45,6 +45,7 @@ [[[[meters]]]] [[[[[ashp]]]]] address = 1 + type = mib19n registers = 75,74,72,65,66,68,52,59,58,2,79 names = dhw_temp,dhw_target,dhw_status,return_temp,flow_temp,flow_target,heating_status,indoor_temp,indoor_target, defrost_status, away_status scales = 0.1,0.1,1,0.1,0.1,0.1,1,0.1,0.1,1,1 @@ -82,14 +83,13 @@ registers = 0,6,8,10,14,16,18 names = TotalkWh,V,A,Power,KVA,PF,FR scales = 0.01,0.1,0.1,0.01,0.01,0.001,0.01 - precision = 4,3,3,3,4,5,4 [[[[[rid175b]]]]] address = 2 type = rid175 registers = 0,6,8,10,14,16,18 names = TotalkWh,V,A,Power,KVA,PF,FR scales = 0.01,0.1,0.1,0.01,0.01,0.001,0.01 - precision = 4,3,3,3,4,5,4 + """ """class EmonHubSDM120Interfacer @@ -206,7 +206,13 @@ def read(self): register_count += 1 valid = True try: - if meter_type == 'rid175': + if meter_type == "sdm120": + value = self._rs485.read_float(int(self._settings['meters'][meter]['registers'][i]), functioncode=4, number_of_registers=2) + elif meter_type == "sdm630": + value = self._rs485.read_float(int(self._settings['meters'][meter]['registers'][i]), functioncode=4, number_of_registers=2) + elif meter_type == "mib19n": + value = self._rs485.read_register(int(self._settings['meters'][meter]['registers'][i]), functioncode=3) + elif meter_type == 'rid175': value = self.bcd_decode(self._rs485.read_long(int(self._settings['meters'][meter]['registers'][i]), functioncode=4, signed = False, byteorder = 0)) elif self.datatype == 'int': value = self._rs485.read_register(int(self._settings['meters'][meter]['registers'][i]), functioncode=3) From ac38281de0efaccd1d0b11185eb632c987915a96 Mon Sep 17 00:00:00 2001 From: dave-mc Date: Tue, 4 Oct 2022 10:30:59 +0100 Subject: [PATCH 07/12] mixed meter types Updated config examples to show different meter types using same serial port --- .../EmonHubMinimalModbusInterfacer.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/interfacers/EmonHubMinimalModbusInterfacer.py b/src/interfacers/EmonHubMinimalModbusInterfacer.py index 14199f8e..9a19521b 100644 --- a/src/interfacers/EmonHubMinimalModbusInterfacer.py +++ b/src/interfacers/EmonHubMinimalModbusInterfacer.py @@ -64,8 +64,9 @@ registers = 0,1,2,3,4,5,6,7,8,26,36,37 names = V1,V2,V3,I1,I2,I3,P1,P2,P3,TotalPower,Import_kWh,Export_kWh precision = 2,2,2,2,2,2,2,2,2,2,2,2 - -[[RID175]] + +# different meter types can share the same serial port provided the serial settings are the same +[[modbusRTU]] Type = EmonHubMinimalModbusInterfacer [[[init_settings]]] device = /dev/ttyUSB0 @@ -77,18 +78,19 @@ nodename = rid175 # prefix = rid_ [[[[meters]]]] - [[[[[rid175a]]]]] + [[[[[rid175]]]]] address = 1 type = rid175 registers = 0,6,8,10,14,16,18 names = TotalkWh,V,A,Power,KVA,PF,FR scales = 0.01,0.1,0.1,0.01,0.01,0.001,0.01 - [[[[[rid175b]]]]] + [[[[[sdm120]]]]] address = 2 - type = rid175 - registers = 0,6,8,10,14,16,18 - names = TotalkWh,V,A,Power,KVA,PF,FR - scales = 0.01,0.1,0.1,0.01,0.01,0.001,0.01 + type = sdm120 + registers = 0,6,12,18,30,70,72,74,76 + names = V,I,P,VA,PF,FR,EI,EE,RI + precision = 2,3,1,1,3,3,3,3,3 + """ From 3bd265e5095b80cd81395131113e6a85fad235c9 Mon Sep 17 00:00:00 2001 From: dave-mc Date: Tue, 4 Oct 2022 10:50:11 +0100 Subject: [PATCH 08/12] New Readme for updated interfacer Updated from SDM120 readme to show additional meter types --- .../MinimalModbus/readme.md | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 conf/interfacer_examples/MinimalModbus/readme.md diff --git a/conf/interfacer_examples/MinimalModbus/readme.md b/conf/interfacer_examples/MinimalModbus/readme.md new file mode 100644 index 00000000..9a4b506e --- /dev/null +++ b/conf/interfacer_examples/MinimalModbus/readme.md @@ -0,0 +1,126 @@ +## MinimalModbus + +The minimalmodbus interfacer supports a number of Modbus-RTU serial connected electricity meters and devices for monitoring the electricity supply of heat pumps, +EV Chargers Solar etc. +One or more USB to RS485 converter is needed to read from the modbus output of the meter such as: https://www.amazon.co.uk/gp/product/B07SD65BVF. + +Multiple meters of different types can be mixed on the same serial interface provided the serial parameters of all the meters is the same (Baud rate, parity stop bits) + +### Supported Meters include +**SDM120** +A single phase bi-directional electricity meter provides MID certified electricity monitoring up to 45A, ideal for monitoring the electricity supply of heat pumps +EV chargers, Solar etc. +The SDM120 meter comes in a number of different variants, be sure to order the version with a modbus output. + +**SDM630** +A single/ three phase bi-directional electricity meter provides MID certified electricity monitoring up to 100A, ideal for monitoring the electricity supply of heat pumps +EV chargers, Solar etc. +The SDM630 meter comes in a number of different variants, be sure to order the version with a modbus output. + +**RI-D175** +A low cost single phase unidirectional (Import only) electricity meter provides MID certified electricity monitoring up to 45A, ideal for monitoring the electricity supply of heat pumps +EV chargers, Solar etc. +The RI-D175 meter comes in a number of different variants, be sure to order the version with a modbus output. + +**SAMSUNG-ASHP-MIB19N** +Direct connection to a Samsung ASHP MIB19N + +**read_interval:** Interval between readings in seconds + +**type:** Meter Type + +## SDM120 only Meters +``` +[[SDM120]] + Type = EmonHubMinimalModbusInterfacer + [[[init_settings]]] + device = /dev/ttyUSB0 + baud = 2400 + parity = none + [[[runtimesettings]]] + pubchannels = ToEmonCMS, + read_interval = 10 + nodename = sdm120 + # prefix = sdm_ + [[[[meters]]]] + [[[[[sdm120a]]]]] + address = 1 + type = sdm120 + registers = 0,6,12,18,30,70,72,74,76 + names = V,I,P,VA,PF,FR,EI,EE,RI + precision = 2,3,1,1,3,3,3,3,3 + [[[[[sdm120b]]]]] + address = 2 + type = sdm120 + registers = 0,6,12,18,30,70,72,74,76 + names = V,I,P,VA,PF,FR,EI,EE,RI + precision = 2,3,1,1,3,3,3,3,3 + +``` +## Single SDM630 Meter + +``` +[[SDM630]] + Type = EmonHubMinimalModbusInterfacer + [[[init_settings]]] + device = /dev/ttyUSB1 + baud = 9600 + [[[runtimesettings]]] + pubchannels = ToEmonCMS, + read_interval = 10 + nodename = sdm630 + # prefix = sdm_ + registers = 0,1,2,3,4,5,6,7,8,26,36,37 + names = V1,V2,V3,I1,I2,I3,P1,P2,P3,TotalPower,Import_kWh,Export_kWh + precision = 2,2,2,2,2,2,2,2,2,2,2,2 +``` +## RI-D175 and SDM120 on same interface +``` +[[modbusRTU]] + Type = EmonHubMinimalModbusInterfacer + [[[init_settings]]] + device = /dev/ttyUSB0 + baud = 9600 + parity = none + [[[runtimesettings]]] + pubchannels = ToEmonCMS, + read_interval = 10 + nodename = rid175 + # prefix = rid_ + [[[[meters]]]] + [[[[[rid175]]]]] + address = 1 + type = rid175 + registers = 0,6,8,10,14,16,18 + names = TotalkWh,V,A,Power,KVA,PF,FR + scales = 0.01,0.1,0.1,0.01,0.01,0.001,0.01 + [[[[[sdm120]]]]] + address = 2 + type = sdm120 + registers = 0,6,12,18,30,70,72,74,76 + names = V,I,P,VA,PF,FR,EI,EE,RI + precision = 2,3,1,1,3,3,3,3,3 +``` +## Samsung ASHP +``` +[[SAMSUNG-ASHP-MIB19N]] + Type = EmonHubMinimalModbusInterfacer + [[[init_settings]]] + device = /dev/ttyUSB0 + baud = 9600 + parity = even + [[[runtimesettings]]] + pubchannels = ToEmonCMS, + read_interval = 10 + nodename = samsung-ashp + # prefix = sdm_ + [[[[meters]]]] + [[[[[ashp]]]]] + address = 1 + type = mib19n + registers = 75,74,72,65,66,68,52,59,58,2,79 + names = dhw_temp,dhw_target,dhw_status,return_temp,flow_temp,flow_target,heating_status,indoor_temp,indoor_target, defrost_status, away_status + scales = 0.1,0.1,1,0.1,0.1,0.1,1,0.1,0.1,1,1 + precision = 2,2,1,2,2,2,1,2,2,1,1 + +''' From 2ade402ae705711c87c17c64667de4f1b9896e5a Mon Sep 17 00:00:00 2001 From: dave-mc Date: Tue, 4 Oct 2022 10:52:57 +0100 Subject: [PATCH 09/12] new minimalmodbus.conf showing examples of supported meters and mixed meters on single serial interface --- .../MinimalModbus/minimalmodbus.conf | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 conf/interfacer_examples/MinimalModbus/minimalmodbus.conf diff --git a/conf/interfacer_examples/MinimalModbus/minimalmodbus.conf b/conf/interfacer_examples/MinimalModbus/minimalmodbus.conf new file mode 100644 index 00000000..8fbd90fe --- /dev/null +++ b/conf/interfacer_examples/MinimalModbus/minimalmodbus.conf @@ -0,0 +1,86 @@ +[[SDM120]] + Type = EmonHubMinimalModbusInterfacer + [[[init_settings]]] + device = /dev/ttyUSB0 + baud = 2400 + parity = none + [[[runtimesettings]]] + pubchannels = ToEmonCMS, + read_interval = 10 + nodename = sdm120 + # prefix = sdm_ + [[[[meters]]]] + [[[[[sdm120a]]]]] + address = 1 + type = sdm120 + registers = 0,6,12,18,30,70,72,74,76 + names = V,I,P,VA,PF,FR,EI,EE,RI + precision = 2,3,1,1,3,3,3,3,3 + [[[[[sdm120b]]]]] + address = 2 + type = sdm120 + registers = 0,6,12,18,30,70,72,74,76 + names = V,I,P,VA,PF,FR,EI,EE,RI + precision = 2,3,1,1,3,3,3,3,3 + + +[[SDM630]] + Type = EmonHubMinimalModbusInterfacer + [[[init_settings]]] + device = /dev/ttyUSB1 + baud = 9600 + [[[runtimesettings]]] + pubchannels = ToEmonCMS, + read_interval = 10 + nodename = sdm630 + # prefix = sdm_ + registers = 0,1,2,3,4,5,6,7,8,26,36,37 + names = V1,V2,V3,I1,I2,I3,P1,P2,P3,TotalPower,Import_kWh,Export_kWh + precision = 2,2,2,2,2,2,2,2,2,2,2,2 + +[[modbusRTU]] + Type = EmonHubMinimalModbusInterfacer + [[[init_settings]]] + device = /dev/ttyUSB0 + baud = 9600 + parity = none + [[[runtimesettings]]] + pubchannels = ToEmonCMS, + read_interval = 10 + nodename = rid175 + # prefix = rid_ + [[[[meters]]]] + [[[[[rid175]]]]] + address = 1 + type = rid175 + registers = 0,6,8,10,14,16,18 + names = TotalkWh,V,A,Power,KVA,PF,FR + scales = 0.01,0.1,0.1,0.01,0.01,0.001,0.01 + [[[[[sdm120]]]]] + address = 2 + type = sdm120 + registers = 0,6,12,18,30,70,72,74,76 + names = V,I,P,VA,PF,FR,EI,EE,RI + precision = 2,3,1,1,3,3,3,3,3 + +[[SAMSUNG-ASHP-MIB19N]] + Type = EmonHubMinimalModbusInterfacer + [[[init_settings]]] + device = /dev/ttyUSB0 + baud = 9600 + parity = even + [[[runtimesettings]]] + pubchannels = ToEmonCMS, + read_interval = 10 + nodename = samsung-ashp + # prefix = sdm_ + [[[[meters]]]] + [[[[[ashp]]]]] + address = 1 + type = mib19n + registers = 75,74,72,65,66,68,52,59,58,2,79 + names = dhw_temp,dhw_target,dhw_status,return_temp,flow_temp,flow_target,heating_status,indoor_temp,indoor_target, defrost_status, away_status + scales = 0.1,0.1,1,0.1,0.1,0.1,1,0.1,0.1,1,1 + precision = 2,2,1,2,2,2,1,2,2,1,1 + + From ce9b698e816ffad8db5909e2deb9d3da35336cab Mon Sep 17 00:00:00 2001 From: dave-mc Date: Tue, 4 Oct 2022 10:55:31 +0100 Subject: [PATCH 10/12] added link to RI-D175 datasheet --- conf/interfacer_examples/MinimalModbus/readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/interfacer_examples/MinimalModbus/readme.md b/conf/interfacer_examples/MinimalModbus/readme.md index 9a4b506e..32ed2679 100644 --- a/conf/interfacer_examples/MinimalModbus/readme.md +++ b/conf/interfacer_examples/MinimalModbus/readme.md @@ -21,6 +21,7 @@ The SDM630 meter comes in a number of different variants, be sure to order the v A low cost single phase unidirectional (Import only) electricity meter provides MID certified electricity monitoring up to 45A, ideal for monitoring the electricity supply of heat pumps EV chargers, Solar etc. The RI-D175 meter comes in a number of different variants, be sure to order the version with a modbus output. +https://www.rayleigh.com/media/uploads/RI_Data_Sheet_RI-D175_MID_01_12_20.pdf **SAMSUNG-ASHP-MIB19N** Direct connection to a Samsung ASHP MIB19N From c739f14693e25dc20ed66a96d8c3685543620abc Mon Sep 17 00:00:00 2001 From: dave-mc Date: Fri, 28 Oct 2022 09:42:17 +0100 Subject: [PATCH 11/12] updated scales for RID175 some of the scaling parameters needed adjustment to get the correct value. --- src/interfacers/EmonHubMinimalModbusInterfacer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interfacers/EmonHubMinimalModbusInterfacer.py b/src/interfacers/EmonHubMinimalModbusInterfacer.py index 9a19521b..5aa9986a 100644 --- a/src/interfacers/EmonHubMinimalModbusInterfacer.py +++ b/src/interfacers/EmonHubMinimalModbusInterfacer.py @@ -83,7 +83,7 @@ type = rid175 registers = 0,6,8,10,14,16,18 names = TotalkWh,V,A,Power,KVA,PF,FR - scales = 0.01,0.1,0.1,0.01,0.01,0.001,0.01 + scales = 0.01,0.1,0.001,0.1,0.1,0.001,0.01 [[[[[sdm120]]]]] address = 2 type = sdm120 From cd73acc1e89f07cea36b36ec1cd2d2808439aa61 Mon Sep 17 00:00:00 2001 From: dave-mc Date: Fri, 28 Oct 2022 09:44:49 +0100 Subject: [PATCH 12/12] updated Scales in example conf some scaling factors needed adjusting to get correct readings --- conf/interfacer_examples/MinimalModbus/minimalmodbus.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/interfacer_examples/MinimalModbus/minimalmodbus.conf b/conf/interfacer_examples/MinimalModbus/minimalmodbus.conf index 8fbd90fe..51d3a372 100644 --- a/conf/interfacer_examples/MinimalModbus/minimalmodbus.conf +++ b/conf/interfacer_examples/MinimalModbus/minimalmodbus.conf @@ -55,7 +55,7 @@ type = rid175 registers = 0,6,8,10,14,16,18 names = TotalkWh,V,A,Power,KVA,PF,FR - scales = 0.01,0.1,0.1,0.01,0.01,0.001,0.01 + scales = 0.01,0.1,0.001,0.1,0.1,0.001,0.01 [[[[[sdm120]]]]] address = 2 type = sdm120