/homebridge-denon-tv

Homebridge plugin for Denon/Marantz AV Receivers, publish as independent external platform accessory.

Primary LanguageJavaScriptMIT LicenseMIT

Homebridge Denon TV

verified-by-homebridge npm npm npm GitHub pull requests GitHub issues

Homebridge plugin for Denon/Marantz AV Receivers series X/SR. Tested Denon AVR-2112CI, AVR-3311CI, AVR-X6300H, AVR-X2700H, AVC-X4800H, Marantz SR8012, SR6013, M-CR611, PM7000N.

Package Requirements

Package Installation Role Required
Homebridge Homebridge Wiki HomeKit Bridge Required
Config UI X Config UI X Wiki Homebridge Web User Interface Recommended
Denon TV Plug-In Wiki Homebridge Plug-In Required

About The Plugin

  • Multi Zone control.
  • Power ON/OFF short press tile in HomeKit app.
  • RC/Media control is possible after you go to the RC app on iPhone/iPad.
  • Speaker control is possible after you go to RC app on iPhone/iPad Speaker Service.
  • Legacy Volume and Mute control is possible throught extra lightbulb/fan (slider).
  • Inputs/Surrounds can be changed using Inputs selector in the Home app or using extra tile.
  • Digital Input Modes can be controlled by creating separate tile in the buttons section.
  • Siri can be used for all functions, some times need create legacy buttons/switches/sensors.
  • Automations can be used for all functions, some times need create legacy buttons/switches/sensors.
  • This plugin is based upon the official documentation: Denon Control Protocol 2020
  • Support external integrations, RESTFul, MQTT.

Configuration

Key Description
name Here set the accessory Name to be displayed in Homebridge/HomeKit.
host Here set the Hostname or Address IP of AVR.
port Here set the API communication port, if 8080 is not working try to use port 80 which some receivers use alternatively.
zoneControl Here choose which zone will be controlled by this section 0 - Main Zone, 1 - Zone 2, 2 - Zone 3, 3 - Surround Mode.
generation Here choose generation of Your device, old 0 - 2010 - 2012, middle 1 - 2013 - 2022, new 2 - 2023 and newer.
getInputsFromDevice If enabled, Inputs will be loaded direct from device.
getFavoritesFromDevice If enabled, Favorites will be loaded to the inputs list if exist.
getQuickSmartSelectFromDevice If enabled, Quick/Smart Select will be loaded to the inputs list if exist.
inputsDisplayOrder Here choose display order of the inputs list, 0 - None, 1 - Ascending by Name, 2 - Descending by Name, 3 - Ascending by Reference, 4 - Ascending by Reference.
inputs Here create Inputs which You want expose to the Homebridge/HomeKit.
inputs.name Here set Input Name.
inputs.reference Choose from available inputs, the inputs that should be published to and appear in HomeKit app in the device tile as inputs list.
surrounds Here create Surrounds which You want expose to the Homebridge/HomeKit.
surrounds.name Here set Surround Mode Name.
surrounds.reference Here choose Surround Mode, the mode that should be published to and appear in HomeKit app in the extra tile as Surrounds List.
buttons Here create Buttons which You want expose to the Homebridge/HomeKit for Main Zone.
buttons.name Here set Button Name.
buttons.reference Here choose Function for this button.
buttons.displayType Here choose characteristic type to be exposed in HomeKit app, possible 0 - None/Disabled, 1 - Outlet, 2 - Switch.
buttons.namePrefix Here enable/disable the accessory name as a prefix for button name.
buttonsZ2 Here create Buttons which You want expose to the Homebridge/HomeKit for Zone 2.
buttonsZ2.name Here set Button Name.
buttonsZ2.reference Here choose function for this button.
buttonsZ2.displayType Here choose characteristic type to be exposed in HomeKit app, possible 0 - None/Disabled, 1 - Outlet, 2 - Switch.
buttonsZ2.namePrefix Here enable/disable the accessory name as a prefix for button name.
buttonsZ3 Here create Buttons which You want expose to the Homebridge/HomeKit for Zone 3.
buttonsZ3.name Here set Button Name.
buttonsZ3.reference Here choose function for this button.
buttonsZ3.displayType Here choose characteristic type to be exposed in HomeKit app, possible 0 - None/Disabled, 1 - Outlet, 2 - Switch.
buttonsZ3.namePrefix Here enable/disable the accessory name as a prefix for button name.
sensorPower If enabled, then the Power will be exposed as a Contact Sensor, fired if power ON.
sensorVolume If enabled, then the Volume will be exposed as a Contact Sensor, fired on every Volume change.
sensorMute If enabled, then the Mute will be exposed as a Contact Sensor, fired if Mmute ON.
sensorInput If enabled, then the Input will be exposed as a Contact Sensor, fired on every Input change.
sensorInputs Here create custom Inputs Sensor which You want expose to the Homebridge/HomeKit.
sensorInputs.name Here set own Sensor Name.
sensorInputs.reference Here choose Input Reference, sensor fired if switch to this reference.
sensorInputs.displayType Here choose characteristic type to be exposed in HomeKit app, 0 - None/Disabled, 1 - Motion Sensor, 2 - Occupancy Sensor, 3 - Contact Sensor.
sensorInputs.namePrefix Here enable/disable the accessory name as a prefix for sensor name.
sensorSurrounds Here create custom Surrounds Sensor which You want expose to the Homebridge/HomeKit.
sensorSurrounds.name Here set own Sensor Name.
sensorSurrounds.reference Here choose Sensor Reference, sensor fired if switch to this reference.
sensorSurrounds.displayType Here choose characteristic type to be exposed in HomeKit app, 0 - None/Disabled, 1 - Motion Sensor, 2 - Occupancy Sensor, 3 - Contact Sensor.
sensorSurrounds.namePrefix Here enable/disable the accessory name as a prefix for sensor name.
masterPower If enabled, then the Power switch for that zone will turn the entire receiver ON or OFF/STANDBY rather than just the zone itself.
masterVolume If enabled, then the Volume for that zone will set the entire receiver UP or DOWN rather than just the zone itself, (only for the Zone 1 and 2).
masterMute If enabled, then the Mute switch for that zone will muted the entire receiver ON or OFF rather than just the zone itself, (only for the Zone 1 and 2).
volumeControlNamePrefix Here enable/disable the accessory name as a prefix for volume control name.
volumeControlName Here set Your own volume control name or leave empty.
volumeControl Here choose what a additional volume control mode You want to use, 0 - None/Disabled, 1 - Lightbulb, 2 - Fan.
volumeMax Here set the maximum possible volume to set, 0 - 100.
infoButtonCommand Here choose the function for I button in RC app.
refreshInterval Here set the data refresh interval.
enableDebugMode If enabled, deep log will be present in homebridge console.
disableLogInfo If enabled, disable log info, all values and state will not be displayed in Homebridge log console.
disableLogDeviceInfo If enabled, add ability to disable log device info by every connections device to the network.
disableLogConnectError If enabled, disable logging device connect error.
enableRestFul If enabled, RESTful server will start automatically and respond to any path request.
restFul This is RSTful server.
enable If enabled, RESTful server will start automatically and respond to any path request.
port Here set the listening Port for RESTful server.
debug If enabled, deep log will be present in homebridge console for RESTFul server.
mqtt This is MQTT Broker.
enable If enabled, MQTT Broker will start automatically and publish all awailable PV data.
host Here set the IP Address or Hostname for MQTT Broker.
port Here set the Port for MQTT Broker, default 1883.
clientId Here optional set the Client Id of MQTT Broker.
prefix Here set the Prefix for Topic or leave empty.
auth If enabled, MQTT Broker will use authorization credentials.
user Here set the MQTT Broker user.
passwd Here set the MQTT Broker password.
debug If enabled, deep log will be present in homebridge console for MQTT.
AV Surround Mode This extra Accessory will control all functions of Main Zone except Inputs and Buttons.

RESTFul Integration

  • POST data as a JSON Object {Power: true}
Method URL Path Response Type
GET http//ip:port/ info, state, picture, surround {"Power": {"value": OFF}} JSON object.
Method URL Key Value Type Description
POST http//ip:port Power true, false boolean Power On/Off.
http//ip:port Input SAT/CBL string Set input.
http//ip:port Surround MUSIC string Set surround mode.
http//ip:port RcControl NS9E string Send RC command.
http//ip:port Volume 100 integer Set volume.
http//ip:port Mute true, false string Set mute On/Off.

MQTT Integration

  • Subscribe data as a JSON Object {Power: true}
Method Topic Message Type
Publish Info, State, Picture, Surround {"Power": {"value": OFF}} JSON object.
Method Topic Key Value Type Description
Subscribe Set Power true, false boolean Power state.
Set Input SAT/CBL string Set input.
Set Surround MUSIC string Set surround mode.
Set RcControl NS9E string Send RC command.
Set Volume 100 integer Set volume.
Set Mute true, false boolean Set mute.