esp8266-benq-rs232-mqtt
Objective: Control this BenQ TH530 projector via its RS232 interface with an ESP8266, MQTT and openHAB.
Features
Installation
1️⃣ Required hardware
- ESP8266 (I used a Wemos D1 Mini)
- RS232 to TTL converter with female DB9
2️⃣ ESP8266 and RS232 to TTL converter
- Wire ESP8266 and RS232 to TTL converter.
(ESP → TTL)
G → GND
5V → VCC
D4 → TXD
RX → RXD - Add your MQTT broker & WiFI credentials to the
esp8266-benq-rs232-mqtt.ino
sketch, then flash it to your board. - Plug the DB9 connector to the
RS232
port of the projector.
3️⃣ openHAB (optional)
- Make sure you have the JsonPath transformation service, MQTT binding and a MQTT broker installed.
- Create a new Generic MQTT thing, choose
34c510f090:20807f1aae
as the identifier. - Edit the new thing, paste the contents of
benq_thing.yaml
in the 'Code' tab and save. - Place
benq.items
in youropenhab-conf/items
folder (e.g./etc/openhab/items
) - Place
benq.sitemap
in youropenhab-conf/sitemaps
folder or paste the contents to your existing sitemap.
4️⃣ Google Assistant via openHAB (optional)
- Complete the openHAB steps above.
- Connect your openHAB instance to the openHAB Cloud connector.
- Expose the newly created projector items to the openHAB Cloud (Settings → openHAB Cloud → Items to Expose).
- Ask Google Assistant to "Talk to openHAB" to link your openHAB Cloud account to your Assistant.
TV
device will appear in your Google Home app and you can now control the projector via the app or with voice commands such as "mute my TV".
MQTT implementation
stat
topics are published by the module and contain status messages. cmnd
topics are used to execute commands on the projector.
Topic | Payload | Comment |
---|---|---|
stat/projector/STATUS |
{"POWER":"ON","SOURCE":"HDMI","VOLUME":4, "LAMP_MODE":"ECO","LAMP_HOURS":105,"MUTE":"OFF"} |
Every 5 seconds |
cmnd/projector/POWER |
ON , OFF |
Power on / off |
cmnd/projector/SOURCE |
HDMI , SVID , VID , RGB , RGB2 |
Set source |
cmnd/projector/VOLUME |
0 ...10 |
Set volume |
cmnd/projector/MUTE |
ON , OFF |
(Un)mute |
cmnd/projector/LAMP_MODE |
LNOR , ECO , SECO , SECO2 |
Set lamp mode |
cmnd/projector/COMMAND |
See BenQ docu, e.g. VOL=? |
|
stat/projector/COMMAND |
{"COMMAND":"...","RESPONSE":"..."} |
Returns result of above |