pyharmony
=======

Python library for programmatically using a Logitech Harmony Link or Ultimate Hub.

A fork of [bkanuka/pyharmony](https://github.com/bkanuka/pyharmony) with the intent to:
- Make pip/setup.py installable.
- Unify improvments made in other forks.
- Configurable for Harmony Link/Hub differences.
- Better practices for project layout.
- Better error handling!
- Inclusion into Home Assistant (https://home-assistant.io)

Protocol
--------

As the harmony protocol is being worked out, notes are in PROTOCOL.md.

Status
------

* Authentication to Logitech's web service working.
* Authentication to harmony device working.
* Querying for entire device information
* Querying for activity information only
* Querying for current activity
* Starting Activity
* Sending Command

Usage
-----

Pyharmony - Harmony device control

positional arguments:
  {show_config,show_current_activity,start_activity,power_off,sync,send_command}
    show_config         Print the Harmony device configuration.
    show_current_activity
                        Print the current activity config.
    start_activity      Switch to a different activity.
    power_off           Stop the activity.
    sync                Sync the harmony.
    send_command        Send a simple command.

optional arguments:
  -h, --help            show this help message and exit
  --harmony_port HARMONY_PORT
                        Network port that the Harmony is listening on.
                        (default: 5222)
  --loglevel {DEBUG,INFO,WARNING,CRITICAL,ERROR}
                        Logging level to print to the console. (default: INFO)

required arguments:
  --email EMAIL         Logitech username in the form of an email address.
                        (default: None)
  --password PASSWORD   Logitech password. (default: None)
  --harmony_ip HARMONY_IP
                        IP Address of the Harmony device. (default: None)


TODO
----

* Figure out how to detect when the session token expires so we can get a new
  one.
* Figure out a good way of sending commands based on sync state.
* Is it possible to update device configuration?
