Skip to content

Conversation

@fulippo
Copy link

@fulippo fulippo commented Oct 30, 2025

When controlling an Hi-Fi system via IR, some basic controls like next track, previous track, play/pause are missing because the device_class defaults to TV. We allow HA to identify the device as a MediaType.MUSIC by allowing to specify the device_class as speaker in the configuration.

A better control for current state initial state is also implemented defaulting to IDLE instead of ON. This allows Home Assistant to set the media player in a neutral state that is required to correctly display the control buttons.

To set the correct device class just use a configuration like this in HA:

media_player:
  - platform: smartir
    name: Stereo Pioneer
    unique_id: stereo_pioneer
    device_code: 99999
    device_class: speaker # this is required
    controller_data: remote.universal_remote
    power_sensor: binary_sensor.stereo

This is an example of the device's working configuration that I've tested with this version of the player:

{
    "manufacturer": "Pioneer",
    "supportedModels": [
      "A-Z370"
    ],
    "supportedController": "Broadlink",
    "commandsEncoding": "Base64",
    "commands": {
        "off": "JgDYAAABD4oPExEzDzUQEhASEDQQExA0EDQRERERDzYQMxERETQQEg8TEBIRMxA1EDQPEhESEREQNQ80ERERERESEDUONREzEAADggABD4oPExA0ETMREhASEDQQEhA1DzUQEhAREDURMxASDzURERERERIQNBA0ETMQEhATEBIQMxE0EBIQEhASEDQRNBA0EAADgQABEIkRERE0EDQQExASETIQEw82DzQREhASDzUQMxATEDQQEw4TEBIQNQ81DzYOEhATERIONg81DxMPEhESDzUQNBA1DgANBQ==",
        "on": "JgDYAAABD4oPExEzDzUQEhASEDQQExA0EDQRERERDzYQMxERETQQEg8TEBIRMxA1EDQPEhESEREQNQ80ERERERESEDUONREzEAADggABD4oPExA0ETMREhASEDQQEhA1DzUQEhAREDURMxASDzURERERERIQNBA0ETMQEhATEBIQMxE0EBIQEhASEDQRNBA0EAADgQABEIkRERE0EDQQExASETIQEw82DzQREhASDzUQMxATEDQQEw4TEBIQNQ81DzYOEhATERIONg81DxMPEhESDzUQNBA1DgANBQ==",
        "volumeDown": "JgDcAAABEIoQEhA0ETMQEhESEDMQEhE0EDQREhARETMRNBASETMREREzEDUPEw81EREREQ8TEBMQEhASEDQQEg81EDUQMxE0EAADhgABEIkRERE0EDQQEhASETMQEhA1EDMREhERETMQNQ8SETQRERA0EDQQEhA1EBIPExASEBMPEhERETQQEhA0EDQRMxA1EAADhgABEIkREQ82EDMQEhESETMQEhA0EDQREhASEDQQNBERETQQEhAzETQREQ82DxMQEhARERIRERASEDUQEhAzETQQNBA0EAACtAQADQU=",
        "volumeUp": "JgAgAQABD4oQEw80ETMPFBASETIQExEzEDUPEhATDzUQNBARETQQEhASETQREBE0DxMQEhASDxMRMxASDzYQEhA0EzEQNRAzEQADhgABEIkRERA1DzUPEhESEDQQEhA0ETMREg8UDzQQNBERDzYPExAREDUQEhA0EBMQEhARERIQNA8TDzUQEhEzEDUQMxA1EAADhgABEIkQExEyEDURERASDzYQERE0EDQPExEQETQRNA8TEDQQEhERETMQEw80EBIREhASEBIPNRERETMQEw81EDQQNBA1DwADhwABEIkQERE0ETQPExASEDQQEhA0EDQRERERETQQNQ8SETMPExATDzUQERA1DxMQEg8UDxIRNA8TEDUPERE0EDQQNQ80EQANBQ==",
        "play": "JgDYAAABEIkRERA1EBIQERASETQQEhA1EDMRERA1EDMRNBEREDUQEg80ETQQNBASEDQRERATEBIQEhAREBMRMxASEDQQNBE0EAADjAABEYgRERA1EBERERESEDQQEhA0ETMQExA0EDMRNBASEDQQEhE0DzUQMxESETMQEhATEBEQEhESEBIQNA8TEDQRMxA1DwADjQABEIkQEhA0EBIQEw8TEDQPEhE0DzUQEw80ETQQNA8TEDQRERE0EDMRNBERDzUQExAREBIRERATEBIQMxESETMQNRAzEAANBQ==",
        "pause": "JgDYAAABEIkQEhA0EBIRERASETQQEhAzETQREQ82EDMRNBEREDQQExARERERERA1EDMREhEREREQNRAzETMSERASDzYQMxE0EAADjAABD4kREhA0EBIQEhEREDQQEw81EDQREREzEDUQMxESEDQPExASERERERE0EDQQERESERERMxA1EDMREg8TDzUQNBEzEAADjAABEIkRERE0EBIQEhASETMQEhA1EDMREhEzEDQQNBERETQQEhASDxIREhEzDzYQEg8SERERNBA0EDQRERERETQQMxE0EQANBQ==",
        "stop": "JgCUAAQABLsAARCJEBIQNBEREREREhA0EBIQNBEzEBMQNBA0ETMQEhA0EREQEhE0EDQQEhEzEBIQExASEDMREhERETMQEw80ETMQNRAAA40AARCJEBIQNBASERERERE0EBIQMxE0EREPNhAzETQQEhA0EBIREREzEDUPExA0ERERERASEDUQERASETQQEhA1EDMQNBEADQU=",
        "previousChannel": "JgDYAAABDosQEhAzERIRERASDzYPEhEzETQQEhA0ETMQNRASEDMREhA0DxMQEhASETMQExASEBIQERE0DzUQNBEREjMPNQ81EQADfgABEYgPExA0EBIRERESEDQPExA0ETMQExAzETQQNA8TEDQRERE0EBIPEw8SETQQEhASEBMQEREzETQQMxESETMPNhAzEAADgAABEIkPExA0EBIREREREDUQEhAzETQQEhA0ETMRNA8TEDMREhA0EBIPFBARETMREg8TEBIQEhA0ETMPNhAREDUQNA81EQANBQ==",
        "nextChannel": "JgDYAAABEYgQEw81EBERERESEDQQExAzETQPExA0DzURMxESEDMRERESEREQEhASEDQQEhEREBMPNRA0ETMQNRASEDMRNA81EAADfwABEIkREhA0EBIQEw8SETMREhA0DzUREREzEDUQMxESETMQEhATDxIRERERETQQEhASEBIRMxA1DzQQNREREDQQNBA0EAADgAABEIkQExAzEREREg8TEDQQEhEzEDUQEhAzETQQNBATEDMRERESEBIQEg8TEDQQEhASEBMQNBA0ETMQNRARETQQNBA0EAANBQ==",
        "sources": {}
    }
}

@fulippo fulippo marked this pull request as ready for review October 30, 2025 19:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants