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

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)

I have setup my sensor.yaml to read some information from my Ouman EH-800 succesfully. As the next step I am trying to add some adaptivity to the heating by adjusting the room temperature offset based on the needs, but I cannot seem to be able to set the offset in the unit. I am using Node-red flow like this:

First ‘http request’ node is the login and the second is the command I am trying to use. I get the response ‘result?S_134_85=1.0;’, but the setting in Ouman does not change… Any idea what might be going wrong, or should I even be able to set the offset like this?

S_134_85 is listed as Set/Get-register in lampopumput.info-forum. Ouman web-interface offers input box for room temp fine adjustment. Seems likely, that it can be adjusted.

Some examples on Oumanilta uusi säädin EH-800 | Lampopumput - Keskustelua lämpöpumpuista, see post #31. They seem to set time and date same time as example of command grouping.

@Atomicsickness had some ideas in the summer about room temp fine adjustment, maybe he can help with syntax?

Got it working now with some wiresharking, turns out the register in Lampopumput seems to be wrong, using S_102_85=-0.3; worked for the offset adjustment.

1 Like

@Atomicsickness It should be possible to set curve points using registers, since Ouman GUI has those settings (water temp for circuit at -20 °C, 0 °C and +20 °C). IIRC, Ouman as device has “sanity check” for values when using three point settings, the other option, five point control doesn’t have sanity check. Registers can be probably found in eh800_js-file and wiresharking.

Just as a side note in case someone needs it, I just created a switch to control the valve operating mode for the “V2” circuit, I needed this to automatically change the mode if the boiler reaches a certain temperature.

For me it should be 100% open in case of ground heating and automatic in case I fire up the wood boiler, like for now when it’s cold as hell in Finland for a few days to come.

  - switch:
      name: Ouman EH800 - Radiator Vavle Operating Mode (ON = Auto // Off = 100% Open)
      command_on: curl "http://ip:ip:ip:ip:port/update?S_146_85=0;"
      command_off: curl "http://ip:ip:ip:ip:port/update?S_146_85=6;"
      scan_interval: 120
      command_state: curl http://ip:ip:ip:ip:port/request?S_146_85 --output - | cut -d ';' -f 1 | cut -b 18-
      value_template: >
        {% if value == "0" %}
            true
        {% else %}
            false
         {% endif %}
      unique_id: E5E8BA24-E094-8152-C2EB-3E3A03444A6A4

image

Automatik = value 0
Handstyrning = value 6 (it remembers 100% so no need to change that also)

Translation if needed
Automatik = Automatic
Handstyrning = Manual

I used the “inspect method” to find the values, described here HOW-TO: Control your Ouman EH-800 heating controller using Home Assistant - #39 by Belaial

1 Like

As an heads-up / potential for future improvements, Home Assistant Core 2024.1.0 adds new entity called “valve”, which is described to be valve, that was previously (in some use cases) replaced with switch. Think about two position valve (on/off). Details are bit dim, but this may evolve into something useful for EH-800 valves.

My five cents, after three years on HA, all things like this have been first minor, after that, they will be developed and “valve” as device is pretty universal concept. My personal installation doesn’t have much use for this, but for systems with radiators or some other cases, it might be useful.

2024.1: Happy automating! - Home Assistant (home-assistant.io) - New entity Valve

To improve this guide, what’s the opinion of active contributors, is version 2.0, that is, separate new thread necessary / better way? HA has changed syntax and structure of configuration since we begun 1,5 years ago. We have new information and ideas (eg. @Belaial , @Atomicsickness ). Then there are different language versions.

Is it better to create new posts reflecting new information and changes, the “version 2.0.”, or keep updating current thread? Personally, I think new thread would improve readibility. And of course, credits for improvements / ideas need to be included, if we end up to version 2.0. We can always point to new thread, if we end to that. And if we work as collective, we can share part of development, like I write the basic configuration, @Belaial , @Atomicsickness shares his contribution? It’s mostly copy-paste and parsing, I think? In my opinion, this re-work would make this excellent EH-800 controller and Home Assistant even easier to approach and popular. Most of threads and guides here really suffer from poor readibility, because of version changes etc…

I think we have decent guide, but it could be improved quite easily, I think.

I was thinking the same when I read about this, however I don’t control them via HA (in that way) I just read them and graph them to see how they open / close, they are still controlled by Ouman, just monitored by HA.

With that said it could be useful one day for sure.

I agree that a new thread might be a good way forward, or maybe a Github page, however I am not that “up to speed” with Github so maybe a new thread is the easiest way (unless someone here is really good with Github), was just thinking a Github page could always be updated / edited to look good and reflect the current and correct configurations (instead of needing to read through 100+ posts in a few years :slight_smile:), I guess a new thread just runs the risk of ending up the same way as this one sooner or later.

The absolutely best thing I guess would be if it all could be turned into a addon (I guess it’s called a “Service” in HA tho), however that probably is a lot of work to develop / maintain and personally I don’t have any skills when it comes to writing code unfortunately, so in the end a new thread or a Github page probably is the way to go, at least for now.

I think Home Assistant 2023.12.2 core update need some chance to ouman code. Every measurements are unknow.

  • platform: command_line
    name: Ouman_menopyyntö
    command: ‘curl “http://192.168.0.98:60098/request?S_275_85” | cut -d “:” -f 2 | cut -d “;” -f 1 | cut -b 18-’
    unit_of_measurement: “°C”
    That old code is not works any more. What I must do. What I must chance.

@mikkeli

Soooo long since I put this all up but my setup is working still, this is what I have (sorry if something is wrong, trying to remember it all on the fly)

  1. Create a shell_command in /homeassistant/configuration.yaml

(replace ip, port, username & password with your values)

shell_command:
    ouman_logon: 'curl "http://ip.ip.ip.ip:port/login?uid=USERNAME;pwd=PASSWORD;" > /dev/null'
  1. Create a automation that logs into Ouman “every now and then”

(I have no clue if 2 minutes are to often but it works for me)

alias: Log on to Ouman-EH800
trigger:
  - platform: time_pattern
    minutes: "2"
    alias: Log on every 2 minutes
condition: []
action:
  - service: shell_command.ouman_logon
    data: {}
mode: single
  1. Then create all the sensors you want under /homeassistant/configuration.yaml

Example

command_line:
  - sensor:
        name: Ouman EH800 - Temperatur Outside
        command: 'curl "http://ip.ip.ip.ip:port/request?S_227_85" | cut -d '';'' -f 1 | cut -b 18-'
        unit_of_measurement: "°C"
        state_class: measurement
        unique_id: sensor.ouman_eh800_temperatur_outside

Again, this might not be the best or recommended way to do it but it works for me for now at least.

Like @honkkkis mentioned about a month ago, it might be a good time to start a new thread or somehow clean this one up or a github page or something to better keep track of everything.

If someone sees anything wrong with my setup please let me know but I think this is all I have.

1 Like

Hi! I’ve been trying to implement Ouman EH-800 valve control to my Home Assistant instance and I have managed to get sensors working. For some reason, I am not able to get switches work. I have explored Ouman’s web interface via browsers devtool, but I haven’t found solution for this.

Here’s example from my command_line.yaml where sensors are working like a charm, but switch is not changing the state at all. What is wrong with my yaml?

- switch:
    name: Lattialämmitys kotona-poissa
    unique_id: lattia_kotonapoissa
    command_on: curl "{{ states('input_text.ouman_eh800_ip')}}update?S_135_85=1;"
    command_off: curl "{{ states('input_text.ouman_eh800_ip')}}update?S_135_85=0;"
    command_state: curl "{{ states('input_text.ouman_eh800_ip')}}request?S_135_85" | cut -d "=" -f2 | cut -d ";" -f1
    value_template: '{{ value == "1" }}'


- sensor:
    name: Lattialämmitys tila
    command: curl "{{ states('input_text.ouman_eh800_ip')}}request?S_135_85" | cut -d "=" -f2 | cut -d ";" -f1

- sensor:
    name: Ulkolämpötila eh800
    command: curl "{{ states('input_text.ouman_eh800_ip')}}request?S_227_85" | cut -d "=" -f2 | cut -d ";" -f1
    unit_of_measurement: "°C"

One more thing, I have written everything I’ve done to this repo: https://github.com/mhumaloja/ouman_eh-800_HA/ is this potential way to develop this further in cooperation? I will open the repository to developers who would like to conribute.