mqtt2tivoremote v1.1.0
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 mqtt2tivoremoteRunning 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 documentationTopics 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
yarnAnd 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