core
core copied to clipboard
Vizio Integration (using pyvizio) uses broken source for APPs
The problem
The Vizio Integration uses pyvizio. That application relied on a external website to the list of APPs available. This link provides nothing: http://hometest.buddytv.netdna-cdn.com/appservice/vizio_apps_prod.json which is referenced by pyvizio as the "source" for APPs.
pyvizio does have a list of APPs built in which is seriously outdated. This is causing serious issues as things built on including/excluding the APPs which may have used newer APPs cannot be updated anymore.
I have posted here: https://github.com/vkorn/pyvizio/issues/137 the issue.
What version of Home Assistant Core has the issue?
core-2023.2.1
What was the last working version of Home Assistant Core?
No response
What type of installation are you running?
Home Assistant Core
Integration causing the issue
Vizio Smartcast
Link to integration documentation on our website
https://www.home-assistant.io/integrations/vizio/
Diagnostics information
No response
Example YAML snippet
No response
Anything in the logs that might be useful for us?
No response
Additional information
Reference this for what "used" to exist for a Vizio Smartcast TV:
https://user-images.githubusercontent.com/723363/207960115-7dd28b84-e2f5-47fa-9171-3fed639b58fb.png
Now that list contain only the 30-some referenced APPs built into pyvzio.
Hey there @raman325, mind taking a look at this issue as it has been labeled with an integration (vizio
) you are listed as a code owner for? Thanks!
Code owner commands
Code owners of vizio
can trigger bot actions by commenting:
-
@home-assistant close
Closes the issue. -
@home-assistant rename Awesome new title
Renames the issue. -
@home-assistant reopen
Reopen the issue. -
@home-assistant unassign vizio
Removes the current integration label and assignees on the issue, add the integration domain after the command.
(message by CodeOwnersMention)
vizio documentation vizio source (message by IssueLinks)
For instance, "FOX Sports" used to be in the list. It isn't. But I can use the remote and go to it and get the state of the TV and see this:
app_name: _UNKNOWN_APP
source: _UNKNOWN_APP
device_class: tv
icon: mdi:television
friendly_name: Office Vizio
supported_features: 3516
app_id:
APP_ID: '111'
NAME_SPACE: 4
MESSAGE: http://ctv-webapp.foxdcg.com/foxsport
Now, I can "hack" that into pyvizio const.py and it will then be a valid source you can select after reloading everything. This is a bit of work I would rather not do if someone at the very least has the last JSON file that had the full list of APPs. But in reality, one should be able to have that JSON local and do as they please.
Like in const.py, I added this:
{
"name": "HBO Max",
"country": ["usa"],
"id": ["29"],
"config": [
{
"NAME_SPACE": 4,
"APP_ID": "128",
"MESSAGE": "https://vizio.play.hbomax.com/"
}
]
},
{
"name": "FOX Sports",
"country": ["usa"],
"id": ["99"],
"config": [
{
"NAME_SPACE": 4,
"APP_ID": "111",
"MESSAGE": "http://ctv-webapp.foxdcg.com/foxsports/vizio/prod/index.html"
}
]
},
Now I have these (again) and can modify include/exclude.
I have posted in pyvizio this: https://github.com/vkorn/pyvizio/issues/137
I am in process of creating the super JSON files for pyvizio for modern TVs. Currently my GIT (https://github.com/kbrown01/VizioApps) has 112 APPs.
I have hacked my pyvizio to use my GIT as the source and it works perfect. I would only hope someone would help me, I have probably 30-40 apps to go ... but I have this in template editor for one of my TVs which helps alot:
{% set id = 160%}
{% set name = "Baby Einstein" %}
{% set payload = state_attr('media_player.patio_vizio','app_id') %}
*** copy to apps ***
,
{
"id": "{{id}}",
"name": "{{name}}",
"country": [
"*"
],
"mobileAppInfo": {
"createDate": "2021-03-31T00:00:00.000Z",
"featured_sort": {{id}},
"description": "Kevin Added",
"app_icon_image_url": "http://images.vizio.com/v4/vibes/1/getimage.aspx?vibeHandle=%7BSid:1034,Iid:900000021,_tid:18%7D&vid=95&width=315&height=315&tid=32"
}
}
*** copy to availability ***
,
{
"id": "{{id}}",
"chipsets": {
"*": [
{
"app_type_payload": "{\"NAME_SPACE\": {{payload.NAME_SPACE}}, \"APP_ID\": \"{{payload.APP_ID}}\", \"MESSAGE\": \"{{payload.MESSAGE}}\" }",
"firmwareMinimum": null,
"firmwareMaximum": null
}
]
}
}
- Select the (missing) APP
- Go to Developer Tools_>Template
- Increment the ID and Change the name
You have what you need to copy into the two JSON files. Obviously the image and description are canned, not sure how to get those.
This is fixed in pyvizio