Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Working commands 55PUS7181
http://192.168.3.51:1925/system
{"menulanguage":"Dutch","name":"55PUS7181\/12","country":"Netherlands","serialnumber_encrypted":"F6905Z+vyquNhZoXegQ1DzZXCqMIcjJpkzy3LsiPac=\n","softwareversion_encrypted":"1YWR42sjQ6xdjuyIXWZbyPnoRswLoRswLmKtAhR9GRsBx1qY=\n","model_encrypted":"jGNvXDerdJoWjOpwh\/n0gw2MgM7oRswLoRswLKC73wfMgra3S62c4=\n","deviceid_encrypted":"7mv3ZEtMH8oRswL0RoRswLISTn38FN8HAqfmSF95qoaiRsuukSraQ=\n","nettvversion":"6.0.2","epgsource":"one","api_version":{"Major":6,"Minor":2,"Patch":0},"featuring":{"jsonfeatures":{"editfavorites":["TVChannels","SatChannels"],"recordings":["List","Schedule","Manage"],"ambilight":["LoungeLight","Hue","Ambilight"],"menuitems":["Setup_Menu"],"textentry":["context_based","initial_string_available","editor_info_available"],"applications":["TV_Apps","TV_Games","TV_Settings"],"pointer":["not_available"],"inputkey":["key"],"activities":["intent"],"channels":["preset_string"],"mappings":["server_mapping"]},"systemfeatures":{"tvtype":"consumer","content":["dmr","dms_tad"],"tvsearch":"intent","pairing_type":"digest_auth_pairing","secured_transport":"true"}}}
Seems to support all ambilight commands from http://jointspace.sourceforge.net/projectdata/documentation/jasonApi/1/doc/API.html
Extra/undocumented:
http://192.168.3.51:1925/ambilight/currentconfiguration
{"styleName":"FOLLOW_VIDEO","isExpert":false,"menuSetting":"STANDARD"}
http://192.168.3.51:1925/ambilight/lounge
{"color":{"hue":0,"saturation":0,"brightness":0},"colordelta":{"hue":0,"saturation":0,"brightness":0},"speed":0,"mode":"Default"}
http://192.168.3.51:1925/ambilight/power
{"power":"On"}
http://192.168.3.51:1925/ambilight/supportedstyles
{"supportedStyles":[{"styleName":"OFF"},{"styleName":"FOLLOW_VIDEO"},{"styleName":"FOLLOW_AUDIO","algorithms":["ENERGY_ADAPTIVE_BRIGHTNESS","ENERGY_ADAPTIVE_COLORS","VU_METER","SPECTRUM_ANALYZER","KNIGHT_RIDER_CLOCKWISE","KNIGHT_RIDER_ALTERNATING","RANDOM_PIXEL_FLASH","STROBO","PARTY"],"maxTuning":2},{"styleName":"FOLLOW_COLOR","algorithms":["MANUAL_HUE","AUTOMATIC_HUE"],"maxSpeed":255},{"styleName":"LOUNGE"},{"styleName":"MANUAL"},{"styleName":"EXPERT"},{"styleName":"GRID"}]}
regular:
http://192.168.3.51:1925/ambilight/mode
{"current":"internal"}
http://192.168.3.51:1925/ambilight/cached
{"layer1":{"left":{"0":{"r":0,"g":0,"b":0},"1":{"r":0,"g":0,"b":0},"2":{"r":0,"g":0,"b":0},"3":{"r":0,"g":0,"b":0}},"top":{"0":{"r":0,"g":0,"b":0},"1":{"r":0,"g":0,"b":0},"2":{"r":0,"g":0,"b":0},"3":{"r":0,"g":0,"b":0},"4":{"r":0,"g":0,"b":0},"5":{"r":0,"g":0,"b":0},"6":{"r":0,"g":0,"b":0},"7":{"r":0,"g":0,"b":0}},"right":{"0":{"r":0,"g":0,"b":0},"1":{"r":0,"g":0,"b":0},"2":{"r":0,"g":0,"b":0},"3":{"r":0,"g":0,"b":0}}}}
http://192.168.3.51:1925/ambilight/topology
{"layers":"1","left":4,"top":8,"bottom":0,"right":4}
http://192.168.3.51:1925/ambilight/measured
{"layer1":{"left":{"0":{"r":43,"g":18,"b":24},"1":{"r":122,"g":79,"b":84},"2":{"r":114,"g":154,"b":130},"3":{"r":164,"g":189,"b":191}},"top":{"0":{"r":173,"g":189,"b":191},"1":{"r":178,"g":186,"b":186},"2":{"r":186,"g":180,"b":172},"3":{"r":192,"g":186,"b":172},"4":{"r":196,"g":192,"b":181},"5":{"r":193,"g":187,"b":173},"6":{"r":192,"g":186,"b":172},"7":{"r":196,"g":188,"b":179}},"right":{"0":{"r":196,"g":191,"b":185},"1":{"r":113,"g":108,"b":115},"2":{"r":69,"g":75,"b":88},"3":{"r":56,"g":51,"b":23}}}}
http://192.168.3.51:1925/ambilight/processed
{"layer1":{"left":{"0":{"r":145,"g":7,"b":32},"1":{"r":254,"g":75,"b":92},"2":{"r":102,"g":255,"b":158},"3":{"r":162,"g":245,"b":254}},"top":{"0":{"r":188,"g":247,"b":254},"1":{"r":222,"g":255,"b":254},"2":{"r":254,"g":231,"b":202},"3":{"r":254,"g":233,"b":186},"4":{"r":254,"g":240,"b":203},"5":{"r":254,"g":235,"b":184},"6":{"r":254,"g":234,"b":186},"7":{"r":254,"g":226,"b":197}},"right":{"0":{"r":254,"g":234,"b":213},"1":{"r":243,"g":213,"b":254},"2":{"r":133,"g":164,"b":254},"3":{"r":201,"g":164,"b":29}}}}
@wojtulab

This comment has been minimized.

Copy link

wojtulab commented Sep 29, 2017

hello, do you know how to send post message to simulate standby input?
I mean how to power off my tv remotly?

I found that new Philips TV's support https protocol like this one:
https://iptv:1926/key/Standby
But I can't send it. Wireshark can't trace traffic between android app and my tv on https.

@VonLatvala

This comment has been minimized.

Copy link

VonLatvala commented Feb 8, 2018

@wojtulab A simple curl command like this will do the trick:
curl -X POST -d '{"key":"Standby"}' http://{IP_ADDRESS}:1925/6/input/key

So in essence, issue a POST request to /6/input/key with the body {"key":"Standby"}

As described here: http://jointspace.sourceforge.net/projectdata/documentation/jasonApi/1/doc/API-Method-input-key-POST.html [08.02.2018]
And the full documentation is located here: http://jointspace.sourceforge.net/projectdata/documentation/jasonApi/1/doc/API.html [08.02.2018]

I have these files saved offline in case they get taken down for some reason (ping me if they do).

@arzzen

This comment has been minimized.

Copy link

arzzen commented Oct 20, 2018

hi everyone, you can use my implementation https://github.com/arzzen/philips-tv

@nstrelow

This comment has been minimized.

Copy link

nstrelow commented Oct 30, 2018

@lucasvdh

This comment has been minimized.

Copy link

lucasvdh commented Nov 2, 2018

@arzzen you the best!

@ivandompe

This comment has been minimized.

Copy link

ivandompe commented Dec 11, 2018

Hi Guys,
I get an 55OLED803... really nice ;-) and I'm looking to find url command to control it. http://ip:1925/system and all other ambilight GET command are working on my TV, but not the other ones like /audio/voume. And I didin't succeed to POST any command, I tried also 1926 port. Not a lot of info trough the net.

@oscarb

This comment has been minimized.

Copy link

oscarb commented Jan 3, 2019

@ivandompe I have the 55OLED803 and I was able to send POST requests and control my TV after first following the README here:
https://github.com/nstrelow/ha_philips_2016

@Stormbringer11

This comment has been minimized.

Copy link

Stormbringer11 commented Apr 20, 2019

hello, thanks for the great description. I get a lot of things to work with. However, I really want to turn ambi and hue off and on. but unfortunately it never works. could you please help me. what is the right curl command for it?

@SchmuFoo

This comment has been minimized.

Copy link

SchmuFoo commented Dec 25, 2019

@Stormbringer11

I have an 58PUS7304/12 (2019) Modell and have installed the newest one which came a few days ago:

"2019er TVs mit Android TV 9 Pie (TPM191E: 1.2.173.7)"
https://toengel.net/philipsblog/2019/12/18/philips-neue-firmware-fuer-2019er-tvs-mit-android-tv-9-pie-tpm191e-1-2-173-7/

My focus is controlling the Ambilight which works fine, but what is not working is POST Standby and GETing Powerstate

Ambilight

loxberry@loxberry:~ $ curl -v -s -X POST -d {"power":"Off"} http://192.168.178.75:1925/6/ambilight/power
*   Trying 192.168.178.75...
* TCP_NODELAY set
* Connected to 192.168.178.75 (192.168.178.75) port 1925 (#0)
> POST /6/ambilight/power HTTP/1.1
> Host: 192.168.178.75:1925
> User-Agent: curl/7.52.1
> Accept: */*
> Content-Length: 11
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 11 out of 11 bytes
< HTTP/1.1 200 OK
< Date: Wed, 25 Dec 2019 22:03:49 GMT
< Accept-Ranges: bytes
< Server: Restlet-Framework/2.3.12
< Access-Control-Allow-Origin: *
< Content-Length: 0
<
* Curl_http_done: called premature == 0
* Connection #0 to host 192.168.178.75 left intact
loxberry@loxberry:~ $ curl -v -s -X POST -d {"power":"On"} http://192.168.178.75:1925/6/ambilight/power
*   Trying 192.168.178.75...
* TCP_NODELAY set
* Connected to 192.168.178.75 (192.168.178.75) port 1925 (#0)
> POST /6/ambilight/power HTTP/1.1
> Host: 192.168.178.75:1925
> User-Agent: curl/7.52.1
> Accept: */*
> Content-Length: 10
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 10 out of 10 bytes
< HTTP/1.1 200 OK
< Date: Wed, 25 Dec 2019 22:04:00 GMT
< Accept-Ranges: bytes
< Server: Restlet-Framework/2.3.12
< Access-Control-Allow-Origin: *
< Content-Length: 0
<
* Curl_http_done: called premature == 0
* Connection #0 to host 192.168.178.75 left intact
loxberry@loxberry:~ $

GETing Powerstate

loxberry@loxberry:~ $ curl -v -s http://192.168.178.75:1925/6/powerstate
*   Trying 192.168.178.75...
* TCP_NODELAY set
* Connected to 192.168.178.75 (192.168.178.75) port 1925 (#0)
> GET /6/powerstate HTTP/1.1
> Host: 192.168.178.75:1925
> User-Agent: curl/7.52.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Date: Wed, 25 Dec 2019 22:05:45 GMT
< Accept-Ranges: bytes
< Server: Restlet-Framework/2.3.12
< Content-Length: 439
< Content-Type: text/html; charset=UTF-8
<
<html>
<head>
   <title>Status page</title>
</head>
<body style="font-family: sans-serif;">
<p style="font-size: 1.2em;font-weight: bold;margin: 1em 0px;">Not Found</p>
<p>The server has not found anything matching the request URI</p>
<p>You can get technical details <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">here</a>.<br>
Please continue your visit at our <a href="/">home page</a>.
</p>
</body>
</html>
* Curl_http_done: called premature == 0
* Connection #0 to host 192.168.178.75 left intact

Standby

​​​​​​​loxberry@loxberry:~ $ curl -v -s -X POST -d {"key":"Standby"} http://192.168.178.75:1925/6/input/key
*   Trying 192.168.178.75...
* TCP_NODELAY set
* Connected to 192.168.178.75 (192.168.178.75) port 1925 (#0)
> POST /6/input/key HTTP/1.1
> Host: 192.168.178.75:1925
> User-Agent: curl/7.52.1
> Accept: */*
> Content-Length: 13
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 13 out of 13 bytes
< HTTP/1.1 404 Not Found
< Date: Wed, 25 Dec 2019 22:07:19 GMT
< Accept-Ranges: bytes
< Server: Restlet-Framework/2.3.12
< Content-Length: 439
< Content-Type: text/html; charset=UTF-8
<
<html>
<head>
   <title>Status page</title>
</head>
<body style="font-family: sans-serif;">
<p style="font-size: 1.2em;font-weight: bold;margin: 1em 0px;">Not Found</p>
<p>The server has not found anything matching the request URI</p>
<p>You can get technical details <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">here</a>.<br>
Please continue your visit at our <a href="/">home page</a>.
</p>
</body>
</html>
* Curl_http_done: called premature == 0
* Connection #0 to host 192.168.178.75 left intact
@SchmuFoo

This comment has been minimized.

Copy link

SchmuFoo commented Dec 25, 2019

P.S. with regard to the Ports and Protocols:

Luckily I was able to use the plain HTTP Socket at 1925 (For Ambilight ONLY) without any pairing or authentication on that AndroidTV Version 9.0 (!) - This confirms something I found on the web:

"That the API is on version 6 doesn’t necessarily mean that it uses port 1926 though. I’ve been in contact with someone else who has also been developing a Jointspace API client and has had contact with someone at Philips responsible for the API. What he says is that all Android TV’s should use port 1926 and all non-Android TV’s should use 1925. Also, apparently Android TV’s only support the /6/system endpoint on port 1925 to comply with older clients and should also work in 1926."

For most of the other stuff the API Level 6 with HTTPS and Authentication is needed :-/ I sniffed the connection between the official Philips TV Remote App, Decrypted the SSL and checked what the App is using when pressing Standby:

But this POST command is not working at plain 1925..

image

@marcelrv

This comment has been minimized.

Copy link
Owner Author

marcelrv commented Dec 27, 2019

thank @SchmuFoo
I did not know the Telerik Fiddler you use.... is very helpful in testing this stuff in windows

@skribb

This comment has been minimized.

Copy link

skribb commented Jan 5, 2020

after a few hours the TV's server refuses commands "No connection could be made because the target machine actively refused it"

if i kill the power to the TV (pull the cable) and restart the TV, it accepts commands again, for a while. does anyone know what this could be? I have a PUS6754 and i'm using Python to send commands
import httplib
key='{"key": "Standby"}'
h = httplib.HTTPConnection('192.168.0.xxx:1925')
h.request('POST','/6/input/key', key)

r = h.getresponse()

print r.read()
@SchmuFoo

This comment has been minimized.

Copy link

SchmuFoo commented Jan 13, 2020

after a few hours the TV's server refuses commands "No connection could be made because the target machine actively refused it"

if i kill the power to the TV (pull the cable) and restart the TV, it accepts commands again, for a while. does anyone know what this could be? I have a PUS6754 and i'm using Python to send commands
import httplib
key='{"key": "Standby"}'
h = httplib.HTTPConnection('192.168.0.xxx:1925')
h.request('POST','/6/input/key', key)

r = h.getresponse()

print r.read()

I have an similiar problem from time to time with my 58PUS7304/12 - Unfurtunately the PowerCord Off/On didnt solve it then. The only thing I can do is wait.

Verbose: Sometimes both API Ports are not open any more, then also the official Philips Remote App is not working any more. Didnt found a solution for that, only can wait then always until they are up again.

Working

On my 7304 from 2019 there IS an response (most of the time) on:
http://IP:1925/system
https://IP:1926/system
http://IP:1925/6/system
https://IP:1926/6/system

root@loxberry:/opt/loxberry# nmap -sT -P0 philipstv -p 1925,1926
Starting Nmap 7.40 ( https://nmap.org ) at 2019-12-25 00:51 CET
Nmap scan report for philipstv (192.168.178.75)
Host is up (0.0026s latency).
rDNS record for 192.168.178.75: PhilipsTV.fritz.box
PORT     STATE SERVICE
1925/tcp open  discovery-port
1926/tcp open  egs

Non working

`loxberry@loxberry:~ $ nmap -sT -P0 philipstv
Starting Nmap 7.40 ( https://nmap.org ) at 2020-01-12 20:26 CET
Nmap scan report for philipstv (192.168.178.75)
Host is up (0.0019s latency).
rDNS record for 192.168.178.75: PhilipsTV.fritz.box
Not shown: 995 closed ports
PORT      STATE SERVICE
8008/tcp  open  http
8009/tcp  open  ajp13
8443/tcp  open  https-alt
9000/tcp  open  cslistener
49153/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 0.34 seconds
loxberry@loxberry:~ $ nmap -sT -P0 philipstv -p 1925,1926
loxberry@loxberry:~ $ nmap -sT -P0 philipstv -p 1925,1926

Starting Nmap 7.40 ( https://nmap.org ) at 2020-01-12 20:09 CET
Nmap scan report for philipstv (192.168.178.75)
Host is up (0.00053s latency).
rDNS record for 192.168.178.75: PhilipsTV.fritz.box
PORT     STATE  SERVICE
1925/tcp closed discovery-port
1926/tcp closed egs

Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.