Optoma UHL55 Projector - Best Way to Control in HA

I have a Optoma UHL55 and I am trying to figure out the best way to control this in Home Assistant

The projector is meant to have Amazon Alexa control via an Alexa Skill but it is really unreliable and constantly locks up requiring the network connection to be disconnected and reconnected to get it working again. The unit has been sent back to the manufacture and updated with the latest firmware but the Alexa control still doesn’t work. I gave up on using this a long time ago and it was so unreliable.

Ideally, I would like to control it locally over the network, but I have not been able to find any details on an API that can do this.

The projector can also be controlled by a Bluetooth/IR remote control.

I have purchased two Broadlink devices (one from Amazon UK and one from AliExpress) but after hours of trying on both Broadlink devices (via Home Assistant) I have only been able to learn one of the IR buttons on the projector remote, whilst all the others have just timed out after hundreds of attempts trying.

The project manual provides details on the IR codes used

Does anyone know of a way to convert this table information into a Broadlink IR code format that can be used on Home Assistant?

The manual even provides the Bluetooth codes that the remote uses, but I am not sure if Bluetooth control via HA would be possible?

I’m new to HA but I believe I would need to create some sort of TV template in HA so that it would be exposed and controllable in Alexa, is this right? Any help and suggestions on how to control this device in Alexa via Home assistant is greatly appreciated.

I’ve tried the following code pulled from another Optoma model but the logs shows that the telnet fails to connect to the projector so I guess that direct IP control is not possible on this model which is a real shame

# Projector
switch:
  - platform: telnet
    switches:
      projector:
        name: Projector
        resource: 192.168.0.209
        port: 23
        command_on: "~0000 1\r"
        command_off: "~0000 0\r"
        command_state: "~00150 1\r"
        value_template: '{{ "Ok1" in value }}'
        timeout: 1.0