Developer Spotlight: Meet Tim Roberts

Who are the developers that use our Audio Control API to develop amazing things? We are pleased to have the opportunity to interview some of them to inspire the rest of you!
First in line: Tim Roberts, a developer with more than 30 years of experience in the IT industry. Tim started his journey to contribute to the Sony binding project about five years ago when switching from a MiCasaVerde system to openHAB with a clear goal to automate as many of his devices as possible.
“The Sony Audio binding really opened up a world of possibilities”
– I wrote four or five openHAB bindings for some of my devices where the manufacturer had some good API documentation, to get experience in writing for openHAB. I then decided to tackle my Sony Bravia and Bluray players.
How did you find our open API?
– Actually, it was one of your engineers that contributed a Sony Audio binding to the openHAB (actually to Eclipse SmartHome which has since then been rolled back into openHAB). I quickly took a look at that binding which led me to the documentation on Developer World.
And how did it go?
– About 90 percent of the process was done with Wireshark to ‘snoop’ what the official Sony app was doing and there was a lot of trial and error. The first iteration of the binding supported the simple IP protocol, and it was just a simple protocol to control power, volume, input, and a few other basic things via IP.
– The next iteration was implementing the DIAL protocol to control installed applications. I noticed that both the TV/Bluray were advertising the DIAL links in their UDP discovery packets. Then, I started to research the DIAL protocol and eventually figured out how to connect and control the apps on those devices and how to use the ‘extensions’ to the protocol that Sony had created. In parallel with the DIAL protocol, I started to figure out the IRCC protocol to mimic remote control key presses.
Did you have any Sony audio device when you started?
– No, I didn’t own any, so I was limited to what a Bravia TV did. I ended up buying a used STR-DN1080 AVR and a used HT-NT5 soundbar just for this project. I knew that the only way to properly support these devices was to have them onsite. Turns out that was a good move since both devices introduced several situations that the binding didn’t handle properly.
Are you satisfied with the outcome?
– I would say that you can do almost anything with the Audio Control API. I have made some awesome things lately. For example, when you insert a USB, the AVR (or soundbar) will switch to the USB and automatically start playing a shuffle of all songs on the USB. And another cool thing: if you ring the front doorbell, the Bravia switches to PIP (picture-in-picture) showing the front door camera and the AVR plays a notification sound to all zones.
That’s great! What’s next?
– I have just submitted the project to openHAB to be merged and I think it will be merged with openHAB 3.0. I’m still responding to issues the community has and really only addressing egde cases where a device doesn’t quite follow the protocol.
– Right now, I’m in the process of creating a system that notifies me of API changes and tracking of devices being used. If a device has some unique method or a new API version is released, I know about it right away and can make changes.
Finally, what’s the overall experience using the API?
– I love how the API is pretty consistent across all Sony devices. The API is very useful and includes everything you can do with the device. Give my thanks to your engineers for doing the Sony Audio binding that really opened up a world of possibilities. I’m also really happy you have the Developer World support forum to ask questions!
Have you also made an outstanding project using Audio Control API? Let’s share with us! Submit your project here.
More information
- Take a look at Tim’s project on GitHub
- The latest version of Tim’s project on GitHub
- Learn more about openHAB
- What is the Audio Control API and how does it work? (YouTube video)
- Features you can control with the Audio Control API
- Supported devices