HOW-TO: Control your Ouman EH-800 heating controller using Home Assistant

@honkkkis thanks for the initial setup for this!

I have made some additional call for the Ouman to be able to plot the temperature graph. Here is the bit for that on command_line.yaml file:

# Gathering heating curve data

- sensor:

      name: Ouman EH800 - Heating curve low req

      command: 'curl "http://ip_address_ouman_eh800:port/request?S_67_85" | cut -d '';'' -f 1 | cut -b 17-'

      unit_of_measurement: "°C"

      unique_id: sensor.ouman_eh800_heat_crv_low_req

- sensor:

      name: Ouman EH800 - Heating curve low req 2

      command: 'curl "http://ip_address_ouman_eh800:port/request?S_69_85" | cut -d '';'' -f 1 | cut -b 17-'

      unit_of_measurement: "°C"

      unique_id: sensor.ouman_eh800_heat_crv_low_2_req

- sensor:

      name: Ouman EH800 - Heating curve mid req

      command: 'curl "http://ip_address_ouman_eh800:port/request?S_71_85" | cut -d '';'' -f 1 | cut -b 17-'

      unit_of_measurement: "°C"

      unique_id: sensor.ouman_eh800_heat_crv_mid_req

- sensor:

      name: Ouman EH800 - Heating curve high req 2

      command: 'curl "http://ip_address_ouman_eh800:port/request?S_73_85" | cut -d '';'' -f 1 | cut -b 17-'

      unit_of_measurement: "°C"

      unique_id: sensor.ouman_eh800_heat_crv_high_2_req

- sensor:

      name: Ouman EH800 - Heating curve high req

      command: 'curl "http://ip_address_ouman_eh800:port/request?S_75_85" | cut -d '';'' -f 1 | cut -b 17-'

      unit_of_measurement: "°C"

      unique_id: sensor.ouman_eh800_heat_crv_high_req

- sensor:

      name: Ouman EH800 - Minimum water temperature

      command: 'curl "http://ip_address_ouman_eh800:port/request?S_54_85" | cut -d '';'' -f 1 | cut -b 17-'

      unit_of_measurement: "°C"

      unique_id: sensor.ouman_eh800_minimum_water_temperature

- sensor:

      name: Ouman EH800 - Maximum water temperature

      command: 'curl "http://ip_address_ouman_eh800:port/request?S_55_85" | cut -d '';'' -f 1 | cut -b 17-'

      unit_of_measurement: "°C"

      unique_id: sensor.ouman_eh800_maximum_water_temperature

This then lets me to plot the graph using plotly:

Here is the card code:

type: custom:plotly-graph
layout:
  xaxis:
    type: number
    showlegend: false
  yaxis:
    fixedrange: true
    range:
      - 0
      - 60
entities:
  - entity: ''
    x:
      - -20
      - -10
      - 0
      - 10
      - 20
    'y':
      - $ex hass.states["sensor.ouman_eh800_heating_curve_low_req"].state
      - $ex hass.states["sensor.ouman_eh800_heating_curve_low_req_2"].state
      - $ex hass.states["sensor.ouman_eh800_heating_curve_mid_req"].state
      - $ex hass.states["sensor.ouman_eh800_heating_curve_high_req_2"].state
      - $ex hass.states["sensor.ouman_eh800_heating_curve_high_req"].state
    line:
      shape: spline
raw_plotly_config: true

As you see, I have configured the Ouman EH-800 to use 5-point adjustment. Also the graph is ‘‘inverted’’, but that can be adjusted according to one’s preferences.

My goal would be to make the Ouman to adjust for forecast info, here are couple of articles how to do it on generally any weather based system:
https://www.sciencedirect.com/science/article/pii/S0959652622012227
https://www.sciencedirect.com/science/article/abs/pii/S0378778821000505

I’m planning to use the adjusting algorithm by changing the adjustable room-temperature offset value on register:

S_134_85 Room temp fine adjustment

Also it would be great to make the Ouman Graph interactive, I think that’s doable by some default integrations. With this, you wouldn’t have to go to the device to adjust, and can see the loop working remotely. I’m also polling data from the valve position etc.

1 Like

Nice work @Atomicsickness!

I was dong some comparison on energy use between years and found that degree day-measurement can be implemented quite easily in Home Assistant:
Track your degree days using HA and benchmark your gas consumption - Share your Projects! - Home Assistant Community (home-assistant.io)

By using Ouman collected data and having energy consumption numbers, I think one could collect easily all the data needed for those weather based adjustments, as degee day is indicator for “heating need”. In previous example they are using gas measured in cubic meters, but it can be adapted for whatever energy source.

Last winter I did almost all heating with electricity and my utility company provides hourly temp with consumption in their site in Excel form, using it I can calculate heat losses quite accurately. If utility company provides that kind of data, it will help making better prediction (and saves one year for collecting data!)

1 Like

Did you ever find out the register for the inside temp sensor?

I just ordered this and waiting for it to arrive later this week.

EDIT

Used Google translate now on a previous post, “S_261_85: L1 Huonelämpötila” I guess that might be the inside temp sensor register, will test it once I have the sensor installed.

Yes, S_261_85 register is indoor temperature.

Ok, thanks for the reply.
Should have this sensor installed before the weekend hopefully :+1:

Did you buy Ouman made sensor, or are you using just common NTC-10 resistor for measurement?

Ouman made, their sensor called “TMR-SP”

The WAF (Wife acceptance factor - Wikipedia) needed to be high :slight_smile: therefore a Ouman made sensor that looks nice, also nice to have a quick way to adjust the heat right on the sensor.

Still waiting for it to arrive.

So the TMR-SP is finally installed and everything is working except that I can’t have the TMR-SP to control the V2 circuit which is my floor heating… reading the manual it seems to be “hard coded” to only control V1 when using a TMR-SP…

So all I can do is to switch places on the Ouman EH800 and the EXP-800 and reconfigured them to get this working…
(I have both since I have radiators and floor heating in my house)

Completely baffled V2 can’t be controlled by TMR-SP…

EDIT

Could have mentioned that

V1 = The Ouman EH-800 itself, mounted on the radiator circuit (floor 2 in the house)
V2 = EXP-800, mounted on the floor heating circuit (floor 1 in the house)

So yeah, I guess I will be switching around the Ouman / EXP-800 tonight…

(Seems V1/V2 is called H1/H2 in English manual and L1/L2 in Finnish manual)
I have my unit set to Swedish so that’s why I have V1/V2, in case someone got confused :slight_smile:

So, now I have changed around the EH-800 and the EXP-800… was not that hard but changing all the settings back and making the motors change directions so the vales open / closes correctly was more of a pain when the manuals don’t really have all the info…

Anyway, TMR-SP works great, logging it’s values from the following ID’s

S_261_85 - Indoor temperature
S_274_85 - Value of the potentiometer

1 Like

Hi
I use three extra analog input channel in my Ouman EH800. How can I read these variables to home assistant?

@Mikkeli, are those inputs connected using EXU-800 or EXP-800? EXU and EXP seem to be (almost) same device. Or wired to EH-800?

According to lampopumput.info, registers are:

  • measurement 3, register S_234_85
  • measurement 4, register S_235_85
  • measurement 5, register S_238_85

There is also register for EXU-relay, it’s register S_1004_85 (read only)

However, another source in lampopumput.info suggests measurements 3 and 4 are

  • measurement 3, register S_238_85
  • measurement 4, register S_283_85
    Information on this is contradicting and would be good, if someone can check what those five registers actually have in fully furnished system with EXU.

About EXU/EXP measurements, Ouman EXU/EXP deployment guide states (page 7), that

  • measurement 5 is heating circuit (L2 / V2 depending on language settings) supply water or other temp signal
  • measurement 6 contact information (home/away switch or alarm)

Measurement channel numbering per EH-800 manual:

  • channels 3 and 4 are internal to EH-800 base unit
  • channel 5 is available with EXU

Edit: EXP is EXU with factory equipped shunt?
Edit: more registers / readibility
Edit: measurements 5 and 6 description from manual
Edit: channel numbering scheme from Ouman EH-800 manuals

I have EXU800.

command: ‘curl “http://192.168.0.98:60098/request?S_238_85” | cut -d “:” -f 2 | cut -d “;” -f 1 | cut -b 18-’
Käytin tätä saman tyylistä commandia, kuin ulkolämpötilan mittaukseen. Mutta tämä antaa vain 0,0 ulos. Onko näiden exu mittausten sanoma eri tyyppinen, jolloin nuo leikkaukset pitäisi muuttaa?

Kannattaa tarkastaa, koska cut-komennolle ilmoitetaan tässä tapauksessa tiedostosta luettavien merkkien “x-koordinaatti”, eli monesko/mitkä merkit, ja mittausten 3-5 rekisterien nimet ovat 8 merkkiä pitkiä, kun taas osassa esimerkeissä rekisterin nimen pituus on 7 merkkiä ja vastauksessa on aina alussa rekisterin nimi. Cut-komennon käytöstä Linux cut Command Explained with 6 Examples (phoenixnap.com)

Kannattaa tietysti tarkastaa tiedostosta, mitä siellä on sisältönä / ohjata tarvittaessa vianhakuvaiheessa tiedostoon suoran unix-putkituksen sijasta. Tällöin saa ainakin varmuuden, mitä Ouman antaa ulos ja tuleeko nollat sieltä, vai Home Assistantista. Ouman antaa ilmeisesti nollaa (0.0) ulos numeerisille mittauksille, joissa ei ole anturia/tilatietoa.

Jos voit tänne postaa, mitä tietoa mittauskanavat antoivat?


Some discussion about measurements 3-5 and cut-command, mikkeli is getting output 0,0 (either from Ouman or Home Assistant), asked him to provide us with raw output from file/command line.

@Belaial, you have EXU-800, are you reading additional measurements (channel 5 and / or 6) from it, can you confirm its output? I have no EXU, as my Ouman is attached to simple single circuit floor heating.

Yes I am reading values from the EXU-800 unit (and values I guess are related to it once connected), I hope these are the correct ones…

(from my configuration.yaml)

  - sensor:
        name: Ouman EH800 - Radiator Temperatur
        command: 'curl "http://ip.ip.ip.ip:port/request?S_293_85" | cut -d '';'' -f 1 | cut -b 18-'
        unit_of_measurement: "°C"
        unique_id: sensor.ouman_eh800_temperatur_radiator
        
  - sensor:
        name: Ouman EH800 - Temperatur Radiator Finjustering
        command: 'curl "http://ip.ip.ip.ip:port/request?S_221_85" | cut -d '';'' -f 1 | cut -b 18-'
        unit_of_measurement: "°C"
        unique_id: sensor.ouman_eh800_temperatur_radiator_finjustering

  - sensor:
        name: Ouman EH800 - Beräknad Temperatur Radiator
        command: 'curl "http://ip.ip.ip.ip:port/request?S_310_85" | cut -d '';'' -f 1 | cut -b 18-'
        unit_of_measurement: "°C"
        unique_id: sensor.ouman_eh800_beraknad_temperatur_radiator

  - sensor:
        name: Ouman EH800 - Radiator Ventil
        command: 'curl "http://ip.ip.ip.ip:port/request?S_306_85" | cut -d '';'' -f 1 | cut -b 18-'
        unit_of_measurement: "%"
        unique_id: sensor.ouman_eh800_radiator_ventil

I just changed around some in my config when I switched place on the unit’s to install the room sensor… so if they seem wrong let me know and I will check again.

There are some Swedish names on the sensors but a rough translation is

name: Ouman EH800 - Radiator Temperatur - Temperature going out

name: Ouman EH800 - Temperatur Radiator Finjustering - Adjustment (if you want to change the room temperature, not sure how ti explain it)

name: Ouman EH800 - Beräknad Temperatur Radiator - Calculated temperature (what it aims to provide so to speak)

name: Ouman EH800 - Radiator Ventil - Value of the valve in % (open / closed)

EDIT

Can add that my EH800 controls the floor heating and the EXU controls my radiators.

1 Like

Belaial. Your variables are not from exu-800 … these are eh-800 variables.

I try read: S_234_85; mittaus 3, S_235_85; mittaus 4, # S_238_85: mittaus 5

I have checked now and I know these values work for me, maybe different SW-version in your EH800 or something, this for example is my “?S_293_85” value in Home Assistant.

image

They way I found what values to read is that I went into the web-GUI of the EH800, found the value I wanted in Home Assistant and then used “Inspect” to find the values I needed, like this

(The values in the 2 pictures for “?S_293_85” does not match since it changed during the few seconds I needed to take them :slight_smile: )

This is just an example now from my EH800, you can try this on yours and see if there are different variables in your EH800 web-GUI.

I know these values works for me at least, and since they are from “V2” they must be from the EXU-800 as I see it.

1 Like

I don’t have any broblem about these normal two analog channels. I try ask next three analog channels. How can I read them? Can somebody help me. Registers 234_85 and 235_85 and 238_85. I thionk these are next three analog measurement channels.

I tried reading out registers 234_85 and 235_85 and 238_85 from my system now, results are the same as yours @mikkeli 0.0 on all

root@raspberrypi:/home/pi# curl http://ip.ip.ip.ip:port/request?S_234_85 --output -
request?S_234_85=0.0;

root@raspberrypi:/home/pi# curl http://ip.ip.ip.ip:port/request?S_235_85 --output -
request?S_235_85=0.0;

root@raspberrypi:/home/pi# curl http://ip.ip.ip.ip:port/request?S_238_85 --output -
request?S_238_85=0.0;

Then just to make sure something else worked I read out the registers in my previous post

root@raspberrypi:/home/pi# curl http://ip.ip.ip.ip:port/request?S_293_85 --output -
request?S_293_85=37.4;

root@raspberrypi:/home/pi# curl http://ip.ip.ip.ip:port/request?S_221_85 --output -
request?S_221_85=0.0;

root@raspberrypi:/home/pi# curl http://ip.ip.ip.ip:port/request?S_310_85 --output -
request?S_310_85=41.8;

root@raspberrypi:/home/pi# curl http://ip.ip.ip.ip:port/request?S_306_85 --output -
request?S_306_85=100;

And they all worked

S_293_85 value in Celsius

S_221_85 value in Celsius (should be 0.0 since I have no fine adjustment set)

S_310_85 value in Celsius

S_306_85 Value in % (valve is 100% open since I am running on ground heating)

So I can’t do much about registers 234_85 and 235_85 and 238_85 as I don’t seem to use those

@honkkkis - I saw this in your post earlier

“Edit: EXP is EXU with factory equipped shunt?”

I think that is correct, I noticed the plastic box mounted on the wall in the boiler room with all the cables says EXU-800 and the box the product came in says EXP-800, I can provide pictures once I get home from work to clarify what I mean.

EDIT

The box

The unit

The EXU-800 have 3 cables
One goes to the EH800
One to the valve it controls (S_306_85)
One to a temp sensor to read the temperature of the circuit it controls (S_293_85)