Sontex Supercal 5 - MBUS Missing Entries?


I’m trying to fault find a Sontex Supercal 5 heat meter using MBUS. I have a connection to the MBUS interface and it seems to be roughly working.

root@pi-modbus:/home/pi/libmbus/bin# ./mbus-serial-request-data -b 2400 /dev/ttyAMA0 0
<?xml version="1.0" encoding="ISO-8859-1"?>

        <Medium>Heat / Cooling load meter</Medium>

    <DataRecord id="0">
        <Function>Instantaneous value</Function>
        <Unit>Manufacturer specific</Unit>
        <Value> ! </Value>

    <DataRecord id="1">
        <Function>Instantaneous value</Function>
        <Unit>Time Point (time &amp; date)</Unit>
        <Value>*▒ %*▒ %*▒ $</Value>

    <DataRecord id="2">
        <Function>Manufacturer specific</Function>


Sadly there doesn’t seem to be any more data displayed than this. No flowrates, temperatures or power, even though they are displayed quite nicely on the Supercal 5 screen.

Before I got further with integration I just want to see whether I was missing something? There is some weird utf8 type characters not being displayed correctly, but I don’t know whether this is par of the problem.

Thanks in advance,


Hello @ecylcje. It is possible to get the Supercal 5 to return a lot more data than this.
We found we needed to switch the page/view by sending alternating read data commands with a slightly different value 5b/7b as documented here: emonHub Interfacers — OpenEnergyMonitor 0.0.1 documentation. Once it’s in the right mode, it’s usually fine.

Interesting workaround!

You can also configure these meters NOT to use multi-telegram and instead to report everything useful on the first telegram.

If bought from Chris @ DMS Metering he should know how to configure that ex works. Probably not geared up for a minimum order quantity of 1 though so you’d have to break bulk.

Disabling multi-telegram would definitely be a brilliant idea, but sadly there doesn’t seem to be anything in the documentation to show how it is done. I have put a request into Sontex for some help but I’m not sure it will come to anything.




Thanks so much for this workaround. I’m obviously being really stupid because when I run the steps suggested on the CLI I can get the data out:

pi@emonpi:~/usefulscripts/mbus $ python3
No config.ini file found
Please enter serial port (default: /dev/ttyAMA0):
Please enter baud rate (default: 2400):
Please enter address to check (default: 0):
Trying to connect on port:/dev/ttyAMA0 baud:2400 address:0
{'DateTime': [737085751, ''], 'Energy': [1216, 'kWh'], 'Volume': [316.617, 'm3'], 'Energy2': [1, 'kWh'], 'Volume2': [0.293, 'm3'], 'Record6': [7, ''], 'Record7': [1, ''], 'Volume3': [0.0, 'm3'], 'Record9': [7, ''], 'Record10': [2, ''], 'Volume4': [0.0, 'm3'], 'FlowT': [29.560000000000002, 'C'], 'ReturnT': [27.69, 'C'], 'Record14': [0, ''], 'Power': [0, 'W'], 'Record16': [0, ''], 'Record17': [0, ''], 'FabNo': [30929068, ''], 'Record19': [10005, ''], 'Ontime Hours': [3688, 'h']}
pi@emonpi:~/usefulscripts/mbus $

But when I come to running on the emonhub the data is always as follows:

2023-11-15 10:38:10,644 DEBUG    MBUS       Decoded MBUS data: {"Record1": [257, ""], "Energy": [0, "kWh"], "Volume": [0.0, "m3"], "Energy2": [0, "kWh"], "Volume2": [0.0, "m3"], "Volume3": [0.0, "m3"], "Volume4": [0.0, "m3"], "Record8": [1793, ""], "Energy3": [0, "kWh"], "Volume5": [0.0, "m3"], "Energy4": [0, "kWh"], "Volume6": [0.0, "m3"], "Volume7": [0.0, "m3"], "Volume8": [0.0, "m3"]}
2023-11-15 10:38:10,645 DEBUG    MBUS       251 NEW FRAME : 
2023-11-15 10:38:10,645 DEBUG    MBUS       251 Timestamp : 1700044690.017646
2023-11-15 10:38:10,646 DEBUG    MBUS       251 From Node : MBUS
2023-11-15 10:38:10,647 DEBUG    MBUS       251    Values : [257, 0, 0, 0, 0, 0, 0, 1793, 0, 0, 0, 0, 0, 0]
2023-11-15 10:38:10,647 DEBUG    MBUS       251 Sent to channel(start)' : ToEmonCMS
2023-11-15 10:38:10,648 DEBUG    MBUS       251 Sent to channel(end)' : ToEmonCMS
2023-11-15 10:38:10,826 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Record1 257
2023-11-15 10:38:10,827 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Energy 0
2023-11-15 10:38:10,829 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Volume 0
2023-11-15 10:38:10,830 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Energy2 0
2023-11-15 10:38:10,831 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Volume2 0
2023-11-15 10:38:10,832 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Volume3 0
2023-11-15 10:38:10,833 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Volume4 0
2023-11-15 10:38:10,835 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Record8 1793
2023-11-15 10:38:10,836 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Energy3 0
2023-11-15 10:38:10,837 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Volume5 0
2023-11-15 10:38:10,838 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Energy4 0
2023-11-15 10:38:10,840 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Volume6 0
2023-11-15 10:38:10,841 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Volume7 0
2023-11-15 10:38:10,842 DEBUG    MQTT       Publishing: emon/MBUS/heatmeter_Volume8 0

No matter whether I run 5b, then 7b and then 5b or any combination of them, emonhub always reverts back to this page of empty stuff and not the interesting

My emonhub config is:

    Type = EmonHubMBUSInterfacer
        device = /dev/ttyAMA0
        baud = 2400
        pubchannels = ToEmonCMS,
        read_interval = 10
        validate_checksum = False
        nodename = MBUS
                address = 0
                type = standard

Should I be adding something extra in there to run the 5b and 7b?

Thanks and apologies,



As an update to all this I have finally managed to get the Sontex Supercal 5 to work with emonhub. I needed to make a few changes:

Firstly I only ran the following from the usefulscripts section:

  1. Stop emonhub

sudo systemctl stop emonhub

  1. Try to read a data from from the Sontex using the usefulscripts/mbus/ script:
python3 /opt/emoncms/modules/usefulscripts/mbus/
python3 /opt/emoncms/modules/usefulscripts/mbus/

I didn’t run any of the next steps, because no matter what I tried they just reverted things to a failure mode.

I then changed the following line in the file:

ie 0x5b to 0x7b in line 402


    def request_data(self, address, records):
        for i in range(0,2):
            self.mbus_short_frame(address, 0x7b)
            # time.sleep(1.0)
            result = self.read_data_frame(records)
            if result!=None:
                return result

Once I did all this then the results started working.

As a note I did received back from Sontex the Supercal MBUS interface specifications: M-Bus Frames SC5 - 2023-08-21 - 1.0.5.pdf

Thanks all,


1 Like

@TrystanLea @glyn.hudson - looks like this could usefully be a configurable item.

Did you meant to attach a file?

Sorry didn’t know whether I was allowed.


M-Bus Frames SC5 - 2023-08-21 - 1.0.5.pdf (728 KB)

1 Like