Below is a summary guide in order o get you up and running. As I mentioned, the code element is partually working (incomplete) and has a few bugs, but together I think we can figure it out.
Parts required
USB to RS485 485 Converter Adapter
https://www.aliexpress.com/item/1005001621816794.html
USB to Rj45 Extension over Cat5e Cat6
https://www.aliexpress.com/item/1005005971843615.html
The second part to purchase (above) is optional. I just happened to have data points in my house so was able to neatly run them across this (within short distance). Otherwise you’ll need 2 cores of a cable (suggest CAT5e/6 to be on the safe side) to run from the top of your MVHR unit into the back of the USB RS485 converter (which then goes into your HA server via USB).
As per initial my initial post above, details of where to wire into the BEAM/TITON MVHR unit are at this link (you need to remove the black plastic cover on the top of the unit):
The next part is a work in progress so it doesn’t entirely work propertly yet (but maybe you’ll figure it out better than I can):
Configuration.yaml config (draft):
shell_command:
mvhr_therm1_stale_in: 'stty -F /dev/ttyUSB1 1200 && echo "0301+00000\r\n" > /dev/ttyUSB1'
mvhr_therm2_stale_out: 'stty -F /dev/ttyUSB1 1200 && echo "0311+00000\r\n" > /dev/ttyUSB1'
mvhr_therm3_fresh_in: 'stty -F /dev/ttyUSB1 1200 && echo "0321+00000\r\n" > /dev/ttyUSB1'
mvhr_internal_humidity: 'stty -F /dev/ttyUSB1 1200 && echo "0361+00000\r\n" > /dev/ttyUSB1'
Sensors.yaml config (draft - note that my sensors are seperated out into their own YAML file using the “include” entry in my configuration.yaml file. you can also put these under “sensors:” in your configuration.yaml):
# Test for MVHR Heat Recovery Unit
- platform: serial
serial_port: /dev/ttyUSB1
name: MVHR
baudrate: 1200
- platform: template
sensors:
mvhr_uptime:
friendly_name: "MVHR total Running Time (Days)"
unit_of_measurement: "days"
value_template: >
{% set parts = states('sensor.MVHR').split('+') %}
{% if parts[0] == '060' %}
{{ (parts[1] | float(default=0)) / 24 | round(1) }}
{% else %}
0
{% endif %}
- platform: template
sensors:
mvhr_stale_in:
friendly_name: "MVHR Stale in (therm 1)"
unit_of_measurement: "°C"
value_template: >
{% set parts = states('sensor.MVHR').split('+') %}
{% if parts[0] == '030' %}
{{ (parts[1] | float(default=0)) }}
{% else %}
0
{% endif %}
Script - The next part is a “script” I have to run the “shell_command” outlined in my configuration.yaml:
alias: "* MVHR - Run Shell Command"
sequence:
- service: shell_command.mvhr_internal_humidity
data: {}
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 500
- service: shell_command.mvhr_therm1_stale_in
data: {}
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 500
- service: shell_command.mvhr_therm2_stale_out
data: {}
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 500
- service: shell_command.mvhr_therm3_fresh_in
data: {}
description: |-
Run shell command to request values from MVHR for:
Internal Humidity
Stale in
Stale Out
Fresh in
etc
You then need an automation to run this script. While the scripts and templates are not fully fleshed out yet, the issue I have is “how do I run the script at a time when the MVHR sends a load of values (which it does every 15 seconds”?
Summary
Ok… so if you were to just follow the instructions above and put together all the config outlined above on this specific post, you should (!) get the following sensors:
- sensor.mvhr (main one where all output from terminal flashes through)
- sensor.mvhr_stale_in (template of “sensor.mvhr”, just summerising the specific value from the main feed)
- sensor.mvhr_uptime (similar to above - (template of “sensor.mvhr”, just summerising the specific value from the main feed)
Missing sensors (for now)
- mvhr_therm2_stale_out
- mvhr_therm3_fresh_in
- mvhr_internal_humidity
This is because I haven’t spent time writing the complete set of templates (as outlined above in “sensors.yaml”) until I get everything else working. One I get the initial traunche behaving, I will come back to review these.
To do
- Once I figure out (or you do) how to executive script (above) at a time when the MVHR is not sending HA information, I need to refine and expand sample templates (above) further.
- Build friendly card to display all values
- Built automations to do certain things in certain conditions (i.e. button to run “boost” when humidity in shower increases. Another one is: turn on summerboost when temperature in house/outside reaches a certain temperature).
Hope that helps a few of you in progressing! R