Giter Club home page Giter Club logo

homebridge-philipstv-enhanced's Introduction

homebridge-philipstv-enhanced

Homebridge module for Philips TV (with JointSpace enabled) with Power on/off, Sound, Ambilight and source input control

Description

This plugin is a fork of homebridge-philipstv-x with additional support for Sound control, Ambilight brightness control and input selection control. It has been modified to work on a 65OLED873/12 TV (2018 model without Android) and may not work on older one. Code may need ajustement for Ambilight to work on other 2018 models

Installation

  1. Install homebridge using: npm install -g homebridge
  2. Install this plugin using: npm install -g homebridge-philipstv-enhanced
  3. Update your configuration file. See the sample below.

Configuration

Example accessory config (needs to be added to the homebridge config.json):

"accessories": [
  {
  	"accessory": "PhilipsTV",
  	"name": "TV",
  	"ip_address": "10.0.1.23",
  	"poll_status_interval": "60",
  	"model_year": 2018,
  	"has_ssl": false,
  	"has_ambilight": true,
  }
]

To be able to power on the TV when the TV is in standby mode, you will need the wol_url parameters with the mac address of your TV Added test option for WakeOnWLAN:

"accessories": [
   {
   	"accessory": "PhilipsTV",
   	"name": "TV",
   	"ip_address": "10.0.1.23",
   	"poll_status_interval": "60",
   	"model_year" : "2018",
   	"has_ssl": false,
   	"wol_url": "wol://18:8e:d5:a2:8c:66"
   }
]

Credentials for 2016 (and newer?) models with Android TV

As per this project the Android TV 2016 models Philips use an authenticated HTTPS JointSpace API version 6. Every control- or status-call needs digest authentification which contains of a pre generated username and password. You have to do this once for your TV. We reccomend to use the python script philips_android_tv.

Here is an example pairing call for philips_android_tv :

python ./philips.py --host 10.0.1.23 pair

You can then add username and password key in your homebridge config, example:

"accessories": [
  {
  	"accessory": "PhilipsTV",
  	"name": "TV",
  	"ip_address": "10.0.1.23",
  	"poll_status_interval": "60",
  	"model_year": 2016,
  	"has_ambilight": true,
  	"has_ssh": true,
  	"username": "deadbeef0815",
  	"password": "deadbeef0815deadbeef0815deadbeef0815deadbeef0815deadbeef0815",
  }
]

Todo

We should auto detect TV capacity (http/https) and API version by requesting http://tvip:1925/1/system and https://tvip:1926/1/system

a 2018 TV will answer to /1/system and will report the API version is 6.1

For ambilight, we should parse /6/menuitems/settings/structure to instead of relying on static nodeid in the code For audio, we should read /API_VERSION/audio/volume to get the max, and map the 0-100% of HomeKit to 0-TVMax. Currently 25 is assumed as max, so we divide homekit value by 4. 43PUS6753 has a volume max to 60 but 25 is already high

The code need cleanup. Especially it would be nice to use a generic setXStateLoop function, work stated with httpRequest_with_retry

Get function for audio/ambilight/etc. should be modified to attend nothing when the TV is off. When the TV turn on, we should refresh all values

Dev notes about JointSpace URLs

POST to /6/menuitems/settings/current allow to get current Ambilight settings POST to /6/menuitems/settings/update allow to update Ambilight settings GET to /6/menuitems/settings/structure allow to have the details of the menu and options

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.