Vaillant eBUS hardware adapter (ebusd software) Thread

Thanks Rob, appreciate this work.

Was does ‘filter-seen’ do?

If you have a look further down the issue you raised it is suggested as a fix.

Take a look at this More conservative defaults for mqtt-hassio.cfg as some messages might not like being polled by pulquero · Pull Request #1213 · john30/ebusd · GitHub and subsequent work by pulquero.

As a follow up, I set my “filter-seen=1” last week and use a vanilla jonesPD’s configuration. All is fine so far with several DHW cycles and some short heating runs.
Looking at the status codes, it seems “Compressor blocked” and “Compressor shutdown” are normal as this happens at the end of a completed run as well.

I did try pulquero’s config but it messed up my MQTT sensors in HA so reverted to jonesPD as I didn’t have time to rework my sensors. It is likely his will work just fine too.

I might get round to figuring out which works best and maybe changing “1” to “5” but for now I am happy with the sensors I have and it is working.

I did trim the mqtt-hassio.cfg to only contain the following filter based on pulquero’s and the mentioned thread:

“filter-seen=1”

filter-name = ^status|^state*|statuscode$|^livemonitor|^testmenu|compressor|^hwc*temp

Hope this is of use.

1 Like

Hey @RATA1

Thanks for this. I really appreciate the level of detail and testing.

I will give this a go and see how I get on.

I used the filter-seen=1 parameter and things seem okay overnight (one DHW run and a tiny bit of heat)

I went back to the Jones config files.

Although I did have to stick with the default filtering options as half of what I wanted seemed missing in Home Assistant with your shortened filter.

filter-name = status|temp|humidity|yield|count|energy|power|runtime|hours|starts|mode|curve|^load$|^party$|sensor|timer

I may look to clean that up and remove stuff once I nail down exactly what it is I want to monitor long term.

Hi,

New ASHP is done since 2 weeks, 2 last day cooling mode started thanks to warmer days.

I receive power values in step of 100W and delayed.
All other value are well synced.

1 Like

This delay is because the values are not polled often enough. My solution is to have a Node-RED flow regularly request an update via posting /get to the relevant MQTT topics.

Thanks, I’m on home assistant will try a way to force the pool every 10 sec

1 Like

I think HA can send MQTT messages regularly as well. Since Node-RED is running on my Pi that also hosts Emoncms that was rhe easier option for me.

This is from an update to the Vaillant app; the coders seem not to correctly filter out system options that are irrelevant to the controlled system. As you do not have “cooling for any days”, and I presume no cooling resistor, there is code to remove this option but not, apparently, with the ventilation unit equivalent!

Hi,

Newbie and not a coder, I’m certainly missing something, I copied in configuration.yaml and reboot but they don’t pop up. are they some valu to modify to fit my set up ?

thx

1 Like

Yes maybe this part in the beginning?

mqtt:
sensor:

And I’m also assuming you have the ebusd add-on running and working?

My ebusd addon configuration:

scanconfig: true
loglevel_all: notice
mqtttopic: ebusd
mqttint: /etc/ebusd/mqtt-hassio.cfg
mqttjson: true
network_device: 192.168.1.143:9999
mode: enh
accesslevel: “*”
http: true
configpath: /config/ebusd-configuration/ebusd-2.1.x/en

yes up and running :

scanconfig: true
loglevel_all: notice
mqtttopic: ebusd
mqttint: /etc/ebusd/mqtt-hassio.cfg
mqttjson: true
network_device: 10.0.0.205:9999
latency: 10
pollinterval: 10
mode: enh
accesslevel: “*”
http: false

when http: true, I’m losing lots of entities and the requested one don’t shows up niether

I wrote it like this :

and no erros in notification after reboot

What ebusd metric are people using to determine if the system is doing DHW or CH?

I can see the RunDataStatuscode could be an option? But a boolean status would be easier to deal with in Emoncms

RunDataStatuscode seems to display:

  • Warm Water: Compressor active when activly heating DHW
  • standby when heating and DHW are off
  • Heating: Compressor shutdown in between cycles of space heating
  • Heating: Compressor Active when actively space heating

Has anyone got a HA script or automation to create an Emoncms MyHeatPump friendly boolean status for DHW?

If that’s an option for you, I have a Node-RED flow exactly for that purpose.

Yes, it can be. Can you share your flow? It would be good to find an easier to way to do this, I was hoping there would be a boolean value somewhere in all the ebus data! I’m not too familiar with ebus, I’ve just got my first ebus system up and running.

My ebusd config doesn’t seem to include the RunDataStatusCode, so this is how I’ve set it up. You can probably simplify this significantly. I have flow/return temperatures, electrical power, flow rate and the position of the threeway valve available in Node-RED. I get them via MQTT in nodes where I parse the ebusd messages and store the values in flow variables.

grafik

The “extract valve” function node stores the state in a flow variable.

// Assuming payload is already a parsed JSON object
msg.payload = msg.payload["0"].value;
flow.set('threeway_valve', msg.payload)
return msg;

Based on these variables I operate a little state machine in the function node. The trigger evaluates the state of the variables every 5 seconds.

Here’s the code of the function node. It keps track of whether the heat pump is currently active and whether it is in CH or HW mode. It has three outputs that are either 1 or 0 (active, DHW active, CH active).

// Configurable parameters
const POWER_ON_THRESHOLD = 100;
const POWER_OFF_THRESHOLD = 97;
const TEMP_DELTA_THRESHOLD = 0.05;

// Retrieve current state and sensor values
let currentState = flow.get('state') || 0;
let flowTemp = flow.get('temperature_flow_pt1000') || 0;
let returnTemp = flow.get('corrected_temperature_return_pt1000') || 0;
let electricalPower = flow.get('power_electrical') || 0;
let threewayValve = flow.get('threeway_valve') || "";
let flowRate = flow.get('flowRate');

if (flowRate === undefined || flowRate === null) {
    flowRate = -1;
}

// Calculate temperature difference
let tempDelta = Math.abs(flowTemp - returnTemp);

// Determine if the system is active
let isSystemActive = currentState === 1;

// Initialize heating and dhw states
let heatingActive = 0;
let dhwActive = 0;

// State transition logic for system active/inactive
if (currentState === 0 && electricalPower > POWER_ON_THRESHOLD) {
    // Transition from state 0 (inactive) to 1 (active)
    currentState = 1;
    isSystemActive = true;
} else if (currentState === 1 && electricalPower < POWER_OFF_THRESHOLD && tempDelta < TEMP_DELTA_THRESHOLD) {
    // Transition from state 1 (active) to 0 (inactive)
    currentState = 0;
    isSystemActive = false;
} else if (currentState === 1 && flowRate === 0) {
    // Transition to off/inactive if flowRate is zero
    currentState = 0;
    isSystemActive = false;
}

// Logic for heating and dhw based on threeway valve and system active state
if (isSystemActive) {
    heatingActive = threewayValve === "heating" ? 1 : 0;
    dhwActive = threewayValve === "dhw" ? 1 : 0;
}

// Save the new states
flow.set('state', currentState);
flow.set('heating_active', heatingActive);
flow.set('dhw_active', dhwActive);

// Output the current states for further use
msg.payload = {
    state: currentState,
    heatingActive: heatingActive,
    dhwActive: dhwActive
};

// Prepare messages for each state
let stateMsg = { payload: currentState };
let heatingActiveMsg = { payload: heatingActive };
let dhwActiveMsg = { payload: dhwActive };

// Use Node-RED's return object to send messages to multiple outputs
return [ [stateMsg], [heatingActiveMsg], [dhwActiveMsg] ];

The MQTT out nodes send these states to emoncms.

grafik

Again, this seems to essentially implement the state you’re getting from the RunStatusDataCode but you can probably adapt it accordingly.

ChatGPT was a massive timesaver for all these function nodes as I was essentially able to paste the responses 1:1 without any required corrections.

Nice! three way valve status is exactly what I’m after, but I don’t seem to have threeway valve status metric on my ebusd! This is the frustrating thing about ebusd, everyone seems to have different metrics or at least different names, which makes trying to standardise a process or integration very difficult!

What config are you using? I’m using latest jonesPD configuration files as suggested on this thread i.e

cd /home/pi
git clone https://github.com/jonesPD/ebusd-configuration/commits/master
mv /etc/ebusd /etc/ebud.old
sudo ln -s /home/pi/ebusd-configuration/ebusd-2.1.x/en /etc/ebusd

Mmm I’ve just noticed the jonesPD config also seems to be missing flow rate metric :roll_eyes:
What’s the best configuration files to use for Arotherm+?

1 Like

I think it’s because you don’t have a Vaillant MEH ( the hydraulic option), don’t you use a diverted valve connected on the VWZ AI for your HW ? The state of it should be listed in one of the hmu

I uploaded my config here: New Vaillant AroTherm Plus 7kW Install - #13 by Andre_K - I’m not really sure where I originally got it from but it works.