Philips TV (2016+) Binding

Getting and setting brightness is not working on my 65OLED705. Is it unsupported for this model?

022-01-30 20:58:10.305 [WARN ] [tv.internal.service.TvPictureService] - Error during handling the TvPicture command REFRESH for Channel brightness: null
java.lang.NullPointerException: null
	at org.openhab.binding.philipstv.internal.service.TvPictureService.getBrightness(TvPictureService.java:100) ~[?:?]

Postman menuitems/settings/structure returns this, so brightness seems to be available

{
  "node_id": 2131230862,
  "string_id": "org.droidtv.ui.strings.R.string.MAIN_BRIGHTNESS",
  "context": "brightness",
  "data": {
     "slider_data": {
        "min": 0,
        "max": 100,
        "step_size": 1
       }
    },
   "type": "SLIDER_NODE"
},

Yesterday initially installed the binding. Works well, thank you! It is a 55pus7272
Is it possible to to keep the TV online after power off?
The thing goes offline after a while.

Hello Guys,

I see that a lot of people have the same problem as me:
After a power off the TV it will not recognized by the binding after long time.
I think i found the solution, well sombody els found it and I found his reddit post :stuck_out_tongue:
Because alot of new TV’s goes in deep sleep mode,

Check Reddit Post

This only works for android!

I installed the app: X-Plore from the play store.
Wakelock is on Play store, but not compatible with Android TV. So you need X-Plore to install it
I download Wakelockv3 to a USB and installed with X-Plore

as it seems to be setup as system app, not directly supporting Android TV, you wont find it in installed apps. Found workaround how to run it, go to:
*Settings → Android settings → Device preferences → Storage → Internal storage → Apps → See all apps → scroll to bottom System apps → scroll down to Wakelock v3 and click → Open. (you also can open it after install)

Click on the processor and the wifi normal button, They will be yellow now,
Just close the app. After this my binding always respons within 10 seconds even after a night.

My apps are also reading so the binding know which app is running, Only Kodi does not response somethimes and stuck on the app before. maybe this app reading is fixed by my last software update of the TV

Greets!

Hi @bennYx0x ,

Can you please compile the jar archive version 3.3.0 for API 5 ?

With the current API 5 version ( org.openhab.binding.philipstv-3.1.0-SNAPSHOT-EXPERIMENTAL.jar) I have the following problem: once I do the binding between the TV set and the OH3 binding, the TV is disconnected and I always have to redo the pairing procedure (erase PIN username password, save, restart binding, reenter the new PIN code).

Thanks a lot,
Cristian

Struggling to get my 65OLED806 to show up in Inbox.

I’m wondering if I’m missing something, the binding is installed properly as far as I can tell:

openhab> bundle:list
…
270 │ Active │ 80 │ 3.3.0.202112261447 │ openHAB Add-ons :: Bundles :: Philips TV Binding

Running openhab 3.1.0 using the docker container with --net=host and no firewall on that interface.

What exactly is the mechanism behind the TV ‘showing up in inbox’? I’ve tried sniffing the network for messages from my (fixed IP) TV but it’s not talking/broadcasting much. It does show up as a device I can cast to from my Android phone.

Or is there some feature I have to enable on the TV somewhere?

Thanks for any suggestions.

Forgot to mention: I did enable the ‘WOWLAN’ (wake on wlan) feature but my TV is connected with a UTP cable. Probably not relevant.

Nevermind, PEBKAC error here. Apparently the local firewall was not completely disabled. Figured it out by sniffing what the philips android app was doing, my openhab box was still filtering incoming UDP packets sent to 239.255.255.250:1900.

For the record, if the TV is in deep sleep it won’t wake up.
I worked around it by configuring a pingdevice item with the MAC of the TV added to it. When I want to switch the TV on, OH now sends a WOL packet if it’s down and a few secs later the philipstv binding can turn it on just fine.

KeyCode, AppName, searchContent for switching HDMI etc. all work perfectly. You can add 65OLED806/12 to your supported list. Thanks!

Hello all,
How come my Philips OLED tv is presented several times in my inbox ?

Blockquote
55OLED855
philipstv:tv:F00DBABE_AA5E_BABA_DADA_00000000F8C8
55OLED855
F00DBABE-AA5E-BABA-DADA-00000000DAC9
upnpcontrol:upnprenderer:F00DBABE-AA5E-BABA-DADA-00000000DAC9
55OLED855
philipstv:tv:F00DBABE_AA5E_BABA_DADA_00000000DAC9
55OLED855
F00DBABE-AA5E-BABA-DADA-000000004CCC
upnpcontrol:upnprenderer:F00DBABE-AA5E-BABA-DADA-000000004CCC
55OLED855
philipstv:tv:F00DBABE_AA5E_BABA_DADA_000000004CCC
55OLED855
F00DBABE-AA5E-BABA-DADA-00000000F8C8
upnpcontrol:upnprenderer:F00DBABE-AA5E-BABA-DADA-00000000F8C8

Thank you.
lamaZZi

Bought a Philips 55PUS8106/12 yesterday and the binding is unable to display a pairing code.
The Android App: Android TV Remote from NIAMORDEV was able to connect though, after deleting the data from the TV’s Android TV Remote Service App.
See https://play.google.com/store/apps/details?id=dev.niamor.androidtvremote&hl=en&gl=US
After that the App made the TV show the now 6 digit pairing code:

Using this code in the binding setting (long shot I know) showed this log:

2022-07-03 14:57:12.678 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'philipstv:tv:47c85c589d' changed from ONLINE (CONFIGURATION_PENDING): Pairing Code is available, but credentials missing. Trying to retrieve them. to OFFLINE (HANDLER_INITIALIZING_ERROR): Could not successfully finish pairing process with the TV. 2022-07-03 14:57:12.683 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'philipstv:tv:47c85c589d' changed from OFFLINE (HANDLER_INITIALIZING_ERROR): Could not successfully finish pairing process with the TV. to OFFLINE (CONFIGURATION_ERROR): Error occurred during retrieval of credentials.

Maybe a WireShark trace will reveal more, but probably quite a bit of work.
Whish some consumer organization made it mandatory to supply the API doc.
Could we not request the source code since they are using openSource code in the TV?

Sorry to insist but I try to track when the tv is turned off but every two weeks I got this message:

[tv.internal.handler.PhilipsTvHandler] - Pairing code is available, but username and/or password is missing. Therefore we try to grant authorization and retrieve username and password.

And the reason is the reference of the TV (for instance F00DBABE-AA5E-BABA-DADA-00000000F8C8) is not longer valid.

How come ? Am I missing something ?
Thanks!

I unfortunately have the same problem after a while I can no longer send commands to the TV.
Does anyone have an idea?
The only thing that works is to deactivate the plugin briefly wait and then activate it again. Then it takes about 1 minute and the sending of commands works again.

In the log I find the following errors.

2022-07-26 15:32:17.705 [WARN ] [lipstv.internal.service.PowerService] - Unexpected Error handling the PowerState command REFRESH for Channel power: Read timed out
2022-07-26 15:32:39.649 [WARN ] [tv.internal.service.AmbilightService] - Error during handling the Ambilight command OFF for Channel ambilightPower: Read timed out
java.net.SocketTimeoutException: Read timed out
	at java.net.SocketInputStream.socketRead0(Native Method) ~[?:?]
	at java.net.SocketInputStream.socketRead(SocketInputStream.java:115) ~[?:?]
	at java.net.SocketInputStream.read(SocketInputStream.java:168) ~[?:?]
	at java.net.SocketInputStream.read(SocketInputStream.java:140) ~[?:?]
	at sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478) ~[?:?]
	at sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472) ~[?:?]
	at sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1454) ~[?:?]
	at sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1065) ~[?:?]
	at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137) ~[bundleFile:?]
	at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153) ~[bundleFile:?]
	at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280) ~[bundleFile:?]
	at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140) ~[bundleFile:?]
	at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57) ~[bundleFile:?]
	at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259) ~[bundleFile:?]
	at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163) ~[bundleFile:?]
	at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167) ~[bundleFile:?]
	at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273) ~[bundleFile:?]
	at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) ~[bundleFile:?]
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271) ~[bundleFile:?]
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) ~[bundleFile:?]
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) ~[bundleFile:?]
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[bundleFile:?]
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) ~[bundleFile:?]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:117) ~[bundleFile:?]
	at org.openhab.binding.philipstv.internal.ConnectionManager.doHttpsPost(ConnectionManager.java:82) ~[bundleFile:?]
	at org.openhab.binding.philipstv.internal.service.AmbilightService.setAmbilightPowerState(AmbilightService.java:164) ~[bundleFile:?]
	at org.openhab.binding.philipstv.internal.service.AmbilightService.handleCommand(AmbilightService.java:112) [bundleFile:?]
	at org.openhab.binding.philipstv.internal.handler.PhilipsTvHandler.handleCommand(PhilipsTvHandler.java:175) [bundleFile:?]
	at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
	at org.openhab.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [bundleFile:?]
	at com.sun.proxy.$Proxy2388.handleCommand(Unknown Source) [?:?]
	at org.openhab.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:80) [bundleFile:?]
	at org.openhab.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:48) [bundleFile:?]
	at jdk.internal.reflect.GeneratedMethodAccessor68.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
	at org.openhab.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]

Hello @ all!
First of all, thank you very much for this great binding!!

I installed it today and it seems to work fine. When I turn the TV on I get the following message in the log:

“Thing ‘philipstv:tv:F00DBABE_AA5E_BABA_DADA_0ccafb0a3b9e’ changed from ONLINE: Standby to ONLINE”

and otherwise, when I am turning off the TV I get this message in the log:

“Thing ‘philipstv:tv:F00DBABE_AA5E_BABA_DADA_0ccafb0a3b9e’ changed from ONLINE to ONLINE: Standby”

Now I simply want to find out however the TV is in ONLINE or in STANBY mode…
I tried different thing but I can only get the Thing-Status “ONLINE” or “OFFLINE”.

I read the following statement in the description of the binding:
"* Thing state ONLINE with Message “Standby”: TV is off and network card is awake and receives commands


But I can't evaluate the "message" fromt the Thing state. I can see this message in the log but I want to use it in a rule.

How can I synchronize a switch or any other variable with the "Standby" Mode of the TV?

For example I tried a rule like this:

rule "TV Wohnzimmer Test"
when 
    Thing "philipstv:tv:F00DBABE_AA5E_BABA_DADA_0ccafb0a3b9e" changed to ONLINE
then
    var ThingStatusInfo = getThingStatusInfo("philipstv:tv:F00DBABE_AA5E_BABA_DADA_0ccafb0a3b9e") 
    logInfo("TV Status change", ThingStatusInfo.getStatusDetail().toString())
end

In this case I get the follwoing 2 lines in the Log:
2022-08-15 17:03:44.273 [INFO ] [b.core.model.script.TV Status change] - NONE
2022-08-15 17:03:44.277 [INFO ] [core.model.script.TV Status change 2] - ONLINE

But I need the info "Standby" :frowning: 

Can someone help me?

Regards

Joe

Sorry!

I forgot the second “logInfo”, it looks like this:
logInfo(“TV Status change 2”, ThingStatusInfo.getStatus().toString())

Hello and welcome to the forum!
How old is your TV? I ask because I’m not able to pair using the binding with my 2022 TV …

Maybe one can help me out. In the post I am replying to Mihai is controlling Ambilight brightness via cURL. I am trying to switch off the screen (not turning off the TV) via an OpenHab switch. Regularly the TV’s settop box is just playing radio and in these energy costly times, it is nonsense to leave on the screen as it consumes quite some energy even when black (but on).

I found out on my TV that settings nodeid 2131230820 is for “Screen Off”. However, how do I control it. The JSON is not showing any data (and as such I am unable to retrieve what the status of the screen is).

{"node_id":2131230820,
"type":"PARENT_NODE",
"string_id":"org.droidtv.ui.strings.R.string.MAIN_MUTE_SCREEN",
"context":"screen_off",
"data":{}
}

Some items (node_id’s) in the list have a type “SLIDER_NOTE”, just like in the above post and you can send a value to the “data” to update it. But, when no data is displayed whether the screen is on or off, I have no clue how to toggle this item. I have tried to send values as false, true, on, off, but all to no avail.

I have some slight Problems with my TV and this plugin. After completing the pairing process, I can create new items (e.g. volume) and everything syncs between TV and openhab. (With a slight delay).Everything is fine until I switch of the TV. (Going to Standby). Then the plugin shows the TV as offline. And it never comes back online. Gone until I remove the TV thing and complete the pairing process a second time. Then it works again, until standby. The log is not very helpful:

[INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'philipstv:tv:6c60746257' changed from ONLINE to OFFLINE: TV is not reachable and should therefore be off.

The openhab.log only says:

[INFO ] [tv.internal.handler.PhilipsTvHandler] - Stopping Refresh Scheduler for Philips TV: Philips TV

Any suggestions what I can try, or what I missed?

TV is a 55PUS6551/12 from 2020.

Thank you!

Looks like there’s a workaround for this - see [FEAT] Listening to music - To be able to set “screen off”, “screen on” or otherwise toggle display panel on/off

Thank you so much! I had a look at the issues of pylips, but now I notice that one is shown the open issues by default. There are so many more closed issues…

Will try to figure this out how to implement this in a rule the coming days, without having to install pylips… again many many thanks for pointing me to the right info.

Edit:
Just found out that the binding has the AppName channel from which the Setup menu is also selectable (never knew this OH function, accidentily activated when trying to copy and paste). So first send a command to the AppName channel and then sending commands to the keyCode channel for navigating to the right item and activating it…

Might be an even easier way, but this solution already works :smile:

Follow-Up to my problem: Multicast was not working properly. I deployed OpenHAB as a docker container on raspbian. I started the container with --net=host and everything works fine.

Regards

Well… here we go again. It broke over night. TV-Thing stays offline. Multicast is now working properly though. With a slight improvement: The TV now appears in the inbox again. This is probably because the identifier changed. Why does it do that?

Any suggestions?