Ok, so after a lot of trial an error, I found a great solution for me that is SUPER responsive and reliable. In case someone else has a similar requirement, let me describe what is working very well.
Use case:
I ditched my old Harmony remote and wanted an automation replacement. The Harmony "TV" activity would: turn on Denon receiver, turn on LG TV and switch to HDMI 2, turn on Apple TV, and control my Hue lights via Hubitat to turn them on to a certain level. I now want to push my Apple TV power button and do the same automation tasks.
Failures:
The Denon Hubitat driver was very unreliable due to the way Denon deals with telnet. The Hubitat TPLink Kasa driver would NOT discover my Kasa power monitoring plug via the LAN for whatever reason (long story). The Hubitat LG OS app would not discover my TV. The Homebridge Kasa plugin DID discover my smart plug, and I could configure the Homekit "In Use" property for the plug. However, there was a multi-second delay in the Kasa plug reporting that the receiver turned on. Not a total failure, but I wanted faster response time to on/off events. I tried the zwave Zooz ZEN4 smart plug, but its power reporting was a bit too chatty for my tastes and the reporting latency was longer than my final solution that didn't use smart plugs.
What did work:
- Configure receiver, LG TV and Apple TV 4K (Gen 3) for HDMI-CEC.
- Hard wire the LG TV via ethernet to the network (turn off Wifi), and enable Quick Start in the TV menu. This is KEY, as Wifi massively slowed down the "on" power reporting state to Homekit.
- In Homebridge configure the LG WebOS plugin. Add the LG TV to Homekit.
- In Hubitat configure a virtual switch that Homekit can toggle to tell Webcore if the TV is off or on. Expose to Homekit via the beta Hubitat Homekit integration.
- In the Apple Home app (not third party Homekit apps) setup two automations tied to the LG TV accessory to toggle that virtual Hubitat switch depending on TV power state.
- Configure my Webcore pistons to trigger on the TV virtual switch state to control my lights.
After I worked through all of that, the Webcore light control pistons have very low latency when I push the Apple TV on/off button. Probably <2 seconds for "on" and almost instant for "off".
Now if I had simple light control needs, I could have just done all the automations in Homekit and skipped the Hubitat webcore pistons. But my lighting control rules are too complex to easily do in Homekit.