A convenient way to control your home through homekit utilizing one or many Logitech Harmony remotes
Go to file
Brandon Watson 2b13f78a0d
All checks were successful
continuous-integration/drone/push Build is passing
WIP
2021-06-02 21:05:29 -04:00
.vscode Update to use homebridge types 2020-12-11 21:59:29 -05:00
src Update to use homebridge types 2020-12-11 21:59:29 -05:00
.bash_profile Compiles and runs. Devices appearing in home kit. 2019-06-14 23:41:13 -04:00
.drone.yml WIP 2021-06-02 21:05:29 -04:00
.gitignore Initial commit with typescript 2019-06-11 13:32:22 -04:00
deploy.sh Update to use homebridge types 2020-12-11 21:59:29 -05:00
harmony.code-workspace Initial commit with typescript 2019-06-11 13:32:22 -04:00
package-lock.json Adding publish step 2021-06-02 20:54:21 -04:00
package.json Adding publish step 2021-06-02 20:54:21 -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