Files
hisence-mac-app/README.md
T
ahmed cc2018aae7
build / sanity (push) Waiting to run
build / macos-build (push) Waiting to run
HisenseBar v1.0.0: native menu-bar remote for Hisense VIDAA TVs
- SwiftUI popover: apps grid w/ live search, sources, glass remote, gradient volume slider, animations
- Persistent python protocol bridge (vidaa-control, MQTT/TLS :36669)
- Wake-on-LAN power-on, one-time PIN pairing with token auto-refresh
- MCP server for AI agents (11 tv_* tools) + live test script
- Gitea Actions CI workflow
2026-10-13 18:20:11 +03:00

2.8 KiB
Raw Permalink Blame History

HisenseBar

A native macOS menu-bar app that controls Hisense VIDAA smart TVs over the local network — volume, apps, input sources, remote keys, and power, all from the menu bar.

HisenseBar

Features

  • Volume — live slider with mute (changes are pushed to the TV as you drag)
  • Apps — full app grid with icons and local search; click to launch
  • Sources — switch inputs (TV, HDMI1–3, AV…) with friendly device names ("PlayStation 5")
  • Remote — d-pad with hold-to-repeat, OK/back/home/menu, transport keys, number pad
  • Power — off via remote key, on via Wake-on-LAN (MAC auto-detected)
  • Pairing — one-time PIN flow straight from the popover; token stored in ~/Library/Application Support/HisenseBar/tokens.json and auto-refreshed

Requirements

  • macOS 14+
  • Hisense VIDAA TV on the same network (MQTT protocol, port 36669)
  • Python 3.9+ on this Mac for the protocol bridge (see Architecture)

Install

  1. Download HisenseBar.app.zip from Releases.
  2. Unzip and drag HisenseBar.app to /Applications.
  3. First launch: right-click → Open (the app is not notarized), then allow Local Network access when macOS asks.
  4. Click the TV icon in the menu bar → enter the PIN shown on your TV once.

Build from source

git clone https://gitea.anwarpy.ai/ahmed/hisence-mac-app.git
cd hisence-mac-app
# create a python venv with the vidaa-control protocol library, then:
bash make_app.sh

make_app.sh builds the Swift package, assembles HisenseBar.app, and bundles the bridge + icon.

Architecture

SwiftUI menu-bar app (BridgeTV actor)
        │  line-JSON over stdio
        ▼
bridge.py — persistent protocol bridge (vidaa-control implementation)
        │  MQTT 3.1.1 over TLS :36669
        ▼
Hisense VIDAA TV

The UI is pure native SwiftUI. All TV protocol work (pairing, tokens, MQTT) happens in the Python bridge process, which stays connected for instant commands. The TV's TLS stack rejects Apple's Network.framework TLS, but accepts OpenSSL — the bridge sidesteps that entirely.

Troubleshooting

Problem Fix
Nothing happens / no PIN System Settings → Privacy & Security → Local Network → enable HisenseBar
macOS blocks launch Right-click the app → Open (unsigned build)
TV shows "fake sleep", commands half-work Press any key once — the screen wakes, everything responds
Pairing expired Menu bar → gear → Pair TV again

Roadmap

  • Design refresh: animations, custom slider, glass remote buttons, app icon
  • Hermes MCP server (mcp_tv_server.py — in progress, 11 tv_* tools)
  • Notarized builds

License

MIT — see LICENSE.