Hayward Omnilogic?

Sorry for the delay with chiming in. To use the water heater you have to send some service data along with the call. Below is an example.
service: water_heater.set_operation_mode
service_data:
entity_id: water_heater.pool_pool_heat_pump
operation_mode: ‘on’

Here is a second try of posting the vertical stack card with my controls in it. It should work for you if I can figure out the right method of pasting. Basically you would just go to your lovelace dashboard, hit the edit pencil, click the + button at the bottom right of the screen and search for a manual card. Once there, delete the first pre-filled line of text and paste the below in. You will need to edit all the entity ID’s to match yours and probably eliminate the “clean pool” portion since I have a simple script running that. Save it and you should have some controls over the pool. I am sure you know how to do the above, I only spelled it out for others landing here looking for guidance.

cards:
  - entity: sensor.pool_pool_filter_pump_speed
    max: 100
    min: 0
    name: Pump Speed
    type: gauge
  - cards:
      - entity: switch.pool_pool_filter_pump
        hold_action:
          action: more-info
        icon: 'hass:pump'
        icon_height: 30px
        name: 25%
        show_icon: true
        show_name: true
        show_state: false
        tap_action:
          action: call-service
          service: omnilogic.set_pump_speed
          service_data:
            entity_id: switch.pool_pool_filter_pump
            speed: 25
        type: button
      - entity: switch.pool_pool_filter_pump
        hold_action:
          action: more-info
        icon: 'hass:pump'
        icon_height: 30px
        name: 50%
        show_icon: true
        show_name: true
        show_state: false
        tap_action:
          action: call-service
          service: omnilogic.set_pump_speed
          service_data:
            entity_id: switch.pool_pool_filter_pump
            speed: 50
        type: button
      - entity: switch.pool_pool_filter_pump
        hold_action:
          action: more-info
        icon: 'hass:pump'
        icon_height: 30px
        name: 90%
        show_icon: true
        show_name: true
        show_state: false
        tap_action:
          action: call-service
          service: omnilogic.set_pump_speed
          service_data:
            entity_id: switch.pool_pool_filter_pump
            speed: 90
        type: button
      - entity: switch.pool_pool_filter_pump
        hold_action:
          action: more-info
        icon: 'hass:pump'
        icon_height: 30px
        name: 100%
        show_icon: true
        show_name: true
        show_state: false
        tap_action:
          action: call-service
          service: omnilogic.set_pump_speed
          service_data:
            entity_id: switch.pool_pool_filter_pump
            speed: 100
        type: button
    type: horizontal-stack
  - cards:
      - cards:
          - entity: water_heater.pool_pool_heat_pump
            hold_action:
              action: none
            icon: 'hass:fire'
            icon_height: 30px
            name: Heater
            show_icon: true
            show_name: true
            show_state: true
            tap_action:
              action: more-info
            type: button
          - cards:
              - entity: water_heater.pool_pool_heat_pump
                hold_action:
                  action: more-info
                icon: 'hass:fire'
                name: 'On'
                show_icon: false
                show_name: true
                show_state: false
                tap_action:
                  action: call-service
                  service: water_heater.set_operation_mode
                  service_data:
                    entity_id: water_heater.pool_pool_heat_pump
                    operation_mode: 'on'
                type: button
              - entity: water_heater.pool_pool_heat_pump
                hold_action:
                  action: more-info
                icon: 'hass:fire'
                name: 'Off'
                show_icon: false
                show_name: true
                show_state: false
                tap_action:
                  action: call-service
                  service: water_heater.set_operation_mode
                  service_data:
                    entity_id: water_heater.pool_pool_heat_pump
                    operation_mode: 'off'
                type: button
            type: horizontal-stack
        type: vertical-stack
      - entity: script.clean_pool
        hold_action:
          action: more-info
        icon: 'hass:robot-vacuum-variant'
        icon_height: 50px
        name: Clean Pool - 3hr
        show_icon: true
        show_name: true
        show_state: false
        tap_action:
          action: toggle
        type: button
    type: horizontal-stack
type: vertical-stack

1 Like

Thanks @jplivingston08! I got it to work in an automation like this:

  action:
    - service: water_heater.set_operation_mode
      entity_id: water_heater.pool_heater
      data:
        operation_mode: 'on'
1 Like

Thanks everyone for the hard work and congrats for having the first version live in 116.0! :tada:

Sensors are created, but not all are working:

Log Details (ERROR)
Logger: homeassistant
Source: components/omnilogic/sensor.py:122
First occurred: 12:14:40 PM (148 occurrences)
Last logged: 12:29:01 PM

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 118, in _handle_refresh_interval
    await self.async_refresh()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 192, in async_refresh
    update_callback()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 296, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 320, in _async_write_ha_state
    sstate = self.state
  File "/usr/src/homeassistant/homeassistant/components/omnilogic/sensor.py", line 122, in state
    hayward_state = round((hayward_state - 32) * 5 / 9, 1)
TypeError: unsupported operand type(s) for -: 'str' and 'int'

Also, the integration doesn’t seem to be updating any values of the sensors - except after restarting of HA. Or what is the polling delay? I waited 10-15mins and no values were updated after i turned the pump off.

After a restart the values were updated and it looks like this:

Any ideas?

Thank you so much to everyone that put work into the Omnilogic project! I just updated to 116.0 and my sensors work great. Thank you!!

1 Like

@dts looks like you have uncovered (yet another) inconsistency in the Hayward data we get from their API. I’ll PM you with a way we can help to diagnose.

1 Like

Not 100% sure how the HomeKit bridge will handle this. You will have to set the heater through operation mode (noted in other responses) rather than a turn_on command.

There is a custom service on the switch to set the pump speed. You can call omnilogic.set_speed (look in Developer Tools for the additional YAML required).

For the light you can either use the Light Entity card from HACS for Lovelace control, or just click the detail on the light entity when it is on - you should see a drop down with all of the various light effect settings available to you.

@_Mike you shouldn’t have sensor issues if you are on at least version 0.115. There was a change in the way Home Assistant uses PERCENTAGE as a unit of measure at 115, but if you’re at least there it should work. If you can post your logs it would be helpful.

Colour effects can be changed either using Light Entity card (HACS) or by clicking the detail of the light entity when it is on. You should see an effect drop down.

Speed is a custom service (omnilogic.set_speed) to set the speed, but it is available.

I would be very interested in seeing more about the water heater target temperature. Can you post running/not running picture so I can see what you mean?

I was in to see my pool dealer today ordering up a new heat pump. Had a chat with him about the Omnilogic. He’s recommending the OmniHub for my system. Says it uses the same software, same web app, same everything and said it’s essentially a smaller version of the Omnilogic since it only controls 4 items. Between pump, salt cell, heat pump and light I don’t really need any more than 4 items. I could get it as an upgrade with a new variable speed pump which is a bonus since I’ve got a single speed now and plan on upgrading the pump anyways.

Would the OmniHub be compatible with this integration?

@MRobi I have the OmniHub as well. It is working with this integration!

1 Like

@MRobi @_Mike I have an OmniHub as well, its not working yet as I have solar and gas heating but the awesome developers are working on getting it working with that as well.

1 Like

Any way to also integrate this in homebridge to be able to add to HomeKit. Can someone make a plug-in based on this code.

@Shawn_Adam You don’t need Homebridge. Push it to HomeKit using the Home Assistant HomeKit Bridge.

I don’t have home assistant as I’m running homebridge on a small windows box. Don’t havea Pi and not worth it since most things available on homebridge

I hear ya. For what it’s worth, you should take a look at Home Assistant. I started with Homebridge and then over the course of a year or so slowly migrated everything to Home Assistant. And I mean everything. All of my scenes and automations are now in HA. I just use HomeKit for Siri now. You can really dig in and do so much more with HA. You should be able to run it in docker on Windows if you’re interested in giving it a try.

This is a fantastic integration… thx for those you that did the work to make this happen. I thought that maybe things had stalled based on this community thread but I see that @djtimca has added features in the latest release… awesome - i tip my hat in appreciation. Quick question - is there the ability to change the UOM that shows in HA for this integration? My Omnilogic itself and the mobile app show F and yet the integration is showing C… perhaps i’m missing a configuration setting somewhere - i apologize in advance if it’s a noob-ish question. Long live HA.

The UOM will show based on how you have units set in HA automatically. If all your other temps are in C then so will the readings from this. It is a universal setting.

You can set up a separate template sensor manually to convert if you prefer your pool in F and the rest in C (like most of us Canadians).

Impressive speed in responding… template sensor work-around… got it! Thx @djtimca !!

There are two API documents: one for integrating their cloud API and the other for the local API via the local IP Address of your panel.

I assume you are using the cloud API for this effort? If you email Greg and sign the NDA you can get the local API document.

We are using cloud for this integration. We have both APIs documentation, but they are significantly different. As we had already built the full library against the cloud API we will continue to use that until all platforms are added to HA.

After that we can look at building a local option.