GithubHelp home page GithubHelp logo

evandcoleman / homebridge-theater-mode Goto Github PK

View Code? Open in Web Editor NEW
96.0 8.0 15.0 88 KB

A homebridge plugin to make your HomeKit devices react to the play/pause state of your Apple TV. Configured via the Home app.

License: MIT License

TypeScript 100.00%
homebridge appletv homekit

homebridge-theater-mode's Introduction

homebridge-theater-mode

A homebridge plugin to make your HomeKit devices react to the play/pause state of your Apple TV. Configured via the Home app.

npm version License

Overview

homebridge-theater-mode started as a pet project of mine. I loved using Plex's webhooks to control my Hue bulbs, but I wanted that to extend to other apps on my Apple TV.

To enable this project, I created node-appletv to communicate with the Apple TV. This uses a new protocol introduced by Apple with the 4th-generation Apple TV and there still isn't much out there about it. I did my best to reverse engineer the iOS Apple TV app to determine how it tracks the play/pause state, depsite the quirks I ran into with the new protocol.

Because of this, at times the plugin can be slightly slow to receive state changes, but it always does seem to settle out after a few seconds. It works well enough for me, so I hope it does for you, too!

Installation

Follow the steps below to pair your Apple TV after installation is complete.

# Install homebridge
$ npm install -g homebridge

# Install plugin
$ npm install -g homebridge-theater-mode

or add homebridge-theater-mode to your install.sh file.

Pairing

The pairing process makes use of the command line utility that ships with node-appletv. You must be on the same network as your Apple TV to pair.

# Install node-appletv
$ npm install -g node-appletv

# Scan for Apple TVs and follow the prompts
$ appletv pair

At the end of the process, you'll received a credentials string. This string should be input into the credentials field in your config.json entry for the Apple TV. See the example below or config.example.json for a practical use.

{
  "accessory": "AppleTVTheaterMode",
  "name": "Living Room Apple TV",
  "credentials": "<credentials>"
}

Usage

Two devices are added to your Home app by homebridge-theater-mode for each paired Apple TV.

The Theater Mode Switch is used to toggle theater mode on and off. It is recommend that you turn this off when you are done watching. This will prevent your lights from going crazy when you start AirPlaying music later. Each Apple TV gets its own Theater Mode switch.

The Apple TV Programmable Light Switch is used to define what should happen when theater mode is enabled and your Apple TV enters one of three states (playing, paused, and stopped). This programmable switch has three "buttons," one for each state. 3D touch on the programmable switch and tap details. You'll then be able to configure each of these three buttons. See below for which button is which.


Apple TV State
Button 1 Play
Button 2 Pause
Button 3 Stop (Tapping "Menu")

Meta

You can find me on Twitter @edc1591

Distributed under the MIT license. See LICENSE for more information.

homebridge-theater-mode's People

Contributors

evandcoleman avatar williamli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

homebridge-theater-mode's Issues

LIbsodium and libtools error constantly unable to install

Hello,

This plugin will not install. I have followed every instruction and troubleshooting guide on the web and still nothing. I keep getting the libtools and libsodium errors as in they don't exist however they have been installed and show up to date with the current version.

Not sure what else can be done. REALLY want to get this plugin to work.

please help thanks!

Apple TV Pairing Problem

Hi I have been following this Guide to Add Apple TV Theatre Mode to My Homebridge and have been following this Guide https://github.com/edc1591/homebridge-theater-mode/blob/master/README.md

All seems to install fine until I try to Pair the Apple TV 4K Box when I type appletv pair it is then followed by this error message:

/usr/local/lib/node_modules/node-appletv/node_modules/bindings/bindings.js:91
throw err
^

Error: Could not locate the bindings file. Tried:
→ /usr/local/lib/node_modules/node-appletv/node_modules/ed25519/build/ed25519.node
→ /usr/local/lib/node_modules/node-appletv/node_modules/ed25519/build/Debug/ed25519.node
→ /usr/local/lib/node_modules/node-appletv/node_modules/ed25519/build/Release/ed25519.node
→ /usr/local/lib/node_modules/node-appletv/node_modules/ed25519/out/Debug/ed25519.node
→ /usr/local/lib/node_modules/node-appletv/node_modules/ed25519/Debug/ed25519.node
→ /usr/local/lib/node_modules/node-appletv/node_modules/ed25519/out/Release/ed25519.node
→ /usr/local/lib/node_modules/node-appletv/node_modules/ed25519/Release/ed25519.node
→ /usr/local/lib/node_modules/node-appletv/node_modules/ed25519/build/default/ed25519.node
→ /usr/local/lib/node_modules/node-appletv/node_modules/ed25519/compiled/10.15.0/darwin/x64/ed25519.node
at bindings (/usr/local/lib/node_modules/node-appletv/node_modules/bindings/bindings.js:88:9)
at Object. (/usr/local/lib/node_modules/node-appletv/node_modules/ed25519/index.js:1:99)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)

Anybody have any ideas?

As I said I am very new to this and none of that makes sense and I can not find what it means by "Can not find Bindings File"

Thank You
Paul

got this when trying to pair

when i run npm install -g node-appletv
i get this

[email protected] preinstall /usr/local/lib/node_modules/node-appletv/node_modules/sodium
node install.js --preinstall

Static libsodium was not found at /usr/local/lib/node_modules/node-appletv/node_modules/sodium/deps/build/lib/libsodium so compiling libsodium from source.
libtool is required, but wasn't found on this system
make: *** [libsodium] Error 1
/usr/local/lib/node_modules/node-appletv/node_modules/sodium/install.js:287
throw new Error(cmdLine + ' exited with code ' + code);
^

Error: make libsodium exited with code 2
at ChildProcess. (/usr/local/lib/node_modules/node-appletv/node_modules/sodium/install.js:287:19)
at ChildProcess.emit (events.js:160:13)
at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] preinstall: node install.js --preinstall
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/Luke/.npm/_logs/2018-03-24T01_10_00_225Z-debug.log

Problem with Installation (Ubuntu)

I would like to install this plugin - but if fails:

Makefile:80: recipe for target 'nodesodium' failed
make: *** [nodesodium] Error 1
/usr/local/lib/node_modules/homebridge-theater-mode/node_modules/sodium/install.js:287
            throw new Error(cmdLine + ' exited with code ' + code);
            ^

Error: make nodesodium exited with code 2
    at ChildProcess.<anonymous> (/usr/local/lib/node_modules/homebridge-theater-mode/node_modules/sodium/install.js:287:19)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
/usr/local/lib
└── (empty)

npm ERR! Linux 4.15.0-23-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "homebridge-theater-mode"
npm ERR! node v8.10.0
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: `node install.js --install`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script 'node install.js --install'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the sodium package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js --install
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs sodium
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls sodium
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/pi/npm-debug.log
npm ERR! code 1

JSON Error (platforms)

Hi can somebody please tell me what is wrong with this JSON Please?

{
"platforms": [{
"platform": "Camera-IP",
"cameras": [{
"name": "Name of the camera eg. GARAGE",
"videoConfig": {
"source": "-re -i rtsp://10.0.19.10:554/Streaming/Channels/101",
"stillImageSource": "-i http://10.0.19.10/Streaming/channels/101/picture",
"maxStreams": 2,
"maxWidth": 1280,
"maxHeight": 720,
"maxFPS": 30
}
}]
}

Thank You Paul

Install with Node.js>v8.x fails (Raspberry)

First of all; thank you for the useful plugin. I have encountered the same installation problems mentioned by others, and thought I should share my experiences. I am runnning Homebridge on a Raspberry Pi, with Node.js v8.x. I was able to install the plugin running first the command
sudo apt-get install libtool autoconf automake
then
sudo npm install -g --unsafe-perm homebridge-theater-mode
I have tested the installation on clean setups of Raspbian using Node.js v8.x, v10.x & v11.x.
v8.x is successful, but later versions of Node.js returns installation error. Installing with v8.x and then upgrade and recompile plugin also failed.

Homebridge crashes when turning on theater mode

/usr/local/lib/node_modules/homebridge-theater-mode/dist/index.js:41
this.device.on('supportedCommands', function (commands) {
^
TypeError: Cannot read property 'on' of undefined
at AppleTVProgrammableSwitch.setEnabled (/usr/local/lib/node_modules/homebridge-theater-mode/dist/index.js:41:25)
at Characteristic.On. (/usr/local/lib/node_modules/homebridge-theater-mode/dist/index.js:86:18)
at emitMany (events.js:147:13)
at Characteristic.On.emit (events.js:224:7)
at Characteristic.On.Characteristic.setValue (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Characteristic.js:319:10)
at Bridge. (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:867:22)
at Array.forEach ()
at Bridge.Accessory._handleSetCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:807:8)
at emitMany (events.js:147:13)
at HAPServer.emit (events.js:224:7)
at HAPServer._handleCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:972:10)
at HAPServer. (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:209:39)
at emitNone (events.js:106:13)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1055:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)

ed25519 install error

Error occured when installing:

USER: homebridge
DIR: /usr
CMD: sudo -E -n npm install -g homebridge-theater-mode@latest

npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm ERR! code 1
npm ERR! path /usr/lib/node_modules/homebridge-theater-mode/node_modules/ed25519
npm ERR! command failed
npm ERR! command sh -c node-gyp rebuild
npm ERR! make: Entering directory '/usr/lib/node_modules/homebridge-theater-mode/node_modules/ed25519/build'
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/keypair.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/sign.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/open.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/crypto_verify_32.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_double_scalarmult.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_frombytes.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_scalarmult_base.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_precomp_0.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_p2_0.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_p2_dbl.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_p3_0.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_p3_dbl.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_p3_to_p2.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_p3_to_cached.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_p3_tobytes.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_madd.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_add.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_msub.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_sub.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_p1p1_to_p3.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_p1p1_to_p2.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/ge_tobytes.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_0.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_1.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_cmov.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_copy.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_neg.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_add.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_sub.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_mul.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_sq.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_sq2.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_invert.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_tobytes.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_isnegative.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_isnonzero.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_frombytes.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/fe_pow22523.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/sc_reduce.o
npm ERR!   CC(target) Release/obj.target/ed25519/src/ed25519/sc_muladd.o
npm ERR!   CXX(target) Release/obj.target/ed25519/src/ed25519.o
npm ERR! make: Leaving directory '/usr/lib/node_modules/homebridge-theater-mode/node_modules/ed25519/build'
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | linux | x64
npm ERR! gyp info find Python using Python version 3.8.10 found at "/usr/bin/python3"
npm ERR! gyp info spawn /usr/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args   'binding.gyp',
npm ERR! gyp info spawn args   '-f',
npm ERR! gyp info spawn args   'make',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/usr/lib/node_modules/homebridge-theater-mode/node_modules/ed25519/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/home/homebridge/.cache/node-gyp/16.14.2/include/node/common.gypi',
npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
npm ERR! gyp info spawn args   '-Dvisibility=default',
npm ERR! gyp info spawn args   '-Dnode_root_dir=/home/homebridge/.cache/node-gyp/16.14.2',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/home/homebridge/.cache/node-gyp/16.14.2/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/usr/lib/node_modules/homebridge-theater-mode/node_modules/ed25519',
npm ERR! gyp info spawn args   '-Dnode_engine=v8',
npm ERR! gyp info spawn args   '--depth=.',
npm ERR! gyp info spawn args   '--no-parallel',
npm ERR! gyp info spawn args   '--generator-output',
npm ERR! gyp info spawn args   'build',
npm ERR! gyp info spawn args   '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp info spawn make
npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm ERR! ../src/ed25519.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE MakeKeypair(Nan::NAN_METHOD_ARGS_TYPE)’:
npm ERR! ../src/ed25519.cc:19:98: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!    19 |  if ((info.Length() < 1) || (!Buffer::HasInstance(info[0])) || (Buffer::Length(info[0]->ToObject()) != 32)) {
npm ERR!       |                                                                                                  ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:22:77: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!    22 |  const unsigned char* seed = (unsigned char*)Buffer::Data(info[0]->ToObject());
npm ERR!       |                                                                             ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:35:63: error: no matching function for call to ‘v8::Object::Set(v8::Local<v8::String>, v8::Local<v8::Object>&)’
npm ERR!    35 |  result->Set(Nan::New("publicKey").ToLocalChecked(), publicKey);
npm ERR!       |                                                               ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3961:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)’
npm ERR!  3961 |   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,
npm ERR!       |                                     ^~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3961:37: note:   candidate expects 3 arguments, 2 provided
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3964:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)’
npm ERR!  3964 |   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,
npm ERR!       |                                     ^~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3964:37: note:   candidate expects 3 arguments, 2 provided
npm ERR! ../src/ed25519.cc:36:65: error: no matching function for call to ‘v8::Object::Set(v8::Local<v8::String>, v8::Local<v8::Object>&)’
npm ERR!    36 |  result->Set(Nan::New("privateKey").ToLocalChecked(), privateKey);
npm ERR!       |                                                                 ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3961:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)’
npm ERR!  3961 |   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,
npm ERR!       |                                     ^~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3961:37: note:   candidate expects 3 arguments, 2 provided
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3964:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)’
npm ERR!  3964 |   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,
npm ERR!       |                                     ^~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3964:37: note:   candidate expects 3 arguments, 2 provided
npm ERR! ../src/ed25519.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE Sign(Nan::NAN_METHOD_ARGS_TYPE)’:
npm ERR! ../src/ed25519.cc:53:69: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!    53 |  if ((info.Length() < 2) || (!Buffer::HasInstance(info[0]->ToObject()))) {
npm ERR!       |                                                                     ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:56:74: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!    56 |  if ((Buffer::HasInstance(info[1])) && (Buffer::Length(info[1]->ToObject()) == 32)) {
npm ERR!       |                                                                          ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:57:72: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!    57 |   unsigned char* seed = (unsigned char*)Buffer::Data(info[1]->ToObject());
npm ERR!       |                                                                        ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:65:81: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!    65 |  } else if ((Buffer::HasInstance(info[1])) && (Buffer::Length(info[1]->ToObject()) == 64)) {
npm ERR!       |                                                                                 ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:66:63: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!    66 |   privateKey = (unsigned char*)Buffer::Data(info[1]->ToObject());
npm ERR!       |                                                               ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:68:53: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!    68 |   Local<Value> privateKeyBuffer = info[1]->ToObject()->Get(Nan::New<String>("privateKey").ToLocalChecked())->ToObject();
npm ERR!       |                                                     ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:76:2: error: ‘Handle’ was not declared in this scope
npm ERR!    76 |  Handle<Object> message = info[0]->ToObject();
npm ERR!       |  ^~~~~~
npm ERR! ../src/ed25519.cc:76:15: error: expected primary-expression before ‘>’ token
npm ERR!    76 |  Handle<Object> message = info[0]->ToObject();
npm ERR!       |               ^
npm ERR! ../src/ed25519.cc:76:17: error: ‘message’ was not declared in this scope
npm ERR!    76 |  Handle<Object> message = info[0]->ToObject();
npm ERR!       |                 ^~~~~~~
npm ERR! ../src/ed25519.cc:76:45: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!    76 |  Handle<Object> message = info[0]->ToObject();
npm ERR!       |                                             ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE Verify(Nan::NAN_METHOD_ARGS_TYPE)’:
npm ERR! ../src/ed25519.cc:101:69: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!   101 |  if ((info.Length() < 3) || (!Buffer::HasInstance(info[0]->ToObject())) ||
npm ERR!       |                                                                     ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:102:43: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!   102 |   (!Buffer::HasInstance(info[1]->ToObject())) || (!Buffer::HasInstance(info[2]->ToObject()))) {
npm ERR!       |                                           ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:102:90: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!   102 |   (!Buffer::HasInstance(info[1]->ToObject())) || (!Buffer::HasInstance(info[2]->ToObject()))) {
npm ERR!       |                                                                                          ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:105:2: error: ‘Handle’ was not declared in this scope
npm ERR!   105 |  Handle<Object> message = info[0]->ToObject();
npm ERR!       |  ^~~~~~
npm ERR! ../src/ed25519.cc:105:15: error: expected primary-expression before ‘>’ token
npm ERR!   105 |  Handle<Object> message = info[0]->ToObject();
npm ERR!       |               ^
npm ERR! ../src/ed25519.cc:105:17: error: ‘message’ was not declared in this scope
npm ERR!   105 |  Handle<Object> message = info[0]->ToObject();
npm ERR!       |                 ^~~~~~~
npm ERR! ../src/ed25519.cc:105:45: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!   105 |  Handle<Object> message = info[0]->ToObject();
npm ERR!       |                                             ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:106:15: error: expected primary-expression before ‘>’ token
npm ERR!   106 |  Handle<Object> signature = info[1]->ToObject();
npm ERR!       |               ^
npm ERR! ../src/ed25519.cc:106:17: error: ‘signature’ was not declared in this scope; did you mean ‘sigreturn’?
npm ERR!   106 |  Handle<Object> signature = info[1]->ToObject();
npm ERR!       |                 ^~~~~~~~~
npm ERR!       |                 sigreturn
npm ERR! ../src/ed25519.cc:106:47: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!   106 |  Handle<Object> signature = info[1]->ToObject();
npm ERR!       |                                               ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc:107:15: error: expected primary-expression before ‘>’ token
npm ERR!   107 |  Handle<Object> publicKey = info[2]->ToObject();
npm ERR!       |               ^
npm ERR! ../src/ed25519.cc:107:17: error: ‘publicKey’ was not declared in this scope
npm ERR!   107 |  Handle<Object> publicKey = info[2]->ToObject();
npm ERR!       |                 ^~~~~~~~~
npm ERR! ../src/ed25519.cc:107:47: error: no matching function for call to ‘v8::Value::ToObject()’
npm ERR!   107 |  Handle<Object> publicKey = info[2]->ToObject();
npm ERR!       |                                               ^
npm ERR! In file included from /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:63,
npm ERR!                  from ../src/ed25519.cc:1:
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
npm ERR!  3060 |   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/v8.h:3060:44: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/ed25519.cc: At global scope:
npm ERR! ../src/ed25519.cc:120:17: error: variable or field ‘InitModule’ declared void
npm ERR!   120 | void InitModule(Handle<Object> exports) {
npm ERR!       |                 ^~~~~~
npm ERR! ../src/ed25519.cc:120:17: error: ‘Handle’ was not declared in this scope
npm ERR! ../src/ed25519.cc:120:30: error: expected primary-expression before ‘>’ token
npm ERR!   120 | void InitModule(Handle<Object> exports) {
npm ERR!       |                              ^
npm ERR! ../src/ed25519.cc:120:32: error: ‘exports’ was not declared in this scope
npm ERR!   120 | void InitModule(Handle<Object> exports) {
npm ERR!       |                                ^~~~~~~
npm ERR! In file included from ../src/ed25519.cc:1:
npm ERR! ../src/ed25519.cc:126:22: error: ‘InitModule’ was not declared in this scope
npm ERR!   126 | NODE_MODULE(ed25519, InitModule)
npm ERR!       |                      ^~~~~~~~~~
npm ERR! /home/homebridge/.cache/node-gyp/16.14.2/include/node/node.h:842:36: note: in definition of macro ‘NODE_MODULE_X’
npm ERR!   842 |       (node::addon_register_func) (regfunc),                          \
npm ERR!       |                                    ^~~~~~~
npm ERR! ../src/ed25519.cc:126:1: note: in expansion of macro ‘NODE_MODULE’
npm ERR!   126 | NODE_MODULE(ed25519, InitModule)
npm ERR!       | ^~~~~~~~~~~
npm ERR! make: *** [ed25519.target.mk:155: Release/obj.target/ed25519/src/ed25519.o] Error 1
npm ERR! gyp ERR! build error 
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
npm ERR! gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:526:28)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Linux 5.4.0-109-generic
npm ERR! gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd /usr/lib/node_modules/homebridge-theater-mode/node_modules/ed25519
npm ERR! gyp ERR! node -v v16.14.2
npm ERR! gyp ERR! node-gyp -v v9.0.0
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/homebridge/.npm/_logs/2022-04-20T15_12_21_185Z-debug-0.log

Command failed. Please review log for details.

Always On Mode

I would like to have theater mode on all the time, and not have the switch in HomeKit to turn it on and off. Is there anything I can put into my config.json file so that it will do this?

"The requested accessory '" + name + "' was not registered by any plugin."

Running into this issue: Homebridge Theater Mode works when manually executing homebridge, but not when configuring for systemctl. Please advise.

Aug 26 03:23:26 raspberrypi homebridge[1465]: [2018-8-26 03:23:26] Loaded config.json with 1 accessories and 1 platforms.
Aug 26 03:23:26 raspberrypi homebridge[1465]: [2018-8-26 03:23:26] ---
Aug 26 03:23:27 raspberrypi homebridge[1465]: [2018-8-26 03:23:27] Loaded plugin: homebridge-smartthings
Aug 26 03:23:27 raspberrypi homebridge[1465]: [2018-8-26 03:23:27] Registering platform 'homebridge-smartthings.SmartThings'
Aug 26 03:23:27 raspberrypi homebridge[1465]: [2018-8-26 03:23:27] ---
Aug 26 03:23:27 raspberrypi homebridge[1465]: [2018-8-26 03:23:27] Loading 1 platforms...
Aug 26 03:23:27 raspberrypi homebridge[1465]: [2018-8-26 03:23:27] [SmartThings] Initializing homebridge-smartthings.SmartThings platform...
Aug 26 03:23:27 raspberrypi homebridge[1465]: [2018-8-26 03:23:27] [SmartThings] Fetching Smart Things devices.
Aug 26 03:23:27 raspberrypi homebridge[1465]: [2018-8-26 03:23:27] Loading 1 accessories...
Aug 26 03:23:27 raspberrypi homebridge[1465]: /usr/lib/node_modules/homebridge/lib/api.js:64
Aug 26 03:23:27 raspberrypi homebridge[1465]: throw new Error("The requested accessory '" + name + "' was not registered by any plugin.");
Aug 26 03:23:27 raspberrypi homebridge[1465]: ^
Aug 26 03:23:27 raspberrypi homebridge[1465]: Error: The requested accessory 'AppleTVTheaterMode' was not registered by any plugin.
Aug 26 03:23:27 raspberrypi homebridge[1465]: at API.accessory (/usr/lib/node_modules/homebridge/lib/api.js:64:13)
Aug 26 03:23:27 raspberrypi homebridge[1465]: at Server._loadAccessories (/usr/lib/node_modules/homebridge/lib/server.js:285:42)
Aug 26 03:23:27 raspberrypi homebridge[1465]: at Server.run (/usr/lib/node_modules/homebridge/lib/server.js:86:38)
Aug 26 03:23:27 raspberrypi homebridge[1465]: at module.exports (/usr/lib/node_modules/homebridge/lib/cli.js:43:10)
Aug 26 03:23:27 raspberrypi homebridge[1465]: at Object. (/usr/lib/node_modules/homebridge/bin/homebridge:17:22)
Aug 26 03:23:27 raspberrypi homebridge[1465]: at Module._compile (module.js:652:30)
Aug 26 03:23:27 raspberrypi homebridge[1465]: at Object.Module._extensions..js (module.js:663:10)
Aug 26 03:23:27 raspberrypi homebridge[1465]: at Module.load (module.js:565:32)
Aug 26 03:23:27 raspberrypi homebridge[1465]: at tryModuleLoad (module.js:505:12)
Aug 26 03:23:27 raspberrypi homebridge[1465]: at Function.Module._load (module.js:497:3)
Aug 26 03:23:27 raspberrypi systemd[1]: homebridge.service: Main process exited, code=exited, status=1/FAILURE
Aug 26 03:23:27 raspberrypi systemd[1]: homebridge.service: Unit entered failed state.
Aug 26 03:23:27 raspberrypi systemd[1]: homebridge.service: Failed with result 'exit-code'.
Aug 26 03:23:37 raspberrypi systemd[1]: homebridge.service: Service hold-off time over, scheduling restart.

config.json - Credentials Redacted

{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
},
"accessories": [
{
"accessory": "AppleTVTheaterMode",
"name": "Living Room Apple TV",
"credentials": “XXXX”
}
],
"platforms": [
{
"platform": "homebridge-smartthings.SmartThings",
"name": "SmartThings",
"app_url": “XXXX”,
"app_id": “XXXX”,
"access_token": “XXXX”,
"polling_seconds": 3600,
"update_method": "direct",
"api_seconds": 30
}
]
}

Only partially working in Channels

Just installed this and played around with it a little. It seems to do the trick for most videoplayers except the Channels App.

When starting to watch tv in Channels it will execute a button press for play. But the plugin does not seem to register when playback in Channels are paused or stopped. May be due to the fact that Channels use their own custom player rather than the build-in tvOS player. Going to look around at the output from node-appletv and report back. Any other ideas?

Unable to install

Update Sodium 2.0.3 crashes when installing
paixaop/node-sodium#129

Scroll all the way down.

_modules\node-appletv\node_modules\sodium\build\sodium.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:258:23)
gyp ERR! stack at emitTwo (events.js:126:13)
gyp ERR! stack at ChildProcess.emit (events.js:214:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\willgonz\AppData\Roaming\npm\node_modules\node-appletv\node_modules\sodium
gyp ERR! node -v v8.9.4
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
C:\Users\willgonz\AppData\Roaming\npm\node_modules\node-appletv\node_modules\sodium\install.js:287
throw new Error(cmdLine + ' exited with code ' + code);
^

Error: node-gyp rebuild exited with code 1
at ChildProcess. (C:\Users\willgonz\AppData\Roaming\npm\node_modules\node-appletv\node_modules\sodium\install.js:287:19)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: node install.js --install
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\willgonz\AppData\Roaming\npm-cache_logs\2018-04-28T20_36_54_683Z-debug.log

Any Chance to trigger standby?

I love the idea to integrate my Apple TV in a home automation. My goal would be, that Apple TV goes to standby, it triggers a automation which turns off my background-light of the TV set...
Any chance to integrate the standby state?

Thanks
Michael

Very slow responses

I love the idea behind this program and hope to get it working well with both of my TVs soon. I've got the whole thing up and running on both my macbook and a Debian virtual machine. The first "play" command goes through immediately when I start a movie/show but subsequent play/pause/stop commands are very slow as I watch them in the terminal running homebridge.

Once the command shows up in homeridge the "button press" and scene is set immediately. Any idea what's slowing the commands coming in? At times it takes like 2 - 3 minutes before recognizing that I've changed the play state.

Any ideas on how to fix this?

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.