Testers Needed - Harmony Hub Support Implemented in Python

I’m running https://github.com/maddox/harmony-api in docker and all I need is a config to connect to my mosquito. No auth for Harmony. It seems to update my input select and issue commands much faster than this component, but I’ll keep testing.

Yes, I have tried as third hub, but it causes HASS to stall and not make it to user interface web page.

great to hear, and you arent kidding!

can you enable debugging for the remote component to see where it’s stalling at?

it’s going to be faster, it’s keeping an open link and receiving push notifications instead of pulling. I’m not quite sure how to implement that in python yet, my java skills arent good enough to understand the code fully

Troubleshooting my Harmony Link (my Hamony Hubs are working!)
set the following in configuration.yaml for testing:

logger:
  default: debug
  logs:
    homeassistant.components.remote: debug

frontend:

discovery:

remote:
  platform: harmony
  name: Rec Room
  username: [email protected]
  password: 123456
  host: 192.168.1.17
  port: 5222
  activity: Deck iTunes
 
history:

logbook:

Not seeing much in home-assistant.log:

16-11-23 14:25:53 homeassistant.loader: Loaded remote.harmony from homeassistant.components.remote.harmony
16-11-23 14:25:53 homeassistant.bootstrap: Setting up remote
16-11-23 14:25:53 homeassistant.components.remote: Setting up remote.harmony
16-11-23 14:25:53 homeassistant.components.remote.harmony: Loading Harmony component: Rec Room

Ok managed to get more info in the home-assistant.log

16-11-23 14:44:30 homeassistant.loader: Loaded remote.harmony from homeassistant.components.remote.harmony
16-11-23 14:44:30 homeassistant.bootstrap: Setting up remote
16-11-23 14:44:30 homeassistant.components.remote: Setting up remote.harmony
16-11-23 14:44:30 homeassistant.components.remote.harmony: Loading Harmony component: Rec Room
16-11-23 14:44:30 homeassistant.components.remote: Error while setting up platform harmony
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\homeassistant\helpers\entity_component.py", line 150, in _async_setup_platform
    entity_platform.add_entities, discovery_info
  File "C:\Program Files (x86)\Python35-32\lib\asyncio\futures.py", line 361, in __iter__
    yield self  # This tells Task to wait for completion.
  File "C:\Program Files (x86)\Python35-32\lib\asyncio\tasks.py", line 296, in _wakeup
    future.result()
  File "C:\Program Files (x86)\Python35-32\lib\asyncio\futures.py", line 274, in result
    raise self._exception
  File "C:\Program Files (x86)\Python35-32\lib\concurrent\futures\thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\homeassistant\components\remote\harmony.py", line 47, in setup_platform
    config.get(CONF_PASSWORD))
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\pyharmony\__main__.py", line 72, in ha_get_token
    token = harmony_auth.login(username, password)
  File "C:\Program Files (x86)\Python35-32\lib\site-packages\pyharmony\auth.py", line 46, in login
    id_token = resp_dict['id_token']
TypeError: 'int' object is not subscriptable
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event service_registered[L]: service=turn_off, domain=remote>
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event service_registered[L]: service=turn_on, domain=remote>
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event service_registered[L]: service=send_command, domain=remote>
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event service_registered[L]: service=sync, domain=remote>
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event component_loaded[L]: component=remote>
16-11-23 14:44:30 homeassistant.bootstrap: Setting up http
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event component_loaded[L]: component=http>
16-11-23 14:44:30 homeassistant.bootstrap: Setting up api
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event component_loaded[L]: component=api>
16-11-23 14:44:30 homeassistant.bootstrap: Setting up frontend
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event component_loaded[L]: component=frontend>
16-11-23 14:44:30 homeassistant.bootstrap: Setting up history
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event component_loaded[L]: component=history>
16-11-23 14:44:30 homeassistant.bootstrap: Setting up discovery
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event component_loaded[L]: component=discovery>
16-11-23 14:44:30 homeassistant.bootstrap: Setting up logbook
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event service_registered[L]: service=log, domain=logbook>
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event component_loaded[L]: component=logbook>
16-11-23 14:44:30 homeassistant.core: Starting Home Assistant core loop
16-11-23 14:44:30 homeassistant.core: Starting Home Assistant
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event service_registered[L]: service=stop, domain=homeassistant>
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event service_registered[L]: service=restart, domain=homeassistant>
16-11-23 14:44:30 homeassistant.core: Bus:Handling <Event homeassistant_start[L]>
16-11-23 14:44:30 homeassistant.core: Timer:starting
16-11-23 14:44:30 netdisco.service: Scanning
16-11-23 14:44:30 homeassistant.components.recorder: Ended unfinished session (id=34 from 2016-11-23 19:41:31.110761)
16-11-23 14:44:30 homeassistant.components.recorder: Found unfinished sessions
16-11-23 14:44:33 homeassistant.components.http: Serving / to 192.168.1.19 (auth: True)
16-11-23 14:44:34 homeassistant.components.http: Serving /api/bootstrap to 192.168.1.19 (auth: True)
16-11-23 14:44:35 homeassistant.components.http: Serving /api/stream to 192.168.1.19 (auth: True)

Can somebody explain what I’m doing wrong? I get this error:

16-11-23 21:17:01 homeassistant.bootstrap: Invalid config for [script]: expected a dictionary for dictionary value @ data[‘script’]. Got [OrderedDict([(‘service’, ‘remote.turn_on’), (‘entity_id’, ‘remote.hburner’), (‘data’, OrderedDict([(‘activity’, ‘22491566’)]))])]. (See /root/.homeassistant/configuration.yaml:762). Please check the docs at https://home-assistant.io/components/script/

My config is:

script:
  - service: remote.turn_on
    entity_id: remote.hburner
    data:
      activity: "22491566"

Tried this config

762 script:
763   service: remote.turn_on
764     entity_id: remote.hburner
765     data:
766       activity: "22491566"

762 script:
763   - service: remote.turn_on
764       entity_id: remote.hburner
765       data:
766         activity: "22491566"

Now I get:
16-11-23 21:29:21 ERROR (Thread-1) [homeassistant.util.yaml] mapping values are not allowed here
in “/root/.homeassistant/configuration.yaml”, line 764, column 16

EDIT: nevermind, I’m dumb. Moved everything to an automation block, selected by an info_select. Works like a charm.

I’ve now had to disable the remote component as I cannot start HASS with it enabled. It just freezes at:

16-11-25 18:37:34 INFO (Thread-5) [homeassistant.components.remote.harmony] Loading Harmony component: Family Room

This is with 0.33.2 as 0.33.3 is completely borked on my system. Havn’t tried 0.33.4 yet but the list of changes doesn’t make me especially hopeful.

it looks like the authenticaton is failing. What version of pyharmony are you running?

what version did you start noticing issues with? I’m running 0.32.4 on my production vm and 0.34.0 on my dev vm

I am using 1.0.11. Working for hubs but not link.
May not be worth your time to support link.

Pyharmony has been updated to 1.0.12, the first step in authenticating to Logitech’s servers is no longer need, this should speed startup time.

My dev branch has the updated code as well as fixes suggested by @balloob, I’d appreciate if you guys could give it a shot and let me know how it goes

What is the easiest way to upgrade the module?

In my environment, I was able to upgrade it using pip3 install --upgrade pyharmony

1 Like

As was I. Worst case scenario, you can download the tar from https://pypi.python.org/pypi/pyharmony/1.0.12 and install it manually.

After I had some issues earlier on with this, I decided to start from scratch again.
I reinstalled the AIO version on my RPi.
Then just copied the remote directory from your git and all was fine.

svn export https://github.com/iandday/home-assistant/trunk/homeassistant/components/remote

cp -TRv ./remote /srv/hass/hass_venv/lib/python3.4/site-packages/homeassistant/components/remote

Thanks a lot

Hi iandday, unfortunately the new 1.0.12 is not working for me.
All is working when I revert to 1.0.11.
I am on windows 10, hass v0.33.4.
Here is the debug log:

16-11-29 22:23:12 homeassistant.loader: Loaded remote.harmony from homeassistant.components.remote.harmony
16-11-29 22:23:12 homeassistant.bootstrap: Setting up remote
16-11-29 22:23:12 homeassistant.components.remote: Setting up remote.harmony
16-11-29 22:23:12 homeassistant.components.remote: Setting up remote.harmony
16-11-29 22:23:12 sleekxmpp.xmlstream.resolver: Could not find dnspython package. Not all features will be available
16-11-29 22:23:12 homeassistant.components.remote.harmony: Loading Harmony platform: Bedroom
16-11-29 22:23:12 homeassistant.components.remote.harmony: Loading Harmony platform: Basement
16-11-29 22:23:12 homeassistant.components.remote.harmony: calling pyharmony.ha_get_token with username: [email protected] and password: password
16-11-29 22:23:12 homeassistant.components.remote.harmony: calling pyharmony.ha_get_token with username: [email protected] and password: password
16-11-29 22:23:12 homeassistant.components.remote.harmony: invalid literal for int() with base 10: 'password' for remote: Bedroom
16-11-29 22:23:12 homeassistant.components.remote.harmony: invalid literal for int() with base 10: 'password' for remote: Basement
16-11-29 22:23:12 homeassistant.core: Bus:Handling <Event service_registered[L]: domain=remote, service=turn_off>
16-11-29 22:23:12 homeassistant.core: Bus:Handling <Event service_registered[L]: domain=remote, service=turn_on>
16-11-29 22:23:12 homeassistant.core: Bus:Handling <Event service_registered[L]: domain=remote, service=send_command>
16-11-29 22:23:12 homeassistant.core: Bus:Handling <Event service_registered[L]: domain=remote, service=sync>
16-11-29 22:23:12 homeassistant.core: Bus:Handling <Event component_loaded[L]: component=remote>

thanks for including the logs, thats very helpful!

version 1.0.12 includes the new local authentication only routine, you no longer need to supply your logitech account information. When you upgrade the pyharmony version youll also need to upgrade the remote directory in my fork.

Once you’ve upgraded both components you can remove the username and password lines from the remote portion of your config yaml file

Ok, I updated the remote component from your fork, deletd my harmony username and password, all is working with 1.0.12!
Thank you for the great component.