Network Control for BenQ CinePrime Projector

I recently installed a new CinePrime HT5550 digital projector and noticed it has network control. However, it seems to only be controllable in a browser with a cough cough flash player.

I looked at the network requests using browser tools in an old portable Firefox but I don’t see any network requests when issuing commands so I’m not really sure where to go next in figuring out how to control this thing over the network without an ancient flash-enabled browser.

It appears to be using Creston Control but trying a curl like in the docs here returns an error response

curl -X GET "http://192.168.1.194/VirtualControl/config/api/DeviceInfo" -H "accept: application/json" 
<html><head><title>Document Error: Site or Page Not Found</title></head>
<body><h2>Access Error: Site or Page Not Found</h2>
when trying to obtain <b>/VirtualControl/config/api/DeviceInfo</b><br><p>Cannot open URL</p></body></html>

Well Crestron is only for Crestron automation systems (proprietary) but the projector can be controlled by RS-232 (codes are documented in installation guide :wink: Mode d'emploi du W5700 | BenQ France

Yeah RS-232 is starting to look like a better approach but my HA rpi is not close by so I would need something else to control it over serial :confused:

While looking over this document for other BenQ projectors I saw that some support PJLink. A quick DuckDuckGo search to find out what PJLink is lead me to discover there’s already an integration! I turned on the network standby on my projector, configured the integration in YAML, restarted my home assistant, and the new entity popped up and bingo! I can turn it on/off and change the input! That’s all I really need :slight_smile:

Ouh excellent :wink: Nice to hear to works well and nice to discover that an integration existed for PJLink :sunglasses:

1 Like

How were you able to add your projector through PJLink integration? I just can’t do it. The object does not appear.

pjlink: Error on device update!
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 707, in _async_add_entity
    await entity.async_device_update(warning=False)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1295, in async_device_update
    await hass.async_add_executor_job(self.update)
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/pjlink/media_player.py", line 128, in update
    self._attr_available = self._setup_projector()
                           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/pjlink/media_player.py", line 102, in _setup_projector
    inputs = projector.get_inputs()
             ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pypjlink/projector.py", line 210, in get_inputs
    param = self.get('INST')
            ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pypjlink/projector.py", line 132, in get
    success, response = protocol.send_command(self.f, body, '?', self.encoding)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pypjlink/protocol.py", line 71, in send_command
    resp_body, resp_param = parse_response(f, encoding)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/pypjlink/protocol.py", line 43, in parse_response
    assert sep == '='
AssertionError

I’ve noticed my projector hasn’t shown up in quite some time now. I know it’s been buggy since the start. There was an update a few versions back that added some retry logic but lately I’ve kind of given up and just use the remote :slightly_frowning_face: