I recently acquired an Atlas EC-20 water/flow meter which supports the M-Bus protocol for remote reading.

The Atlas EC-20 meter has a default M-Bus address of 48 (0x30) and a default baud rate of 2,400.

The M-Bus command to read this device’s M-Bus data is, as hex bytes:

10 5B 30 8B 16

A sample response, again as hex bytes:

68 3D 3D 68 08 30 72 15
73 13 30 93 06 01 04 0E
00 00 00 0C 06 00 00 00
00 0C 14 05 00 00 00 0C
22 33 06 03 00 0C 2E 01
00 00 00 0C 3B 00 00 00
00 0A 59 01 00 0A 5D 01
00 0A 61 01 00 42 6C 7C
22 C8 16

This is decoded by libmbus as:

<?xml version="1.0" encoding="ISO-8859-1"?>
<MBusData>

    <SlaveInformation>
        <Id>30137315</Id>
        <Manufacturer>ATS</Manufacturer>
        <Version>1</Version>
        <ProductName></ProductName>
        <Medium>Heat: Outlet</Medium>
        <AccessNumber>14</AccessNumber>
        <Status>00</Status>
        <Signature>0000</Signature>
    </SlaveInformation>

    <DataRecord id="0">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Energy (kWh)</Unit>
        <Value>0</Value>
        <Timestamp>2019-03-02T15:41:02</Timestamp>
    </DataRecord>

    <DataRecord id="1">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Volume (1e-2  m^3)</Unit>
        <Value>5</Value>
        <Timestamp>2019-03-02T15:41:02</Timestamp>
    </DataRecord>

    <DataRecord id="2">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>On time (hours)</Unit>
        <Value>30633</Value>
        <Timestamp>2019-03-02T15:41:02</Timestamp>
    </DataRecord>

    <DataRecord id="3">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Power (kW)</Unit>
        <Value>1</Value>
        <Timestamp>2019-03-02T15:41:02</Timestamp>
    </DataRecord>

    <DataRecord id="4">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Volume flow (m m^3/h)</Unit>
        <Value>0</Value>
        <Timestamp>2019-03-02T15:41:02</Timestamp>
    </DataRecord>

    <DataRecord id="5">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Flow temperature (1e-2 deg C)</Unit>
        <Value>1</Value>
        <Timestamp>2019-03-02T15:41:02</Timestamp>
    </DataRecord>

    <DataRecord id="6">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Return temperature (1e-2 deg C)</Unit>
        <Value>1</Value>
        <Timestamp>2019-03-02T15:41:02</Timestamp>
    </DataRecord>

    <DataRecord id="7">
        <Function>Instantaneous value</Function>
        <StorageNumber>0</StorageNumber>
        <Unit>Temperature Difference (1e-2  deg C)</Unit>
        <Value>1</Value>
        <Timestamp>2019-03-02T15:41:02</Timestamp>
    </DataRecord>

    <DataRecord id="8">
        <Function>Instantaneous value</Function>
        <StorageNumber>1</StorageNumber>
        <Unit>Time Point (date)</Unit>
        <Value>2019-02-28</Value>
        <Timestamp>2019-03-02T15:41:02</Timestamp>
    </DataRecord>

</MBusData>
comments powered by Disqus