So I gave up and reverted to Hassbian (from Hass.io), but still encountered numerous issues with insteon_plm not working. After several frustrating hours of troubleshooting, I was able to narrow the issue to messages not being processed by the underlying insteonplm library (that the insteon_plm component is built on), which lead me to this thread:
Insteon_plm queue does not empty after timeout - #5 by TD22057
I added the timeout options @Grant10k mentioned and everything started working! The code does need a few extra lines (including the time library, declaring the _wait_time variable setting the start time, etc) than what’s available in the post for it to work correctly. I occasionally get the lockup with orphaned commands, but with this change they automatically clear after a minute and I have full control again. I’m still working on getting a few more things working on my end (like why does every insteon module appear as a plug-in dimmer when I don’t have any!?) but I’m much happier and further along than where I was 2 weeks ago.
Not sure if you have the same access to the insteonplm library on Hass.io, but this is likely the fix you need. I wonder if this is due to the far off devices I have in my detached garage dropping packets (which I get notified about when doing insteon diagnostics).
For anyone experiencing the “TypeError: ‘NoneType’ object is not iterable” error I had, this was due to the light / switch insteon_plm.py code attempting to iterate through the “discovery_info” value while it was set to “None” adding the following code before that loop traps the error:
if discovery_info is None:
_LOGGER.info(“discovery_info is None”)
else: