ISY994 HACS Version with PyISY-Beta

Consolidating several posts I have on different topics with my ISY Updates to here.

Just pushed several bug fixes and updates to the HACS version of the ISY994 integration.

Recent Changes include:

  • Moved recording of extra attributes in the event stream from the Home Assistant integration into the PyISY module.
  • Fixed erroneous errors when updating statuses for Thermostats.
  • Added “group all on” attribute to scenes/groups to show if all of the devices in the group are on, or just some of them.
  • Fixed “hint” assuming a device would turn on to full brightness - now instead of jumping to full brightness and back to the correct level if a local On Level is set, it will jump to the On Level.
  • Fixed Brightness=255 from assuming device would turn on to full brightness, did not account for local On Levels. Now will actually send Brightness=255 if it is passed.

For the full list of differences between this version and the built-in component, see the README

This consolidates the following topics:

Please report any issues here, or in the GitHub repo:

Note: the intent is to migrate these changes to the built-in integration at some point, time permitting. Special thanks to @OverloadUT who’s been working with me to get the underlying PyISY module updated.

2 Likes

Thank you @shbatm!

I know I’ve been lagging on providing a proper review of the PR to get this in to the main branch. Here is my public commitment to buckle down and get that done. All ISY users deserve to get these huge improvements you’ve implemented.

1 Like

No worries, not in a rush; just using it as an extended beta test. Juggling priorities across hobbies and real life is a struggle for me and I can only assume it is for anyone who works on projects like this.

I’ll extend the thanks to everyone who has battle-tested the HACS version and reported back bugs and issues so far.

1 Like

Just wanted to provide an example of the new “group_all_on” attribute for scenes/groups:

I have a scene “All Kitchen Lights” which shows as on when any light in the kitchen is on. I would like a quick way to turn on ALL of the kitchen lights, even if some are already on. The Lovelace yaml below will add a Custom Button Card that when pressed, will turn on all of the kitchen lights, even if some are on. If they’re all on, then tapping the button will turn them all off again. Long-pressing the button will turn them off regardless of the current state.

image image image

  - type: custom:button-card
    entity: switch.all_kitchen_lights
    name: All Kitchen
    show_label: true
    label: >
        [[[
        if (entity.state === "on") {
            if (entity.attributes.group_all_on === "on")
            return "All On";
            else
            return "Some On";
        }
        else
            return "All Off";
        ]]]
    tap_action:
        action: call-service
        service: >
        [[[
            if (entity.attributes.group_all_on === "on")
            return "switch.turn_off";
            else 
            return "switch.turn_on";
        ]]]
        service_data:
        entity_id: switch.all_kitchen_lights
    hold_action:
        action: call-service
        service: switch.turn_off
        service_data:
        entity_id: switch.all_kitchen_lights
    styles:
        label:
        - font-size: small
1 Like

This is fantastic! Thank you so much! :beers: :smile:

New Beta Version Released!

(make sure “Show Beta” is enabled in HACS to be able to install this version)

[1.4.2] - Services, Variables Reavamped, Inheritance Fixes

MAJOR MILESTONE : Good-bye beta! Now running on pyisy==2.0.0 !

  • This is a major milestone towards enabling these changes to be migrated into the Home Assistant Core code, and have been over a year in the making!

BREAKING CHANGES!! - Variable Support Has Changed in this Version!

  • To ensure future support and ability to merge the changes in this custom component into the Home Assistant core, some changes needed to be made to how variables were handled:
    • Variables are no longer configured in configuration.yaml.
    • A new Variable Sensor String config option has been added in the Integrations > Options page (or by using variable_sensor_string: "HA." in your configuration.yaml).
      • This behaves similarly to Sensor String and Ignore String for nodes: you need to rename the variables in your ISY to have the Variable Sensor String somewhere in the name.
      • If your Variable Sensor String is "HA." then every variable with HA. in the name will be imported as a sensor.
      • Additional configuration (changing device class, friendly name, unit of measurement, etc.) can be done using customizations in Home Assistant.
    • Variables as a switch or binary_sensor are no longer supported. This was a duplicate functionality that is already available using Programs

New:

  • Add services to ISY994 Integration to access additional commands available in PyISY, such as fast on/off and fade up/down/stop as well as enable/disable nodes. The following services are now available:
    • isy994.send_raw_node_command: Send a “raw” ISY REST Device Command to a Node using its Home Assistant Entity ID.
    • isy994.send_node_command: Send a command to an ISY Device using its Home Assistant entity ID. Valid commands are: beep, brighten, dim, disable, enable, fade_down, fade_stop, fade_up, fast_off, fast_on, and query.
    • isy994.set_on_level: Send a ISY set_on_level command to a Node.
    • isy994.set_ramp_rate: Send a ISY set_ramp_rate command to a Node.
    • isy994.system_query: Request the ISY Query the connected devices.
    • isy994.set_variable: Set an ISY variable’s current or initial value. Variables can be set by either type/address or by name.
    • isy994.send_program_command: Send a command to control an ISY program or folder. Valid commands are run, run_then, run_else, stop, enable, disable, enable_run_at_startup, and disable_run_at_startup.
    • isy994.run_network_resource: Run a network resource on the ISY.

No more Restarting Home Assistant for ISY changes!:

  • These services have also been added:
    • isy994.reload: Reload the ISY994 connection(s) without restarting Home Assistant. Use to pick up new devices that have been added or changed on the ISY.
    • isy994.cleanup_entities: Cleanup old entities and devices no longer used by the ISY994 integrations. Useful if you’ve removed devices from the ISY or changed the options in the configuration to exclude additional items.

Fixed:

  • Fix #51 - Temperatures are not converted if ISY thermostat and HASS are different units
  • Fix #54 - Z-Wave Sensor showing UOM as integer next to actual state.
2 Likes

Awesome release @shbatm ! Conversion for variable sensors went smoothly.

Thanks for the new features!

For anyone who wants to keep an eye on things: here’s the first PR to move everything back to Core:

1 Like

To everyone who uses this custom_component, thank you for the help and support to fine tune it over the past year!

All of the changes that were included in the HACS version have now been migrated back into Home Assistant Core and are available starting with the 0.110.0 beta release.

For the most part this should be an easy transition if you remove the HACS ISY994 integration and restart. But please make sure to review the Breaking Changes! The most significant changes for users of the HACS version will be some entities changing to a different platform, most notably Secondary Buttons on Keypadlincs and Remotelincs will now be added as sensors instead of switches since they cannot be controlled from HA.

https://rc.home-assistant.io/blog/2020/05/12/release-110/#breaking-changes

3 Likes

Thank you for your work on this custom component. Integration of Insteon is a huge part of my configuration and this has been a big plus.

Is the Custom Component being entirely deprecated in favour of the upcoming core integration? Or will it continue to be a forward thinking version of the ISY integration?

1 Like

My plan is to update it to match these changes in Core, but I would recommend once you update to 0.110, you remove the custom component.

I still have some plans for testing a few improvements in speed, as well as better support for ISY NodeServers, however, the base case will be to progress these changes in the Core code and the HACS version will not be maintained or updated unless there is a significant change to be made and tested.

This HACS component was necessary because of the significant rewrite of the PyISY module needing to be thoroughly reviewed and tested. Hopefully, it’s in a much better place for future features to be added.

I’m not going to mark the repo inactive, so feel free to open issues with any suggestions for changes, but bugs should go to HA Core… I’ll see and manage them there.

Extending the thank you to @bdraco and @OverloadUT for helping review and progress everything.

1 Like

Installed the newest version of HA and for the life of me cant find how to find the pyISY integration. I cant find the “Show Beta” option. Any help is appreciated.

When you say the latest version of HA, are you on 0.109.6 or the newest beta? Right now since the changes to the main Home Assistant are still in beta for version 0.110.0beta2, you can:

  1. Install the Home Assistant beta version (depends on how you have HA installed).
  2. Install HACS https://hacs.xyz/ and once you have that setup find the Universal Devices ISY994 integration.

Thanks for that. I have HACS installed and running. Now I cant find the Show Beta. Only see v1.5.1.

Ah. See this: https://hacs.xyz/docs/navigation/repository#repository-menu

It’ll be in the menu on the Universal Devices ISY994 page.

1.5.1 is the latest version (for 0.110.0beta of HA)
1.4.3 is the last beta version and should work w 0.109.x

v2.0.0b1 - Async+Websocket Communications Testing

:warning: BETA RELEASE - NOT FULLY TESTED - REPORT ALL ISSUES

This is a beta release that includes another round of major updates to PyISY. This time all of the communications with the ISY have been migrated to asynchronous communications via aiohttp and asyncio . This also moves from the TCP SOAP Socket threaded updates to using an async websocket for event updates.

Do not install this version if you are not willing to test and report back issues. All general users should remove the HACS version after updating Home Assistant to 0.110.0.