Harmony Card by @sbryfcz
A custom Home Assistant card to integrate with Harmony Hubs.
Hey there! Hope you are enjoying my work. Help me out for a couple of 🍻 or a ☕!
Name | Type | Requirement | Description | Default |
---|---|---|---|---|
type | string | Required | custom:harmony-card |
|
name | string | Optional | Card name | |
entity | string | Required | Home Assistant entity ID of Harmony | |
volume_entity | string | Optional | Home Assistant entity ID of volume control media_player | |
volume_device | string | Optional | Harmony device name to control volume | |
hide_keyPad | boolean | Optional | Hides the KeyPad | true |
activites | Activity | Required | List of Activities (see below) | |
show_activities_icons | boolean | Optional | Show activity buttons as icons | false |
hide_activities | boolean | Optional | Hide activities | false |
scale | number | Optional | A multiplier to scale the icons by | 1 |
buttons | Button Dictionary | Optional | A dictionary/object of button config to override defaults | |
tap_action | object | Optional | Action to take on tap | action: more-info |
hold_action | object | Optional | Action to take on hold | none |
double_tap_action | object | Optional | Action to take on hold | none |
show_error | boolean | Optional | Show what an error looks like for the card | false |
show_warning | boolean | Optional | Show what a warning looks like for the card | false |
Name | Type | Requirement | Description | Default |
---|---|---|---|---|
name | string | Required | The name of the harmony activity as named in the harmony config | |
device | string | Required | The name of the harmony device as named in the harmony config to use for sending commands | |
icon | string | Optional | The icon to display for the button (ex. mdi: + http://materialdesignicons.com/) |
|
volume_entity | string | Optional | Home Assistant entity ID of volume control media_player | |
volume_device | string | Optional | Harmony device name to control volume | |
hide_keyPad | boolean | Optional | Hides the KeyPad | true |
buttons | Button Dictionary | Optional | A dictionary/object of button config to override defaults |
Name | Type | Requirement | Description | Default |
---|---|---|---|---|
action | string | Required | Action to perform (more-info, toggle, call-service, navigate url, none) | more-info |
navigation_path | string | Optional | Path to navigate to (e.g. /lovelace/0/) when action defined as navigate | none |
url | string | Optional | URL to open on click when action is url. The URL will open in a new tab | none |
service | string | Optional | Service to call (e.g. media_player.media_play_pause) when action defined as call-service | none |
service_data | object | Optional | Service data to include (e.g. entity_id: media_player.bedroom) when action defined as call-service | none |
haptic | string | Optional | Haptic feedback for the Beta IOS App success, warning, failure, light, medium, heavy, selection | none |
repeat | number | Optional | How often to repeat the hold_action in milliseconds. |
non |
These options let you override the default icon, commands, devices, and visibility.
Name | Type | Requirement | Description | Default |
---|---|---|---|---|
command | string | Optional | The device command to use | See below |
device | string | Optional | The harmony device name to send the command to | See below |
icon | string | Optional | The icon to display for the button (ex. mdi: + http://materialdesignicons.com/) |
See below |
hide | string | Optional | Should this button be hidden | false |
color | string | Optional | A css string to represent the color ex. '#ff0000' |
Buttons Available to Configure with Defaults:
0:
command: '0',
icon: 'mdi:numeric-0-circle',
hide: false
1:
command: '1',
icon: 'mdi:numeric-1-circle',
hide: false
2:
command: '2',
icon: 'mdi:numeric-2-circle',
hide: false
3:
command: '3',
icon: 'mdi:numeric-3-circle',
hide: false
4:
command: '4',
icon: 'mdi:numeric-4-circle',
hide: false
5:
command: '5',
icon: 'mdi:numeric-5-circle',
hide: false
6:
command: '6',
icon: 'mdi:numeric-6-circle',
hide: false
7:
command: '7',
icon: 'mdi:numeric-7-circle',
hide: false
8:
command: '8',
icon: 'mdi:numeric-8-circle',
hide: false
9:
command: '9',
icon: 'mdi:numeric-9-circle',
hide: false
volume_down:
command: 'VolumeDown',
icon: 'mdi:volume-medium',
hide: false
volume_up:
command: 'VolumeUp',
icon: 'mdi:volume-high',
hide: false
volume_mute:
command: 'Mute',
icon: 'mdi:volume-off',
hide: false
skip_back:
command: 'SkipBack',
icon: 'mdi:skip-previous',
hide: false
play:
command: 'Play',
icon: 'mdi:play',
hide: false
pause:
command: 'Pause',
icon: 'mdi:pause',
hide: false
skip_forward:
command: 'SkipForward',
icon: 'mdi:skip-next',
hide: false
dpad_up:
command: 'DirectionUp',
icon: 'mdi:chevron-up-circle',
hide: false
dpad_down:
command: 'DirectionDown',
icon: 'mdi:chevron-down-circle',
hide: false
dpad_left:
command: 'DirectionLeft',
icon: 'mdi:chevron-left-circle',
hide: false
dpad_right:
command: 'DirectionRight',
icon: 'mdi:chevron-right-circle',
hide: false
dpad_center:
command: 'OK',
icon: 'mdi:checkbox-blank-circle',
hide: false
xbox:
command: 'Xbox',
icon: 'mdi:xbox',
hide: false
back:
command: 'Back',
icon: 'mdi:undo-variant',
hide: false
a:
command: 'A',
icon: 'mdi:alpha-a-circle',
hide: false
color: '#2d9f1c'
b:
command: 'B',
icon: 'mdi:alpha-b-circle',
hide: false
color: '#e43308'
x:
command: 'X',
icon: 'mdi:alpha-x-circle',
hide: false
color: '#003bbd'
y:
command: 'Y',
icon: 'mdi:alpha-y-circle',
hide: false
color: '#f1c70f'
In general the configuration for the card will be determined from more specific configuration to less specific configuration. By this, I mean that if there is both global card configuration and activity configuration, this plugin will use the activity level configuration.
Ex.
- type: 'custom:harmony-card'
entity: remote.living_room_hub
volume_entity: media_player.living_room
activities:
- name: Play Xbox One
device: Microsoft Xbox One
volume_entity: media_player.alexa
- name: Listen to Music
device: Onkyo AV Receiver
In this case, the card will issue commands via media_player.alexa
if the current activity is 'Play Xbox One'. Otherwise, it will use media_player.living_room
.
Furthermore, volume controls try to use specified media players (if configured) since those offer most robust functionality (ie. the volume slider). So the order of precedence for volume controls are:
- Activity Level volume_entity
- Activity Level volume_device
- Card Level volume_entity
- Card Level volume_device
Devices to be used for buttons follow the following order of precedence:
- Activity-button level device
- Card-button level device
- Activity level device
- Card level device
resources:
- type: module
url: '/community_plugin/harmony-card/harmony-card.js'
- type: 'custom:harmony-card'
entity: remote.living_room_hub
volume_entity: media_player.living_room
scale: 1.25
activities:
- name: Play Xbox One
device: Microsoft Xbox One
- name: Listen to Music
device: Onkyo AV Receiver
- type: 'custom:harmony-card'
entity: remote.living_room_hub
volume_entity: media_player.living_room
scale: 1.25
activities:
- name: Play Xbox One
device: Microsoft Xbox One
- name: Listen to Music
device: Onkyo AV Receiver
buttons:
a:
icon: 'mdi:chevron-up'
device: Onkyo AV Receiver
command: VolumeUp
b:
icon: 'mdi:chevron-down'
device: Onkyo AV Receiver
command: VolumeDown
Clone this repository
Install necessary modules (verified to work in node 8.x)
yarn install
or npm install
Do a test lint & build on the project. You can see available scripts in the package.json
npm run build
Run in a server using npm run start
. This will host the resource locally. Add the resource to your resources in your configuration. Example:
resources:
- type: module
url: 'http://0.0.0.0:5000/harmony-card.js'