Control your Hisense/Vidaa Smart TV from Home Assistant. This integration provides full control including power, volume, input sources, apps, and remote key presses.
Disclaimer: This is an independent, community-maintained project and is not affiliated with, endorsed by, or sponsored by Hisense or VIDAA. "VIDAA" and "Hisense" are trademarks of their respective owners; their use here is purely descriptive.
- Auto-discovery via SSDP - TVs are automatically detected on your network
- PIN Pairing - Secure authentication via PIN displayed on TV
- Media Player - Full media player entity with power, volume, sources, and apps
- Remote - Send any remote key command
- Services - Custom services for advanced control
- Wake-on-LAN - Turn on TV even when in standby (if supported by your TV)
This integration supports Hisense and Vidaa Smart TVs that use MQTT for remote control. This includes:
- Hisense Smart TVs (2018+)
- Vidaa U platform TVs
- Some Toshiba TVs with Vidaa OS
- Open HACS in Home Assistant
- Click the three dots menu in the top right corner
- Select "Custom repositories"
- Add the repository URL:
https://github.com/warrenrees/ha_vidaatv - Select "Integration" as the category
- Click "Add"
- Search for "Vidaa TV" in HACS and install it
- Restart Home Assistant
- Download the latest release from GitHub
- Extract the
custom_components/vidaa_tvfolder - Copy it to your Home Assistant's
custom_componentsdirectory - Restart Home Assistant
- Go to Settings → Devices & Services
- If your TV is on the network, it should appear as a discovered device
- Click Configure on the discovered TV
- A PIN will appear on your TV screen
- Enter the PIN in Home Assistant
- Your TV is now set up!
- Go to Settings → Devices & Services
- Click + Add Integration
- Search for "Vidaa TV"
- Enter your TV's IP address
- A PIN will appear on your TV screen
- Enter the PIN in Home Assistant
- Your TV is now set up!
The media player entity provides:
| Feature | Description |
|---|---|
| Power On/Off | Turn TV on or off |
| Volume Up/Down | Adjust volume |
| Volume Set | Set specific volume level (0-100) |
| Mute | Toggle mute |
| Source Select | Switch between HDMI inputs, TV, and apps |
| Play/Pause/Stop | Media playback controls |
| Launch App | Start streaming apps |
The remote entity allows sending any key command:
service: remote.send_command
target:
entity_id: remote.living_room_tv_remote
data:
command:
- power
- up
- ok| Command | Description |
|---|---|
power |
Toggle power |
up, down, left, right |
Navigation |
ok, select, enter |
Confirm selection |
back, return |
Go back |
home |
Home screen |
menu |
Open menu |
exit |
Exit current screen |
volume_up, volume_down |
Volume control |
mute |
Toggle mute |
play, pause, stop |
Playback |
fast_forward, rewind |
Skip forward/back |
channel_up, channel_down |
Channel control |
0-9 |
Number keys |
red, green, yellow, blue |
Color buttons |
info |
Show info |
subtitle |
Toggle subtitles |
You can also use the raw key codes (e.g., KEY_POWER, KEY_VOLUMEUP).
Send a remote key press to the TV.
service: vidaa_tv.send_key
data:
key: KEY_OK| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | Yes | Key code to send (e.g., KEY_POWER, KEY_UP) |
Launch an application on the TV.
service: vidaa_tv.launch_app
data:
app: netflix| Parameter | Type | Required | Description |
|---|---|---|---|
app |
string | Yes | App name (netflix, youtube, amazon, disney, hulu, tubi) |
automation:
- alias: "Turn off TV at midnight"
trigger:
- platform: time
at: "00:00:00"
action:
- service: media_player.turn_off
target:
entity_id: media_player.living_room_tvautomation:
- alias: "Netflix button"
trigger:
- platform: device
device_id: your_remote_device
type: button_short_press
subtype: button_1
action:
- service: vidaa_tv.launch_app
data:
app: netflixautomation:
- alias: "TV volume from dimmer"
trigger:
- platform: state
entity_id: sensor.dimmer_brightness
action:
- service: media_player.volume_set
target:
entity_id: media_player.living_room_tv
data:
volume_level: "{{ trigger.to_state.state | float / 100 }}"script:
tv_navigate_to_settings:
alias: "Navigate to TV Settings"
sequence:
- service: remote.send_command
target:
entity_id: remote.living_room_tv_remote
data:
command: home
- delay: 1
- service: remote.send_command
target:
entity_id: remote.living_room_tv_remote
data:
command:
- right
- right
- right
- oktype: media-control
entity: media_player.living_room_tvtype: horizontal-stack
cards:
- type: button
name: Netflix
icon: mdi:netflix
tap_action:
action: call-service
service: vidaa_tv.launch_app
data:
app: netflix
- type: button
name: YouTube
icon: mdi:youtube
tap_action:
action: call-service
service: vidaa_tv.launch_app
data:
app: youtube
- type: button
name: Prime
icon: mdi:amazon
tap_action:
action: call-service
service: vidaa_tv.launch_app
data:
app: amazonFor a full remote control experience, consider using the TV Remote Card custom card:
type: custom:tv-card
entity: media_player.living_room_tv
remote: remote.living_room_tv_remote- Make sure the TV is powered on (not in standby)
- Ensure the TV and Home Assistant are on the same network/VLAN
- Check that SSDP/UPnP is enabled on your router
- Try manual setup with the TV's IP address
- Make sure the TV screen is on (not in screensaver mode)
- Try pressing a button on the TV remote to wake it
- Restart the TV and try again
- Check if there's a "Remote App" or "Mobile App" setting in TV settings
The TV rejected the credentials. Because this happens after the TLS handshake, the certificates themselves are fine.
The usual cause is older TV firmware, which predates the credential scheme newer models use. Setup detects this and falls back automatically, but you can force it: pick Authentication mode → Static on the certificates step, or switch an existing TV over in Settings → Devices & Services → Vidaa TV → Configure. These TVs issue no auth token — they authorise Home Assistant directly once you enter the PIN.
If your TV is not on old firmware, check its date, time, timezone and DST settings: the newer credentials are time-based, and a TV whose clock disagrees with Home Assistant's rejects them.
The integration stores authentication tokens that should persist across reboots. If you experience issues:
- Check that the TV's IP address hasn't changed (consider setting a static IP or DHCP reservation)
- Remove and re-add the integration if tokens have expired
- Enable Wake-on-LAN in your TV's network settings
- Make sure the TV is connected via Ethernet (not WiFi) for best WoL support
- Some TV models don't support WoL
- Make sure the TV is fully booted (wait 30 seconds after power on)
- Try refreshing the entity state
- Check Home Assistant logs for error messages
Enable debug logging for more detailed information:
logger:
default: info
logs:
custom_components.vidaa_tv: debug
pyvidaa: debug- Some older Hisense TVs may not be compatible
- Wake-on-LAN depends on TV model and network configuration
- App IDs may vary between TV models/regions
- Some TVs may disconnect after period of inactivity
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Protocol reverse-engineered from the Vidaa mobile app
- Inspired by various Hisense TV integration projects
- Brand images derived from the VIDAA logo © VIDAA USA, used under CC BY 3.0, via Wikimedia Commons
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - General questions and community support