[RELEASE] Hayward OmniLogic pool equipment integration

Hayward OmniLogic smartapp

Introduction

With only a few weeks left in the pool season, I've completed the first release of my integration for Hayward OmniLogic pool controllers.

The main goal of the integration is to be able to control pool equipment using Google Assistant and the Google Home app. Hayward only has a very basic and hard to use built-in integration with Google Assistant. With this smartapp you can control your pool equipment from your pool or spa, without having to touch anything with your wet hands (provided you have a Google Assistant enabled phone or speaker nearby).

Of course you'll also be able to control the equipment using your hub's app or website if you prefer.

Supported devices

  • Variable Speed Pump

  • Pump

  • Heater

  • Chlorinator

  • Super Chlorinator

  • Light (Regular or ColorLogic)

  • Relay

  • Temperature Sensor

Examples of things you can say

Depending on device names:

  • Hey Google, turn on Pool Filter

  • Hey Google, set Pool Filter to 90%

  • Hey Google, what is the Pool temperature?

  • Hey Google, set Spa Heater to heat

  • Hey Google, set Spa Heater to 98 degrees

  • Hey Google, what is the Spa Heater temperature?

  • Hey Google, set Chlorinator to 50%

  • Hey Google, turn on Super Chlorinator

  • Hey Google, what is the Pool temperature?

  • Hey Google, turn on Pool Cleaner

  • Hey Google, turn on Spa Spillover

Note: Light and Relay devices have not been tested. I put my pool light on a zigbee switch last year so I haven't been able to try it out. If you use either of these devices, please let me know if they work.

If haven't tested this with Amazon Echo devices since I don't own any, but I'm curious to hear what works and what doesn't.

Installation

The integration consists of a Smartapp to handle communication with the Hayward OmniLogic API and 8 device handlers to control individual devices.

https://github.com/maartenvantjonger/omnilogic-smartapp/releases/download/1.2/omnilogic-v1.2.zip

Source code: GitHub - maartenvantjonger/omnilogic-smartapp: Hayward Omnilogic Smartapp for use with Samsung Smartthings and Hubitat

In Hubitat, go to Bundles -> Import ZIP, and import omnilogic-v1.0.zip

Configuration

  • After installation you can add the OmniLogic smartapp and fill in your OmniLogic username and password. The MSP ID can be found in your OmnoLogic display or in the OmniLogic app in the About popup.

  • Go to Devices in the OmniLogic smartapp. The app gathers your OmniLogic configuration and will show you a list of available devices to choose from. Select the ones you would like to control, and they will be added to your hub as individual devices.

  • Make sure Google Home integration is enabled for you hub, and synchronize the devices you've just created.

Known issues

  • The smartapp updates device statuses every 15 minutes. During those 15 minutes, device on/off statuses may show incorrectly in case you have your pool equipment on a schedule or if you're using the Hayward app or website to control the equipment on the side.

  • In the Google Home app, thermostats cannot be set beyond 90 degrees Fahrenheit. To get around this limitation, you can still say Hey Google, set Spa Heater to 104 degrees.

Another workaround is to set the temperature in the Hub's app or website or in the Hayward OmniLogic app, and only using Google Home to turn the heater on and off.

In Hubitat

There are some limitations and quirks with Hubitat's Google Home integration, but all issues below can be worked around by using the Google Home Community smartapp instead of Hubitat's built-in Google Home smartapp.

  • Variable Speed Pumps and chrorinators will be exposed to Google Home as lights instead of Switch Levels.

  • Heaters are exposed to Google Home as Thermostats that can cool or heat/cool, which is not true.

  • Temperature sensors are not exposed to Google Home. Aside from the Google Home Community workaround, water temperature is also available through Heater thermostat(s). Say Hey Google, what is the Spa Heater temperature?

Notes

I'm open to all feedback and suggestion. For developers: All pull requests into the develop branch of the git repository will be considered.

5 Likes

Awesome integration! I’ve been longing this for a while. 2 feedback points

  1. The GH set temp (above 91) didn’t work for me even when specifying the specific value
  2. I created virtual scene switches to control multiple features that are codependent (ie my spa water feature will only turn on if my spa filter pump is running) I know this isn’t a bug in your app, I am just mentioning it for the benefit of others

Great job. Now my wife can ask Google to turn things on instead of me :grin: and I can now link my backyard lights stay on override to the pool controls. Much appreciated!

1 Like

Thanks Philip, you're my first (and only) customer! I appreciate your comment.

About #1: I may have mistakenly assumed this worked with the built-in Google Home integration, but it will definitely work with Google Home Community.
Here's how I set up the thermostat device type in GHC:

Thermostat Device type:

Temperature Setting Device Trait:

#2: That's a great use of scenes! I had hoped Omnilogic would do this automatically, but your solution is just as good.

So awesome. Thanks for releasing this!

1 Like

This is an awesome integration. Thank you so much for sharing!!!

1 Like

A couple of Use Cases I will be implementing with this new integration...

  1. One thing that always annoyed me with OmnniLogic schedules is that they don't support dynamic Sunset times. Going forward I will be removing the schedules from OmniLogic and replacing them with Hubitat rules to turn on the pool lights at sunset and to turn them off when we go to bed or leave the house.

  2. The other thing I will be doing is adding a few wall mounted Pico remotes on my covered patio which will trigger some of my favorite pool scenes.

1 Like

Looks like there is a bug in the OmniLogic VSP driver on line 75.

Look at you with all the bubblers, jets, lights and blowers!
That indeed looks like a bug. The VSP driver assumes that the device reports on valve positions, but it looks like this not necessarily the case. Does your waterfall pump have a variable speed setting? I'll look into it.

And in case you had trouble turning on your relay devices (bubbler/jets?), I have just pushed a fix for that driver at: https://github.com/maartenvantjonger/omnilogic-smartapp/blob/main/devicetypes/maartenvantjonger/omnilogic-relay.src/omnilogic-relay.groovy
Someone on the Samsung Smartthings forum reported that issue.

I think your use cases are great by the way! You're taking it way further than I had imagined people would use this.

I dug into this a bit more and its not a bug with the driver. My pool has 2 pumps both of which are VSP. The primary vsp pump runs the pool and spa, the secondary vsp pump is dedicated to the waterfall. In the telemetry xml file for my setup the primary pump is configured as a Filter. The secondary pump is configured as a Pump. The OmniLogic Integration app assigned the OmniLogic VSP driver to both. This is why the secondary pump was logging errors. When I changed its driver to the OmniLogic Pump driver it started to work properly. However, this driver does not support speed control. To resolve this I created a new hybrid driver called OmniLogic VSP Pump which acts like a Pump but adds speed control. This seems to work well.

New small bug found in the OmniLogic Light driver. The SetLightShow method is referring to the isOn boolean (which does not exist) to set the value of 'switch'. This logic can be simplified to always set 'switch' to on because the SetStandAloneLightShow call will always turn the lights on.

Thanks Steve! I didn't realize you were a developer as well!I fixed the Light driver issue in the github repository.
The other issue you found with the VSP driver may need a little more attention, but I'm glad you have already found a workaround.
I have to make a better distinction between filter and pump devices, where both types of devices can be either single or variable speed.

The fix for the VSP is easy. Need to do 2 things:

  1. Create a new driver called OmniLogic VSP Pump which is based on the OmniLogic Pump driver but with the Switch Level capability

  2. In the OmniLogic app modify the addPump method to use the new driver if PMP_VARIABLE_SPEED_PUMP

def addPump(availableDevices, deviceDefinition) {
def driverName = deviceDefinition."Type".text() == "PMP_VARIABLE_SPEED_PUMP" ? "OmniLogic VSP Pump" : "OmniLogic Pump"
addDevice(availableDevices, deviceDefinition, null, driverName)*
}

That will fix it :grinning:

Hey Steve, I finally got around to fixing this in the existing VSP and Pump drivers, so that both driver work for filters as well as water features.

The fixes (among a couple of others) are in the development branch:

1 Like

I just installed this addon to my HE and my spa and pool temperatures are reporting at 180f+ at all times. I'm assuming it's taking Fahrenheit and trying to convert it again, thinking its Celsius, but I could be wrong.

Hi @jjmorgano, unless you're actually trying to boil some water, that's exactly what's happening.

Someone on the SmartThings forum reported this issue and I was able to fix it last week. Did you try installing the app and drivers from the development branch?

Let me know if that works!

Wanted to say thank you for this. Just had my omnilogic set up and your app works perfectly.

1 Like

Thanks @tlrfreak!

1 Like

Hello
The pump and the water heater are well connected in Hubitat. The lights do not respond. They are on "Backyard" in OmniLogic. How can I control them?
Thanks for the app!

Can you explain how you put your light on zigbee switches? Are you using colorlogic?

It's just a regular on/off halogen bulb I believe. I put a Zigbee switch module in between that is paired to and operated by Hubitat.