Insteon configuration panel

Would be excellent to have your lovelace page and any helper entities on github to track the progress/changes.

Biggest hangup right now is time and testing. I know one thing is wrong and I kinda know how to fix it ,

I get the modem’s ALDB database:

- platform: command_line
  name: insteon_modem_aldb
  command: "jq '.[0]' insteon_devices.json"
  value_template: "{{ value_json[0].address }}"
  json_attributes:
    - aldb

I get the list of scenes that exist:

sensor:
  - name: "defined_insteon_scenes"
    state: "{{ 'OK' }}"
    attributes:
        in_scenes: >
            [{% for item in (state_attr('sensor.insteon_modem_aldb','aldb') ) %}
            "{{state_attr('sensor.insteon_modem_aldb','aldb')[item]['group']}}"
            {% if not loop.last %},{% endif %}
            {% endfor %}]

I can grab the XX.XX.XX from that:

  - name: "insteon_device_groups"
    state: "{{ 'OK' }}"
    attributes:
        in_groups: "
{% set aldb = state_attr('sensor.insteon_modem_aldb','aldb') %}
{% set gp = namespace(groups=[]) %}
{% for key, value in aldb.items() %}
{% if (value.group | int == states('input_select.insteon_modem_groups') | int) %}
{% set gp.groups = gp.groups + [(value.target[0:2]+'.'+value.target[2:-2]+'.'+value.target[-2:]) | upper] %}
{% endif %}
{% endfor %}
{{ gp.groups | unique | sort | list }}"

Now I can push that out, like this:

  - name: insteon_group_entities
    state: "{{ 'OK' }}"
    attributes:
        scene_entities: "
{% set gp = namespace(groups=[]) %}
{% for ent in integration_entities('insteon') %} 
{% if state_attr(ent,'insteon_address') in state_attr('sensor.insteon_device_groups','in_groups') %} 
{% set gp.groups = gp.groups + [ent] %}
{% endif %} 
{% endfor %} 
{{ gp.groups | unique | sort }}"

The issue here is it is a blind match, meaning XX.XX.XX matches every device. So like this picture:

XX.XX.XX matches every button in the 6-button switchlinc. I need to deepen that match to filter out controllers or something. But that code can give you some start. IN reality, the bottom left screen should only show the named entities which are all “on” and not the “button A”, button B" etc.

However I have not thought it through … I think of it like I use it. I would rip out every 6-button/8-button in my house tomorrow as HA makes them worthless really (for me) because I can say “Alexa, turn on dogs” … which is linked to scene 51 … which does it. I do not push buttons much anymore.

The upper left input_select is populated through an automation:

service: input_select.set_options
data_template:
  entity_id: input_select.insteon_modem_groups
  options: >
    {% set aldb = state_attr('sensor.insteon_modem_aldb','aldb') %} {% set gp =
    namespace(groups=[]) %} {% for key, value in aldb.items() %} {% if
    value.group > 9 %} {% set gp.groups = gp.groups + [value.group] %} {% endif
    %} {% endfor %} {{ gp.groups | unique | sort }}

Right now I just have a Time trigger that populates this every minute.

The left vertical stack is in this type of card:

type: vertical-stack
cards:
  - type: custom:auto-entities
    card:
      type: entities
      title: Insteon Group Explorer
      show_header_toggle: false
      state_color: true
    filter:
      include:
        - entity_id: input_select.insteon_modem_groups
          options:
            state_color: true
            icon: mdi:devices
      exclude: []
  - type: custom:auto-entities
    card:
      title: Scene Devices
      show_header_toggle: false
      type: entities
    filter:
      template: '{{ state_attr(''sensor.insteon_group_entities'',''scene_entities'') }}'

So when the value of the input_group on the top left changes, the template for the auto-entities card changes and the list is redrawn with the devices in the selected group. As I said, this is where I want to work next to change that list to only the devices in the group. Now if any button of the 6-button pad is in the list, they are all in the list because I build the list by matching “XX.XX.XX”. Because the 6-button is one address, they all appear which is not right.

OK, in my GUI I fixed the issue with the interface showing all buttons in multi-button devices as all outlets in multi-outlets with only those in the actual group.

insteon2

In my sensor.yaml:

# Get the ALDB record for the modem
- platform: command_line
  scan_interval: 30
  name: insteon_modem_aldb
  command: "jq '.[0]' insteon_devices.json"
  value_template: "{{ value_json[0].address }}"
  json_attributes:
    - aldb

In my template.yaml:

sensor:
# Given a group, get all the targets for that group
# This requires two pieces of information, the target address as well as the group number for multi-button, multi-outlet devices
  - name: "insteon_device_groups"
    state: "{{ 'OK' }}"
    attributes:
        in_groups: "
{% set aldb = state_attr('sensor.insteon_modem_aldb','aldb') %}
{% set gp = namespace(groups=[]) %}
{% for key, value in aldb.items() %}
{% if (value.group | int == states('input_select.insteon_modem_groups') | int) and (value.in_use) %}
{% set gp.groups = gp.groups + [(value.target[0:2]+'.'+value.target[2:-2]+'.'+value.target[-2:]+'_'+value.data1 | string) | upper] %}
{% endif %}
{% endfor %}
{{ gp.groups | unique | sort | list }}"

# Given the targets for a group, return a list of the entities 
  - name: insteon_group_entities
    state: "{{ 'OK' }}"
    attributes:
        scene_entities: "
{% set gp = namespace(groups=[]) %}
{% for ent in integration_entities('insteon') %} 
{% if state_attr(ent,'insteon_address') + '_' + state_attr(ent,'insteon_group') | string in state_attr('sensor.insteon_device_groups','in_groups') %} 
{% set gp.groups = gp.groups + [ent] %}
{% endif %} 
{% endfor %} 
{{ gp.groups | unique | sort }}"
1 Like

Hello everyone and thanks for all the work looking a workaround.

I did this and i can notice many scenes on my ALDB with linked devices that i never did.

For example, the master bedroom roller and the kitchen light in the same scene. That’s weird.

Is this happening to you too?

Is anybody here using the open/close micro module?

i have several issues with calibration and if somebody can help me or comment about it, i’ll be very grateful.

Thanks!

edit: btw @teharris1 in this module features what is duration high and low? for the values i believe it’s not seconds or time base value. Any doc to know about it? thanks!!

@kbrown01 this is the first I have seen of the “Insteon Group Explorer”. Can I ask where you got it? Looks like a great tool.

I wrote it. The code is posted above.

I am in the process of writing a detailed guide to build out those items. I should finish later today. I am actually walking through it with a person right now to be sure I capture everything.

4 Likes

Just a quick question regarding the Insteon Smoke Bridge (2982-222). I have so far been unable to add it using the Insteon panel in HA. Is it supported by the panel? If not is there any action I can take to add it in?

Hi all, new to HA and this forum and a victim of the Insteon default. Just found HA searching for an alternative and got it loaded up. Loving HA so far!!!

I got my Insteon Hub connected and can see my devices and entities, but regarding this Insteon Control Panel feature none of my devices are showing. Should it auto discover? Or do I need to try adding the Hub first? Or do I need to add each device individually?

Control Panel is empty

All my devices are showing under settings

Try refreshing your browser page, or a different browser. I use Edge and it frequently is empty & requires a reload.

I use Edge as a default. But just did a fresh install of Firefox and still no joy.

And a browser reload page does not work? Strange. Have you tried restarting HA?

Correct, I have had it running for about two weeks now. So multiple browser refreshes. And multiple HA restarts, both the VM and the physical device. I can control all the devices/entities via automations/scenes, but there is nothing coming in from the Insteon Control Panel. I feel like I must be doing something wrong as a newbie. Is there a way to force a discovery again?

The panel should simply be showing what’s in the Insteon integration with the exception of switches hidden by the new HA feature “show as”.
I’ve no idea…

Dang, thanks for the help.

If anyone else has ideas I am all ears.

have you tried the mobile app?
also by refresh - try clicking into the maginfy/search area and refresh the from the browser toolbar image
sometimes dragging down on the screen, or even typing a known ID (like your hub) in the search area

Just tried the mobile app…no luck. Same as the browser app.

Hello all.

The all link database now has stuff in it for some reason. No iIdea what I did.

I can’t seem to find an answer to this question and this might be a suitable spot to get one.

I am using HA supervised in docker and Insteon-MQTT at present but not doing so well at getting scenes to work. Actually only those that were already set up in modem (usb type) by some other software that Insteon EOL’d a while back. They work but I haven’t been successful in controlling and creating them in HA via the Insteon MQTT add on. I have been focused on other things actually, hoping someone would come up with a better way.

Is the Insteon integration that better way? It seems so but I can’t seem to get HA Insteon integration to communicate with my modem at /dev/ttyUSB0. It works fine with the MQTT add on. I tried disabling the MQTT add on and restarting, verifying the add on is not running and then adding the integration and specifying my PLM as above. The PLM does not respond when I do an insteon.load_all_link_database using dev tools or the ‘normal’ way.

I don’t have so many devices that the pain will be great to move across my address/labels if I have an easy to manage UI which it looks like the control panel is a big part of.

I am really struggling to get HA working in a stable and useful way. So much time I spend just trying to keep it working at the most basic level!

Thanks for reading.

Q