# Broadlink Manager - Modern Web Interface for Broadlink Devices

I’m excited to share a new add-on I’ve been working on that makes managing Broadlink IR/RF devices much more user-friendly!

What is it?

Broadlink Manager is a Home Assistant add-on that provides a modern, responsive web interface for managing your Broadlink devices. It solves the pain points of the default integration by making command learning and management intuitive and visual.

Key Features

:dart: Easy Command Learning - Point, click, learn. Real-time feedback shows when commands are captured
:file_folder: Smart Organization - Organize commands by area/room and device
:test_tube: Instant Testing - Test any learned command with a single click
:robot: Auto Entity Generation - Automatically create Home Assistant entities from your learned commands

  • Supports lights, fans, switches, and media players
  • Uses smart naming detection (e.g., light_on, fan_speed_1)
  • Generates proper YAML with helper entities
    :electric_plug: No External Dependencies - Works entirely within Home Assistant
    :floppy_disk: Direct Storage Access - Reads from HA’s storage, so all existing commands are available immediately

Why I Built This

The default Broadlink integration is powerful but not very user-friendly. Learning commands requires calling services manually, testing means more service calls, and organizing commands means editing JSON files. I wanted something that “just works” with a proper UI.

Installation

  1. Add the repository to your add-on store:
    GitHub - tonyperkins/homeassistant-broadlink-manager

  2. Install “Broadlink Manager”

  3. Start the add-on

  4. Access via sidebar or http://homeassistant.local:8099

Screenshots





What’s Next?

I’m actively developing this and would love feedback! Planned features include:

  • Climate entity support (AC units)
  • Cover entity support (blinds, curtains)
  • Bulk command operations
  • Command templates/presets

Links

Let me know what you think! Happy to answer questions or take feature request

6 Likes

For some reason I learnt all the commands for the 2 ceiling fans in my living room, however, it’s not creating the entities.

Broadlink Manager Diagnostics

Generated: 2025-10-29T22:06:06.490147

System Information

  • Platform: Linux
  • Python Version: 3.11.12
  • Architecture: aarch64

Key Dependencies

  • broadlink: 0.19.0
  • flask: 3.1.2
  • aiohttp: 3.13.1
  • pyyaml: 6.0.3
  • Total Packages: 40

Configuration

  • Storage Path: /config/broadlink_manager
  • Storage Exists: :white_check_mark:
  • Log Level: info
  • Web Port: 8099

Home Assistant Connection

  • Configured: :x:

Devices

  • Total Devices: 2
  • Broadlink Entities: 0
  • SmartIR Devices: 0

Devices by Type

  • fan: 2

SmartIR Profiles

  • Custom Profiles: 0
  • Device Index: :white_check_mark: Present

Storage

  • Storage Path Exists: :white_check_mark:

Files

  • devices.json: 9578 bytes
  • devices.json.backup: 9578 bytes
  • metadata.json: 930 bytes
  • metadata.json.backup: 621 bytes
  • entities.yaml: 138 bytes
  • helpers.yaml: 832 bytes

Backups

  • devices.json.backup: :white_check_mark: (0.1 hours old)
  • metadata.json.backup: :white_check_mark: (279.9 hours old)

Permissions

  • Storage Readable: :white_check_mark:
  • Storage Writable: :white_check_mark:
  • Config Writable: :white_check_mark:

Command Files

  • living_room_fan_right: 5 commands
  • living_room_left: 5 commands

Total Commands: 10

I have the same Problem, but with lights!!

If you don’t mind opening a ticket here I’ll give it a look.

Also, please let me know if you are on the latest version and share the log output from the app if possible.

I’ll try to see why I didn’t get notification of your posts here and fix that.

Cheers

I have raised a bug with the logs attached. Yes I’m on whatever the latest version is

Selected saved destinations as Both. Commands apparently learnt as the IR codes are added to appropriate Broadlink device in HA .storage. However, in Web interface Managed Devices for all “learnt” commands it says “Error: Command failed to lear. Delete and try again.” I have posted as an issue on Github

Thank you very much for the great addon. I was able to add a Climate AC via SMartIR presents. When using the WebUI and testing it does the correct signal broadcast, however I cannot seem to see the entities in Home Assistant. Sorry if i misunderstood any steps for installation .
Below is the Diagnostics:

Broadlink Manager Diagnostics

Generated: 2025-12-20T20:26:14.520300
App Version: unknown

System Information

  • Platform: Linux
  • Python Version: 3.11.12
  • Architecture: aarch64

Key Dependencies

  • broadlink: 0.19.0
  • flask: 3.1.2
  • aiohttp: 3.13.2
  • pyyaml: 6.0.3
  • Total Packages: 0

Configuration

  • Storage Path: /config/broadlink_manager
  • Storage Exists: :white_check_mark:
  • Log Level: info
  • Web Port: 8099

Home Assistant Connection

  • Configured: :x:

Devices

  • Total Devices: 1
  • Broadlink Entities: 0
  • SmartIR Devices: 1

Devices by Type

  • climate: 1

SmartIR Profiles

  • Custom Profiles: 0
  • Device Index: :white_check_mark: Present

Storage

  • Storage Path Exists: :white_check_mark:

Files

  • devices.json: 483 bytes
  • devices.json.backup: 483 bytes
  • metadata.json: :x: Missing
  • metadata.json.backup: :x: Missing
  • entities.yaml: :x: Missing
  • helpers.yaml: 85 bytes

Backups

  • devices.json.backup: :white_check_mark: (0.7 hours old)
  • metadata.json.backup: :x: Missing

Permissions

  • Storage Readable: :white_check_mark:
  • Storage Writable: :white_check_mark:
  • Config Writable: :white_check_mark:

Response from the AI tool I use.

The entities are created by the SmartIR integration , not directly by Broadlink Manager. Here’s what you need to do:

  1. Install SmartIR via HACS if you haven’t already: GitHub - smartHomeHub/SmartIR: Home Assistant integration to manage climate systems, TVs, fans and lights using IR/RF controllers. Compatible with Broadlink, Xiaomi, MQTT, LOOKin and ESPHome
  2. Restart Home Assistant after creating the device in Broadlink Manager
  3. Check for the entity in Developer Tools → States (search for your device name)

Broadlink Manager generates the configuration file (

climate.yaml), but SmartIR reads that file and creates the actual entity. The WebUI test works because it sends the command directly via the Broadlink remote, but the climate entity is created by SmartIR.

If you’ve done all this and still don’t see the entity, check:

  • Home Assistant logs for SmartIR errors
  • The YAML file exists at climate.yaml
  • The controller_data field has the correct Broadlink remote entity ID
1 Like

Great add-on, but I’m running into a few issues with some entities.

For example, I’m using Broadlink Manager v2 and a couple problems came up:

  1. Custom commands don’t work at all - it doesn’t even create the commands in the YAML (for example, i try to have light with diff tones and it doesnt add it…)
  2. Brightness is bugged - if I go over 50% brightness I get an error saying it can’t go above 100, but when I hit 100% brightness the value shows as 255

I’m not able to test all scenarios but I have pushed a new release in an attempt to address these issues. Please test and let me know how it goes.

Thanks.

What a fast response, YOU ARE THE BEST
Works great! thanks!

Thanks for the kind comment and confirmation that the issue is resolved. Please let me know if you run in to any additional issues.

1 Like

Hello you beautifull people :slight_smile: Love this little tool, Thanks.

I can get IR not working but RF wont work at all, I have tested that I can do it via the app, I just can’t not for the life of me get it to learn un HA :frowning: thanks legend :slight_smile: awesome job

Are you able to learn commands just using the broadlink add-on? The one where you have to go and manually call the service?

When learning RF it’s a two step process. When you click on learn be sure to keep an eye on the notifications. You’ll see a noticiation indicator show up

When you see that you press and hold the button to be learned for about 12 seconds. You’ll then see that “1” go away. Release the button at this point and you’ll see it come back again. At this point you just press and release and you should see the notification go away again.

Unfortunately learing RF is a two step process where the broadlink integration calls the sweep first and then the press/release.

I forgot to mention you can open the notifications tab to see the actual message/instruction coming from the integergration. My app, the manager just integrates with the integration to try and make things a bit easier to use.

1 Like

I may be doing something wrong but when I create a device via smart ir, the “Climate.yaml” is created on homeassistant/smartir/ but everything on the actual smart ir integration y created on /homeassistant/custom_integrations/smartir/ is there a configuration where I can tell Broadlink manager that my smart ir integration is?

You’re seeing two different directories, and that’s completely normal! Let me clarify what each one does:

smartir - Device Configuration Files

  • This is where Broadlink Manager creates your device configuration files (climate.yaml , fan.yaml , etc.)
  • These files tell Home Assistant “create a climate entity using SmartIR profile code 1000”
  • These files need to be included in your configuration.yaml like this:

yaml

climate:

  • !include smartir/climate.yaml

/config/custom_components/smartir/ - SmartIR Integration

  • This is where the SmartIR integration itself is installed (via HACS)
  • Contains the integration code and the JSON profile files with actual IR codes
  • You don’t need to configure this path - it’s automatic

How it works:

  1. Broadlink Manager writes device configs to climate.yaml
  2. Home Assistant reads this file when it starts up
  3. The SmartIR integration (from custom_components/smartir/ ) automatically processes these configs and creates your entities
  4. SmartIR knows where to find its own profile files - no configuration needed

You don’t need to tell Broadlink Manager where SmartIR is installed. The two directories serve completely different purposes and work together automatically. Just make sure:

  • :white_check_mark: SmartIR is installed via HACS
  • :white_check_mark: Your configuration.yaml includes the files from smartir
  • :white_check_mark: You’ve restarted Home Assistant after creating devices

Everything should work automatically from there!