I would like to throw another alternative into the suggestion box.
I use OpenRemote to control IR around my house using several Global Cache IP2IR boxes. It works great!
A couple of caveats. it does require a computer that is always on and with a fixed iP address to use as a server. It also requires quite a bit of programming, but the results are worth it.
To get started, you create a free account on openremote.org. Then you design your interface using the online web tool. You can design multiple formats for different deivices and screen resolutions. Once you have designed the layout of your remote, you then have to add the remote commands. Global Cache has an online database where most of the common ones are found. Otherwise you need to either learn the commands or find the IR HEX commands elsewhere. Global Cache has solutions to learn any remote control signal to be used. They also have tools that will convert IR codes between different manufacturers formats.
After the remote app is designed, you download the small server program to the computer you want to use as a server. The correct java version is required to run the server. The server runs in a command prompt window using a batch run command. You login to the openremote server and it downloads the designed template to the server. This only needs to be done once, or if you change your design.
You can then install a Global Cache IP2IR box at any location that you need IR signals. You can use one or multiple depending on your situation. They have wired as well as wireless boxes. The IR commands that you use in the online design determine the IP address and Output port of the IP2IR box. Because of this you can use multiple devices that share the same IR codes. Just put the devices on different ports or different boxes. This also solves the problem of devices that react to codes of another device.
I have been using this solution for a couple of years now and it works great. They have both Android and IOS apps available.