Custom Component: SkyQ Media Player

How do you get the background image of what you are watching in the skyq decoder? I cannot see it also if i set the artwork option to cover or full-cover.

Its a combination of SOAP and REST requests to the box on different ports.

If you diff my master and skyqa branches and review the skyq_remote.py file it should hopefully paint a picture of the amount of calls and structure. Check out getCurrentMedia function and https://github.com/MadmanMonty/Home_Assistant_SkyQ_MediaPlayer/blob/d7df8bcd29b12a05505a5baf81cc707f5f097ca5/skyq/sky_remote.py#L147 for more specifics details

Sorry, but i am really e noob about programming, so it’s impossible for me now to understand what you mean… :roll_eyes:

this is my attempt… i’ll try to make it better tomorrow :slight_smile:

entity: media_player.sky_q_salone
type: 'custom:mini-media-player'
artwork: cover
source: icon
icon: 'mdi:remote-tv'
name: Sky Q Salone
hide:
  volume: true
  source: false
  power_state: false
shortcuts:
  columns: 3
  buttons:
    - icon: 'mdi:plus-circle'
      type: source
      id: CUP
    - icon: 'mdi:arrow-up-circle'
      type: source
      id: UP
    - icon: 'mdi:home-circle'
      type: source
      id: HOME
    - icon: 'mdi:arrow-left-circle'
      type: source
      id: LEFT
    - icon: 'mdi:checkbox-marked-circle'
      type: source
      id: OK
    - icon: 'mdi:arrow-right-circle'
      type: source
      id: RIGHT
    - icon: 'mdi:minus-circle'
      type: source
      id: CHDOWN
    - icon: 'mdi:arrow-down-circle'
      type: source
      id: DOWN
    - icon: 'mdi:alpha-e-circle'
      type: source
      id: EXIT

This is what i get:

10

How to make the buttons and the texts more readable?

Hi,

I have tried to run the debug as I am having the same issue with the ‘now playing’ not showing anything.

However, when trying to run it I get an error saying ‘no module named xmltodict’. If I comment this out then none of the SOAP requests seem to work.

Happy to try and debug for you.

Cheers

Jonathan

Try:

pip install xmltodict 

That should do it, depending on your OS and setup. Do need to make sure it’s python 3, not 2 in use, I recall having a few troubles with that on my Mac.

If that looks like a it’s anymore complicated than that I will recreate my cURL commands I was using during code/testing as alternative and share.

Sure! Heres the config! The volume is done by sending the requests direct to my Sony TV using the Bravia media player component. Works well :slight_smile:

entity: media_player.skyq_bedroom
hide:
  icon: true
  power: true
  source: false
  volume: true
more_info: false
shortcuts:
  buttons:
    - icon: 'mdi:plus-circle-outline'
      id: CUP
      type: source
    - icon: 'mdi:arrow-up-drop-circle-outline'
      id: UP
      type: source
    - data:
        entity_id: media_player.bedroom_tv
      icon: 'mdi:volume-high'
      id: media_player.volume_up
      type: service
    - icon: 'mdi:arrow-left-drop-circle-outline'
      id: LEFT
      type: source
    - icon: 'mdi:check-circle-outline'
      id: OK
      type: source
    - icon: 'mdi:arrow-right-drop-circle-outline'
      id: RIGHT
      type: source
    - icon: 'mdi:minus-circle-outline'
      id: CDOWN
      type: source
    - icon: 'mdi:arrow-down-drop-circle-outline'
      id: DOWN
      type: source
    - data:
        entity_id: media_player.bedroom_tv
      icon: 'mdi:volume-medium'
      id: media_player.volume_down
      type: service
    - icon: 'mdi:arrow-left-circle'
      id: Back
      type: source
    - icon: 'mdi:record-rec'
      id: Record
      type: source
    - icon: 'mdi:home-circle-outline'
      id: Home
      type: source
    - data:
        entity_id: media_player.bedroom_tv
      icon: 'mdi:power-standby'
      id: media_player.toggle
      type: service
  column_height: 100
  columns: 3
  label: TV Input
  list:
    - data:
        entity_id: media_player.bedroom_tv
        source: HDMI 1
      icon: 'mdi:video-input-hdmi'
      id: media_player.select_source
      name: HDMI 1
      type: service
    - data:
        entity_id: media_player.bedroom_tv
        source: HDMI 2
      icon: 'mdi:video-input-hdmi'
      id: media_player.select_source
      name: HDMI 2
      type: service
    - data:
        entity_id: media_player.bedroom_tv
        source: HDMI 3/ARC
      icon: 'mdi:video-input-hdmi'
      id: media_player.select_source
      name: HDMI 3
      type: service
    - data:
        entity_id: media_player.bedroom_tv
        source: HDMI 4/ARC
      icon: 'mdi:video-input-hdmi'
      id: media_player.select_source
      name: HDMI 4
      type: service
type: 'custom:mini-media-player'

To be honest not much experience with cURL, but if you want me to try something happy to help where I can with some pointers. Feel free to drop me a PM :slight_smile:

Seems to be able to get the right information, just not reporting it back to HA:

Apologies for the screenshot, not at my usual computer.

Thanks

Could you add support for HACs?
Would be great to not have to unzip/replace files manually (I mainly work on my instance from work on lunch - work blocks github downloads).

Hi @Coedy getting this into HACS is my plan.

As I’m new to HACS this week, my thought process is I’ll continue to fine tune this component for another week, then I’ll look into getting this added to HACS for the wider community.

1 Like

Sounds great! It’s working great at the moment and I’m super excited to get the now playing data, or even the channel numbers (if live). Making Automations for Lights off for Sky Cinema, RGB light on if Cbeebies is on (as it is 90% of the day at the moment…) should be fun!

Does it pick up Netflix/Youtube etc?

1 Like

Just to confirm, the skyqa branch now works perfectly for me. For those looking to do automations, I have added the following to my config, which shows what channel or recording is on, or shows ‘Off’ if the box is off.

  - platform: template
    sensors:
      skyq_living_room:
        friendly_name: Sky Q Living Room
        value_template: >-
          {% if (states.media_player.skyq_living_room.state == "off") %}Off{% else %}{{ state_attr('media_player.skyq_living_room', 'media_title') }}{% endif %}
1 Like

So all confirm that the only way for volume is not control SkyQ?
But why all button are mapped and volumes not?

I’m so confused why people keep asking this, the remote is what controls the volume, it’s a universal remote of sorts, you have to put a remote code into it. The sky boxes don’t even know the tv exists, just it’s outputting a signal to something.

If you want to control volume you are either going to have to go the IR blaster route or use hdmi-cec and bring it together in a universal media player as suggested.

Hopefully when I get a moment I will give this a go cause I never knew the universal media player existed until this thread.

When you press the volume button on your Sky remote, is the pop up that appears on screen the same as the one that pops up when you press the volume button on your standard tv remote?
If so (it will be) then it is nothing to do with the sky box. So a custom component that can control the sky box wont be able to control your TV directly.

Could someone give me a hand?
I’ve downloaded the Zip from the branch linked above: https://github.com/MadmanMonty/Home_Assistant_SkyQ_MediaPlayer/tree/skyqa
I tried just overwriting the files, doing a reboot of Hass but I’m not getting the new “Now playing” feature.
I then deleted the set of files, re-copied them over and still don’t get the new feature. But my switches from my config all still work, the media player still works, just no “now playing” or backgrounds, or channel details…?

Now is clear: it was clear that the volume is the one of the TV, but I was supposed that was the SkyQ box that was controlling the TV, not the remote control since it is bluetooth and not IR by default

So, if I properly understand, the remote control of skyq use bluetooth for command to decoder and IR to control the tv like for the volume, the source atc

I will use broadlink IR device

I had to change my template as it wasn’t working properly. It will now return:

  • Off if the box is off
  • The playing programme name (including series and episode name) if there is a recording playing
  • The channel number if no recording is playing.
          {% if (states.media_player.skyq_living_room.state == "off") %}
            Off
            {% else %}
            {% if states.media_player.skyq_living_room.attributes.media_series_title is defined %}
            {{ state_attr('media_player.skyq_living_room', 'media_series_title') }}
             - Series {{ state_attr('media_player.skyq_living_room', 'media_season') }}            
           Episode {{ state_attr('media_player.skyq_living_room', 'media_episode') }}           
            {% else %}
           {{ state_attr('media_player.skyq_living_room', 'media_channel') }}
            {% endif %}
            {% endif %}
3 Likes

Thanks for your template and massive thanks @MadmanMonty

I am going to download and have a play with the SkyQA branch. would be great to see what is now playing etc.

I have just downloaded a load of flaticons I was hoping to use on the remote but not sure if the shortcut buttons on the media player card can use images not just mdi icons? Cannot get them to work at the moment, and have asked on the mini media player thread but wondered if anyone here knew, the mdi icons seem a bit limited.

      - type: custom:mini-media-player
        entity: media_player.skyq
        name: SkyQ
        icon: mdi:blank     #mdi:youtube-tv
        #more_info: false
        artwork: cover
        background: "https://wi-images.condecdn.net/image/m9qkOnPpZnz/crop/1620/f/screen-shot-2015-11-18-at-100440.jpg"
        hide:
          volume: true
          source: true
          power_state: false       
        shortcuts:
          columns: 6 # Max buttons per row
          buttons:
      # Channel Up
            - image: /local/images/remote/remote_icons/001-sort-up.png
              #name: 'Ch+'
              type: source
              id: 'CHup'