Change icons on card and remove extra buttons

I created this card for controlling my TV, using a Broadlink RM3 Mini.

2019-04-06%2010_17_09-Home%20Assistant
This is the code for it

- platform: broadlink
  host: 192.168.1.38
  mac: 'macaddresshere'
  switches:
   tvpower:
     friendly_name: "Kitchen TV Power"
     command_on: 'JgBQAAABKJQRFBEUERQRExEUERQSOBEUETkSOBE4EjgRORI4ERQROREUEjgRFBAUETkRFBEUERQROREUEjcSOBITETkRORE5EQAFIgABJkwRAA0FAAAAAAAAAAA='
     command_off: 'JgBQAAABKJQRFBEUERQRExEUERQSOBEUETkSOBE4EjgRORI4ERQROREUEjgRFBAUETkRFBEUERQROREUEjcSOBITETkRORE5EQAFIgABJkwRAA0FAAAAAAAAAAA='
   tvvolume:
     friendly_name: "Kitchen TV Volume"
     command_on: 'JgBQAAABJZcQFRAVDxYSEBIWEBUQOBEUEDkSNxE4EzcRORA5ERUMPBETETgSFBI4EDYTFRESEhQRORAUETkSExAUEToPORA5EQAFLAABKUkQAA0FAAAAAAAAAAA='
     command_off: 'JgBUAAoAAdsAASaWERMTExEUEBQRFRAUEDkRFBI3EzcSNw87EDkROBEUETgSFQ85EDkRORE4ERQQFREUEDkSExAUERUQFg84ETkROBIABSsAASZMEQANBQAAAAA='
   inputappletv:
     friendly_name: "Kitchen AppleTV"
     command_on: 'JgBQAAABJpUSEhURExIRExMSExIROBMTEjYTNhM3EjcSNxQ2EhMTNhI4EhMSExE4EjgSNxISExITEhM3EjcUEBMTExIROBI3EQAFLAABKEkTAA0FAAAAAAAAAAA='
     command_off: 'JgBQAAABJpUSEhURExIRExMSExIROBMTEjYTNhM3EjcSNxQ2EhMTNhI4EhMSExE4EjgSNxISExITEhM3EjcUEBMTExIROBI3EQAFLAABKEkTAA0FAAAAAAAAAAA='
   inputcablenet:
     friendly_name: "Kitchen Cablenet"
     command_on: 'JgBUAAABKJMTEhMSFRATEhMSExISNxITEzYTNhQ2EzYSNxM3ExITNhM2FTUSExETEzcTNhITEhMRFBITETgTNhMSExIRORI3EQAFLAABJ0oTAAziCgANBQAAAAA='
     command_off: 'JgBUAAABKJMTEhMSFRATEhMSExISNxITEzYTNhQ2EzYSNxM3ExITNhM2FTUSExETEzcTNhITEhMRFBITETgTNhMSExIRORI3EQAFLAABJ0oTAAziCgANBQAAAAA='

My issue is that, since this is infrared communication, obviously I can’t know the status of the TV. So I want to convert those lightning icons, to push buttons.

For “Kitchen TV Power” there should only be one power button, that toggles the power of the TV. Same goes for “Kitchen Apple TV” and “Kitchen Cablenet” which are simply HDMI inputs.

It would also be nice if I could put something more appropriate for the “Kitchen TV Volume” instead of those lightning buttons.

Thanks for your help.

You can use the built in Lovelace entity button card: https://www.home-assistant.io/lovelace/entity-button/ and stack them horizontally and vertically. I wouldn’t recommend it though.

You get a better result with the custom tiles card for Lovelace: https://github.com/rodrigofragadf/lovelace-cards/tree/master/tiles-card

EDIT: I see that link is still getting a lot of hits. I no longer recommend the tiles card as it has been unsupported for quite some time. The custom button card is a much better option. Lovelace: Button card

e.g.

Here’s the config for that card to get you started:

card_settings:
  background: var(--paper-card-background-color)
  column_width: calc(97%/4)
  columns: 4
  row_height: 75px
  title: TV
  title_align: left
entities:
  - column: 1
    entity: script.lounge_tv_on
    icon:
      value: 'mdi:power-cycle'
    label_sec:
      value: 'On'
    row: 1
  - column: 2
    entity: script.lounge_tv_off
    icon:
      value: 'mdi:power-off'
    label_sec:
      value: 'Off'
    row: 1
  - column: 1
    entity: script.lounge_tv_input_tv
    icon:
      value: 'mdi:television-classic'
    label_sec:
      value: TV
    row: 2
  - column: 2
    entity: script.lounge_tv_input_pc
    icon:
      value: 'mdi:desktop-classic'
    label_sec:
      value: PC
    row: 2
  - column: 3
    entity: script.lounge_tv_input_kodi
    icon:
      value: 'mdi:kodi'
    label_sec:
      value: Kodi
    row: 2
  - column: 1
    entity: script.lounge_tv_play
    icon:
      value: 'mdi:play'
    row: 3
  - column: 2
    entity: script.lounge_tv_pause
    icon:
      value: 'mdi:pause'
    row: 3
  - column: 3
    entity: script.lounge_tv_stop
    icon:
      value: 'mdi:stop'
    row: 3
  - column: 4
    entity: script.lounge_tv_rec
    icon:
      color:
        value: '#ff0000'
      value: 'mdi:record'
    row: 3
  - column: 1
    entity: script.lounge_tv_menu
    icon:
      value: 'mdi:menu'
    label_sec:
      value: Menu
    row: 4
  - column: 2
    entity: script.lounge_tv_rew
    icon:
      value: 'mdi:rewind'
    row: 4
  - column: 3
    entity: script.lounge_tv_ffwd
    icon:
      value: 'mdi:fast-forward'
    row: 4
  - column: 4
    entity: script.lounge_tv_ch_up
    icon:
      value: 'mdi:arrow-up-bold-box-outline'
    row: 4
  - column: 1
    entity: script.lounge_tv_option
    icon:
      value: 'mdi:playlist-edit'
    label_sec:
      value: Options
    row: 5
  - column: 2
    entity: script.lounge_tv_skip_back
    icon:
      value: 'mdi:skip-previous'
    row: 5
  - column: 3
    entity: script.lounge_tv_skip_fwd
    icon:
      value: 'mdi:skip-next'
    row: 5
  - column: 4
    entity: script.lounge_tv_last_ch
    icon:
      value: 'mdi:arrow-left-bold-box-outline'
    label_sec: Last CH
    row: 5
  - column: 1
    entity: script.lounge_tv_guide
    icon:
      value: 'mdi:television-guide'
    label_sec:
      value: Guide
    row: 6
  - column: 2
    entity: script.lounge_tv_info
    icon:
      value: 'mdi:information-outline'
    label_sec:
      value: Info
    row: 6
  - background:
      value: '#2576da'
    column: 3
    entity: script.lounge_tv_up
    icon:
      value: 'mdi:arrow-up-bold-circle'
    row: 6
  - column: 4
    entity: script.lounge_tv_ch_dn
    icon:
      value: 'mdi:arrow-down-bold-box-outline'
    row: 6
  - column: 1
    entity: script.lounge_tv_media
    icon:
      value: 'mdi:folder-multiple-image'
    label_sec:
      value: Media
    row: 7
  - background:
      value: '#2576da'
    column: 2
    entity: script.lounge_tv_left
    icon:
      value: 'mdi:arrow-left-bold-circle'
    row: 7
  - column: 3
    entity: script.lounge_tv_ok
    icon:
      value: 'mdi:check-circle-outline'
    row: 7
  - background:
      value: '#2576da'
    column: 4
    entity: script.lounge_tv_right
    icon:
      value: 'mdi:arrow-right-bold-circle'
    row: 7
  - column: 1
    entity: script.lounge_tv_www
    icon:
      value: 'mdi:play-network'
    label_sec: Internet
    row: 8
  - column: 2
    entity: script.lounge_tv_return
    icon:
      value: 'mdi:backburger'
    label_sec:
      value: Return
    row: 8
  - background:
      value: '#2576da'
    column: 3
    entity: script.lounge_tv_down
    icon:
      value: 'mdi:arrow-down-bold-circle'
    row: 8
  - column: 4
    entity: script.lounge_tv_exit
    icon:
      value: 'mdi:backspace'
    label_sec: Exit
    row: 8
  - column: 1
    entity: script.lounge_tv_red
    icon:
      color: '#ff0000'
      value: 'mdi:square'
    row: 9
  - column: 2
    entity: script.lounge_tv_green
    icon:
      color: '#00ff00'
      value: 'mdi:square'
    row: 9
  - column: 3
    entity: script.lounge_tv_yellow
    icon:
      color: '#ffff00'
      value: 'mdi:square'
    row: 9
  - column: 4
    entity: script.lounge_tv_blue
    icon:
      color: '#0000ff'
      value: 'mdi:square'
    row: 9
global_settings:
  border:
    color:
      value: black
    radius: 5px
    size: 3px
  icon:
    color:
      value: white
  label_sec:
    color:
      value: white
  shadow: 'elevation: 6dp'
type: 'custom:tiles-card'

and an accompanying script example

lounge_tv_on:
  sequence:
  - service: remote.send_command
    data:
      entity_id: remote.lounge_tv
      command: "ON"

So no way to just change the icon? I have to rewrite the whole thing?

You could just use a script to call the remote command. It would look like this example:

you can try to set the “assumed_state: false” in the customization section for the switch.

that will give you the standard “toggle” type switch.