diff --git a/README.md b/README.md new file mode 100644 index 0000000..cbbe65e --- /dev/null +++ b/README.md @@ -0,0 +1,178 @@ +# 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