PRProd / HA-Firemote

Apple TV, Amazon Fire TV, Chromecast, Homatics, NVIDIA Shield, onn., Roku, Xiaomi Mi, and Android TV remote control card for Home Assistant
GNU General Public License v3.0
534 stars 72 forks source link
amazon-fire amazon-fire-tv android android-debug-bridge android-tv apple-tv chromecast google-tv homatics home-assistant home-automation nvidia nvidia-shield onn remote-control roku roku-tv shield xiaomi xiaomi-mi

HA-Firemote

hacs_badge GitHub release (latest by date) Maintenance

Buy Me A Coffee

Need More Information? Check out this project's Wiki page

JVC 4K Fire TV Remote Fire TV Remote Style 6 Fire TV Remote Style 5 Fire TV Remote Style 4 Fire TV Remote Style 3 Fire TV Remote Style 2 Fire TV Remote Style 1
Apple TV Remote Style 3 Apple TV Remote Style 2 Apple TV Remote Style 1 NVIDIA Shield Remote 2 NVIDIA Shield Remote 1
Chromecast Remote Xiaomi Mi Remote 2 onn 2 onn
Homatics Remote HO1 Homatics Remote HO2 Homatics Remote HO3 Homatics Remote HO4
Roku Voice Remote Pro Roku Voice Remote Roku Simple Remote Hisense Roku TV Remote TCL Roku TV Remote Westinghouse Roku TV Remote
App Launcher 1 App Launcher 2



Introduction

Firemote is a custom Home Assistant card that is capable of controlling your media devices directly from any Home Assistant dashboard. The Firemote dashboard remotes are designed to look just like your physical remote controls, but they also contain TONS of customization options to choose from!

For a visual introduction, YouTube's @BeardedTinker created a fantastic video about this card!
https://www.youtube.com/watch?v=hbEHaspKvWs - Be sure to give him a sub and a like if you enjoy it!

A full video demonstration of setup and use featuring a Homatics device can be found here

Short demonstration videos also exist for Roku Firemote and Chromecast Firemote



Prerequisites



Download and Setup via Home Assistant UI & HACS

  1. Turn on ADB/USB/Network debugging on your Amazon, onn., Shield, Xiaomi, Chromecast, or Android TV device - Video Tutorial
    • For NVIDIA Shield users, be sure to turn on Network debugging (not shown in the video)
    • (does not apply to Apple TV or Roku users)
  2. Connect your device to Home Assistant:
    • Amazon, Chromecast, Shield, onn., Xiaomi, or Android TV users:
    • Apple TV Users
      • Set up the Home Assistant Apple TV Integration and connect it to your device. This will create a "Media Player" entity, and a "Remote" entity automatically.
    • Roku Users
      • Set up the Home Assistant Roku Integration and connect it to your device. This will create a "Media Player" entity, a "Remote" entity, and multiple others as well.
  3. Click on the HACS sidebar option, then type "Firemote Card" into the search bar
  4. Use the 3 dots on the right side of the search result to select Download or click on the search result then tap the DOWNLOAD button in the lower right.
  5. You will be prompted to reload your browser. Click the RELOAD button to continue

OR Install Manually

  1. Turn on ADB/USB/Network debugging on your Amazon, Homatics, onn., Shield, Xiaomi, Chromecast, or Android TV device - Video Tutorial
    • For NVIDIA Shield users, be sure to turn on Network debugging (not shown in the video)
    • (does not apply to Apple TV or Roku users)
  2. Connect your device to Home Assistant:
    • Amazon, Chromecast, Homatics, Shield, onn., Xiaomi, or Android TV users:
    • Apple TV Users
      • Set up the Home Assistant Apple TV Integration and connect it to your device. This will create a "Media Player" entity, and a "Remote" entity automatically.
    • Roku Users
      • Set up the Home Assistant Roku Integration and connect it to your device. This will create a "Media Player" entity, a "Remote" entity, and multiple others as well.
  3. Download the contents of the dist/ directory, and place it in your Home Assistant /config/www directory
  4. Register the HA-Firemote.js file that you just installed as a new resource



How to use

  1. On any dashboard, click the +ADD CARD button
  2. Search by cards for "Firemote Card" and click on it - help: It's not showing up
  3. Under the Device Family dropdown, choose "Amazon Fire", "Apple TV", "Chromecast", "Homatics", "NVIDIA Shield", "onn.", "Roku", "Xiaomi", or "none/other"
    • Amazon, Chromecast, Shield, onn., Xiaomi, or Android TV users:
      • Under Device Model, select the device model that you own. (Help: Which Amazon Fire or NVIDIA Shield device do I own?)
      • Under the Android Debug Bridge Entity dropdown, a list of your Android Debug Bridge integration entities will appear. Select the one you wish to control.
      • If you are setting up something other than an Amazon Fire device, select the Associated Android TV Remote Entity that points to the same device as your Android Debug Bridge entity. This step is not required, but it will greatly improve the speed and reliability of your Firemote card
    • Apple TV Users
      • Under Apple TV Device Model, select the device model that you own
      • Under Apple TV Media Player Entity, select the Apple TV Media Player entity you wish to control
      • Under Apple TV Remote Entity, select the Apple TV remote entity that is associated with the Apple TV Media Player Entity you chose in the previous step
    • Roku Users
      • Under Roku Device Model, select the device model that you own
      • Under Roku Media Player Entity, select the Roku Media Player entity you wish to control
      • Under Associated Roku Remote Entity, select the Roku remote entity that is associated with the Roku Media Player Entity you chose in the previous step
  4. Make any other optional changes to your card, then click "SAVE" Other options include changing the app launch buttons to apps that you use most often, or changing the style of your remote control to look like something completely different from what shipped with your device. You can even add names and adjust the size of your Firemote card too!

Config




Screenshots from Users

Dashboard
Click here to see the full gallery




YAML card setup options

Examples:

type: custom:firemote-card
entity: media_player.fire_tv_192_168_1_30
device_family: amazon-fire
device_type: fire_tv_4_series
compatibility_mode: default
app_launch_1: prime-video
app_launch_2: netflix
app_launch_3: hdmi_1
app_launch_4: youtube
hdmi_1: Cable
scale: 85
type: custom:firemote-card
entity: media_player.apple_tv_4k_2nd_gen
device_family: apple-tv
device_type: appletv-4k-gen2
compatibility_mode: default
apple_tv_remote_entity: remote.apple_tv_4k_2nd_gen
app_launch_1: apple-appstore
app_launch_2: apple-tv-arcade
app_launch_3: mlb
app_launch_4: nfl
visible_name_text: Game Room
name_position: top
button_overrides:
  mute-button:
    script: receiver_mute_script
type: custom:firemote-card
entity: media_player.android_tv_192_168_107_209
device_family: nvidia-shield
device_type: shield-tv-pro-2019
compatibility_mode: default
android_tv_remote_entity: remote.shield
scale: '100'
app_launch_1: netflix
app_launch_2: function-find-my-remote
app_launch_3: function-mute
Options: Name Type Required Options Description
type string yes custom:firemote-card Type of the card
entity string yes any valid media player entity created in the Android Debug Bridge Integration, Apple TV Integration or the Roku Integration or none entity_id
device_family string yes amazon-fire
apple-tv
chromecast
nvidia-shield
onn
roku
xiaomi
none
Manufacturer Family
android_tv_remote_entity string no any valid entity created in the Android TV Remote Integration entity_id
Ignored in Apple TV and Roku configurations
apple_tv_remote_entity string yes* any valid remote entity created in the Apple TV Integration entity_id
* Required ONLY in Apple TV configurations
device_type string yes appletv-4k-gen3
appletv-4k-gen2
appletv-4k-gen1
appletv-gen4
appletv-gen3
appletv-gen2
appletv-gen1
chromecast-4k
fire_tv_toshiba_v35
fire_tv_4_series
fire_tv_jvc-4k-2021
fire_tv_insignia_f20
fire_tv_cube_third_gen
fire_tv_cube_second_gen
fire_tv_cube_first_gen
fire_tv_stick_4k_max_second_gen
fire_tv_stick_4k_second_gen
fire_tv_stick_4k_max
fire_tv_3rd_gen
fire_tv_stick_lite
fire_stick_4k
fire_stick_second_gen
fire_stick_first_gen
fire_tv_second_gen_2015
box-4-4k-plus
dune-hd-box-4-4k-plus
onn-streaming-device-4k-pro
onn-4k-streaming-box
onn-full-hd-streaming-stick
roku-streambar-pro
roku-streambar
roku-ultra-lt-2023
roku-ultra-lt
roku-ultra-2020
roku-streaming-stick-4k
roku-express-4k-plus
roku-express-4k
roku-express
roku-premiere
roku-generic-hisense
roku-generic-tcl
roku-generic-westinghouse
shield-tv-2017
shield-tv-pro-2017
shield-tv-2019
shield-tv-pro-2019
mi-box-s
xiaomi-tv-stick-4k
other
The type of device you are controlling
Which devices are supported?
compatibility_mode string no default
strong
event0
event1
event2
event3
event4
event5
event6
event7
event8
event9
event10
event11
event12
event13
Adjust this value only if your buttons are completely unresponsive

Ignored in Apple TV configurations

FAQ Available for additional help
defaultRemoteStyle_override string no AF1
AF2
AF3
AF4
AF5
AF6
AFJTV
AFXF2
AR1
AR2
AR3
CC1
CC2
CC3
HO1
HO2
HO3
HO4
NS1
NS2
ON1
ON2
RVRP
RVR
RSR
RHR
RTR
RWR
XM1
XM2
AL1
AL2
Optionally select a style of remote different from the one that shipped with your device
app_launch_1
app_launch_2
app_launch_3
app_launch_4
app_launch_5
etc...
string no See App Launch Button Customization section for options Quick launch apps customization
hdmi_1
hdmi_2
hdmi_3
hdmi_4
string no Personalized name for this HDMI input The name entered here will appear on the button (truncated to 8 characters to fit)
scale integer no Any positive number Change the size of this card by percentage. The default size is 100
custom_launchers object no Create your own app launcher buttons Details are in the Launcher Button Customizations of the README.md file
button_overrides object no Button name and HA script name are required. Details are in the Button Overrides section of the README.md file
visible_name_text string no Any text Optional device label for your firemote
name_position string no hidden
bottom
top
Position for your optional device label
visible_name_text_color hex color value no Any hex color value e.g.: #ffffff Optional text color for the device name label
show_version_number bool no true
false
Optionally display the Firemote Version number on the card
hide_button_highlights bool no true
false
Optionally hide the status higlighting decorations for the power, home, and play/pause buttons
use_theme_background bool no true
false
Optionally hide the AL1 or AL2 remote style's background color to let the HA theme color show
hide_button_group_frame bool no true
false
Optionally hide the frames around the button groups when using AL1 or AL2
useCustomSkin bool no true
false
Toggle a custom background skin color on or off when using AL1 or AL2
show_media_controls bool no true
false
Show additional media control buttons for Chromecast style remotes CC1, CC2, or CC3
skin hex color value no Any hex color value e.g.: #ffffff background skin color for AL1 or AL2
dpad_style string no amazon-fire
apple-tv-black
apple-tv-silver
chromecast
xiaomi
minimal
Dpad style options for AL1 or AL2




App Launcher Buttons

Custom app launch buttons are not limited to the few that came printed on your remote control. In fact, the possibilities are endless! If you don't see your favorite app on this list, you can click on the Issues button on the top of this page, and select the App Shortcut Request option. There are currently over 330 options available, and the list just keeps growing.




Launcher Button Customizations

You are not limited to only using the launcher buttons that come with Firemote. Through YAML, you can define your own working buttons in one of two ways: defining a script or constructing an action call.

Example:

type: custom:firemote-card
entity: media_player.fire_tv_192_168_107_88
device_family: amazon-fire
device_type: fire_tv_4_series
compatibility_mode: default
custom_launchers:
  - friendly_name: flash the light
    label: FLASH
    image_path: https://upload.wikimedia.org/wikipedia/commons/2/28/Flash-outlined-thin-circular-button.svg
    color: red
    background: white
    script: flashthelablight
    data:
      color: green
  - friendly_name: Red Lamp
    label: red
    icon: mdi:lamp
    color: red
    background: blue
    action: light.toggle
    target:
      entity_id: light.bedroom_lamp
    data:
      color_name: red
      transition: 2
      brightness_pct: 100
app_launch_1: customlauncher flash the light
app_launch_2: customlauncher Red Lamp
scale: '110'


YAML usage: Key Value Required Description
friendly_name string yes This is the name that will appear in the GUI app selector dropdown
label string no The text that will appear on the button
icon mdi icon name no a valid mdi icon name
ex: mdi:lamp
image_path url no path to an image resource
color css color value no custom color for your text label or your mdi icon
ex: white
ex: '#ff0000'
background css color value no custom color for your button's background
ex: green
ex: '#ffffff'
script string yes if calling a script The name of your Home Assistant script
action string yes if not using a script The name of the Home Assistant action you want to call
target object yes if not using a script Define the entity for your action to act upon
data object no optional parameters for your action, or script variables

Once defined, a custom button can be assigned to a Firemote button location through the YAML config itself, or it can be selected through the Visual Editor dropdown

image




Button Overrides

Button Overrides can be very useful for customization. These overrides can be used to call a Home Assistant action directly, run a script, or hide a button on your remote. These options are accomplished through your Firemote's YAML configuration. Just like launcher button customizations, you can also include a data parameter with your action or for your script.

Consider this example:

button_overrides:
  mute-button:
    script: receiver_mute_script
  volume-down-button:
    script: receiver_volume_down_script
  volume-up-button:
    action: light.toggle
    target:
      entity_id: light.bedroom_lamp
    data:
      color_name: red
      transition: 2
      brightness_pct: 100
  power-button:
    hidden: true
Valid button names are listed here: - app-switch-button - apps-button - back-button - blue-button - center-button - channel-down-button - channel-up-button - down-button - fastforward-button - green-button - hamburger-button - headset-button - home-button - input-button - keyboard-button - left-button - live-button - magic-star-button - mute-button - num1-button - num2-button - num3-button - num4-button - num5-button - num6-button - num7-button - num8-button - num9-button - num0-button - options-button - patchwall-button - playpause-button - power-button - profile-button - programmable-one-button - programmable-two-button - red-button - restart-button - replay-button - rewind-button - right-button - search-button - settings-button - sleep-button - subtitle-button - tv-button - up-button - voice-button - volume-down-button - volume-up-button - yellow-button




FAQ

Additional FAQs can be found here in the Firemote Wiki

I installed the Firemote Card, but I can't find it to add in my dashboard

This tends to happen when your Home Assistant UI needs a refresh. The best way to do this is through force clearing your Home Assistant cache and trying again.

Why won't the volume, mute, and/or power buttons work from my Firemote card?

In many cases, your remote control sends commands for volume, mute, and power to your TV or receiver using the IR emitter on the front of the physical remote control. These IR commands cannot be sent in a traditional Home Assistant setup.

If your player device AND the device they are connected to both offer CEC options, then activating CEC will allow the Firemote card controls to work as expected. Click here to learn more about how to configure CEC to work with your Firemote. Another option might be to control your devices (TVs, Receivers, etc.) using Button Overrides. If you can control those kinds of devices through Home Assistant, you can write a HA script and attach that script to a button on your Firemote.

Due to the way the Apple TV Home Assistant integration is built, an Apple TV style Firemote cannot properly simulate a "Mute" button press. A Button Override will be required in this case.

Why don't any of the buttons on the Firemote work at all?

I own a device that isn't a part of any of the existing device families, can it be added?

Yes! In fact, there is a poll in the discussion group called Vote for what gets added next where the community can help decide which new device family will gain Firemote support next. If your device isn't on the ballot, no problem! Just vote for "Other" and write the name of your device in the discussion thread below.

Why isn't the model of my Amazon Fire Device supported?

There are over 40 kinds of Amazon Fire devices, so it will take a while to gain properly tested support for all of them. If Firemote doesn't support your Amazon Fire device yet, you can still use Firemote! Simply choose a supported device that is similar to the one that you have (preferably a remote that looks the same as your physical remote), then you can test different compatibility modes to find out which one works the best.

The BEST option for everyone is if you would submit a request to have your device added! It's simple! Just open a new Amazon Fire TV Device Support Request, fill out the quick and easy form, and you're done!

Why do only some of the Firemote buttons for the Apps that came with my Apple TV work properly, while others don't?

Apple TV app shortcuts work simply by passing the name of the app to the apple tv remote entity. Firemote is built and tested against an environment that uses English as the primary language. In some scenarios, built-in Apple TV apps use language app specific names, which is why asking it to open the English version of that app's name does not work. In order to overcome this, I request that you open a new language support request so we can work together and make all of these buttons work as intended.

I want a shortcut button for an app I use frequently, but it's not on the list. Can it be added?

Absolutely! Simply ask! Here's how: From the Issues menu, simply start a new App Shortcut Request. If you absolutely cannot wait, you can also build your own launcher button using YAML.

How do I report a problem, make a request, or talk about stuff?

Click on the Issues button at the top of this page, click 'New Issue', and select the appropriate category for your needs. You're also welcome to join or begin a new discussion if that suits your needs.

How can I contribute?