From 6f5624b8abe1b6956f01e59f667d11309a5bb099 Mon Sep 17 00:00:00 2001 From: Matthew Thiel Date: Thu, 5 Dec 2024 12:28:32 -0800 Subject: [PATCH] Providing a readme --- .../manifest.json | 189 +++++++++--------- package.json | 3 +- readme.md | 99 +++++++++ 3 files changed, 199 insertions(+), 92 deletions(-) create mode 100644 readme.md diff --git a/com.mthiel.denon-controller.sdPlugin/manifest.json b/com.mthiel.denon-controller.sdPlugin/manifest.json index 149c645..4d043ff 100644 --- a/com.mthiel.denon-controller.sdPlugin/manifest.json +++ b/com.mthiel.denon-controller.sdPlugin/manifest.json @@ -1,92 +1,99 @@ -{ - "Name": "Denon Receiver Network Control", - "Version": "0.7.2.0", - "Author": "Matthew Thiel", - "Actions": [ - { - "Name": "Volume Control", - "UUID": "com.mthiel.denon-controller.volume", - "Icon": "imgs/actions/volume/volume2", - "Tooltip": "Displays the current volume and allows for adjustment.", - "PropertyInspectorPath": "ui/action.html", - "Controllers": [ "Keypad", "Encoder" ], - "DisableAutomaticStates": true, - "Encoder": { - "layout": "$B1", - "TriggerDescription": { - "Push": "Mute/Unmute", - "Rotate": "Adjust Volume", - "Touch": "Mute/Unmute" - } - }, - "States": [ - { - "Name": "Unmute", - "Image": "imgs/actions/volume/volume2" - }, - { - "Name": "Mute", - "Image": "imgs/actions/volume/volumeMute" - } - ] - }, - { - "Name": "Power Control", - "UUID": "com.mthiel.denon-controller.power", - "Icon": "imgs/actions/power/powerOn", - "Tooltip": "Turns the receiver on or off.", - "PropertyInspectorPath": "ui/action.html", - "Controllers": [ "Keypad" ], - "DisableAutomaticStates": true, - "States": [ - { - "Name": "On", - "Image": "imgs/actions/power/powerOn" - }, - { - "Name": "Off", - "Image": "imgs/actions/power/powerOff" - } - ] - }, - { - "Name": "Source Control", - "UUID": "com.mthiel.denon-controller.source", - "Icon": "imgs/actions/source/source", - "Tooltip": "Displays the current source and allows for selection.", - "PropertyInspectorPath": "ui/action.html", - "Controllers": [ "Keypad" ], - "DisableAutomaticStates": true, - "States": [ - { - "Name": "Source", - "Image": "imgs/actions/source/source" - } - ] - } - ], - "Category": "Receiver Control", - "CategoryIcon": "imgs/plugin/category-icon", - "CodePath": "bin/plugin.js", - "Description": "Uses the network interface on many Denon/Marantz receivers to control basic functions. Requires a receiver with HEOS support.", - "Icon": "imgs/plugin/marketplace", - "SDKVersion": 2, - "Software": { - "MinimumVersion": "6.4" - }, - "OS": [ - { - "Platform": "mac", - "MinimumVersion": "10.15" - }, - { - "Platform": "windows", - "MinimumVersion": "10" - } - ], - "Nodejs": { - "Version": "20", - "Debug": "enabled" - }, - "UUID": "com.mthiel.denon-controller" +{ + "Name": "Denon Receiver Network Control", + "Version": "0.7.2.0", + "Author": "Matthew Thiel", + "Actions": [ + { + "Name": "Volume Control", + "UUID": "com.mthiel.denon-controller.volume", + "Icon": "imgs/actions/volume/volume2", + "Tooltip": "Displays the current volume and allows for adjustment.", + "PropertyInspectorPath": "ui/action.html", + "Controllers": [ + "Keypad", + "Encoder" + ], + "DisableAutomaticStates": true, + "Encoder": { + "layout": "$B1", + "TriggerDescription": { + "Push": "Mute/Unmute", + "Rotate": "Adjust Volume", + "Touch": "Mute/Unmute" + } + }, + "States": [ + { + "Name": "Unmute", + "Image": "imgs/actions/volume/volume2" + }, + { + "Name": "Mute", + "Image": "imgs/actions/volume/volumeMute" + } + ] + }, + { + "Name": "Power Control", + "UUID": "com.mthiel.denon-controller.power", + "Icon": "imgs/actions/power/powerOn", + "Tooltip": "Turns the receiver on or off.", + "PropertyInspectorPath": "ui/action.html", + "Controllers": [ + "Keypad" + ], + "DisableAutomaticStates": true, + "States": [ + { + "Name": "On", + "Image": "imgs/actions/power/powerOn" + }, + { + "Name": "Off", + "Image": "imgs/actions/power/powerOff" + } + ] + }, + { + "Name": "Source Control", + "UUID": "com.mthiel.denon-controller.source", + "Icon": "imgs/actions/source/source", + "Tooltip": "Displays the current source and allows for selection.", + "PropertyInspectorPath": "ui/action.html", + "Controllers": [ + "Keypad" + ], + "DisableAutomaticStates": true, + "States": [ + { + "Name": "Source", + "Image": "imgs/actions/source/source" + } + ] + } + ], + "Category": "Receiver Control", + "CategoryIcon": "imgs/plugin/category-icon", + "CodePath": "bin/plugin.js", + "Description": "Uses the network interface on many Denon/Marantz receivers to control basic functions. Requires a receiver with HEOS support.", + "Icon": "imgs/plugin/marketplace", + "SDKVersion": 2, + "Software": { + "MinimumVersion": "6.4" + }, + "OS": [ + { + "Platform": "mac", + "MinimumVersion": "10.15" + }, + { + "Platform": "windows", + "MinimumVersion": "10" + } + ], + "Nodejs": { + "Version": "20", + "Debug": "enabled" + }, + "UUID": "com.mthiel.denon-controller" } \ No newline at end of file diff --git a/package.json b/package.json index c4cc056..a38e02c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,8 @@ { "scripts": { "build": "rollup -c", - "watch": "rollup -c -w --watch.onEnd=\"streamdeck restart com.mthiel.denon-controller\"" + "watch": "rollup -c -w --watch.onEnd=\"streamdeck restart com.mthiel.denon-controller\"", + "pack": "streamdeck pack --no-update-check com.mthiel.denon-controller.sdPlugin" }, "type": "module", "devDependencies": { diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..a717691 --- /dev/null +++ b/readme.md @@ -0,0 +1,99 @@ +# Denon Receiver Network Control for Stream Deck + +A Stream Deck plugin that provides network control of Denon/Marantz receivers with HEOS support. + +## Features + +- **Volume Control**: Display and adjust volume levels, with mute/unmute functionality + - Works with both standard Stream Deck buttons and Stream Deck+ dials + - Shows real-time volume level on dials + - Visual feedback for mute state + +- **Power Control**: Turn your receiver on/off with visual power state feedback + +- **Input Source Selection**: Quick access to switch between input sources + - Supports all standard Denon/Marantz input sources + - ~~Zone 2 can mirror Main Zone source~~ (Coming soon) + +- **Multi-Zone Support**: Control Main Zone and Zone 2 independently + +## Requirements + +- Stream Deck Software 6.4 or later +- macOS 10.15 or later +- Windows 10 or later +- Denon or Marantz receiver with HEOS support +- Receiver must be on the same network as your computer + +## Installation + +### Install from the Elgato Marketplace (Coming soon) +*TBD: Currently only installable by building from source.* + + + +### Download and install locally (Probably coming soon) +*TBD: Currently only installable by building from source.* + + +## Usage + +1. Add any of the receiver control actions to your Stream Deck +2. When first configuring an action: + - The plugin will automatically search for compatible receivers on your network + - Select your receiver from the dropdown list + - Choose the zone you want to control + - Configure action-specific settings + +### Available Actions + +#### Volume Control +- Use as a button to toggle mute or set specific volume levels +- On Stream Deck+: + - Turn dial to adjust volume + - Push/touch to toggle mute + - Shows current volume level on dial display + +#### Power Control +- Toggle power state +- Explicitly set power on or off +- Visual feedback shows current power state + +#### Input Source Control +- Quick selection of input sources +- ~~Option to mirror Main Zone source in Zone 2~~ (Coming soon) + +## Development + +This plugin is built using: +- Node.js 20 +- Stream Deck SDK v2 +- @elgato/streamdeck SDK +- *Process currently only tested on MacOS 15* + +To build from source: + +``` +npm install +npm run build +npm run pack +``` + +For development with auto-reload: + +``` +npm install +npm run watch +``` + +## Troubleshooting + +If your receiver isn't detected: +1. Ensure your receiver has HEOS support and is enabled +2. Verify your receiver is on the same network as your computer +3. Check that no firewall is blocking network discovery +4. Try refreshing the receiver list in the action settings