GithubHelp home page GithubHelp logo

rokmohar / cec-mqtt-bridge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from michaelarnauts/cec-mqtt-bridge

1.0 0.0 0.0 925 KB

A HDMI-CEC to MQTT bridge for connecting HDMI-CEC-devices to your Home Automation system.

Python 97.47% Dockerfile 2.53%

cec-mqtt-bridge's Introduction

cec-mqtt-bridge

A HDMI-CEC / 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

  • CEC
    • Power control
    • Volume control
    • Power feedback
    • Relay CEC messages from HDMI to broker (RX)
    • Relay 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

MQTT (required)

HDMI-CEC (optional)

IR (optional)

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).

Lirc

You need a lircrc config file. This can be generated from the lircd.conf of your lirc daemon using the script create_lircrc.py. Simply call this script with the lircd.conf path as first argument. It will print the lircrc contents to stdout and can be easily written to a file:

$ ./create_lircrc.py /etc/lirc/lircd.conf > lircrc

If you write your own lircrc file, notice that the config parameter for each configuration is what is given to the bridge. It is assumed that it is in the format <remote>,<key>. If only one value is given, the remote is expected to be omitted.

The lircrc format (that would be generated by the create_lircrc.py script) should look like:

begin
  remote = <remote-name>
  button = <key-name>
  prog = cec-ir-mqtt
  config = <remote-name>,<key-name>
end

To only get the key (without the remote name in the MQTT topic) use the format without the remote in the config:

begin
  remote = <remote-name>
  button = <key-name>
  prog = cec-ir-mqtt
  config = <key-name>
end

MQTT Topics

The bridge subscribes to the following topics:

topic body remark
prefix/cec/id/cmd on / off Turn on/off device with id id.
prefix/cec/cmd mute / unmute / voldown / volup Sends the specified command to the audio system.
prefix/cec/volume/set integer (0-100) Sets the volume level of the audio system to a specific level.
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/id on / off Report power status of device with id id.
prefix/cec/volume integer (0-100) Report volume level of the audio system.
prefix/cec/mute 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'

Interesting links

cec-mqtt-bridge's People

Contributors

michaelarnauts avatar connorgriffin avatar heikomat avatar janlo avatar jonaseck2 avatar renemarc avatar rokmohar avatar endor-force avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.