A convenient way to control your home through homekit utilizing one or many Logitech Harmony remotes
Go to file
Brandon Watson 845071c274
All checks were successful
continuous-integration/drone/push Build is passing
Squashed commit of the following:
commit 93132ab868
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Mon Jun 7 20:40:00 2021 -0400

    excluding publishing on PRs

commit 496dd42cfd
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Mon Jun 7 20:38:37 2021 -0400

    Only publishing master branch

commit 57e82789fb
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Mon Jun 7 20:36:16 2021 -0400

    WIP

commit ecc54ad3c3
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Mon Jun 7 20:35:29 2021 -0400

    WIP

commit 6d3cd651be
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Mon Jun 7 20:30:18 2021 -0400

    Attempting to use drone commit in preid

commit c60387a987
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Mon Jun 7 20:16:46 2021 -0400

    Adding sequence file

commit d8a5e7541d
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Mon Jun 7 20:16:11 2021 -0400

    Prettier

commit 34fcc1df1a
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Mon Jun 7 20:14:33 2021 -0400

    Updating pre-release command

commit 6c8ce21164
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Mon Jun 7 20:03:41 2021 -0400

    Updating drone config

commit b6d9317a1e
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Wed Jun 2 21:58:35 2021 -0400

    Revert "Using email alias"

    This reverts commit d1a3b80293.

commit d1a3b80293
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Wed Jun 2 21:57:22 2021 -0400

    Using email alias

commit 027d1711ad
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Wed Jun 2 21:36:07 2021 -0400

    Removing bash_profile

commit ed06d7ecd0
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Wed Jun 2 21:23:46 2021 -0400

    WIP

commit d3c37b18b9
Author: Brandon Watson <watsonb8133@gmail.com>
Date:   Wed Jun 2 21:22:35 2021 -0400

    Updating registry path
2021-06-07 20:46:30 -04:00
.vscode Update to use homebridge types 2020-12-11 21:59:29 -05:00
src Squashed commit of the following: 2021-06-07 20:46:30 -04:00
.drone.yml Squashed commit of the following: 2021-06-07 20:46:30 -04:00
.gitignore Initial commit with typescript 2019-06-11 13:32:22 -04:00
harmony.code-workspace Squashed commit of the following: 2021-06-07 20:46:30 -04:00
package-lock.json Adding publish step 2021-06-02 20:54:21 -04:00
package.json feature/drone (#4) 2021-06-02 21:59:52 -04:00
README.md Adding README 2020-12-20 12:07:02 -05:00
tsconfig.json Update to use homebridge types 2020-12-11 21:59:29 -05:00
tslint.json Compiles and runs. Devices appearing in home kit. 2019-06-14 23:41:13 -04:00

homebridge-harmony-control

A convenient way to control your home through homekit utilizing one or many Logitech Harmony remotes.

Description

This plugin not only allows for control of your one or many entertainment consoles, but it also supports use of a more complicated matrix switch if applicable. In addition, this plugin can expose any entertainment devices directly to homekit via stateless or stateful switch.

Installation

  1. Clone the repository by running git clone ssh://git@thebword.ddns.net:3122/watsonb8/homebridge-harmony-control.git
  2. Run npm install to install required modules
  3. Run npm run build to build the module
  4. Run npm link or install globally to link this instance to your global homebridge instance

Configuration

{
      "platform": "HarmonyHubMatrix",
      "EmitDevicesOnStartup": false,
      "Hubs": [
        {
          "Name": "LivingRoomHub",
          "Ip": "exampleOne.com"
        },
        {
          "Name": "RackHub",
          "Ip": "exampleTwo.com"
        }
      ],
      "Devices": [
        {
          "Name": "LG TV",
          "Hub": "LivingRoomHub"
        },
        {
          "Name": "JVC AV Receiver",
          "Hub": "LivingRoomHub"
        },
        {
          "Name": "Microsoft Xbox One",
          "Hub": "RackHub"
        },
        {
          "Name": "Apple TV Gen 4",
          "Hub": "RackHub"
        },
        {
          "Name": "Gefen AV Switch",
          "Hub": "RackHub"
        }
      ],
      "Matrix": {
        "DeviceName": "Gefen AV Switch",
        "Inputs": [
          {
            "InputNumber": "1",
            "InputDevice": "Microsoft Xbox One"
          },
          {
            "InputNumber": "5",
            "InputDevice": "Apple TV Gen 4"
          },
        ],
        "Outputs": [
          {
            "OutputLetter": "B",
            "OutputDevice": "LG TV"
          },
        ]
      },
      "ControlUnits": [
        {
          "DisplayName": "Living Room",
          "Activities": [
            {
              "DisplayName": "Xbox One",
              "DeviceSetupList": [
                {
                  "DeviceName": "Microsoft Xbox One",
                  "Input": []
                },
                {
                  "DeviceName": "LG TV",
                  "Input": "Hdmi1"
                },
                {
                  "DeviceName": "JVC AV Receiver",
                  "Input": "Dvd"
                }
              ],
              "VolumeDevice": "JVC AV Receiver",
              "ControlDevice": "Microsoft Xbox One",
              "OutputDevice": "LG TV",
              "UseMatrix": true
            },
            {
              "DisplayName": "Apple TV",
              "DeviceSetupList": [
                {
                  "DeviceName": "Apple TV Gen 4",
                  "Input": []
                },
                {
                  "DeviceName": "LG TV",
                  "Input": "Hdmi1"
                },
                {
                  "DeviceName": "JVC AV Receiver",
                  "Input": "Dvd"
                }
              ],
              "VolumeDevice": "JVC AV Receiver",
              "ControlDevice": "Apple TV Gen 4",
              "OutputDevice": "LG TV",
              "UseMatrix": true
            },
          ]
        },
      ],
      "DeviceButtons": [
        {
          "DeviceName": "JVC AV Receiver",
          "ButtonName": "SurroundToggle",
          "DisplayName": "Surround Toggle",
          "IsStateful": true
        },
      ]
    }

Platform

  • EmitDevicesOnStartup: If true, each device frome each hub will be written to the console on startup

  • Hubs: A list of harmony hub configurations

  • Devices: A list of devices to be used and corresponding hubs

  • Matrix: An optional configuration for an hdmi matrix

  • ControlUnits: Configures one logical control unit. This is usually a single TV in a single room.

Devices

  • Name: The name of the device to use from an existing harmony hub configuration

Note: Use EmitDevicesOnStartup if you are unsure of which devices are available.

  • Hub: The name of the hub to look the device on

Matrix

  • DeviceName: The name of the matrix device as seen in the harmony configuration

Note: This device must appear in the device list

  • Inputs: A list of input devices and their corresponding input number as it relates to the matrix switch

  • Outputs: A list of output devices and their corresponding output letter as it relates to the matrix switch

ControlUnits

This is the logical display unit. It will appear as a tv accessory in the home app.

  • DisplayName: The name of the control unit

  • Activities: A list of activity configurations. These will be the inputs associated with the tv accessory

  • DeviceSetupList: A list of devices associated with an activity and their corresponding input setting

  • VolumeDevice: The device that should be used to control the volume of the activity. This is usually a stereo or a tv

  • ControlDevice: The device that is used to control UI navigation

  • OutputDevice: The device that is used to display the content. This is usually a TV

  • UseMatrix: If true, corresponding commands will be issued to the matrix device to route input to output