jagheterfredrik / esphome-rego1000

ESPHome custom component for IVT Rego1000 heat pump controller
12 stars 5 forks source link

Help request: register to write to set the indoor temperature on rego 1000 v3.6? #5

Closed davidbbs closed 1 year ago

davidbbs commented 1 year ago

Hi -- This isn't an issue but I'm trying to contact you for a bit of help. I'm looking for the register (and format) for writing in the indoor temperature to my rego 1000 v. 3.6 to emulate the indoor CANbus thermostat. I've looked through the (extensive!) register list you have, but I'm not sure which one (and what format) handles that. Do you know? Thanks! -David

jagheterfredrik commented 1 year ago

It’s not a variable in the rego, it’s treated specially probably to reduce wear on non-volatile storage.

If you are using my code use the climate and set indoor_sensor like in https://github.com/jagheterfredrik/esphome-rego1000/blob/main/rego1000-1.12.1.yaml#L42

If you want to do it yourself the can id is defined here https://github.com/jagheterfredrik/esphome-rego1000/blob/main/components/rego1000/climate/rego_climate.h#L6

davidbbs commented 1 year ago

Thank you! I think I understand this now, but if you have a moment I would appreciate it if you could double-check my analysis:

Is that correct? Thank you!

jagheterfredrik commented 1 year ago

Correct!

Note! You have to set the “Knob's operating range” (sv. “Rattens arbetsområde”) to 0K in the heat pump indoor thermostat settings, otherwise the set point will be offset. This is probably because I need to send an additional CAN message about the set point but I don’t know the ID.

davidbbs commented 1 year ago

I don't see the Rattens arbetsområde option in my installation manual (just Kvittera rumsgivare and Rumsteperaturpåverkan). I hope that means there is no offset. :)

I'm using the device from hustdata.se, so I can't send directly to different can bus IDs, but I'll get in touch with the developer to see if it's possible to add that. Thanks again for your help!

jagheterfredrik commented 1 year ago

I believe you do have one: https://github.com/jagheterfredrik/esphome-rego1000/blob/main/rego1000-v3.6.0-variables.txt#L1452

Did you elevate your access before checking the menu?

davidbbs commented 1 year ago

I was looking in the installer manual and I checked the system in installer mode. I couldn't find it accessible from there. Hopefully it defaults to 0, though! -David

jagheterfredrik commented 1 year ago

On my pump it defaults to 6 unfortunately

jagheterfredrik commented 1 year ago

Ah, you can only see it if a indoor thermostat is installed, see page 49 https://cdn.jseducation.se/files/pages/install_he_6720643409_01.pdf

cjonhammar commented 1 year ago

I cant find that setting either. (in installer mode) (3.7.0) (Im using the "faked" sensor from home-assistant.)

image
jagheterfredrik commented 1 year ago

@cjonhammar interesting! iirc my heating setpoint is wrong (too low) when room set point equals room temp if that settings is not 0. You didn’t notice anything like that?

cjonhammar commented 1 year ago

Looked at a newer installation manual (2013): https://docplayer.se/37061145-Premiumline-hq-c4-5-c10-e6-e17-installatorshandledning.html Cant find that there either. I have set the desired room temp to 20 but the real room temp never reaches more than around 18. Maybe I should read out that value, 0x0882: ROOM_DIAL_RANGE by adding it to the "sensors"..

image
jagheterfredrik commented 1 year ago

That’d be interesting!

jagheterfredrik commented 1 year ago

But use a “number:”, that way you can set it as well.

davidbbs commented 1 year ago

Ah, you can only see it if a indoor thermostat is installed, see page 49 https://cdn.jseducation.se/files/pages/install_he_6720643409_01.pdf

Ah. I see what the difference is. I have a Swedish version which does not work that way. (IVT informed me of this and sent me the Swedish installer manual which clarifies that.) The Swedish one only supports indoor temperature via CanBus, while the manual you have lists an analog input (E11.TT.T5) for a temperature sensor. I'm guessing there is an offset register on that version to calibrate the analog sensor.

jagheterfredrik commented 1 year ago

My understanding is that v1.x.x supports analog sensor and v3.x.x does not. But the analog sensor does not have a knob while the canbus one does. I wonder if IVT simply removed the ability to change (such a niche feature in the first place...)

cjonhammar commented 1 year ago

ROOM_DIAL_RANGE is set to 1 in my 3.7.0 rego1000.

jagheterfredrik commented 1 year ago

Does changing it change the heating setpoint?

cjonhammar commented 1 year ago

if i changed it to 0 the setpoint changed +10: 875BB3F7-C9B1-4F54-8B62-972E20899E67

jagheterfredrik commented 1 year ago

@cjonhammar I just pushed a fix, https://github.com/jagheterfredrik/esphome-rego1000/commit/4ec4f053025f7acbd2409112ca4a024ea914f1f9, that also sends emulates the CAN bus dial to be at the midpoint, rendering the dial range unused. Please try it out, the dial range change should not impact the heating setpoint at all.

cjonhammar commented 1 year ago

Same behaviour with the fix.

image
jagheterfredrik commented 1 year ago

Still +10? This was highly unexpected..

cjonhammar commented 1 year ago

Yes, you can see the jump on the graph.. But I saw that my "default" setting wasnt 1.0 but 0.6. (it rounded it up, since i had it to step 1 instead of .1)

jagheterfredrik commented 1 year ago

Ah, you need to set min: 0 max: 6 step: 1 value_factor: 1

jagheterfredrik commented 1 year ago

Actually, hold off on using the number: for now, there’s a bug

jagheterfredrik commented 1 year ago

Ok the bug was fixed. The dial range really should not matter.. I believe the IVT CAN room controller sends out the state of it's potentiometer-based dial, read by ADC to a resolution of 0-1024, 512 should be the mid point (i.e. "0"). Afaik the room controller is compatible with both versions and as such should work the same across them so it's a complete mystery why you see a change in heating setpoint when changing the dial range.

jagheterfredrik commented 1 year ago

@cjonhammar the bug meant you made changes/looked at ROOM_DIAL_RANGE_GLOBAL instead of ROOM_DIAL_RANGE (and is the one you were actually controlling). Add both as "numbers:" with value_factor 1, step 1 and test around. It seems your original values were ROOM_DIAL_RANGE=0 ROOM_DIAL_RANGE_GLOBAL=6 which is the same as I had.

cjonhammar commented 1 year ago

Ok, reverted the dial_range values to 0 and 6. But there seems to be a bug in the heating, now 20.0 shows up as 200

image
jagheterfredrik commented 1 year ago

Thanks got noticing! The bug was cosmetic and a fix is now pushed

cjonhammar commented 1 year ago

Sweet, thanks. (I did also notice that it was only cosmetic after running to the boiler room last night.. :) )

jagheterfredrik commented 1 year ago

Well @cjonhammar I think you might want to set the dial range to 0 if you want to get closer to your target temp :)