Skip to content

minaco77/KickrWebOSApp

Repository files navigation

webOS TV 24 KICKR PoC

Minimal webOS TV web app (HTML/CSS/JS) that connects to a Wahoo KICKR via BLE on device, with simulator-mode data for local UI testing. This app is developed on an LG TV with WebOS 24. It may not work on other platform (but you're welcome to try it out there, feed back on what does and does not work on other TVs would be great).

Requirements

  • webOS CLI (ares-*) installed and on PATH
  • Node.js 16.x
  • webOS TV 24 Simulator and/or a real LG TV

Reccomended for devlopment work

  • VS Code with the WebOS Studio extension installed

Project Layout

  • index.html, styles.css, main.js - app UI and logic
  • appinfo.json - app metadata and permissions
  • scripts/deploy.ps1 - packaging + deploy automation

Run in Simulator

The app auto-detects simulator mode when window.webOS is missing and generates mock power/cadence data.

Deploy (Simulator + TV)

From the project root:

.\scripts\deploy.ps1 -Target all

Simulator only:

.\scripts\deploy.ps1 -Target simulator

TV only:

.\scripts\deploy.ps1 -Target tv

Custom simulator path or version:

.\scripts\deploy.ps1 -Target simulator -SimulatorVersion 24 -SimulatorPath "C:\path\to\webOS_TV_24_Simulator"

If your device names differ from defaults, pass them explicitly:

.\scripts\deploy.ps1 -Target all -DeviceTv <yourTvName>

Tests (Vitest)

Install dependencies and run CI-style tests:

npm install
npm run test:ci

Watch mode:

npm run test:watch

Tests mock the webOS BLE service so you can validate logic without a TV.

Notes

  • BLE uses the Luna service luna://com.webos.service.blegatt.
  • Required permission is set in appinfo.json (access_bluetooth).
  • CI deploys require a self-hosted runner with webOS CLI + simulator/TV access.
  • This has only been tested on an LG WebOS 24 TV with a Wahoo Kickr Core (2018 model).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors