I’m a volunteer at Cambridge Museum of Technology. We have an Itron CF Echo II heat meter with an MBUSREP option board which was included as part of a Mitsubishi Ecodan Air Source Heat Pump installation.
It appears that the intention was to connect the pulsed output from the MBUSREP option board to the FTC5 controller to provide more accurate heat measurements. However, the MBUSREP option board was neither fitted nor connected.
I think the pulse is triggered when the rightmost digit on the CF Echo II display changes. Our CF Echo II display is currently in MWh which suggests that the pulse rate will be low. Ideally, we would like a higher pulse rate but we have not been able to determine if this can be changed.
Does anyone have experience with a CF Echo II used for monitoring, either by pulse or by M-Bus?
Hello @JohnConnett and welcome, I dont have experience with this meter unfortunately, but note that it is available on stockshed here Itron CF Echo II Heat & Cooling Energy Meters | UK Distributor – Stockshed® - A GLAD Group Company., is the MBus / Pulse Output not included as standard? If not, the easiest solution might be to see if you can get this board from stockshed and then utilise the MBUS connection for detailed monitoring?
Thanks for the reply @TrystanLea. We have the MBUSREP option board which we should be able to install. I have set up a Raspberry Pi 4 with emonSD and a Packom M-Bus Master Hat. Will see if it is possible to extract some data when I am next on-site.
Pulse counting is useless; do use the M-Bus.
Itron meters are ok. Main things to watch out for are the minimum starting temperature difference (usually configured at 0.5K before it starts to register anything; but by no means guaranteed to be set to this unless you were the one who ordered it) and, if battery powered, killing the battery prematurely by reading the M-Bus too often.
MWh shouldn’t be an issue if you’re using instantaneous reads to estimate COP (integrate at server level) rather than the legal (cumulative energy) register.
If you have issues with it we’re based in Cambridge and have heat pump sized meters on hand. I have a dog eared (calculator case cracked; but meh whatever) ultrasonic DN25 unit on hand that’s configured for 0.1 kWh legal registers if the museum needs it.
Thanks for the replies.
MBUSREP option board installed and connected to the Raspberry Pi 4 with emonSD and a Packom M-Bus Master Hat.
Heat Meter is at address 0. The output from the first attempt at requesting data is below (Note that there was no heat demand when the data was requested).
The display shows energy in MWh with two digits after the decimal indicator (the rightmost digit changes after every 10kWh). The data reported via the M-Bus has the same coarse granularity. Is this something that is configured by the supplier at the time of delivery? Can it be changed?
pi@emonpi:~ $ mbus-serial-request-data -b 2400 /dev/ttyAMA0 0
<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>
<SlaveInformation>
<Id>18753669</Id>
<Manufacturer>ACW</Manufacturer>
<Version>9</Version>
<ProductName>Itron CF Echo 2</ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>1</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation>
<DataRecord id="0">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>18753669</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="1">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (10 kWh)</Unit>
<Value>442</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="2">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (1e-1 m^3)</Unit>
<Value>129587</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="3">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (100 W)</Unit>
<Value>0</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="4">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="5">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-1 deg C)</Unit>
<Value>231</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="6">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-1 deg C)</Unit>
<Value>219</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="7">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-2 deg C)</Unit>
<Value>118</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="8">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time & date)</Unit>
<Value>2023-09-18T15:20:00</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="9">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (days)</Unit>
<Value>1907</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="10">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Firmware version</Unit>
<Value>22</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="11">
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Software version</Unit>
<Value>47</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
<DataRecord id="12">
<Function>Manufacturer specific</Function>
<Value>00 00</Value>
<Timestamp>2023-09-18T12:45:39Z</Timestamp>
</DataRecord>
</MBusData>
Manufacturer configured; unsure if it can be modified post delivery.
OpenEnergyMonitor largely ignores this field though because of the coarse granularity; instead relying on integrating frequent measurements of the instantaneous temperatures/flowrate/power in order to calculate COP etc.
These instantaneous temperature/flowrate/power measurements are also subject to granularity and integration period issues which vary by meter (some meters only report power to the nerest 100W, rounded, down for example; many meters only measure the flow velocity every 32 seconds etc) but it’s far less coarse than the cumulative energy/volume registers.
1 kWh / 1 litre is pretty standard for smaller meters. Some wil do 0.1 kWh / 1 litre. Still pretty coarse vs the instantaneous measurements though.
Thanks. We have a DN40 (1 1/2") meter.
Nice work, to get the data into Emoncms you can use emonhub to read from the meter with the following config:
[[MBUS]]
Type = EmonHubMBUSInterfacer
[[[init_settings]]]
device = /dev/ttyAMA0
baud = 2400
[[[runtimesettings]]]
pubchannels = ToEmonCMS,
read_interval = 10
validate_checksum = False
nodename = MBUS
[[[[meters]]]]
[[[[[heatmeter]]]]]
address = 0
type = standard
See docs: emonHub Interfacers — OpenEnergyMonitor 0.0.1 documentation
Many thanks, @glyn.hudson. Added the Interfacer and am now seeing the following in the EmonHub log:
2023-09-20 20:50:02,544 ERROR MBUS read_data_frame could not read from serial port
2023-09-20 20:50:10,277 ERROR MBUS read_data_frame could not read from serial port
2023-09-20 20:50:10,479 ERROR MBUS Could not write to MBUS serial port
2023-09-20 20:50:10,479 ERROR MBUS read_data_frame could not read from serial port
2023-09-20 20:50:22,436 ERROR MBUS read_data_frame could not read from serial port
2023-09-20 20:50:30,469 ERROR MBUS read_data_frame could not read from serial port
2023-09-20 20:50:30,670 ERROR MBUS Could not write to MBUS serial port
pi@emonpi:~ $ ls -l /dev/ttyAMA0
crw-rw---- 1 root dialout 204, 64 Sep 20 20:53 /dev/ttyAMA0
pi@emonpi:~
What’s my next move?
Ah you may need to remove any other interfacers in emonhub.conf
also trying to read from the /dev/ttyAMA0 port
e.g emonPi2
or RFM2Pi
Thanks, @glyn.hudson. Commented out the RFM2Pi Interfacer in emonhub.conf
and restarted EmonHub.
No ERROR messages in the log.