Hi all. My media setup had collected four different remotes, and the Shield remote has a Netflix button that my thumb accidentally finds every single time. Opening an app on my phone just to pause a film or dim the lights never felt right either. And since Logitech discontinued Harmony, plenty of people seem to be looking for something to replace it.
So I built PARAM KEY: a tactile, one-handed smart universal remote for Home Assistant.
The idea
Home Assistant already knows all my devices, so the remote shouldn’t need its own device database, hub, or cloud account. It’s a thin, local front end for HA. Anything HA can control, PARAM KEY can control—and for older gear HA can’t reach, it has a built-in IR blaster (and, on v2, an IR receiver to learn codes from your old remotes).
What it is
- ESP32-S3 running ESPHome, 2.0" screen, 20 physical buttons (d-pad, volume, media keys, and 4 context-aware hotkeys whose labels show live on the screen).
- IR blaster that works as one of Home Assistant’s new IR entities, plus an IR receiver to learn codes from your old remotes (WIP).
- USB-C for charging and for flashing your own custom firmware.
- Instant response & weeks of battery: It communicates over ESP-NOW to a companion bridge (any ~$10 generic ESP32, flashed from the browser in a minute). Because it doesn’t stay associated to Wi-Fi, it deep-sleeps on the table, wakes instantly when picked up via an onboard accelerometer, and gets about 2-3 weeks per charge depending on usage.
- Secure by default: every key press is encrypted and authenticated with the remote’s own key. Pairing shows the same 6-digit code on the remote and in HA, so nobody nearby can sneak in.
How you set it up
- Flash the bridge from your browser (any ESP32, no YAML), install the integration from HACS, and pair the remote by checking the code. Home Assistant finds the bridge and the remote on its own.
- Give the label
remoteto the entities you want in HA, and they appear in its device list. - Key mappings live in HA, not in the firmware: press, long press, menus and sub-menus. Change them in HA and the remote picks them up without reflashing.
- The HACS integration (param-key-homeassistant) already does setup, pairing and IR.
Where it’s at right now
- v1: Rock-solid in daily living room use for over 3 weeks. IR sends codes from Home Assistant’s own IR library (NEC, Samsung, Sony, RC5/RC6, Pronto), so HA’s IR integrations can use the remote as their blaster.
- v2 board: going to fab. The new additions are the IR learning receiver and a slimmer, sturdier case refined with FEA.
- Next up: Room awareness. Drop an inexpensive bridge in other rooms, and the remote automatically switches layouts and devices to whichever room you walk into.
The ESPHome firmware and Home Assistant integration are 100% open source (MIT) on GitHub: github.com/paramworks-git/param-key.
Reference schematics, pinouts, and 3D printable case STLs are published there as well. The hardware itself is designed as a ready-built product, so production board CAD and fabrication files remain proprietary.
Motivation
My media setup has several inputs, a DSP, and so on, so the default layout is built around media, and I would love to see what the community does with it. My target is to offer a ready-built remote + bridge for under $150 (and potentially an assembled PCB kit for makers who prefer to 3D print their own case). Before ordering production batches, I wanted to share it with the community and see if there’s real demand.
I would love to hear from the community
-
What would you put on the four contextual hotkeys?
-
Would you rather have a finished remote or an assembled board kit where you print your own case?
- Finished remote, ready to use
- Assembled board, I’ll print my own case
- Just following along
- What’s the #1 device you’d want it to control that your current remote can’t?
If you’d like to try an early unit, there’s a short sign-up form at https://paramworks.com.
It only asks for your email, and I’ll email when beta units are ready. Feedback, ideas, and constructive criticism are very welcome here or on GitHub!
Thank you for checking it out! ![]()
This started as a Reddit post. Thanks to everyone there, your feedback is what pushed me to refine it and launch.



