dieselrabbit / screenlogicpy

Interface for Pentair Screenlogic connected pool controllers over IP in Python
GNU General Public License v3.0
17 stars 5 forks source link

HeatPump support #48

Open dacarson opened 1 year ago

dacarson commented 1 year ago

Hi, I have a Pentair Heat Pump attached to my system, as well as a Pentair Gas Heater. The way Pentair recommend configuring it is to configure it as Solar. In their app, sometimes it shows it as a HeatPump and in other places it shows it as Solar. I assume that that is because they haven't updated the app everywhere. For example, in the Main page on the iPad it has four heating options: Off, Heater, H.Pump Pref, 'H.Pump Only'. But when you go to the History page to see when items were on or off, it shows Solar and Heat. I am wondering how it knows it is a heat pump attached. Looking through the full JSON output I don't see anything to indicate a Heat Pump installed.

dieselrabbit commented 1 year ago

There is a configuration setting in the official ScreenLogic desktop app (SLConfig on mobile) "Solar is a heat pump". The value for this is exposed to the apps and to screenlogicpy as a flag within the "equipment_flags" value. (0x2) That said, currently neither this lib nor the Home Assistant integration are set up to rename the solar labels as HeatPump.

dacarson commented 1 year ago

My equipment flags has: "equipment_flags": 8223, which is 0x201F. To find out if a heat pump exists, so I AND the equipment_flags with 0x2? aka (pseudo code)

if (0x201F & 0x2): 
    print('has heat pump') 
else:
    print('no heat pump')
dieselrabbit commented 1 year ago

Yup. In Python, you can even bitwise AND against the original int:

if 8223 & 0x2:
    print("has heat pump")
else:
    print("no heat pump")
dacarson commented 1 year ago

Thanks. I found the definitions in the const.py file So I could do data['config']['equipment_flags'] & EQUIPMENT. FLAG_SOLAR_AS_HEAT_PUMP

Looking at the flags defined: 0x1 - Solar - TRUE for me (correct) 0x2 - H.Pump as Solar - TRUE for me (correct) 0x4 - Chlorinator - TRUE for me (correct) 0x20 - Spa remote - FALSE for me (correct)

0x800 - Cooling - FALSE for me. The Heat Pump that I have works to heat or cool the pool. Is this false because there is a separate pool cooler that I don't have, and it is assumed that all Heat Pumps can also cool the pool?

0x8000 - Intellichem - FALSE from me (correct)

The other three bits that are set, aka: 0x8 0x10 0x2000 any ideas what they mean?

dieselrabbit commented 1 year ago

Not sure on the cooling. There is a separate config setting in the apps to specify "Has cooling". Maybe that's not set for your pool? No idea if that should or shouldn't be set for your configuration.

I haven't identified what the other 3 bits are. 0x8 and 0x10 have been present in every configuration I have seen thus far (admittedly, not a lot), with only one exception for 0x8. I have never come across a config with 0x2000 until now.

My pool also has bits 0x10000 through 0x80000000 set, which I haven't seen in any other config. No idea if that means something or if equipment_flags should really be a short instead of an int.

dacarson commented 1 year ago

Thanks. I am remote from my pool at the moment, and it seems that the SLConfig app only wants to connect locally. Remote it reports an error. When I am near my pool again, I can check the configuration. Though as I can set a "Heat" and a "Cool" temperature for the pool (though not for the spa), I suspect that "Has cooling" is enabled.

dacarson commented 1 year ago

Maybe just close this, and I can create a new one for what I find about Cooling.

dieselrabbit commented 1 year ago

There's a separate setting labeled "UltraTemp or ThermalFlo". Is your Heat pump one of those? Maybe that setting takes care of it?

Actually, sounds like "cooling" is not whether the heat pump supports cooling, but something called Night Cooling. From the EasyTouch setup guide:

ENABLE NIGHT COOLING: Select Yes or No to enable nocturnal cooling. Night cooling enabled (YES), will circulate water through the system to lower the temperature during the night hours. Set the temperature in the Heat menu.

dacarson commented 1 year ago

Yes, I have the UltraTemp 120 H/C.

Interesting about Night Cooling option. Thank you for sharing.

dieselrabbit commented 12 months ago

So a little update on this, I now have a complete(?) list of all the equipment flag bits:

solar                                      0001
solar is heat pump                         0010
chlorinator                                0100
intellibright                              1000
intelliflo 0                          0001 0000
intelliflo 1                          0010 0000
intelliflo 2                          0100 0000
intelliflo 3                          1000 0000
intelliflo 4                     0001 0000 0000
intelliflo 5                     0010 0000 0000
intelliflo 6                     0100 0000 0000
intelliflo 7                     1000 0000 0000
no special lights           0001 0000 0000 0000
heat pump has cooling       0010 0000 0000 0000
magic stream                0100 0000 0000 0000
IntelliChem                 1000 0000 0000 0000
hybrid ht (UltraTemp)  0001 0000 0000 0000 0000

It seems your original set bit of 0x2000 indicates that your heat pump supports cooling. As for the bit at 0x10000 listed as 'hybrid ht', I don't know if that is correct or not.