mqtt2tivoremote
v1.1.0
Published
Make TiVo DVR remote control available through an mqtt-smarthome style interface.
Downloads
7
Maintainers
Readme
mqtt2tivoremote
Make TiVo DVR remote control available through an mqtt-smarthome style interface
mqtt2tivoremote
is a Node.js application that links TiVo DVRs to an MQTT broker. It is designed to be used to integrate these devices into a home automation system à la mqtt-smarthome.
Getting Started
mqtt2tivoremote
is distributed through NPM:
npm install -g mqtt2tivoremote
# or, if you prefer:
yarn global add mqtt2tivoremote
Running it is likewise easy:
mqtt2tivoremote # if your MQTT broker is running on localhost
mqtt2tivoremote -b mqtt://<hostname> # if your broker is running elsewhere
mqtt2tivoremote --help # to see the full usage documentation
Topics and Payloads
This app is intended to conform to the mqtt-smarthome architecture. The topics used by the app are generally of the form:
Topics Published
| Topic | Purpose |
|----------------------------------|----------------------------------------------------------------------------------|
| tivoremote/connected
| 0 = not connected to anything1 = connected to MQTT but not DVR2 = connected to both.
| tivoremote/status/channel
| JSON encoded current channel informationschema: { channel: num, subchannel: num, reason: string }
| tivoremote/status/livetv_ready
| When a teleport to Live TV is attempted, this will be set to false.When LiveTV is being displayed, this will change to true.
| `tivoremote/status/error | A string containing information about the most recent error to occur.
Topics Subscribed
For performance reasons, no argument checking is done: if you pass in an invalid IR code, for instance, it will still get sent to the DVR.
| Topic | Purpose |
|----------------------------------|----------------------------------------------------------------------------------|
| tivoremote/set/ircode
| Set to one of the valid IR codes to send that command to the DVR. No acknowledgement or confirmation will be returned.
| tivoremote/set/keyboard
| As above, but for keboard commands rather than IR codes.
| tivoremote/set/teleport
| Set to one of TIVO, LIVETV, GUIDE, or NOWPLAYING to jump directly to that screen. Minimal status is available on tivoremote/status/teleport
.
| tivoremote/set/channel
| Set the DVR to the given channel unless a recording is in progress. Only works if the DVR is in Live TV mode. Status will be reported on tivoremote/status/channel. Message format: { "channel": num, "subchannel": num }
| tivoremote/set/forcedChannel
| As above, but will cancel an in-progress recording if necessary
Contributing
Contributions are of course always welcome. If you find problems, please report them in the Issue Tracker. If you've made an improvement, open a pull request.
Getting set up for development is very easy:
git clone <your fork>
cd mqtt2tivoremote
yarn
And the development workflow is likewise straightforward:
# make a change to the src/ file, then...
yarn build
node dist/index.js
# or if you want to clean up all the leftover build products:
yarn run clean