core icon indicating copy to clipboard operation
core copied to clipboard

Vizio Integration (using pyvizio) uses broken source for APPs

Open kbrown01 opened this issue 2 years ago • 3 comments

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.

kbrown01 avatar Feb 24 '23 19:02 kbrown01

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)

home-assistant[bot] avatar Feb 24 '23 19:02 home-assistant[bot]

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.

kbrown01 avatar Feb 24 '23 20:02 kbrown01

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
        }
      ]
    }
  }
  1. Select the (missing) APP
  2. Go to Developer Tools_>Template
  3. 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.

kbrown01 avatar Feb 26 '23 22:02 kbrown01

This is fixed in pyvizio

kbrown01 avatar Mar 04 '23 16:03 kbrown01