Sony Devices Binding

Hi!

I have a KDL 55W805C and it works - not good - but it works.
I have following issues:

  1. TV Power is not updated when i turn on the TV via IR Remote. Is that a normal behaviour? Via TCP you can read if the TV is on or off.
  2. When i use the power switch (for example in the paper ui) the tv powers down completely and doesn’t go into standby. another switch for standby (like on/off via the remote) would be cool.
  3. The volume doesn’t work. it displays the volume but doesn’t change anything.
  4. What’s the scalar thing for? I googled my heart out but didn’t find any information. Today i got it working but i don’t know what it does and how to use it.

Am i doing something wrong? :slight_smile:

Thanks a lot for the good work!

Hi Tim! Just stumbled across this after giving up a cuple years ago on integrating a pair of str dn-1050’s into openhab… I’d like to dust them off and try your binding out in a clean OH2 install before loading to my main servers… what files do I need to start? I noticed compatibility was different amongst devices and plugins…

Hi! Have been testing this binding for two days now. Running latest stable OpenHABian on RPi3. My tv is Bravia KDL-55W809C. IP control is turned off and only scalar is used.

From the beginning everything worked really well. Just dropped the newest .jar to addons folder and waited for few mins. Registration with tv went smoothly and all channels got recognized. Next thing was to create ON/OFF button for my sitemap. That’s when something went a little weird. The button itself worked like a charm and the tv would switch off and on but pressing it too often halted whole binding for a minute or so. Was in a hurry so didn’t have time to focus it on then but next morning I checked through the system and noticed that at the same time also another binding (regoheatpump) stopped/halted. Had to restart openhab to get that rego binding working again. And no. I did not have debug on. :frowning_face:

/Miika

Edit 4.9.2017

Some more testing and adding channels manualy. Here’s my sony.items file.

Switch sonyPower "Virta" {channel="sony:scalar:03ef1f3a-98e3-4035-8350-a58ba4ed623e:system-powerstatus"}
Switch sonyMute "Mykistys" {channel="sony:scalar:03ef1f3a-98e3-4035-8350-a58ba4ed623e:audio-speaker-mute"}
Dimmer sonyVolume "TV Äänenvoimakkuus" {channel="sony:scalar:03ef1f3a-98e3-4035-8350-a58ba4ed623e:audio-speaker-volume"}
String sonyProgramGuide "Guide" {channel="sony:scalar:03ef1f3a-98e3-4035-8350-a58ba4ed623e:appControl-com__0sony__0dtv__0com__0sony__0dtv__0tvx__0com__0sony__0dtv__0tvx__0MainActivity-appdata"}
String sonyRecordings "Tallennusluettelo" {channel="sony:scalar:03ef1f3a-98e3-4035-8350-a58ba4ed623e:appControl-com__0sony__0dtv__0com__0sony__0dtv__0tvx__0com__0sony__0dtv__0tvx__0rec__0ui__0screen__0recorded__0TitleListLauncherActivity-appdata"}

After adding two last lines PaperUI control page doesn’t show any values on any binding. By removing those two lines everything works again.

2017-09-04 09:30:00.804 [ItemStateChangedEvent     ] - sonyRecordings changed from NULL to null
2017-09-04 09:30:26.296 [ERROR] [ersey.server.ServerRuntime$Responder] - An I/O error has occurred while writing a response message entity to the container output stream.
org.glassfish.jersey.server.internal.process.MappableException: java.lang.NullPointerException
	at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:92)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:711)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:444)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:434)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:329)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:315)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:297)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:267)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)[155:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)[155:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)[155:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)[155:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)[155:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
	at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76)[9:com.eclipsesource.jaxrs.publisher:5.3.1.201602281253]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[81:org.eclipse.jetty.servlet:9.2.19.v20160908]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[81:org.eclipse.jetty.servlet:9.2.19.v20160908]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)[172:org.ops4j.pax.web.pax-web-jetty:4.3.0]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[80:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[79:org.eclipse.jetty.security:9.2.19.v20160908]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[80:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[80:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)[172:org.ops4j.pax.web.pax-web-jetty:4.3.0]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[81:org.eclipse.jetty.servlet:9.2.19.v20160908]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[80:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[80:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[80:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[172:org.ops4j.pax.web.pax-web-jetty:4.3.0]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[80:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.Server.handle(Server.java:499)[80:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[80:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[80:org.eclipse.jetty.server:9.2.19.v20160908]
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[71:org.eclipse.jetty.io:9.2.19.v20160908]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[83:org.eclipse.jetty.util:9.2.19.v20160908]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[83:org.eclipse.jetty.util:9.2.19.v20160908]
	at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]
Caused by: java.lang.NullPointerException
	at org.eclipse.smarthome.io.rest.core.item.EnrichedItemDTOMapper.map(EnrichedItemDTOMapper.java:48)
	at org.eclipse.smarthome.io.rest.core.item.EnrichedItemDTOMapper.map(EnrichedItemDTOMapper.java:41)
	at org.eclipse.smarthome.io.rest.core.item.ItemResource.lambda$0(ItemResource.java:153)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)[:1.8.0_121]
	at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1353)[:1.8.0_121]
	at java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:294)[:1.8.0_121]
	at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206)[:1.8.0_121]
	at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:169)[:1.8.0_121]
	at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300)[:1.8.0_121]
	at java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681)[:1.8.0_121]
	at org.eclipse.smarthome.io.rest.Stream2JSONInputStream.fillBuffer(Stream2JSONInputStream.java:90)[114:org.eclipse.smarthome.io.rest:0.9.0.b5]
	at org.eclipse.smarthome.io.rest.Stream2JSONInputStream.read(Stream2JSONInputStream.java:66)[114:org.eclipse.smarthome.io.rest:0.9.0.b5]
	at java.io.InputStream.read(InputStream.java:179)[:1.8.0_121]
	at java.io.InputStream.read(InputStream.java:101)[:1.8.0_121]
	at org.glassfish.jersey.message.internal.ReaderWriter.writeTo(ReaderWriter.java:115)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider.writeTo(AbstractMessageReaderWriterProvider.java:79)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.message.internal.InputStreamProvider.writeTo(InputStreamProvider.java:105)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.message.internal.InputStreamProvider.writeTo(InputStreamProvider.java:60)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:250)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:106)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
	at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
	at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:86)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
	... 41 more

Edit #2 4.9.2017

After playing around with my sitemaps power switch and tv remote here’s more notes. My refresh interval was set to 30 seconds. After turning tv off with remote controller binding stopped refreshing. You still can switch the tv off/on and mute/unmute etc. from openhab but no automatic refresh would happen. And also the refresh rate was back to 5 secs witch i think is the default value.

After this i restarted openhab.

2017-09-04 16:15:12.805 [DEBUG] [inding.sony.internal.net.HttpRequest] - 1 * Sending client request on thread Start Level: Equinox Container: 601a8ffe-7291-0017-1da3-e9bbc92e8425
1 > GET http://192.168.0.3:8008/ssdp/device-desc.xml
1 > Connection: close
1 > User-Agent: OpenHab/Sony/Binding
1 > X-CERS-DEVICE-ID: MediaRemote:00-11-22-33-44-55
1 > X-CERS-DEVICE-INFO: OpenHab/Sony/Binding
2017-09-04 16:15:12.868 [DEBUG] [inding.sony.internal.net.HttpRequest] - 2 * Client response received on thread Start Level: Equinox Container: 601a8ffe-7291-0017-1da3-e9bbc92e8425
2 < 200
2 < Application-URL: http://192.168.0.3:8008/apps/
2 < Content-Length: 1068
2 < Content-Type: application/xml
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <URLBase>http://192.168.0.3:8008</URLBase>
  <device>
    <deviceType>urn:dial-multiscreen-org:device:dial:1</deviceType>
    <friendlyName>KDL-55W809C</friendlyName>
    <manufacturer>Sony</manufacturer>
    <modelName>BRAVIA 2015</modelName>
    <UDN>uuid:1b86ba82-232c-9fe2-c1d3-681427568bd6</UDN>
    <iconList>
      <icon>
        <mimetype>image/png</mimetype>
        <width>98</width>
        <height>55</height>
        <depth>32</depth>
        <url>/setup/icon.png</url>
      </icon>
    </iconList>
    <serviceList>
      <service>
        <serviceType>urn:dial-multiscreen-org:service:dial:1</serviceType>
        <serviceId>urn:dial-multiscreen-org:serviceId:dial</serviceId>
        <controlURL>/ssdp/notfound</controlURL>
        <eventSubURL>/ssdp/notfound</eventSubURL>
        <SCPDURL>/ssdp/notfound</SCPDURL>
      </service>
    </serviceList>
  </device>
</root>
2017-09-04 16:15:12.890 [DEBUG] [nding.sony.internal.net.HttpResponse] - >>> contents: 1068: <?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <URLBase>http://192.168.0.3:8008</URLBase>
  <device>
    <deviceType>urn:dial-multiscreen-org:device:dial:1</deviceType>
    <friendlyName>KDL-55W809C</friendlyName>
    <manufacturer>Sony</manufacturer>
    <modelName>BRAVIA 2015</modelName>
    <UDN>uuid:1b86ba82-232c-9fe2-c1d3-681427568bd6</UDN>
    <iconList>
      <icon>
        <mimetype>image/png</mimetype>
        <width>98</width>
        <height>55</height>
        <depth>32</depth>
        <url>/setup/icon.png</url>
      </icon>
    </iconList>
    <serviceList>
      <service>
        <serviceType>urn:dial-multiscreen-org:service:dial:1</serviceType>
        <serviceId>urn:dial-multiscreen-org:serviceId:dial</serviceId>
        <controlURL>/ssdp/notfound</controlURL>
        <eventSubURL>/ssdp/notfound</eventSubURL>
        <SCPDURL>/ssdp/notfound</SCPDURL>
      </service>
    </serviceList>
  </device>
</root>
2017-09-04 16:15:12.899 [DEBUG] [y.discovery.DialDiscoveryParticipant] - DIAL device didn't implement any device infos - ignoring: (RemoteDeviceIdentity) UDN: uuid:1b86ba82-232c-9fe2-c1d3-681427568bd6, Descriptor: http://192.168.0.3:8008/ssdp/device-desc.xml
2017-09-04 16:15:12.904 [DEBUG] [y.discovery.DialDiscoveryParticipant] - Found Sony DIAL service: uuid:1b86ba82-232c-9fe2-c1d3-681427568bd6
2017-09-04 16:15:12.978 [DEBUG] [inding.sony.internal.net.HttpRequest] - 1 * Sending client request on thread Start Level: Equinox Container: 601a8ffe-7291-0017-1da3-e9bbc92e8425
1 > GET http://192.168.0.3:8008/ssdp/device-desc.xml
1 > Connection: close
1 > User-Agent: OpenHab/Sony/Binding
1 > X-CERS-DEVICE-ID: MediaRemote:00-11-22-33-44-55
1 > X-CERS-DEVICE-INFO: OpenHab/Sony/Binding
2017-09-04 16:15:12.984 [DEBUG] [inding.sony.internal.net.HttpRequest] - 2 * Client response received on thread Start Level: Equinox Container: 601a8ffe-7291-0017-1da3-e9bbc92e8425
2 < 200
2 < Application-URL: http://192.168.0.3:8008/apps/
2 < Content-Length: 1068
2 < Content-Type: application/xml
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <URLBase>http://192.168.0.3:8008</URLBase>
  <device>
    <deviceType>urn:dial-multiscreen-org:device:dial:1</deviceType>
    <friendlyName>KDL-55W809C</friendlyName>
    <manufacturer>Sony</manufacturer>
    <modelName>BRAVIA 2015</modelName>
    <UDN>uuid:1b86ba82-232c-9fe2-c1d3-681427568bd6</UDN>
    <iconList>
      <icon>
        <mimetype>image/png</mimetype>
        <width>98</width>
        <height>55</height>
        <depth>32</depth>
        <url>/setup/icon.png</url>
      </icon>
    </iconList>
    <serviceList>
      <service>
        <serviceType>urn:dial-multiscreen-org:service:dial:1</serviceType>
        <serviceId>urn:dial-multiscreen-org:serviceId:dial</serviceId>
        <controlURL>/ssdp/notfound</controlURL>
        <eventSubURL>/ssdp/notfound</eventSubURL>
        <SCPDURL>/ssdp/notfound</SCPDURL>
      </service>
    </serviceList>
  </device>
</root>
2017-09-04 16:15:12.989 [DEBUG] [nding.sony.internal.net.HttpResponse] - >>> contents: 1068: <?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <URLBase>http://192.168.0.3:8008</URLBase>
  <device>
    <deviceType>urn:dial-multiscreen-org:device:dial:1</deviceType>
    <friendlyName>KDL-55W809C</friendlyName>
    <manufacturer>Sony</manufacturer>
    <modelName>BRAVIA 2015</modelName>
    <UDN>uuid:1b86ba82-232c-9fe2-c1d3-681427568bd6</UDN>
    <iconList>
      <icon>
        <mimetype>image/png</mimetype>
        <width>98</width>
        <height>55</height>
        <depth>32</depth>
        <url>/setup/icon.png</url>
      </icon>
    </iconList>
    <serviceList>
      <service>
        <serviceType>urn:dial-multiscreen-org:service:dial:1</serviceType>
        <serviceId>urn:dial-multiscreen-org:serviceId:dial</serviceId>
        <controlURL>/ssdp/notfound</controlURL>
        <eventSubURL>/ssdp/notfound</eventSubURL>
        <SCPDURL>/ssdp/notfound</SCPDURL>
      </service>
    </serviceList>
  </device>
</root>
2017-09-04 16:15:13.139 [DEBUG] [org.openhab.binding.sony            ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory}={component.name=binding.sony, component.id=247, service.id=374, service.bundleid=229, service.scope=bundle} - org.openhab.binding.sony
2017-09-04 16:15:13.152 [INFO ] [.internal.scalarweb.ScalarWebHandler] - Attempting connection to Scalar Web device...
2017-09-04 16:15:13.155 [DEBUG] [org.openhab.binding.sony            ] - BundleEvent STARTED - org.openhab.binding.sony
2017-09-04 16:15:13.424 [DEBUG] [inding.sony.internal.net.HttpRequest] - 1 * Sending client request on thread ESH-thingHandler-2
1 > GET http://192.168.0.3:50124/sony/webapi/ssdp/dd.xml
1 > Connection: close
1 > User-Agent: OpenHab/Sony/Binding
1 > X-CERS-DEVICE-ID: MediaRemote:00-11-22-33-44-55
1 > X-CERS-DEVICE-INFO: OpenHab/Sony/Binding
2017-09-04 16:15:13.440 [ERROR] [.internal.scalarweb.ScalarWebHandler] - Exception caught: java.net.ConnectException: Connection refused (Connection refused)

So now scalar gets connection refused.

On vacation right now - will get back to you all on monday. Logs like the above would be muchly appreciated.

Jonas88 - I’m assuming you are using the IRCC service? The webscalar is the next generation protocol and provides much more control than the IRCC. The difference is that the scalar thing will dynamically create a bunch of channels - look in the log or in paperui to see which channels are created.

Hi! it is working now. Even the Scalar Server (got my amazon app up and running :wink: )
I am not using ircc. i am using the scalar thing you provided and now everything works like charm

enjoy your vacation and don’t browse the internet too much :wink:

Hi,

Thank you for reply.

  1. I have found Scalar-xx.map and SimpleIP-xx.map files.
    I can now send IRCC command from Scalar (previously it was stuck not opening where to input “AAA” commands).
    How to have embedded AAA commands into a button? My goal is to have dedicated buttons for Up, Down, Left, Right.

image

  1. Now to Volume control in scalar. It was working, then it stuck, and I could not edit Item, after restarting RPi its gone.
    I cant find it in Things section either. See picture. It was there at the beginning of the list.
    Where is it gone? How to look for it? Do I need to reinstall Scalar binding to get it back?


  1. I did create it, and other Items like follows:

Clicked Link Item and created new one (adding nothing):

image

So then, when I go to Items:
image

It appears like you saw Volume before.
image

Then I press Edit, and give it a understandable name. That is why awful string is not visible there.
Do I do it in correct order?

Hi tmrobert8,
I tried your binding and some basic stuff is already working. I can turn off my TV (BRAVIA KDL-60W605B from 2014) and control and mute volume. But sometimes it works unreliable and doesn’t recognize any commands. I just used the SCALAR channels.
Here are a few notes:

  1. After the TV was turned off and power cut a lot of Host unreachable messages were thrown in the log. The device also stayed Online in PaperUI
2017-09-06 03:14:32.594 [ERROR] [ome.core.thing.link.ThingLinkManager] - Exception occurred while informing handler:java.net.NoRouteToHostException: No route
 to host (Host unreachable)
javax.ws.rs.ProcessingException: java.net.NoRouteToHostException: No route to host (Host unreachable)
        at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:287)[157:org.glassfish.jersey.core.jersey-client:2.22.2]
        at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:255)[157:org.glassfish.jersey.core.jersey-client:2.22.2]
        at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:684)[157:org.glassfish.jersey.core.jersey-client:2.22.2]
        at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:681)[157:org.glassfish.jersey.core.jersey-client:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315)[158:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297)[158:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:228)[158:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)[158:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:681)[157:org.glassfish.jersey.core.jersey-client:2.22.2]
       ...
  1. Is there a possiblity to show notification messages on the screen? I’ve seen that there is a “notification” service type for scalar, maybe this is what I was looking for?
  2. Do you think about publishing your binding on the Eclipse IoT Marketplace?
  3. There are a few more Errors and Exceptions in the log, do you want the whole logfile or just the interesting part?

Thanks for all your efforts!

Ozzy

Where does this long channel name come from?

Switch sonyPower "Virta" {channel="sony:scalar:03ef1f3a-98e3-4035-8350-a58ba4ed623e:system-powerstatus"}

Could the “:03ef1f3a-98e3-4035-8350-a58ba4ed623e” part only be tv’s mac address?

@Jankie_Dizzle you just need to download the binding and put it into your addons directory. You can find it near the bottom of https://github.com/openhab/openhab2-addons/pull/1249

@gitMiguel when - lotsa good information. I’ll take a look and get back to you…

@Jonas88
Glad to hear it’s working for you!

That’s the UUID that the device provides me. Unfortunately alot of the devices will not give me a MAC address to work with but UUID is always available. That’s why I use that. I’ll look into possibly using the MAC instead when I have one…

@Justas

  1. You can simply create a button that sends “Up” to the IRCC command channel (or whatever is shown in the .map file). The IRCC channel will take that string, look into the .map file and translate it to the appropriate “AAA…” command to send to the TV.
  2. Volume - you’ll need to turn on debug for the binding and give me some log files to be able to tell what’s going wrong.
  3. Hmm - the channels are dynamically recreated everything you restart the binding - I wonder if providing a linkage name breaks under that. Again, a debug log would help there.

@OzZy_HH

  1. Yep - that’s something I still need to take care of (life cycle management). That will be fixed eventually.
  2. Somewhere in the log - it should show the API for the notification service. Can you post that for me to see?
  3. Eventually yes - it’s not ready enough yet.
  4. Just the interesting parts - I’ll ask for more if I need it…

i had the issue that some commands were not working (volume, mute etc.) but i deleted the tv and added it again and it solved the problem.
i also noted that if i deactivate too many channels openhab crashes.

does it update the list automatically?
i installed spotify and it did not show up. do i have to restart openhab / the tv, both?

regards

i created buttons too for string commands (ircc) it works great! here is a list:

Ok I successfully installed binding in a fresh 2.1.0 install… Im stuck with a non specific communications error which I’m assuming is in the handshake procedure… Did anyone ever hear back if “bartus” ever got his 1060 working?

That’s the UUID that the device provides me. Unfortunately alot of the devices will not give me a MAC address to work with but UUID is always available. That’s why I use that. I’ll look into possibly using the MAC instead when I have one…

If I remember correctly the first part of the UUID is my tv’s mac address. I’ll confirm this as soon as I get a chance.

 “**03ef1f3a-98e3**-4035-8350-a58ba4ed623e”

Edit:
Just checked this and remembered totally wrong. The above 03ef… is not the mac address of my tv.

Hi,

have you implemented the IR Codes in SimpleIP mode?

Just fired up the Sony binding on my Bravia 2015, working a treat, I now have a power switch which both activates the TV and more importantly, reflects the TV state so I can use turning the TV on as a trigger. Excellent. I have no idea what use the other channels will be to me yet as I’ve yet to really investigate but as the TV is essentially only really used for Plex and a PS4, that’s probably enough for me already. Thanks for the work so far.