Hayward Omnilogic?

I didn’t realize this was already available. Would you mind posting a link?

It’s technically not available yet. We actually just forked the homeassistant repo and started creating the official integration for it. Hopefully we’ll be able to get this merged in soon. We’re able to communicate with the API and get things set up, but we’re having an issue with polling for updates right now. Here’s the main repo we’re working off of now. Check out the “omnilogic” branch:

Tried and received this:
Component error: omnilogic - No module named ‘custom_components.omnilogic.omnilogic_api’

If you’d prefer me wait a little longer before using to test for you guys, I can.
Appreciate all your efforts on this!

Following. Happy to test if needed. Is there a minimum firmware version needed on ones controller to leverage this?

We’re not sure if there’s a minimum firmware required. We’re just working off of the latest API docs and I think they’ve been compatible for at least a few years. We’ll definitely need some help testing. Right now we’re trying to get our initial version ready for a PR to get it merged into HA as an official integration. If we can get that done, it would be really easy to have all of you help us test it. The initial version will be very simple and read-only (showing status of sensors/temps and motor speed) but as soon as that gets accepted, we should be able to include the other updates fairly quickly.

We have overcome most of the really complicated aspects so far so we should be in pretty good shape. We’re able to access sensors and status for pools and spas, lights, motors, relays, and even chlorine/salt levels. We’re able to see historical data for everything and Tim has even made a few automation as well. So progress has been good, we’re hoping to have something ready soon for everyone.

We forked the HA repo and have started working off an “omnilogic” branch. You’re more than free to check it out here: https://github.com/Oliver84/home-assistant/tree/omnilogic

1 Like

I can do some testing. However, I’m on the latest Omnilogic firmware already.
Also there is probably a lot of complexity in the system, as the Ominilogic is very modular in what it supports. I for example have a Badu resistance jet and also the new Omnilogic Auto Chemical dispensing system for Acid and Chlorine, which all tie into the Omnilogic system.

I’d be very happy If I could control/automate the heater; pump and the resistance swimming. Then I could finally just control the most important pool functions from my Apple Watch through Siri :slight_smile:

Your system data would be great for us to have. We’re trying to cover as many use cases as we can and we haven’t had a system yet with a resistance jet. I wonder if that comes back as a relay in the payload. If you’d like to help with that, message me directly so we can see what the easiest way would be for you to send us the payload of the response for your system.

1 Like

@djtimca @Oliver84 My username on github is ‘borski’. Been writing code forever. Happy to help, since I’d love to see this happen. Can someone add me to the repo? :slight_smile:

1 Like

Hi @Oliver84. Sorry to be a pain! Just checking in to see how the integration is coming along? Is it in a useable state where I could help test?

Hey, we’re actually just waiting for HA to approve our code for the first version. The first version will be pretty limited because they want it to be very simple but the update following that will have pretty much everything else we could add. That version is pretty stable right now but we do need more testers to help us find issues.

We have a fork of HA that includes our changes for the Omnilogic integration. Would you know how to install it from here? https://github.com/Oliver84/home-assistant/tree/omnilogic-test

If not, let me know and we can try to make it easier for people to test. Also, we have a slack channel for feedback and testing. Give me an email address and I can add you. Thanks!

3 Likes

@Oliver84 Thanks for the info! I’ll be happy to help test. As long as it won’t blow up my pool pump! :slight_smile:

I should be able to copy this directory into my custom_components folder, correct? And I would need to know what to add to my configuration.yaml.

image

After you copy omnilogic_api into your custom components folder, restart home assistant and then go to Configuration, Integrations. Click the add button and search for Omni. It should show up in the list of integrations. Add it and enter your username in the first field, password in the second. The username should only be your username and not your email address.
As a heads up, I believe the latest .115 release does break some of the entities. So if you are on pre-0.115, all should function.

Yes, just copy that folder into your custom_components and you’ll actually use the new config flow instead of the configuration.yaml. It’s their “new way” of doing things. Just add the integration from the home assistant menu. It should list it under “omnilogic”. If not, let me know.

1 Like

Thanks @jplivingston08 and @Oliver84! I am so excited about this integration, and really appreciate all of your work! Here are my initial observations:

  • I did get a notification that there was an issue with omnilogic.sensor. I am assuming that is because I am on .115.2
  • Lights turn on and off, but no ability to change colors (yet?)
  • Heat pump shows correct current temperature, but wrong target temperature when NOT running. When it IS running, the target is correct.
  • Filter pump switch toggles on and off correctly, but no adjustment for speed (yet?)
  • I believe item one is accurate. I have held off from updating HA because of this.
  • The lights allow you to change the effect. I have the lights tied to a light card in lovelace. When you tap the three dots in the top right corner of the card you should see the status and you can choose the effect at the bottom. (I might have a custom light card but I actually think it is the default one. If you don’t see it, I can look further.)
  • The temperature item you reference might just be how this functions right now until it is built further. I don’t think I have an issue with that but I do see something similar with ORP sensors.
  • For the pump, you call a service to set it. here is an example from a lovelace card I have:
    action: call-service
    service: omnilogic.set_pump_speed
    service_data:
    entity_id: switch.pool_pool_filter_pump
    speed: 25
    The heater works similarly:
    action: call-service
    service: water_heater.set_operation_mode
    service_data:
    entity_id: water_heater.pool_pool_heat_pump
    operation_mode: ‘on’

My Pump/Heater/pressure cleaner card:
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

Thanks @jplivingston08! I haven’t really messed with customized cards yet. Any chance you can format your code using the Preformatted Text button so I can get a better idea what it should look like?

Also, some HomeKit related observations and questions. I wanted to push these entities to HomeKit using the HomeKit Bridge integration:

  • I added the pool heater, which came through as a water heater. Makes sense. I can control the temperature setting using HomeKit. But the temperature state seems to be frozen at 122 degrees. I also don’t see a way to turn the heater off in HomeKit. Not sure if these are things within your control, or if it is a bug in the HomeKit Bridge.
  • The pool pump comes through as a switch. That is great for on/off. But ideally I would like to be able to control the speed in HomeKit. I’m wondering if the pump would need to be configured as a template light so I can control speed using brightness?
  • The light came through as a simple on/off, which I kind of expected. I don’t know if it would even be possible to have the light colors configurable through HomeKit? Thoughts?

@Oliver84 @jplivingston08 You may already be aware of this issue, but just in case - I get the below error with water_heater.turn_on:

‘OmnilogicHeater’ object has no attribute ‘async_turn_on’
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py”, line 137, in handle_call_service
await hass.services.async_call(
File “/usr/src/homeassistant/homeassistant/core.py”, line 1315, in async_call
task.result()
File “/usr/src/homeassistant/homeassistant/core.py”, line 1350, in _execute_service
await handler.func(service_call)
File “/usr/src/homeassistant/homeassistant/helpers/entity_component.py”, line 204, in handle_service
await self.hass.helpers.service.entity_service_call(
File “/usr/src/homeassistant/homeassistant/helpers/service.py”, line 459, in entity_service_call
future.result() # pop exception if have
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 655, in async_request_call
await coro
File “/usr/src/homeassistant/homeassistant/helpers/service.py”, line 484, in _handle_entity_call
result = hass.async_add_job(partial(getattr(entity, func), **data))
AttributeError: ‘OmnilogicHeater’ object has no attribute ‘async_turn_on’

Thanks Mike, we actually just got our code accepted and merged into the develop branch for HA. There have been a lot of changes that were requested so the branch that you’ve been testing will be changing significantly.

The initial release will be very limited in function but we’re working to try and get these features out as soon as possible. The branch that was merged to their develop branch was just a small subset of the features you’ve been testing. But we’ll slowly be bringing those into HA as well.

Sounds good. Thanks for the info. When do you think it will make it into the production HA branch?

Honestly, I’m not sure what their deployment cycle is for production. You should be able to get it in their development branch, but keep in mind it’s going to be more limited than the test version you’re trying out now.