Grant R290 (Econet) MQTT publisher

In case this is useful for anyone, I’ve just knocked up a quick MQTT publisher for my Grant R290 with an Econet controller, which includes Home Assistant device detection so if you have an MQTT broker and HA knows about it, it will automatically pick it up.

Be warned that the Econet stats I fetch are very undocumented, I have no idea if they change with different versions so treat this as experimental, but it’s easy to get running with docker in case you fancied it!

1 Like

Nice work!

I’ve been using this HA integration, it grabs data from the EcoNet via local HTTP, but compared to your integration it looks like it’s missing a few metrics

It seems that control is also possible via the Econet local HTTP interface e.g the following will set Circuit 1 to 20.5C

http://<ECONET-LOCAL_IP>/econet/newParam?newParamName=238&newParamValue=20.5

Or using CURL

curl -u "admin:admin" "http://192.168.86.31/econet/newParam?newParamName=238&newParamValue=18"

Oh nice one for the Control endpoint! I wonder what other values you can control. Don’t suppose you have a map for the numeric values do you?

My code is reading the “tiles” section - I have no idea how changeable this is, it looks bad to rely on, time will tell if it changes! I’ll see what other values I can extract over time. I think I got most of them

Thanks for this it looks great.

I’m about to buy a heat pump to install alongside my oil boiler. The Grant R290 was top of my shortlist but I’m struggling to get Modbus documentation for it which was my plan for programmatic control of it. It sounds like if I buy the WiFi bridge too I’ll be able to figure out some URLs for on/off and flow temp in less time than figuring out the Modbus registers.

1 Like

No worries, hopefully it’s useful

It seems fairly easy to do, how reliable it will be when Econet issue updates I have no clue!

I’ve extracted a list of the editable params, this is direct from the https://www.econet24.com/service/getDeviceEditableParams response, the param numbers seem to line up with the endpoint Glyn mentioned, e.g. param num 238 sets the Circuit 1 thermostat, and also 103 lines up with the DOM when using the edit icon in the tiles interface, so this is probably all correct.

Looks like you can edit some useful things:

  • Turn on/off circuit 1
  • Set DHW temp
  • Set room stat temp and hysterisis
  • Control legionella stuff
  • Set weather comp curve and shift

If this works, I’ll update the MQTT publisher so it’s more of a bridge than just a publisher and allow control, I haven’t played with MQTT before really but looks a really nice way to get stuff in to HA without using HACS etc.

Param Number Name Editable Minv Maxv Value Mult Unit
0 PS False 0 0 S023.14 1 0
101 HDWSETTINGS True 0 0 7611 1 0
103 HDWTSetPoint True 35 58 46 1 1
104 HDWTSetPointDownHist True 5 18 10 1 1
113 HDWLoadTime True 0 50 0 1 0
115 HDWStartOneLoading True 0 0 0 1 0
119 HDWusermode True 0 0 2 1 0
136 HDWLegionSetPoint True 60 80 60 1 0
137 HDWLegionDay True 0 6 1 1 0
138 HDWLegionHour True 0 23 14 1 0
162 workState2 True 0 0 2 1 0
236 Circuit1WorkState True 0 3 1 1 0
238 Circuit1ComfortTemp True 10 35 22 1 0
239 Circuit1EcoTemp True 10 35 17 1 0
240 Circuit1DownHist True 0 5 0.4 1 0
261 Circuit1BaseTemp True 24 75 50 1 0
273 Circuit1CurveRadiator True 0 4 1.2 1 0
275 Circuit1Curveshift True -20 20 -6 1 0
286 Circuit2WorkState True 0 3 1 1 0
288 Circuit2ComfortTemp True 10 35 21 1 0
289 Circuit2EcoTemp True 10 35 19 1 0
290 Circuit2DownHist True 0 5 1 1 0
311 Circuit2BaseTemp True 24 75 40 1 0
336 Circuit3WorkState True 0 3 1 1 0
338 Circuit3ComfortTemp True 10 35 21 1 0
339 Circuit3EcoTemp True 10 35 19 1 0
340 Circuit3DownHist True 0 5 1 1 0
361 Circuit3BaseTemp True 24 75 40 1 0
753 Circuit6WorkState True 0 3 1 1 0
755 Circuit6ComfortTemp True 10 35 21 1 0
756 Circuit6EcoTemp True 10 35 19 1 0
763 Circuit6BaseTemp True 24 75 40 1 0
784 Circuit6MixerCoolBaseTemp True 10 30 20 1 1
789 Circuit2MixerCoolBaseTemp True 10 30 20 1 1
803 Circuit7WorkState True 0 3 1 1 0
805 Circuit7ComfortTemp True 10 35 21 1 0
806 Circuit7EcoTemp True 10 35 19 1 0
813 Circuit7BaseTemp True 24 75 40 1 0
834 Circuit7MixerCoolBaseTemp True 10 30 20 1 1
839 Circuit3MixerCoolBaseTemp True 10 30 20 1 1
944 Circuit4WorkState True 0 3 1 1 0
946 Circuit4ComfortTemp True 10 35 21 1 0
947 Circuit4EcoTemp True 10 35 19 1 0
969 Circuit4BaseTemp True 24 75 40 1 0
990 Circuit4MixerCoolBaseTemp True 10 30 20 1 1
995 Circuit5WorkState True 0 3 1 1 0
997 Circuit5ComfortTemp True 10 35 21 1 0
998 Circuit5EcoTemp True 10 35 19 1 0
1020 Circuit5BaseTemp True 24 75 40 1 0
1040 Circuit5BaseTemp True 24 45 40 1 0
1041 Circuit5MixerCoolBaseTemp True 10 30 20 1 1
1083 SmartGridIncreaseForWaterHeatingCircuit4 True 0 10 0 1 1
1133 AxenWorkState True 0 0 1 1 0
1211 AXENREGISTER64 False 0 0 10 1 0
1212 AXENREGISTER65 False 0 0 0 1 0
1215 AXENREGISTER68 False 0 0 190 1 0
1219 AXENREGISTER72 False 0 0 550 1 0
10010 PS True 0 0 S023.20 1 0
10413 Korekta_temperatury True 0 0 0 1 0
1 Like

Awesome, thanks so much for your efforts - I’ll order my Aerona R290 today!

2 Likes

Great stuff, mine is running well: https://heatpumpmonitor.org/system/view?id=748

The inbuilt controller works very well, I’ve been impressed by the inbuilt control algorithms. I’m more interested in monitoring rather than control. But it’s nice to have options.

Once thing to note is that, like all heat pumps, the onboard monitoring is not very accurate. Ir’s currently telling me I’m getting a SCOP of 9, which is impossible! My actual SCOP so far as measured with a heat meter via the OpenEnergyMonitor L3 bundle is 5.0.

It’s great that it’s possible to interface with the econet locally via HTTP, Grant don’t support OTA updates, so I don’t think this local API will change, at least not without a manually applied update.

Yeh I saw yours was running well! You seem to use less electricity than mine at minimum modulation, I wonder why? Maybe your pump is not having to work as hard? I assume your electricity meter is monitoring everything including the controller? Although I presume the controller takes very little..

Out of interest Glyn, what impressed you about the control algorithms? This is my first heat pump so I’ve nothing to compare to so I’m curious as to what people think is good/bad about the unit. I’m occasionally confused as to why it is doing what it’s doing, OpenEnergyMonitor has been invaluable in trying to figure this out which is great.

Oh with the onboard monitoring, I assume the flow is calculated by the controller knowing the pump speed rather than having a flow sensor? You may know.

Yeh agreed only manual updates will change it, I’ll try and check when I update and keep a list of compatible controller versions. I suppose you don’t actually update the TP-Link box during an update, which I presume is where the HTTP server sits? So I wonder if it would ever change? No idea.

Yes, I’m monitoring everything, including the controller. But it’s negligible, only a few W

It seems to handle cycling well i.e when the heat requirement of the house is less than the minimum modulated output of the heat pump it will need to cycle. The Grant algorithms do a good job of avoiding excess cycling. The exact cycle length will vary from system to system based on system volume and emitter area.

Yes, I think so. The Aeroa 290 does not have a flow meter, so the onboard flow measurement won’t be very accurate. I’ve got a heat meter fitted on mine which measures the flow rate accurately.

I’m not sure, I doubt much will change.

If you’re interested, I wrote a post on LinkedIn about my system. I’m also in the process of editing a video of the installation:

There’s some interesting discussion and possibly some progress on direct modbus on this thread:

Thanks, he’s also on this thread:

I installed the smart controller and mains power for my R290 yesterday. I shall be having a go at the internal plumbing today. Alas I don’t think my “plant room” is going to look quite as smart as yours Glyn but hopefully it’ll be functional.

My Plan A is to use the ecoNET HTTP API as you have as it would be preferable to to have my code adding functionality/optimisation on top of the Smart Controller rather than replacing it. It would be best if the house heating wasn’t dependent on my code - just to cover off the chance of some poor plumber being called in to fix a fault should I ever pop my clogs!

The outdoor unit does have what appears to be a second modbus bus, so I shall hook up to that when I get to the outdoor unit install and perhaps see if it’s possible to have direct modbus communication without upsetting the Smart Controller on it’s bus as my Plan B.

The Smart Controller does have some support for turning on an additional heat source (oil boiler in my case) but it’s quite crude (on below a given OAT and/or during defrosts). It has no way to consider the demand in addition to OAT and given the size of my boiler I suspect it’d result in the return temperature rising over the point where the heat pump would turn off the compressor and the boiler would take all the load. I’m hoping to turn the boiler on and off to manage return temp to allow the heat pump to fulfil the demand that it can and also to consider how far indoor temp has diverged from the set-point and/or how many zones are on to determine whether the boiler is actually needed.

1 Like

Ah late to this party too. I had already decoded most of the local API stuff, also using HA, and can confirm that the values for work modes are:

- name: "DHW work mode"
  unique_id: 'dhw work mode'
  value_template: "{% set s= value_json['data']['119']['value'] %} {% if s==2 %} {{'Scheduled'}} {% elif s==1 %}  {{'On'}} {% elif s==0 %} {{'Off'}} {% else %} {{s}} {% endif %}"

- name: "Circuit1 work mode"
  unique_id: 'c1 work mode'
  value_template: "{% set s= value_json['data']['236']['value'] %}  {% if s==3 %} {{'Scheduled'}} {% elif s==1 %} {{'Day'}} {% elif s==2 %} {{'Night'}} {% elif s==0 %} {{'Off'}} {% else %} {{s}} {% endif %}" 

And you can set those modes with HA 'rest-commands'

rest_command:
  set_dhw_temp:
    username: "admin"
    password: "admin"
    method: put
    url: "http://192.168.1.25/econet/newParam?newParamName=103&newParamValue={{value}}&_=UID"

  set_dhw_hysteresis:
    username: "admin"
    password: "admin"
    method: put
    url: "http://192.168.1.25/econet/newParam?newParamName=104&newParamValue={{value}}&_=UID"

# 0 =off, 1=day, 2=night, 3=scheduled
  set_ch1_work_state:
    username: "admin"
    password: "admin"
    method: put
    url: "http://192.168.1.25/econet/newParam?newParamName=236&newParamValue={{value}}&_=UID"

where 192.168.1.25 is the ip address of the econet controller on your local LAN/Wifi. Best to set a fixed one from your router, rather than letting it wander about DHCP wise. You pass in ‘value’ when you call those rest commands in HA (or you can always use fixed ones, which results in separate commands for on, off, schedule, etc).

My COP numbers are equally silly, though power used and flow temps are pretty accurate, it is flow rate which is not seemingly measured very well, though it gets reported to 0.1 cuM/hr accuracy.

Minimum electrical power at 15hz reads as 330W, which my power meters confirm, but sensible COP of say 6 get only 2kW heat output, which is less than the spec minimum (although there is no spec for 12c ambient).

1 Like