Axioma Qalcosonic E4 heating/cooling meter setup

Good afternoon. I have recently had to replace my heat meter and have purchased a Qalcosonic E4 from the shop. I have been able to update the meter configuration so that it is return mounted - that was where the old one went and there wasn’t any space for it in the flow. Before I power it up I hope you can help with a query regarding cooling. As my system can cool, should the meter be set up as heating only - I assume as heating only the figures will be negative when it cools - or should it be set to heating and cooling as it has this capability?

When cooling, is there a simple way of configuring the feeds so that cooling energy and heating energy can be separated to avoid messing up the COP calculation?

And finally, is the mbus interfacer setup still the same as in the guide as this refers to E3?

[[MBUS]]
    Type = EmonHubMBUSInterfacer
    [[[init_settings]]]
        device = /dev/ttyAMA0
        baud = 2400
    [[[runtimesettings]]]
        pubchannels = ToEmonCMS,
        read_interval = 10
        validate_checksum = False
        nodename = MBUS
        [[[[meters]]]]
            [[[[[heatmeter]]]]]
                address = 1
                type = qalcosonic_e3

Hope that makes sense. Many thanks.

Edited for presentation – Moderator (RW)
For future reference, when posting code or output, please put 3 ‘backticks’ (normally found at the top left of the keyboard) on a line of their own before the code, and 3 more backticks also on a line of their own after the code:

```
code
```

If it is something like php you can add a language identifier after the first 3 backticks: ```php or even ```text if you don’t want any language markup applied.

Hi Hanno,

The Axioma Qalcosonic E4 will work for both heating and cooling. However, the Emoncms heatpump app does not support cooling. By default, cooling will show up as negative heat which will product a negative COP.

To be able to correctly monitor cooling, we need some way to be able to determine is the negative heat produced by desirable cooling or undesirable negative heat during a defrost cycles? It’s important for accurate monitoring that negative heat during defrost is included, therefore it’s not as simple as just reporting all negative heat as positive heat. Are you able to get a boolean staus flag feed into Emoncms to report when there is demand for cooling?

For the Axioma E4 you should use

type = standard

Glyn

Thanks for the reply. I had wondered what would happen to defrost cycles if the heat meter were set to record cooling so will leave the meter set as heating only.

I have tried to get hold of my contacts at Vaillant to see about a ‘cooling’ on/off signal but they are all on leave at the moment. If Vaillant kit doesnt have this function I may be able to get a similar signal through a Home Assistant integration that reads the EEBUS. Is there a way for EmonCMS to read directly from Home Assistant? If not I could use the signal to operate a relay that EmonCMS could read.

The heat meter will always report cooling during defrost since the power will go negative, we don’t actually use the energy reading from the heat meter so the heating / cooling setting is irrelevant. Emoncms does the heat calculation itself based on the reported power, which will go negative during defrost.

finally got round to setting up the heat meter as slowly moving things from an hp and a Pi to a Pi2.
emonhub configuration extract as follows…

#######################################################################
#######################      emonhub.conf     #########################
#######################################################################
### emonHub configuration file, for info see documentation:
### https://github.com/openenergymonitor/emonhub/blob/emon-pi/configuration.md
#######################################################################
#######################    emonHub  settings    #######################
#######################################################################

[hub]
    ### loglevel must be one of DEBUG, INFO, WARNING, ERROR, and CRITICAL
    loglevel = DEBUG
    autoconf = 0
### Uncomment this to also send to syslog
# use_syslog = yes
#######################################################################
#######################       Interfacers       #######################
#######################################################################

[interfacers]
    ### This interfacer manages the RFM12Pi/RFM69Pi/emonPi module
    [[EmonPi2]]
        Type = EmonHubOEMInterfacer
        [[[init_settings]]]
            com_port = /dev/ttyAMA0
            com_baud = 115200
        [[[runtimesettings]]]
            pubchannels = ToEmonCMS,
            subchannels = ToRFM12,
    
    [[USB0]]
        Type = EmonHubOEMInterfacer
        [[[init_settings]]]
            com_port = /dev/ttyUSB0
            com_baud = 115200
        [[[runtimesettings]]]
            pubchannels = ToEmonCMS,
            subchannels = ToRFM12,
            nodename = emonTx4
    
    [[SPI]]
        Type = EmonHubRFM69LPLInterfacer
        [[[init_settings]]]
            nodeid = 5
            networkID = 210
            resetPin = 24
            selPin = 16
        [[[runtimesettings]]]
            pubchannels = ToEmonCMS,
    
    
    [[MQTT]]
        Type = EmonHubMqttInterfacer
        [[[init_settings]]]
            mqtt_host = 127.0.0.1
            mqtt_port = 1883
            mqtt_user = emonpi
            mqtt_passwd = emonpimqtt2016
        
        [[[runtimesettings]]]
            pubchannels = ToRFM12,
            subchannels = ToEmonCMS,
            
            # emonhub/rx/10/values format
            # Use with emoncms Nodes module
            node_format_enable = 0
            node_format_basetopic = emonhub/
            
            # emon/emontx/power1 format - use with Emoncms MQTT input
            # http://github.com/emoncms/emoncms/blob/master/docs/RaspberryPi/MQTT.md
            nodevar_format_enable = 1
            nodevar_format_basetopic = emon/
            
            # Single JSON payload published  - use with Emoncms MQTT
            node_JSON_enable = 0
            node_JSON_basetopic = emon/
    
    [[emoncmsorg]]
        Type = EmonHubEmoncmsHTTPInterfacer
        [[[init_settings]]]
        [[[runtimesettings]]]
            pubchannels = ToRFM12,
            subchannels = ToEmonCMS,
            url = https://emoncms.org
            apikey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            senddata = 1    # Enable sending data to Emoncms.org
            sendnames = 1    # Send full input names (compression will be automatically enabled)
            interval = 30    # Bulk send interval to Emoncms.org in seconds
    
    [[DS18B20]]
        Type = EmonHubDS18B20Interfacer
        [[[init_settings]]]
        [[[runtimesettings]]]
            pubchannels = ToEmonCMS,
            read_interval = 10
            nodename = sensors
# ids = 28-000008e2db06, 28-000009770529, 28-0000096a49b4
# names = ambient, cyl_bot, cyl_top

    [[MBUS]]
        Type = EmonHubMBUSInterfacer
        [[[init_settings]]]
            device = /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_DUEIb11CN11-if00-port0
            baud = 2400
        [[[runtimesettings]]]
            pubchannels = ToEmonCMS,
            read_interval = 10
            validate_checksum = False
            nodename = MBUS
            [[[[meters]]]]
                [[[[[heatmeter]]]]]
                    address = 1
                    type = standard

    [[SDM120]]
        Type = EmonHubMinimalModbusInterfacer
        [[[init_settings]]]
            device = /dev/serial/by-id/usb-1a86_USB_Single_Serial_54D2042866-if00
            baud = 2400
        [[[runtimesettings]]]
            pubchannels = ToEmonCMS,
            read_interval = 10
            nodename = sdm120
            [[[[meters]]]]
                [[[[[inside]]]]]
                    address = 1
                    registers = 12, 72
                    names = Power, Energy
                    precision = 1, 3
                [[[[[outside]]]]]
                    address = 2
                    registers = 12, 72
                    names = Power, Energy
                    precision = 1, 3
                [[[[[heater]]]]]
                    address = 3
                    registers = 12, 72
                    names = Power, Energy
                    precision = 1, 3

#######################################################################
#######################          Nodes          #######################
#######################################################################

## See config user guide: https://github.com/openenergymonitor/emonhub
## If autoconf is enabled above, node configuration will automatically
## populate based on templates listed in available.conf

[nodes]
    [[23]]
        nodename = emonth2_23
        [[[rx]]]
            names = temperature, external temperature, humidity, battery, pulsecount
            datacodes = h, h, h, h, L
            scales = 0.1, 0.1, 0.1, 0.1, 1.0
            units = C, C, %, V, p
    [[24]]
        nodename = emonth2_24
        [[[rx]]]
            names = temperature, external temperature, humidity, battery, pulsecount
            datacodes = h, h, h, h, L
            scales = 0.1, 0.1, 0.1, 0.1, 1.0
            units = C, C, %, V, p

inputs generated for the other interfacers and nodes except for the heat meter. error noted in the log…

2024-09-01 16:33:30,078 DEBUG    MBUS       Connecting to MBUS serial: /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_DUEIb11CN11-if00-port0 2400
2024-09-01 16:33:31,983 DEBUG    SDM120     [12.6, 325.12, 10.9, 3166.846, 0.0, 0.0]
2024-09-01 16:33:31,984 DEBUG    SDM120     55 NEW FRAME : 
2024-09-01 16:33:31,984 DEBUG    SDM120     55 Timestamp : 1725204810.087589
2024-09-01 16:33:31,985 DEBUG    SDM120     55 From Node : sdm120
2024-09-01 16:33:31,985 DEBUG    SDM120     55    Values : [12.6, 325.12, 10.9, 3166.846, 0, 0]
2024-09-01 16:33:31,985 DEBUG    SDM120     55 Sent to channel(start)' : ToEmonCMS
2024-09-01 16:33:31,986 DEBUG    SDM120     55 Sent to channel(end)' : ToEmonCMS
2024-09-01 16:33:32,094 DEBUG    MBUS       Invalid MBUS data received 72 bytes 2010.0 ms, count: 5
2024-09-01 16:33:32,220 DEBUG    MQTT       Publishing: emon/sdm120/inside_Power 12.6
2024-09-01 16:33:32,221 DEBUG    MQTT       Publishing: emon/sdm120/inside_Energy 325.12
2024-09-01 16:33:32,222 DEBUG    MQTT       Publishing: emon/sdm120/outside_Power 10.9
2024-09-01 16:33:32,223 DEBUG    MQTT       Publishing: emon/sdm120/outside_Energy 3166.846
2024-09-01 16:33:32,223 DEBUG    MQTT       Publishing: emon/sdm120/heater_Power 0
2024-09-01 16:33:32,224 DEBUG    MQTT       Publishing: emon/sdm120/heater_Energy 0
2024-09-01 16:33:34,305 DEBUG    MBUS       Invalid MBUS data received 77 bytes 2009.4 ms, count: 6
2024-09-01 16:33:34,505 DEBUG    MBUS       Decoded MBUS data: None
2024-09-01 16:33:36,159 DEBUG    EmonPi2    56 NEW FRAME : MSG:1622,V1:240.67,P1:0,P2:0,P3:0,P4:0,P5:0,P6:0,E1:0,E2:0,E3:0,E4:0,E5:0,E6:0,pulse:0

any help greatfully received.

off topic but how does the hws voltage sensor work? can it be extended to other circuits?

thanks.

Have you set the MBUS ID? If not, this can be done via:

sudo service emonhub stop 
cd /opt/emoncms/modules/usefulscripts/mbus/
python3 mbus_set_address.py 

When prompted, enter the USB address which for your mbus adaptor is /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_DUEIb11CN11-if00-port0 and accept the default options to set the address to.

Once complete start emonhub

sudo service emonhub start

What’s a hws voltage sensor? Do you mean the emonVS: https://docs.openenergymonitor.org/emontx4/voltage_sensors.html#emonvs-psu

thanks for the reply. i reset the address

hanno@library-mint:~$ ssh [email protected]
[email protected]'s password: 
Linux emonpi 6.1.0-rpi8-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.73-1+rpt1 (2024-01-25) aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Sep  2 06:46:27 2024 from 192.168.178.74
pi@emonpi:~ $ sudo service emonhub stop
pi@emonpi:~ $ cd /opt/emoncms/modules/usefulscripts/mbus/
python3 mbus_set_address.py 
Please enter serial port (default: /dev/ttyUSB0): /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_DUEIb11CN11-if00-port0
Please enter baud rate (default: 2400): 
Trying to connect on /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_DUEIb11CN11-if00-port0 2400
Please enter current address (default: 254): 
Please enter new address (default: 1): 
Sending command to check meter at address 254
ACK
Sending command to change meter on address 254 to address 1
ACK
Sending command to check meter at address 1
ACK
pi@emonpi:/opt/emoncms/modules/usefulscripts/mbus $ sudo service emonhub start
pi@emonpi:/opt/emoncms/modules/usefulscripts/mbus $ 
Broadcast message from root@emonpi (Mon 2024-09-02 06:58:18 BST):

The system will reboot now!

Connection to 192.168.178.107 closed by remote host.
Connection to 192.168.178.107 closed.
hanno@library-mint:~$ 

the meter is still in transit mode so was able to check on the display which says ‘buSA 1’. the flow sensor isnt fitted in the pipework yet so is running ‘dry’. the display shows a warning triangle however i cannot get to see what the error is. i believe this is due to the sensor not being filled with water.

emonhub log still shows an error

2024-09-02 07:54:10,058 DEBUG    MBUS       Connecting to MBUS serial: /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_DUEIb11CN11-if00-port0 2400
2024-09-02 07:54:10,573 ERROR    MBUS       read_data_frame could not read from serial port
2024-09-02 07:54:10,574 DEBUG    MBUS       Invalid MBUS data received 75 bytes 509.8 ms, count: 5
2024-09-02 07:54:10,775 ERROR    MBUS       Could not write to MBUS serial port
2024-09-02 07:54:10,775 ERROR    MBUS       read_data_frame could not read from serial port
2024-09-02 07:54:10,776 DEBUG    MBUS       Invalid MBUS data received 0 bytes 0.4 ms, count: 6
2024-09-02 07:54:10,976 DEBUG    MBUS       Decoded MBUS data: None

sorry forgot about the ‘voltage sensor’. apologies for poor wording. this was recording hws operation. i was looking to use a ct clamp on the feed to the hws diverter valve however this only records 6 mA(?) - see feed from last night


i was looking to do the same for heating on/off and cooling on/off but the values are only 2 as they are on a feed to a relay. my concern is whether this value is too low for it to be able to work properly. does the feed need to be binary? if so how would you suggest converting this to 0/1?

Nice work, that looks good.

Ah, I can see the problem you have and EmonHubOEMInterfacer in your emonhub config also trying to read from ttyUSB0, this will be conflicting with the MBUS interfacer which is reading from the same port. To fix this you should remove the following from emonhub.conf

    [[USB0]]
        Type = EmonHubOEMInterfacer
        [[[init_settings]]]
            com_port = /dev/ttyUSB0
            com_baud = 115200
        [[[runtimesettings]]]
            pubchannels = ToEmonCMS,
            subchannels = ToRFM12,
            nodename = emonTx

That’s fine, that will work well for DHW detection. You can use the following input process to convert this to a boolean flag:

thanks. those relays make a satisfying clunk just like control panels of old.

i deleted the [USB] section. mbus inputs now created with data streaming in. thank you for sorting that.

following a suggestion from @Robert.Wall i increased the loops through the ct. hot water input reading is now 12 and the heating and cooling input readings are now up to 7. the feeds for heating and cooling activation should be named ch_flag and cool_flag?

Ok great. Let me know your emoncms.org username if you would like me to look at the data?

You can name the Feed whatever you want, just select the correct Feed from the drop down list in the MyHeatPump app dashboard.