Telenet Digicorder -- ziggo mediabox interface?

Actually, can this be the reason?
If I open telenettv (Ontdekken) in my browser for the which the pre-prod url is different (Ontdekken) and dedicated for non production users I get an option to select one of my 2 products. If I select the first one, I get an error. If I select the second one (which are the non-production products) I can login and watch TV.
The first one actually are my production products (which offcourse are no longer applicable because my production box is decommissioned.

I see you selected ā€œtelenet (BE,PREPROD)ā€ as your provider.
i think that might be the issue as i took ā€œTelenet (BE)ā€ and mine works.

Are you services connected to the pre-production network? Meaning, are you Telenet test user?

it is working for me, except my TV does not turn on automatic (via HDMI)
any idea what can be the issue?

Just installed the Arris integration,

keep having the same problem ā€˜canā€™t loginā€™

anyone with a solution

1 Like

ik denk dat je hiertegen aanloopt?
Ziggo changed their backend? Ā· Issue #38 Ā· Sholofly/arrisdcx960 (github.com)

Jup, API changes since yesterday on the Ziggo / Telenet side. They are already looking to patch it up, but itā€™s not working for now.

1 Like

Any updates, I still get the canā€™t connect error.

This integration is not working anymore. This is the new one: GitHub - Sholofly/lghorizon: Custom integration to control LG Horizon settop boxes for Ziggo(NL), Magenta(AT), UPC(CH), Virgin(IE), Telenet(BE)

1 Like

Does @sammyke007 's suggestion work for you @SanderBe ?

Works fine here, Thx! (Be Telenet)

1 Like

this is what i have based on someoneā€™s denon remote (and i use denon for the volume):

type: vertical-stack
cards:
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: media_player.telenettvbox
        name: TV Box
        color_type: label-card
        show_state: true
        icon: |
          [[[
            if (entity.state == 'off')
              return "mdi:amplifier-off"
            else 
              return "mdi:television-classic";
          ]]]
        size: 90%
        styles:
          card:
            - height: 175px
            - border-radius: 5%
            - background-image: |
                [[[
                  return 'url("'+entity.attributes.entity_picture+'")'
                ]]]
            - padding: 4%
            - padding-left: 6%
            - color: white
            - font-size: 13px
            - text-shadow: 1px 1px 5px black
          icon:
            - color: lightgrey
            - margin-top: 1%
            - padding: 0px 10px 0px 0px
          img_cell:
            - justify-content: end
            - align-items: start
          name:
            - font-weight: bold
            - color: white
            - font-size: 33px
            - padding: 10px 0px 5px 170px
          state:
            - font-weight: bold
            - font-size: 16px
            - justify-self: middle
            - padding: 0px 10px
          grid:
            - position: relative
            - grid-template-areas: >-
                "n . i" "volume . i" "source . i" "title title title" ".
                . s" 
            - grid-template-columns: 1fr 1fr 1fr
            - grid-template-rows: 1fr min-content min-content min-content min-content
          custom_fields:
            volume:
              - padding-top: 15px
              - padding-bottom: 2px
              - align-self: middle
              - justify-self: start
            source:
              - padding-bottom: 2px
              - align-self: middle
              - justify-self: start
            title:
              - padding-bottom: 2px
              - align-self: middle
              - justify-self: start
        custom_fields:
          volume: |
            [[[
              if (states['media_player.denon'].state == 'off' )
                return ``
              else 
                return `<ha-icon
                icon="mdi:volume-high"
                style="width: 18px; height: 17px; color: deepskyblue;">
                </ha-icon><span> &nbsp; Volume: &nbsp;<span style="color: var(--text-color-sensor);">${Math.round((states['media_player.denon'].attributes.volume_level)*100)}</span></span>`
            ]]]
          source: |
            [[[
              if ( entity.state == 'off' )
                return ``
              else 
                return `<ha-icon
                icon="mdi:dlna"
                style="width: 18px; height: 17px; color: deepskyblue;">
                </ha-icon><span> &nbsp; Source: &nbsp; <span style="color: var(--text-color-sensor);">${entity.attributes.source} </span></span>`
            ]]]
          title: |
            [[[
              if ( entity.state == 'off' || !(entity.attributes.title) )
                return ``
              else if ( entity.state == 'playing' || (entity.state == 'on' && entity.attributes.source != 'TV AUDIO') )
                return `<ha-icon
                icon="mdi:form-textbox"
                style="width: 18px; height: 17px; color: deepskyblue;">
                </ha-icon><span> &nbsp; Title: &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: var(--text-color-sensor);">${entity.attributes.title} </span></span>`
              else 
                return ``
            ]]]
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: blank-card
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: media_player.telenettvbox
        size: 25px
        name: power
        show_name: false
        show_state: false
        color_type: card
        color: rgb(45, 45, 45)
        state:
          - value: 'off'
            icon: mdi:power
            color: rgb(200, 200, 200)
            styles:
              icon:
                - color: rgb(230, 230, 230)
          - operator: default
            icon: mdi:power
            color: rgb(40, 69, 120)
            styles:
              icon:
                - color: yellow
        tap_action:
          action: call-service
          service: media_player.toggle
          service_data:
            entity_id: media_player.telenettvbox
      - type: custom:button-card
        color_type: blank-card
      - type: custom:button-card
        name: Guide
        color_type: card
        color: rgb(40, 69, 120)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: Guide
      - type: custom:button-card
        color_type: blank-card
      - type: custom:button-card
        name: Home
        color_type: card
        color: rgb(40, 69, 120)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: MediaTopMenu
      - type: custom:button-card
        color_type: blank-card
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: blank-card
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: blank-card
      - type: custom:button-card
        icon: mdi:arrow-up-thick
        size: 22px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: ArrowUp
      - type: custom:button-card
        color_type: blank-card
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        icon: mdi:arrow-left-thick
        size: 22px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: ArrowLeft
      - type: custom:button-card
        name: OK
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: Enter
      - type: custom:button-card
        icon: mdi:arrow-right-thick
        size: 22px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: ArrowRight
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: blank-card
      - type: custom:button-card
        icon: mdi:arrow-down-thick
        size: 22px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: ArrowDown
      - type: custom:button-card
        color_type: blank-card
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: blank-card
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        name: Back
        tooltip: escape
        color_type: card
        color: rgb(35, 58, 99)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: Escape
      - type: custom:button-card
        name: ...
        tooltip: context
        color_type: card
        color: rgb(35, 58, 99)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: ContextMenu
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: blank-card
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: blank-card
      - type: custom:button-card
        icon: mdi:record
        size: 22px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: MediaRecord
      - type: custom:button-card
        color_type: blank-card
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        icon: mdi:arrow-left-bold-outline
        size: 22px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: MediaRewind
      - type: custom:button-card
        icon: mdi:play-pause
        size: 22px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: MediaPlayPause
      - type: custom:button-card
        icon: mdi:arrow-right-bold-outline
        size: 22px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: MediaFastForeward
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: blank-card
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        icon: mdi:volume-plus
        size: 25px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: denonavr.get_command
          service_data:
            entity_id: media_player.denon
            command: /goform/formiPhoneAppDirect.xml?MVUP
        double_tap_action:
          action: call-service
          service: script.denon_vol_increase
          service_data:
            stepcount: 10
      - type: custom:button-card
        color_type: blank-card
      - type: custom:button-card
        icon: mdi:arrow-up-bold
        size: 22px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: ChannelUp
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        icon: mdi:volume-minus
        size: 25px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: denonavr.get_command
          service_data:
            entity_id: media_player.denon
            command: /goform/formiPhoneAppDirect.xml?MVDOWN
        double_tap_action:
          action: call-service
          service: script.denon_vol_decrease
          service_data:
            stepcount: 10
      - type: custom:button-card
        color_type: blank-card
      - type: custom:button-card
        icon: mdi:arrow-down-bold
        size: 22px
        color_type: card
        color: rgb(35, 58, 99)
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: ChannelDown
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: blank-card
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        name: 1
        color_type: card
        color: rgb(30, 45, 71)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: '1'
      - type: custom:button-card
        name: 2
        color_type: card
        color: rgb(30, 45, 71)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: '2'
      - type: custom:button-card
        name: 3
        color_type: card
        color: rgb(30, 45, 71)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: '3'
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        name: 4
        color_type: card
        color: rgb(30, 45, 71)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: '4'
      - type: custom:button-card
        name: 5
        color_type: card
        color: rgb(30, 45, 71)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: '5'
      - type: custom:button-card
        name: 6
        color_type: card
        color: rgb(30, 45, 71)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: '6'
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        name: 7
        color_type: card
        color: rgb(30, 45, 71)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: '7'
      - type: custom:button-card
        name: 8
        color_type: card
        color: rgb(30, 45, 71)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: '8'
      - type: custom:button-card
        name: 9
        color_type: card
        color: rgb(30, 45, 71)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: '9'
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: blank-card
      - type: custom:button-card
        name: '0'
        color_type: card
        color: rgb(30, 45, 71)
        styles:
          name:
            - font-size: 16px
            - padding: 2px 0px
        tap_action:
          action: call-service
          service: lghorizon.remote_key_press
          service_data:
            entity_id: media_player.telenettvbox
            remote_key: '0'
      - type: custom:button-card
        color_type: blank-card
3 Likes

Congratulations m8, looks nice!

1 Like

Still canā€™t get it working. Canā€™t connect.
Is it suppose to work on ā€œTelenet (BE, PREPROD)ā€: ā€œbe-nl-preprodā€? Because Iā€™m connected to preprod.

@werner2 It looks like youā€™re using the old integration. Please move over to LGHorizon

1 Like

I did move over to the LGHorizon integration. I installed according the instructions. Found the idā€™s of the box. I have 2 accounts, so I tried both of them. I also noticed the available of non-prod network (to which Iā€™m connected) and tried to activate. No success.

COUNTRY_CODES = {
    "Ziggo": "nl",
    # "Telenet (BE)": "be-nl",
    "Telenet (BE, PREPROD)": "be-nl-preprod",
    # "Telenet (FR)": "be-fr",
    "Magenta": "at",
    "UPC Switzerland": "ch",
    "Virgin Media (GB)": "gb",
    # "Virgin Media (GB, PREPROD)": "gb-preprod",
    "Virgin Media (IE)": "ie",
    "UPC (PL)": "pl",

Based on the example above youā€™re not using the latest version. the country codes shoul look like this:

COUNTRY_CODES = {
    "Ziggo": "nl",
    "Telenet (BE)": "be-nl",
    # "Telenet (BE, PREPROD)": "be-nl-preprod",
    # "Telenet (FR)": "be-fr",
    "Magenta": "at",
    "UPC Switzerland": "ch",
    "Virgin Media (GB)": "gb",
    # "Virgin Media (GB, PREPROD)": "gb-preprod",
    "Virgin Media (IE)": "ie",
    "UPC (PL)": "pl",
}

Itā€™s the same one. I only tried to uncomment ā€œTelenet (BE, PREPRODā€¦ā€.
I tried with both uncommented an either one of them commented out.
No success.
I assumed the "Telenet (BE, PREPRODā€¦) was added for special test customers whoā€™s box is connected to a pre-production network (like mine is).

I checked it once more. Connecting to ā€œTelenet (BE)ā€: ā€œbe-nlā€, I can connect with credentials and box
number. However, thatā€™s an old box which was connected to production network (regular user). That box is no longer connected so reporting ā€˜Unavailableā€™ in HA.

Telenet (BE)ā€: ā€œbe-nlā€ is the only one working for now. In the old component I added the pre-prod environment on request but I donā€™t know the endpoint after the big LG horizon change.

Iā€™m having a small issueā€¦
I used Berts code and adapted it a bit (few other icons, made it a conditional one so that it only show when it put the TV (TelenetTVBox, Denon and Samung) on and some ā€œhold buttonā€ actionsā€¦
(And some TV Logo Shortcuts ;-))
Everything seems to be working fine, except for the MediaFastForwardā€¦ that one button isnā€™t workingā€¦
What did I do wrong (Iā€™m quite new to HA ;-))

my code

type: conditional
conditions:
  - condition: state
    entity: input_boolean.tv_salon_toggle_switch
    state: 'on'
card:
  type: vertical-stack
  cards:
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          entity: media_player.boven
          name: TV Salon
          color_type: label-card
          show_state: true
          icon: |
            [[[
              if (entity.state == 'off')
                return "mdi:amplifier-off"
              else 
                return "mdi:television-classic";
            ]]]
          size: 90%
          styles:
            card:
              - height: 175px
              - border-radius: 5%
              - background-image: |
                  [[[
                    return 'url("'+entity.attributes.entity_picture+'")'
                  ]]]
              - padding: 4%
              - padding-left: 6%
              - color: white
              - font-size: 13px
              - text-shadow: 1px 1px 5px black
            icon:
              - color: lightgrey
              - margin-top: 1%
              - padding: 0px 10px 0px 0px
            img_cell:
              - justify-content: end
              - align-items: start
            name:
              - font-weight: bold
              - color: white
              - font-size: 33px
              - padding: 10px 0px 5px 170px
            state:
              - font-weight: bold
              - font-size: 16px
              - justify-self: middle
              - padding: 0px 10px
            grid:
              - position: relative
              - grid-template-areas: '"n . i" "volume . i" "source . i" "title title title" ". . s" '
              - grid-template-columns: 1fr 1fr 1fr
              - grid-template-rows: 1fr min-content min-content min-content min-content
            custom_fields:
              volume:
                - padding-top: 15px
                - padding-bottom: 2px
                - align-self: middle
                - justify-self: start
              source:
                - padding-bottom: 2px
                - align-self: middle
                - justify-self: start
              title:
                - padding-bottom: 2px
                - align-self: middle
                - justify-self: start
          custom_fields:
            volume: |
              [[[
                if (states['media_player.denon_avr_x1700h'].state == 'off' )
                  return ``
                else 
                  return `<ha-icon
                  icon="mdi:volume-high"
                  style="width: 18px; height: 17px; color: deepskyblue;">
                  </ha-icon><span> &nbsp; Volume: &nbsp;<span style="color: var(--text-color-sensor);">${Math.round((states['media_player.denon_avr_x1700h'].attributes.volume_level)*100)}</span></span>`
              ]]]
            source: |
              [[[
                if ( entity.state == 'off' )
                  return ``
                else 
                  return `<ha-icon
                  icon="mdi:dlna"
                  style="width: 18px; height: 17px; color: deepskyblue;">
                  </ha-icon><span> &nbsp; Source: &nbsp; <span style="color: var(--text-color-sensor);">${entity.attributes.source} </span></span>`
              ]]]
            title: |
              [[[
                if ( entity.state == 'off' || !(entity.attributes.title) )
                  return ``
                else if ( entity.state == 'playing' || (entity.state == 'on' && entity.attributes.source != 'TV AUDIO') )
                  return `<ha-icon
                  icon="mdi:form-textbox"
                  style="width: 18px; height: 17px; color: deepskyblue;">
                  </ha-icon><span> &nbsp; Title: &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: var(--text-color-sensor);">${entity.attributes.title} </span></span>`
                else 
                  return ``
              ]]]
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: blank-card
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          entity: media_player.boven
          name: power
          show_name: false
          show_state: false
          color_type: card
          color: rgb(45, 45, 45)
          state:
            - value: 'off'
              icon: mdi:power
              color: rgb(200, 200, 200)
              styles:
                icon:
                  - color: rgb(230, 230, 230)
              card:
                - height: 75px
            - operator: default
              icon: mdi:power
              color: rgb(40, 69, 120)
              styles:
                icon:
                  - color: yellow
              card:
                - height: 75px
          tap_action:
            action: call-service
            service: homeassistant.toggle
            service_data:
              entity_id: input_boolean.tv_salon_toggle_switch
        - type: custom:button-card
          icon: mdi:television-guide
          color_type: card
          color: rgb(40, 69, 120)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
            card:
              - height: 70px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: Guide
        - type: custom:button-card
          icon: mdi:home
          color_type: card
          color: rgb(40, 69, 120)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
            card:
              - height: 70px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: MediaTopMenu
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: blank-card
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: blank-card
        - type: custom:button-card
          icon: mdi:arrow-up-thick
          size: 40px
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: ArrowUp
        - type: custom:button-card
          color_type: blank-card
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          icon: mdi:arrow-left-thick
          size: 40px
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: ArrowLeft
          hold_action:
            action: call-service
            service: lghorizon.remote_key_press
            repeat: 200
            service_data:
              entity_id: media_player.boven
              remote_key: ArrowLeft
        - type: custom:button-card
          name: OK
          styles:
            card:
              - height: 53px
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: Enter
        - type: custom:button-card
          icon: mdi:arrow-right-thick
          size: 40px
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: ArrowRight
          hold_action:
            action: call-service
            service: lghorizon.remote_key_press
            repeat: 200
            service_data:
              entity_id: media_player.boven
              remote_key: ArrowRight
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: blank-card
        - type: custom:button-card
          icon: mdi:arrow-down-thick
          size: 40px
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: ArrowDown
        - type: custom:button-card
          color_type: blank-card
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: blank-card
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          name: Back
          tooltip: escape
          color_type: card
          color: rgb(35, 58, 99)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: Escape
        - type: custom:button-card
          name: ...
          tooltip: context
          color_type: card
          color: rgb(35, 58, 99)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: ContextMenu
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: blank-card
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          icon: mdi:arrow-left-bold-outline
          size: 22px
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: MediaRewind
        - type: custom:button-card
          icon: mdi:play-pause
          size: 22px
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: MediaPlayPause
        - type: custom:button-card
          icon: mdi:arrow-right-bold-outline
          size: 22px
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: MediaFastForeward
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: blank-card
    - type: horizontal-stack
      vertical: bottom
      cards:
        - type: custom:button-card
          icon: mdi:volume-plus
          size: 40%
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: denonavr.get_command
            service_data:
              entity_id: media_player.denon_avr_x1700h
              command: /goform/formiPhoneAppDirect.xml?MVUP
          double_tap_action:
            action: call-service
            service: script.denon_vol_increase
            service_data:
              stepcount: 10
        - type: custom:button-card
          icon: mdi:record
          size: 22px
          color_type: card
          color: rgb(35, 58, 99)
          styles:
            icon:
              - color: red
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: MediaRecord
        - type: custom:button-card
          icon: mdi:arrow-up-bold
          size: 40%
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: ChannelUp
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          icon: mdi:volume-minus
          size: 40%
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: denonavr.get_command
            service_data:
              entity_id: media_player.denon_avr_x1700h
              command: /goform/formiPhoneAppDirect.xml?MVDOWN
          double_tap_action:
            action: call-service
            service: script.denon_vol_decrease
            service_data:
              stepcount: 10
        - type: custom:button-card
          color_type: blank-card
        - type: custom:button-card
          icon: mdi:arrow-down-bold
          size: 40%
          color_type: card
          color: rgb(35, 58, 99)
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: ChannelDown
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: blank-card
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          name: 1
          color_type: card
          color: rgb(30, 45, 71)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: '1'
        - type: custom:button-card
          name: 2
          color_type: card
          color: rgb(30, 45, 71)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: '2'
        - type: custom:button-card
          name: 3
          color_type: card
          color: rgb(30, 45, 71)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: '3'
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          name: 4
          color_type: card
          color: rgb(30, 45, 71)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: '4'
        - type: custom:button-card
          name: 5
          color_type: card
          color: rgb(30, 45, 71)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: '5'
        - type: custom:button-card
          name: 6
          color_type: card
          color: rgb(30, 45, 71)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: '6'
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          name: 7
          color_type: card
          color: rgb(30, 45, 71)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: '7'
        - type: custom:button-card
          name: 8
          color_type: card
          color: rgb(30, 45, 71)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: '8'
        - type: custom:button-card
          name: 9
          color_type: card
          color: rgb(30, 45, 71)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: '9'
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: blank-card
        - type: custom:button-card
          name: '0'
          color_type: card
          color: rgb(30, 45, 71)
          styles:
            name:
              - font-size: 16px
              - padding: 2px 0px
          tap_action:
            action: call-service
            service: lghorizon.remote_key_press
            service_data:
              entity_id: media_player.boven
              remote_key: '0'
        - type: custom:button-card
          color_type: blank-card
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/vrt-1-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '1'
            target:
              entity_id: media_player.boven
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/canvas-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '2'
            target:
              entity_id: media_player.boven
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/vtm-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '3'
            target:
              entity_id: media_player.boven
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/vtm2-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '4'
            target:
              entity_id: media_player.boven
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/play4-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '5'
            target:
              entity_id: media_player.boven
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/play5-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '6'
            target:
              entity_id: media_player.boven
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/play6-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '7'
            target:
              entity_id: media_player.boven
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/play7-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '8'
            target:
              entity_id: media_player.boven
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/vtm3-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '9'
            target:
              entity_id: media_player.boven
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/vtm4-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '10'
            target:
              entity_id: media_player.boven
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/atv-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '11'
            target:
              entity_id: media_player.boven
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/discovery-channel-us.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '16'
            target:
              entity_id: media_player.boven
    - type: horizontal-stack
      cards:
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/national-geographic-us.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '17'
            target:
              entity_id: media_player.boven
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/ketnet-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '14'
            target:
              entity_id: media_player.boven
        - type: custom:button-card
          color_type: card
          color: rgb(30, 45, 71)
          aspect_ratio: 3/2
          entity: ''
          entity_picture: /local/pictures/belgium/njam-be.png
          show_entity_picture: true
          tap_action:
            action: call-service
            service: media_player.play_media
            data:
              media_content_type: channel
              media_content_id: '21'
            target:
              entity_id: media_player.boven