WTH cant i store learn3d ir code as some kind of helper or object?

Why cant learned codes automatically become some kind of helper or a pseudo device per remote with multiple codes under one object?

This would help over just keeping teack of multiple strings that arent tied to anything specific

They can.

remote:
  - platform: itach
    host: 10.1.1.9
    devices:
      - name: Lounge TV
        modaddr: 1
        connaddr: 1
        commands:
          - name: "ON"
            data: "0000 0071 0000 0064 0080 003F 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0030 0010 0030 0010 0030 0010 0030 0010 0010 0010 0010 0010 0010 0010 0030 0010 0030 0010 0030 0010 0030 0010 0030 0010 0010 0010 0030 0010 0A99 0080 003F 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0030 0010 0030 0010 0030 0010 0030 0010 0010 0010 0010 0010 0010 0010 0030 0010 0030 0010 0030 0010 0030 0010 0030 0010 0010 0010 0030 0010 0E55"
          - name: "0"
            data: "0000 0070 0000 0064 007F 0040 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0030 0010 0030 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0030 0010 0030 0010 0010 0010 0010 0010 0030 0010 0AB7 007F 0040 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0030 0010 0030 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0030 0010 0030 0010 0010 0010 0010 0013 0030 0010 0E5E"
          - name: "1"
            data: "0000 0070 0000 0064 007F 0040 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0030 0010 0AB5 007F 0040 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0030 0010 0E5E"
          - name: "2"
            data: "0000 0070 0000 0064 007F 0040 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0030 0010 0ABF 007F 0040 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0010 0010 0030 0010 0010 0010 0010 0010 0030 0010 0E5E"
          - name: "3"
            data: etc...

Other remote integrations are here: Integrations - Home Assistant

That documentation doesn’t make sense compared to what i see in your yamk. How is that populated if you cant create a remote. What if i want more than just on and off? Wth cant i just make a remote helper and have the recive ir action add to it and build it out kike that?

I have a broadcom unit and i have to go dig in obscure text files to manipulate this stuff

Did you mean “Broadlink”?

If so, it has the same remote component but stores the codes in the registry rather than YAML. See: https://www.home-assistant.io/integrations/broadlink/#remote The commands are used exactly the same way though, e.g.

script:
  tv_menu:
    sequence:
      - action: remote.send_command
        target:
          entity_id: remote.bedroom
        data:
          device: television
          command: menu

So if you forget what you called your command you can look it up in config/.storage/roadlink_remote_MACADDRESS_code but you only need the command name and device to use it, not the full base64/binary code.

If you look closely you will see in my clipped example above there are many codes for digit buttons (0 to 3) as well as the “on” command. You can learn and store whatever commands you need.

I think i worded this poorly. What id like to see is learned codes viewable inside home assistant easier.

When you learn multiple codes for the same device it would be nice if that device was a viewable thing in home assistant like a generic remote populated with all the commands youve learned that you can then use.

Example:

I just leared all the commands for my soundbar remote and it would be great if there was now a remote soundbar device i could view and use in home assistant vs having to dig into the filesystem to remember what i named the device and command if i want to use it later.

The current system while workable is extremely tedious and id just like it to be easier.

Learn a command → create a “dummy” remote or assign to already existing dummy remote

Send a command → select a dummy remote and all learned commands are shown in a list or dropdown → select one or multiple and run them

Maybe even allow us to build macros or command chains that could also be saved or created later → send command 1 wait x time then send command 2 y amount of times etc

Add a generic/dummy remote device integration to se a liat of all the learend remotes and select one to see and run all the commands on it → maybe prompting for which blaster to send the command with or that would be a serting of the dummy remote object by default.

Does this make sense? Should i resubmit this now that I’ve hopefully better explained myself?

Keep in mind that is just the Broadlink integration. For other remotes (e.g. Global Cache Itach or Flex) you look at yaml rather than the .storage registry. e.g.

Learn: Get learned code using Itach software-> paste in to required remote configuration command YAML.

Use: Look up command in remote yaml and use as per script example above.

Which I guess isn’t that much different.

Having a remote entity that has all the devices and commands available via the UI is a good idea. You’ve convinced me. You get my vote.

It would be extremely handy if the Broadlink integration (for example) could automatically create and display Button entities for all the learned commands. It would be a good visual feedback that the command was learned successfully, make testing more user friendly, and help those of us that forget what we named commands back when we saved them years ago.

Note, you can do this manually in the UI today by creating “template button” helpers (e.g. one for each command) that link back and are displayed on the broadlink device page. But I can’t think of any reason why this shouldn’t be done automatically (other than most people would default to calling button.press instead of remote.send_ command, the latter which still has several useful options like repeat/delay/hold).

Using these helpers, though, you can go further and define a string of actions to be taken when the “button” is pressed, including sending multiple commands, waiting, etc, — basically a script in a button.

1 Like

Yes, what they said