I found a solution that works fairly well in regards to lowering the power consumption.
I configured a network thing for the TV like this:
Thing network:pingdevice:sony_tv [ hostname="x.x.x.x", macAddress="xx:xx:xx:xx:xx:xx", retry=1, timeout=1000, refreshInterval=600000 ]
When the network thing goes online I have a rule that enable the Sony binding like this:
rule "Start TV polling when online"
when
Item stue_tv_online changed to ON
then
val headers = newHashMap("Authorization" -> "Bearer oh.EnableDisable.xxxxxxxx", "WWW-Authenticate"-> "Basic")
val url = "http://x.x.x.x:x/rest/things/sony.../enable"
sendHttpPutRequest(url, "text/plain", "true", headers, 5000)
end
Then I have another rule to disable the binding when the power status goes OFF.
Because the TV might go online on the network without being turned on I also start the timer to stop polling when it goes online.
var Timer StopTVPolling = null
val int NoNOTimeoutMinutes = 5
rule "Stop TV polling when OFF"
when
Item stue_tv_online changed to ON or
Item stue_tv_power changed to OFF
then
if( StopTVPolling !== null )
{
StopTVPolling.cancel()
StopTVPolling = null
}
StopTVPolling = createTimer(now.plusSeconds(NoNOTimeoutMinutes*60), [|
if( stue_tv_power.state !== ON )
{
val headers = newHashMap("Authorization" -> "Bearer oh.EnableDisable.xxxxxxx", "WWW-Authenticate"-> "Basic")
val url = "http://x.x.x.x:x/rest/things/sony.../enable"
sendHttpPutRequest(url, "text/plain", "false", headers, 5000)
}
])
end
This works to ensure the tv goes to deep standby mode.
The solution does have the side effect that the sony binding is creating warning logs every 10 seconds while the binding is disabled. 
2024-06-22 19:47:39.707 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler ScalarWebHandler tried updating the thing status although the handler was already disposed.
Also I get exceptions like this when the binding is disabled.
2024-06-22 20:13:34.231 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
java.lang.IllegalStateException: client is closed
at org.apache.cxf.jaxrs.client.spec.ClientImpl.checkClosed(ClientImpl.java:167) ~[?:?]
at org.apache.cxf.jaxrs.client.spec.ClientImpl.target(ClientImpl.java:108) ~[?:?]
at org.apache.cxf.jaxrs.client.spec.ClientImpl.target(ClientImpl.java:120) ~[?:?]
at org.openhab.binding.sony.internal.net.HttpRequest.sendPostCommand(HttpRequest.java:157) ~[?:?]
at org.openhab.binding.sony.internal.net.HttpRequest.sendPostJsonCommand(HttpRequest.java:138) ~[?:?]
at org.openhab.binding.sony.internal.transports.SonyHttpTransport.executePostJson(SonyHttpTransport.java:331) ~[?:?]
at org.openhab.binding.sony.internal.transports.SonyHttpTransport.executePostJson(SonyHttpTransport.java:308) ~[?:?]
at org.openhab.binding.sony.internal.transports.SonyHttpTransport.execute(SonyHttpTransport.java:129) ~[?:?]
at org.openhab.binding.sony.internal.transports.SonyTransport.execute(SonyTransport.java:108) ~[?:?]
at org.openhab.binding.sony.internal.scalarweb.models.ScalarWebService.execute(ScalarWebService.java:311) ~[?:?]
at org.openhab.binding.sony.internal.scalarweb.models.ScalarWebService.executeSpecific(ScalarWebService.java:295) ~[?:?]
at org.openhab.binding.sony.internal.scalarweb.protocols.ScalarWebAvContentProtocol.lambda$4(ScalarWebAvContentProtocol.java:1405) ~[?:?]
at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
at org.openhab.binding.sony.internal.scalarweb.protocols.ScalarWebAvContentProtocol.getSources(ScalarWebAvContentProtocol.java:1397) ~[?:?]
at org.openhab.binding.sony.internal.scalarweb.protocols.ScalarWebAvContentProtocol.lambda$3(ScalarWebAvContentProtocol.java:1361) ~[?:?]
at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) ~[?:?]
at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1707) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?]
at org.openhab.binding.sony.internal.scalarweb.protocols.ScalarWebAvContentProtocol.getSources(ScalarWebAvContentProtocol.java:1362) ~[?:?]
at org.openhab.binding.sony.internal.scalarweb.protocols.ScalarWebAvContentProtocol.refreshSources(ScalarWebAvContentProtocol.java:2440) ~[?:?]
at org.openhab.binding.sony.internal.scalarweb.protocols.ScalarWebAvContentProtocol.refreshState(ScalarWebAvContentProtocol.java:2458) ~[?:?]
at org.openhab.binding.sony.internal.scalarweb.protocols.ScalarWebProtocolFactory.lambda$2(ScalarWebProtocolFactory.java:167) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
at java.lang.Thread.run(Thread.java:840) [?:?]
I guess handling of enabling and disabling of the binding is not used that often normally 