Expose entire Bravia API as a service

The braviatv integration relies on pybravia to implement API access, but exposes only the subset of the API applicable to the media_player and remote entities along with a couple of custom buttons. It would be good to see the entire API available as a callable service, with the integration taking care of connection and authentication to each TV. This would enable more extensive control of the TV’s features, and make some automations much more straightforward.

An example of where it would make things more straightforward is setting the TV up to have audio cast to it with the screen off. The remote service currently allows you to send a PictureOff command which will toggle the screen on and off. In order to make the automation reliable you need to ensure the TV is on and the screen isn’t already toggled off before sending the PictureOff command. As there is no way to read the current picture mode, you just have to make sure you do something that’s guaranteed to turn the screen on, then toggle it off. This means that if the screen is already toggled off it will needlessly flash on for a moment before being turned off. With the full API available you could make sure the TV is on then call setPowerSavingMode with mode: “pictureOff”, which is idempotent, so it doesn’t matter if the screen was already off.