Homebridge module for Philips TV (with JointSpace enabled) with Power on/off, Sound, Ambilight and source input control
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
- Install homebridge using: npm install -g homebridge
- Install this plugin using: npm install -g homebridge-philipstv-enhanced
- Update your configuration file. See the sample below.
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"
}
]
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",
}
]
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
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