Skip to content

Latest commit

 

History

History
119 lines (94 loc) · 6.76 KB

README.md

File metadata and controls

119 lines (94 loc) · 6.76 KB

cec-mqtt-bridge

A HDMI-CEC and IR to MQTT bridge written in Python 3 for connecting your AV-devices to your Home Automation system. You can control and monitor power status and volume.

Features

  • HDMI-CEC
    • Power control and feedback
    • Volume control (up/down/specific) and feedback
    • Relay HDMI-CEC messages from HDMI to broker (RX)
    • Relay HDMI-CEC messages from broker to HDMI (TX)
  • IR
    • Relay IR keypresses from IR to broker (RX)
    • Relay IR keypresses from broker to IR (TX)

Dependencies

Install on Raspbian bullseye

If there is not a MQTT broker already on your network

sudo apt-get install mosquitto

Install python dev packages, lirc, cec & paho-mqtt modules

sudo apt-get update
sudo apt-get install build-essential git lirc python3 python3-dev python3-setuptools python3-pip python3-wheel python3-build python3-venv python3-paho-mqtt python3-cec
sudo pip install /usr/share/lirc/lirc-*.tar.gz
git clone https://github.com/michaelarnauts/cec-mqtt-bridge.git
cd cec-mqtt-bridge/
./contrib/debian-ubuntu-install.sh
sudo vi /etc/cec-mqtt-bridge.ini
sudo systemctl restart cec-mqtt-bridge

to update

cd cec-mqtt-bridge/
git pull
./contrib/debian-ubuntu-install.sh

MQTT Topics

The bridge subscribes to the following topics:

topic body remark
prefix/cec/device/laddr/power/set on / standby Turn on/standby device with with logical address laddr (0-14).
prefix/cec/device/laddr/active/set yes / no activate/deactivate device with with logical address laddr (0-14).
prefix/cec/audio/volume/set integer (0-100) / up / down Sets the volume level of the audio system to a specific level or up/down.
prefix/cec/audio/mute/set on / off Mute/Unmute the the audio system.
prefix/cec/tx commands Send the specified commands to the CEC bus. You can specify multiple commands by separating them with a space. Example: cec/tx 15:44:41,15:45.
prefix/ir/remote/tx key Send the specified key of remote to the IR transmitter.

The bridge publishes to the following topics:

topic body remark
prefix/bridge/status online / offline Report availability status of the bridge.
prefix/cec/device/laddr/type on / off Report type of device with logical address laddr (0-14).
prefix/cec/device/laddr/address on / off Report physical address of device with logical address laddr (0-14).
prefix/cec/device/laddr/active yes / no Report active source status of device with logical address laddr (0-14).
prefix/cec/device/laddr/vendor string Report vendor of device with logical address laddr (0-14).
prefix/cec/device/laddr/osd string Report OSD of device with logical address laddr (0-14).
prefix/cec/device/laddr/cecver string Report CEC version of device with logical address laddr (0-14).
prefix/cec/device/laddr/power on / standby / toon / tostandby / unknown Report power status of device with logical address laddr (0-14).
prefix/cec/device/laddr/language string Report langauge of device with logical address laddr (0-14).
prefix/cec/audio/volume integer (0-100) / unknown = 127 Report volume level of the audio system.
prefix/cec/mute/status on / off Report mute status of the audio system.
prefix/cec/rx command Notify that command was received.
prefix/ir/remote/rx key Notify that key of remote was received. You have to configure key AND remote as config in the lircrc file.
prefix/ir/rx key Notify that key was received. You have to configure key in the lircrc file. This format is used if the remote is not given in the config file.

id is the address (0-15) of the device on the CEC-bus.

Examples

  • mosquitto_pub -t media/cec/volup -m ''
  • mosquitto_pub -t media/cec/tx -m '15:44:42,15:45'

Configuration

You can either copy config.default.ini to config.ini and adjust its properties, or alternatively declare any of those as environment variables using the format SECTION_KEY (e.g., MQTT_USER).

Interesting links