[BETA] Vizio SmartCast Display Driver

No, it does not seem to report, you must poll the TV to get changes from the remote to be detected from what I gather. I have gotten around this by putting my TV on a zigbee smart plug (Iris 3210-L2) that is just always on but has power reporting so when it reports a substantial change in power (RM with user configuration that depends on your specific setup) it polls the TV from the driver.

That’s sorta what I did in ST. I have the TVs available in Alexa, so I made a virtual switch that would trigger an Alexa routine to turn the TVs on/off from ST. I had the TVs plugged into a plug that could see power usage, and if the TV was turned on/off VIA remote, the plug would change the virtual switch to match. I use Harmony hubs, but my Harmony Hub and AV equipment are in an entertainment center, and the TV is wall mounted. The hub would sometimes have trouble getting signal to the TV, so as part of the turn on procedure, I had the hub turn on the virtual switch in ST, to turn the TV on in an Alexa Routine.

I’m going to see if I can link the Harmony activity to the handler for the TV, and see if that works to keep them in sync. I only use the Harmony remote, so it “should” work.

Haven't checked in here in a while but glad to see the driver is working for most.

This driver actually emulates the Vizio Phone app and communicates with the TV via https calls to the API that Vizio presents for that purpose. As a result, it doesn't always behave like a traditional smart home device. i.e. it won't actively report status, it only responds to a request for status (polling).

The power control in the Driver doesn't actually turn the TV "off". It behaves like pressing the power button on the remote which puts the TV into a sleep state but leaves the network active. The only way to fully power off the device would be to use a smart plug as suggested. If powered off in this manner the driver will not be able to power on the TV directly as the network connection will be down until the plug is activated.

The reason I wrote this driver was actually for a specific purpose. The TV only accepts a single power command that acts like a momentary switch. If the TV is off, it will turn on, if the tv is on it will turn off. However I use Alexa voice commands to control the entire room. "Turn off living room". If the TV was already off. The IR blaster would still send the power command which would actually turn the TV on.... Frustrating to say the least. This driver does a check to see if the TV is in an on or off state. If the TV is already off, it doesn't send the power command.

1 Like

This works well, would you consider doing further work on it?
Direct channel access?
Mute like the power is handled?
More feedback from tv to driver?
Any further enhancement for interaction with RM and Alexa?

Fantastic app, and very usefully as is.
Wish I knew more programing.

No matter what, thank you for all your efforts!

This is going to be good. However...
How do I use this within the dashboards?
Also, I inadvertently modified the Pairing ID when i created the device - what should that be?

Hey, thanks for making this driver!

I'm a bit unclear about some features. Will it know the current state on/off if I use Alexa to control the TV?

I'm trying to have it turn a smart switch on if the tv is turned on. I have a vintage receiver without CEC or any fancy features and I'd like it to turn on and off if I say "Alexa turn on the TV" or "Alexa turn off the tv."

Depends, if you are controlling with the Vizio Alexa skill, then you need to also poll the status of the HE device, but if you are exposing the HE device via the HE Alexa skill then you should be fine and it should update fine. You can also put the TV on a smart plug with power monitoring and detect it that way as well, but that is a bit more complicated.

Thanks for the advice. It totally flew over my head that I still use the remote 50% of the time, so even if it picks up status changes from Alexa commands, it won't know if the tv is off half the time.

My solution for now is to have RM refresh the TV device every 10 seconds. Hopefully this doesn't wreck my network.

I came here because after a few months of using my shiny new Chromecast with GTV, I realized one night that my Vizio P-Series wasn't actually turning off... so it's been drawing 100+ watts continuously for months. Infurtiating. Well it might turn off eventually, but still a lot of wasted energy. This got me digging, and the damn thing still draws 25w even when I press the power button on the remote, (or use your awesome driver.)

I'm shocked at the stand-by drain of these TVs. I have had a smart plug attached, but never paid attention. Now I'm trying to write some clever automations to power off the outlet when I'm not in the room... and also detect when the sources are powered off and check with your driver + maybe use the outlet to force the TV off.

Funny thing is that the CEC works fine with my AVR, but the Vizio just doesn't always listen. I thought I found the golden goose with your driver, until I realized the heavy parasitic drain. My electricity is over $0.33 per kWh so that's quite concerning.

I need to find a way to see if my GTV is 'off' and intercept those signals to control the outlet. Otherwise, I could put another smart outlet on my AVR, which consistently grabs the CEC signal and has a very low standby current. Then use that to properly shut off the Vizio. Just think of the millions of homes wasting 25w or more (if CEC fails to shut off at all.) That's a lot of wasted energy.

Wonder if it's communicating back to China :slight_smile:

Any way you could possibly add backlight control? I'd like to set up an automation where if it's between 23:00 and 7:00, if I dim the bedroom lights it also dims the backlight. It'll help my cat sleep better.

I'd experienced some issues with the driver not picking mute and volume changes due to expecting this data at specific locations inside the response from the TV. I've modified the driver to iterate through the response to find these values more reliably. This seems to fix the issue for me.

I've also made modifications to the debug logging, and to the naming convention of children inputs to include the input names assigned from the TV configuration menu.

Here are these changes in case this helps anyone else experiencing the same issue. However, I no longer have direct access to a Vizio TV to do any further development to this driver.

https://raw.githubusercontent.com/klohner/VizioTV-Hubitat/master/drivers/VizioSmartCastDisplay/Vizio-SmartCast-Display.groovy

1 Like

@kwl3
Just fired this up. Running into some issues with inputs. Might not be parsing correctly ?

dev:9152021-09-13 04:31:06.165 pm errorjava.lang.NumberFormatException: For input string: "-HDMI-1" on line 54 (push)

dev:9152021-09-13 04:30:29.161 pm errorjava.lang.NumberFormatException: For input string: "-HDMI-1" on line 54 (on)

dev:9152021-09-13 04:30:20.748 pm errorjava.lang.NumberFormatException: For input string: "-HDMI-1" on line 54 (push)

Hmm, maybe the Input driver? Here's what I was using:

https://raw.githubusercontent.com/klohner/VizioTV-Hubitat/master/drivers/VizioSmartCastInput/Vizio-SmartCast-Input.groovy

Also, any previously-existing Vizio Smartcast Inputs listed under the device would need to be removed and recreated using the newer version of the display driver.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.