Screen Logic plug-in for Homebridge using the node-screenlogic library.
This plugin was recently rewritten in Typescript to use the latest capabilities of Homebridge 1.x, so it requires at a minimum:
- Homebridge >= 1.1.1
- Node >= 10.17.0
- Install homebridge using:
npm install -g homebridge
- Install this plug-in using:
npm install -g homebridge-screenlogic
- Update your configuration file. See example
config.json
snippet below.
Configuration samples (edit ~/.homebridge/config.json
):
This performs a UDP broadcast on 255.255.255.255, port 1444, so ensure your network supports UDP broadcasts and the device is on the same subnet.
"platforms": [
{
"platform": "ScreenLogic"
}
],
Use this when you know the local static IP address.
"platforms": [
{
"platform": "ScreenLogic",
"ip_address": "192.168.0.100"
}
],
"port"
is optional and defaults to 80"username"
is optional, but is recommended as it is used to keep accessory UUIDs consistent. Should be in the format"Pentair: XX-XX-XX"
.
Use this to go through Pentair servers.
"platforms": [
{
"platform": "ScreenLogic",
"username": "Pentair: XX-XX-XX",
"password": "..."
}
],
-
"hidden_circuits"
comma-separated list of circuit names to hide. Set this for circuits you don't want showing up as switches. (ie..,"Aux 6,Floor Cleaner"
). -
"hideAirTemperatureSensor"
hides the air temperature sensor. Default isfalse
. -
"hidePoolTemperatureSensor"
hides the pool temperature sensor, which is redundant if you are showing pool thermostat. Default isfalse
. -
"hideSpaTemperatureSensor"
hides the spa temperature sensor, which is redundant if you are showing spa thermostat. Default isfalse
. -
"hidePoolThermostat"
hides the pool thermostat (aka, pool heater) if you don't want to allow changes via HomeKit. Default isfalse
. -
"hideSpaThermostat"
hides the spa thermostat (aka, spa heater) if you don't want to allow changes via HomeKit. Default isfalse
. -
"statusPollingSeconds"
time in seconds to poll for pool statu. Default is 60 seconds.
- TemperatureSensor accessory (Air) indicating the ambient temperature where thee screenlogic hardware is located
- TemperatureSensor accessory (Pool) indicating the ambient temperature of the pool (last known temperature if pool isn't running)
- TemperatureSensor accessory (Spa) indicating the ambient temperature of the Spa (last known temperature if pool isn't running)
- creates a Switch accessory for each discovered circuit (i.e., Pool, Spa, Jets, Pool Light, Spa Light, etc)
- Thermostat accessory with ambient temperature, mode control (heat/cool/auto/off), and target temperature control
- Thermostat accessory with ambient temperature, mode control (heat/cool/auto/off), and target temperature control
The Pool and Spa Heater accessories are exposed as Thermostats in HomeKit. Since the semantics are slightly different between Pentair heat mode and a thermostat target heating state, a mapping is required.
I picked the following mapping, which seemed like the most logical mapping:
Pentair Heat Mode | Thermostat State |
---|---|
Off | Off |
Heater | Heat |
Solar Preferred | Auto |
Solar | Cool |
The only strange one is mapping Solar
to Cool
. I decided to go that route given the first three were fairly obvious (to me at least).
An alternative would be to expose three distinct on/off switches that represent each mode, and then ignore state changes (and maybe just allowing Off/Heat).
The other compromise is that the pool and spa heaters do not turn the pool and/or spa on or off, they just change the heat mode.
i.e., if you want to heat the spa, you need to do two things:
- turn on the Spa (via the Spa Switch)
- make sure the Spa Heater is set to something other than off (most likely Heat)
This should work well in practice though, as you will generally have a set target temperature and mode, and then just turn the spa on/off without mucking with the thermostat.
This also means that even if the Pool/Spa is turned off and you open the Pool/Spa Heater it mght say "HEATING TO". It will not actually being heating unless the corresponding Pool/Spa switch is turned on.