Some success today with Node Red – this is the visual control building software for Home Assistant.
Since starting I have been struggling to discover a way to tell if a Sky-Q box is turned on or off – “why do i care?” you might ask. Well, I use the fact that the Sky-Q box is turned on as a pretty good indicator that we are in the house and probably watching TV – this info is then used to control various lights that we want to turn on automatically when it gets dark outside and other things.
Anyway, the Sky-Q box sadly uses one command to turn it on and off, it’s a toggle; makes no difference when you use the remote – if it fails to turn on you simply press the button again, but in the world of automation the system sends a command and if the device ignores it then all bets are off as we now have no idea if its on or off.
On a device with an On command and an Off command it’s not so bad as we can just send another ‘on’ command etc
After many days of searching I stumbled upon a page that had some interesting info on Sky boxes – it seems they have a web server in them that can dish out information about the box if asked – nice.
If you have a Sky box and browse to this address:- http://xxx.xxx.xxx.xxx:9006/as/system/information (replace the xxx.xxx.xxx.xxx with the IP address of your box), you will get a response back that is just a page of plain text. I won’t put a picture up of mine as it might contain sensitive info, but in that text there is this line:-
"activeStandby" : true,
This is the secret I needed, ‘true’ means it’s in standby mode and ‘false’ means it’s on.
In Node Red I used an HTTP node to send the request and a Switch node to check the reply for either “activeStandby”: true or “activeStandby”:false. Once that was known it was easy to choose what I wanted to do with the info in my light control flows. This little problem has been bugging me for about 4 weeks and the fix in the end was so simple yet nobody else seemed to know about it 🙂