Continuing on the theme of home automation in the small, here's another tiny but pleasing hack that leverages the Chromecast and Yamaha receiver bindings in OpenHAB.
To conclude a happy Spotify listening session, we like to tell the Google Home to "stop the music and turn off the Living Room TV" - "Living Room TV" being the name of the Chromecast attached to HDMI2 of the Yamaha receiver.
While this does stop the music and turn off the television, the amplifier remains powered up. Probably another weird HDMI control thing. It's just a small detail, but power wastage annoys me, so here's the fix.
The trick with this one is ensuring we catch the correct state transition; namely, that the Chromecast's running "app" is the Backdrop and the state is "idling". If those conditions are true, but the amp is still listening to HDMI2, there's obviously nothing else interesting being routed through the amp so it's safe to shut it down. Note that the type of LivingRoomTV_Idling.state is an OnOffType so we don't compare to "ON", it has to be ON (i.e. it's an enumerated value) - some fun Java legacy there ...
rules/chromecast-powerdown.rules
rule "Ensure Yamaha amp turns off when Chromecast does" when Item LivingRoomTV_App changed then logInfo("RULE.CCP", "Chromecast app: " + LivingRoomTV_App.state) logInfo("RULE.CCP", "Chromecast idle: " + LivingRoomTV_Idling.state) logInfo("RULE.CCP", "Yamaha input: " + Yamaha_Input.state ) if (LivingRoomTV_App.state == "Backdrop") { if (LivingRoomTV_Idling.state == ON) { if (Yamaha_Input.state == "HDMI2") { logInfo("RULE.CCP", "Forcing Yamaha to power off") Yamaha_Power.sendCommand("OFF") } } } end