Boiler Internet module ecoNET300 integration

Maybe there are people who integrate Internet module ecoNET300 remote controle of ecoMAX reguliators?
https://www.plum.pl/en/project/econet300_en/

I found one solution but devices can be connected directly via RS-485 to USB adapter or through network by using RS-485 to Ethernet/WiFi converter. econet doesn’t work with this integration.

About ecolink

Thanks for pblxptr
pblxptr

1 Like

sensor.yaml

# EcoNET boiler
- platform: rest
  scan_interval: 300
  resource: !secret econet24_host
  method: GET
  name: Boiler
  verify_ssl: false
  username: !secret econet24_user
  password: !secret econet24_psw
  authentication: basic
  headers:
    User-Agent: Home Assistant
    Content-Type: application/json
  value_template: "OK"
  json_attributes:
    - curr
    # - fuelLevel
- platform: template
  sensors:
    boiler_fuellevel:
      friendly_name: Fuel Level
      value_template: '{{states.sensor.Boiler.attributes["curr"]["fuelLevel"] }}'
      device_class: battery
      unit_of_measurement: "%"
    boiler_temperature:
      friendly_name: Boiler Temperature
      value_template: '{{states.sensor.Boiler.attributes["curr"]["tempCO"]|int }}'
      device_class: temperature
      unit_of_measurement: "°C"
      icon_template: mdi:thermometer-lines
    boiler_pumpcoworks:
      friendly_name: Boiler Operation
      value_template: '{{states.sensor.Boiler.attributes["curr"]["pumpCOWorks"] }}'
    boiler_output:
      friendly_name: Boiler Power
      value_template: '{{states.sensor.Boiler.attributes["curr"]["boilerPower"] }}'
      unit_of_measurement: "%"
    boiler_fan_output:
      friendly_name: Boiler Fan Output
      value_template: '{{states.sensor.Boiler.attributes["curr"]["fanPower"]|int }}'
      icon_template: mdi:fan
      unit_of_measurement: "%"
    boiler_mixer_set_temp1:
      friendly_name: Boiler Mixer Heat Set Temperature
      value_template: '{{states.sensor.Boiler.attributes["curr"]["mixerSetTemp1"]|int }}'
      device_class: temperature
      unit_of_measurement: "°C"
    boiler_mixer_temp1:
      friendly_name: Boiler Mixer 1 Temperature
      value_template: '{{states.sensor.Boiler.attributes["curr"]["mixerTemp1"]|int }}'
      icon_template: mdi:thermometer-lines
      device_class: temperature
      unit_of_measurement: "°C"
    boiler_temp_huw_set:
      friendly_name: Boiler Set Hot Water
      value_template: '{{states.sensor.Boiler.attributes["curr"]["tempCWUSet"] }}'
      device_class: temperature
      unit_of_measurement: "°C"
    temp_huw:
      friendly_name: Hot Water
      value_template: '{{states.sensor.Boiler.attributes["curr"]["tempCWU"]|int }}'
      device_class: temperature
      unit_of_measurement: "°C"
    temp_outside:
      friendly_name: Temperature Outside
      value_template: '{{states.sensor.Boiler.attributes["curr"]["tempExternalSensor"]|int }}'
      device_class: temperature
      unit_of_measurement: "°C"

I wite some code to get data form boiler, maybe someone, can help write full integrations?

2 Likes

What value do you put in econet24_host ? Is it the local ip of the ecoNet300 or something else?
In the UI of ecoNet300 I have only configuration settings for the networking and econet24 connectivity check. So I would never guess I can retrieve information of the heater status through it :slight_smile:

I’m very interested in developing this so you can have my help, although I’m still HA amateur :slight_smile:

OK, I got it working and it is actually pretty cool to have all this tons of data into Home Assistant.
having setup InfluxDB and Grafana can make it easier visualize how things are happening.
Thanks a lot jontofront.

Next thing I suppose is find a way to change parameters values?
Do you think we we should be able to do this using the same api?

image

Yes, I used local network API of econet:
now I am use only get parameters:

{
    "settingsVer": 85878,
    "editableParamsVer": 0,
    "schedulesVer": 5,
    "remoteMenuVer": {
    },
    "currentDataParamsEditsVer": 1,
    "remoteMenuLangsLoading": 0,
    "curr": {
        "lambdaLevel": 222,
        "tempExternalSensor": 0.93809890747070313,
        "thermostat": 1,
        "pumpCOWorks": false,
        "mode": 5,
        "mixerPumpWorks4": true,
        "lambdaSet": 255,
        "mixerPumpWorks1": false,
        "mixerPumpWorks2": true,
        "mixerPumpWorks3": true,
        "statusCWU": 0,
        "tempCO": 37.315170288085938,
        "fuelLevel": 91,
        "pumpCO": true,
        "contactGZCActive": false,
        "mixerTemp3": null,
        "mixerTemp2": null,
        "statusCO": 16,
        "boilerPower": 0,
        "pumpCWUWorks": false,
        "pumpCirculation": false,
        "pumpFireplace": false,
        "mixerTemp4": null,
        "pumpSolar": false,
        "mixerTemp1": 25.088199615478516,
        "mixerSetTemp4": 28,
        "tempCOSet": 45,
        "pumpSolarWorks": false,
        "mixerSetTemp1": 35,
        "pumpCWU": true,
        "mixerSetTemp3": 28,
        "mixerSetTemp2": 30,
        "boilerPowerKW": null,
        "lambdaStatus": 0,
        "tempCWUSet": 45,
        "contactGZC": false,
        "pumpCirculationWorks": false,
        "fuelStream": null,
        "transmission": 9,
        "tempFlueGas": 21.967437744140625,
        "pumpFireplaceWorks": false,
        "tempFeeder": 19.995105743408203,
        "tempCWU": 76.749755859375,
        "fanPower": 0.0
    }
}

Which parameter do you want to change?

Being able to power on/off the boiler, as well as setting different temperatures to the HUW and the room thermostat should be sufficient. Enable/disable HUW.
Changing other options is just an advantage.

By the way in case somebody need access to www.econet24.net there is a demo account that can be used, just need to PM me to give you more details.

I extracted two of the modes sensors and converted them to strings:

boiler_mode:
friendly_name: Boiler Mode
value_template: >-
{% if states.sensor.EcoNet300.attributes[“curr”][“mode”] == 2 %} Fire Up
{% elif states.sensor.EcoNet300.attributes[“curr”][“mode”] == 3 %} Work
{% elif states.sensor.EcoNet300.attributes[“curr”][“mode”] == 4 %} Supervision
{% elif states.sensor.EcoNet300.attributes[“curr”][“mode”] == 5 %} Halted
{% elif states.sensor.EcoNet300.attributes[“curr”][“mode”] == 6 %} Cleanup
{% elif states.sensor.EcoNet300.attributes[“curr”][“mode”] == 7 %} Burning Off
{% elif states.sensor.EcoNet300.attributes[“curr”][“mode”] == 8 %} Alarm
{% else %} UNKNOWN State: {{states.sensor.EcoNet300.attributes[“curr”][“mode”]|int }}
{% endif %}
thermostat_mode:
friendly_name: Thermostat Mode
value_template: >-
{% if states.sensor.EcoNet300.attributes[“curr”][“ecoSterMode1”] == 0 %} Schedule mode
{% elif states.sensor.EcoNet300.attributes[“curr”][“ecoSterMode1”] == 1 %} Economy mode
{% elif states.sensor.EcoNet300.attributes[“curr”][“ecoSterMode1”] == 2 %} Comfort mode
{% elif states.sensor.EcoNet300.attributes[“curr”][“ecoSterMode1”] == 3 %} Outside mode
{% elif states.sensor.EcoNet300.attributes[“curr”][“ecoSterMode1”] == 4 %} Ventilation mode
{% elif states.sensor.EcoNet300.attributes[“curr”][“ecoSterMode1”] == 5 %} Party mode
{% elif states.sensor.EcoNet300.attributes[“curr”][“ecoSterMode1”] == 6 %} Holiday mode
{% elif states.sensor.EcoNet300.attributes[“curr”][“ecoSterMode1”] == 7 %} Frost Protection mode
{% else %} UNKNOWN State: {{states.sensor.EcoNet300.attributes[“curr”][“ecoSterMode1”]|int }}
{% endif %}

so did you finish your project?

Unfortunately I was not able to get the set of parameters working.
So far I’m only using the ecoNet as a source of sensors and entities.

Hi, I would like to integrate econet24 into HA, but I’m a beginner and I don’t know how to get your code into HA. Can you please send a more detailed description?

Do you know the link login to Econet?

Do you know the link login to Econet?

Hi Bezemek,

Let me know if you want me to assist you to intergate what we have currently working.
We have a set to sensors extracted from it but we are not able to control the heater/boiler yet.

Thanks, I’ve already done it. A set of sensors is enough for me.

I get error
missed comma between flow collection entries at line 213, column 10: {% if states.sensor.EcoNet300.att ... ^"

with it:

      boiler_mode:
        friendly_name: Boiler Mode
        value_template: >-
        {% if states.sensor.EcoNet300.attributes["curr"]["mode"] == 2 %} Fire Up
        {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 3 %} Work
        {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 4 %} Supervision
        {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 5 %} Halted
        {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 6 %} Cleanup
        {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 7 %} Burning Off
        {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 8 %} Alarm
        {% else %} UNKNOWN State: {{states.sensor.EcoNet300.attributes["curr"]["mode"]|int }
        {% endif %}}
      thermostat_mode:
        friendly_name: Thermostat Mode
        value_template: >-
        {% if states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 0 %} Schedule mode
        {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 1 %} Economy mode
        {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 2 %} Comfort mode
        {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 3 %} Outside mode
        {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 4 %} Ventilation mode
        {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 5 %} Party mode
        {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 6 %} Holiday mode
        {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 7 %} Frost Protection mode
        {% else %} UNKNOWN State: {{states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"]|int }}
        {% endif %}

What can I do?
Thanks!

How to define to set parametrs?
I discover, that to set parameter “50” for HUW, for example, need to send that link:
https://www.econet24.com/service/newParam?uid=**UID_number**&newParamName=CWU_SET_TEMP&newParamValue=50&_=1645015778432

Thanks!

Unfortunately I’m also looking for the answer of this and I have not yet found it.
Here is the latest version of my sensors that I do extract and convert to strings.
I’m also adding here all of the resources I have so far to get sensors from the econet300 in my local network:

sensor:
  - platform: rest
    scan_interval: 10
    resource: http://<econet300_ip>/econet/regParams
    method: GET
    name: EcoNet300
    verify_ssl: false
    username: !secret econet300_user
    password: !secret econet300_pass
    authentication: basic
    headers:
      User-Agent: Home Assistant
      Content-Type: application/json
    value_template: "OK"
    json_attributes:
      - curr
      - fuelLevel
  - platform: rest
    scan_interval: 10
    resource: http://<econet300_ip>/econet/editParams
    method: GET
    name: EcoNet300Edit
    verify_ssl: false
    username: !secret econet300_user
    password: !secret econet300_pass
    authentication: basic
    headers:
      User-Agent: Home Assistant
      Content-Type: application/json
    value_template: "OK"
    json_attributes:
      - data
  - platform: rest
    scan_interval: 10
    resource: http://<econet300_ip>/econet/rmCurrentDataParams
    method: GET
    name: EcoNet300CurrDatParams
    verify_ssl: false
    username: !secret econet300_user
    password: !secret econet300_pass
    authentication: basic
    headers:
      User-Agent: Home Assistant
      Content-Type: application/json
    value_template: "OK"
    json_attributes:
      - data
  - platform: rest
    scan_interval: 10
    resource: http://<econet300_ip>/econet/regParamsData
    method: GET
    name: EcoNet300regParamsData
    verify_ssl: false
    username: !secret econet300_user
    password: !secret econet300_pass
    authentication: basic
    headers:
      User-Agent: Home Assistant
      Content-Type: application/json
    value_template: "OK"
    json_attributes:
      - data
  - platform: template
    sensors:
      boiler_mode:
        friendly_name: Boiler Mode
        value_template: >-
          {% if   states.sensor.EcoNet300.attributes["curr"]["mode"] == 0 %} Turned Off
          {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 2 %} Fire Up
          {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 3 %} Work
          {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 4 %} Supervision
          {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 5 %} Halted
          {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 6 %} Cleanup
          {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 7 %} Burning Off
          {% elif states.sensor.EcoNet300.attributes["curr"]["mode"] == 8 %} Alarm
          {% else %} UNKNOWN State: {{states.sensor.EcoNet300.attributes["curr"]["mode"]|int }}
          {% endif %}
      thermostat_mode:
        friendly_name: Thermostat Mode
        value_template: >-
          {% if   states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 0 %} Schedule mode
          {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 1 %} Economy mode
          {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 2 %} Comfort mode
          {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 3 %} Outside mode
          {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 4 %} Ventilation mode
          {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 5 %} Party mode
          {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 6 %} Holiday mode
          {% elif states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"] == 7 %} Frost Protection mode
          {% else %} UNKNOWN State: {{states.sensor.EcoNet300.attributes["curr"]["ecoSterMode1"]|int }}
          {% endif %}
      thremostat_mode:
        friendly_name: Thermostat Mode
        value_template: >-
          {% if   states.sensor.EcoNet300Edit.attributes["data"]["STER_MODE_1"]["value"] == 0 %} Schedule Mode
          {% elif states.sensor.EcoNet300Edit.attributes["data"]["STER_MODE_1"]["value"] == 1 %} Economy Mode
          {% elif states.sensor.EcoNet300Edit.attributes["data"]["STER_MODE_1"]["value"] == 2 %} Comfort Mode
          {% elif states.sensor.EcoNet300Edit.attributes["data"]["STER_MODE_1"]["value"] == 3 %} Outside Mode
          {% elif states.sensor.EcoNet300Edit.attributes["data"]["STER_MODE_1"]["value"] == 4 %} Ventilation Mode
          {% elif states.sensor.EcoNet300Edit.attributes["data"]["STER_MODE_1"]["value"] == 5 %} Party Mode
          {% elif states.sensor.EcoNet300Edit.attributes["data"]["STER_MODE_1"]["value"] == 6 %} Holiday Mode
          {% elif states.sensor.EcoNet300Edit.attributes["data"]["STER_MODE_1"]["value"] == 7 %} Frost Protection Mode
          {% else %} UNKNOWN State: {{states.sensor.EcoNet300Edit.attributes["data"]["STER_MODE_1"]["value"]|int }}
          {% endif %}        
      econet24_regulation_mode:
        friendly_name: EcoNet24 Regulation Mode
        value_template: >-
          {% if   states.sensor.EcoNet300regParamsData.attributes["data"]["21"] == 0 %} Standard
          {% elif states.sensor.EcoNet300regParamsData.attributes["data"]["21"] == 1 %} FuzzyLogic
          {% else %} UNKNOWN State: {{states.sensor.econet24.attributes["data"]["21"]|int }}
          {% endif %}
      econet24_huw_mode:
        friendly_name: EcoNet24 HUW Mode
        value_template: >-
          {% if   states.sensor.EcoNet300regParamsData.attributes["data"]["78"] == 0 %} Off
          {% elif states.sensor.EcoNet300regParamsData.attributes["data"]["78"] == 1 %} Priority
          {% elif states.sensor.EcoNet300regParamsData.attributes["data"]["78"] == 2 %} WithouPriority
          {% else %} UNKNOWN State: {{states.sensor.econet24.attributes["data"]["78"]|int }}
          {% endif %}
      econet24_thermostat_mode:
        friendly_name: EcoNet24 Thermostat Mode
        value_template: >-
          {% if   states.sensor.EcoNet300regParamsData.attributes["data"]["140"] == 0 %} Off
          {% elif states.sensor.EcoNet300regParamsData.attributes["data"]["140"] == 1 %} Universal
          {% elif states.sensor.EcoNet300regParamsData.attributes["data"]["140"] == 2 %} EcoSTER T1
          {% else %} UNKNOWN State: {{states.sensor.EcoNet300regParamsData.attributes["data"]["140"]|int }}
          {% endif %}

Very nice! Thanks!
But how to use attributes of this? All data behind “curr:”, and I can’t get those data in UI cards…