Skip to content
This repository has been archived by the owner on Jul 24, 2024. It is now read-only.

Latest commit

 

History

History
171 lines (112 loc) · 6.77 KB

README.md

File metadata and controls

171 lines (112 loc) · 6.77 KB


Teleman

Real-Time Dashboard and Control Application for LG Smart TVs

Key FeaturesArchitectureComponentsHow To UseScreenshotsLicense

screenshot

Key Features

  • Adjust audio levels
  • Switch between channels
  • Access Electronic Program Guide
  • Obtain statistics related to viewed channels and channel categories
  • Set up automation rules

Architecture

Alt text

Components

Communication Layer

Communicates directly with the TV.

Subscribes to WSS event streams and forwards data over Kafka to the Service and Optimization Layer components.

Interface

Interface is responsible for direct communication with LG Smart TVs running the WebOS operating system.

The Interface is communicating with the TVs over a WebSocket Secure (WSS) connection, and all requests are directly proxied to the TV.

Service and Optimization Layer

Processes data received over Kafka in Real-Time, then caches and forwards them to the Presentation Layer with Server-Sent Events.

Control Service

Control Service is responsible for caching most state information of the TV to Redis and serving all these data to the Presentation Layer when requested.

Also, since the Presentation Layer does not communicate via the interface directly, TV commands are going through the Control Service over to the Interface.

Statistics Service

Statistics Service is responsible for dynamic processing of state changes of the TV in order to produce various statistics out of such data (i.e. viewed channels and channel categories, TV uptime, etc.).

Meta-Data Service

Meta-Data Service is responsible for providing Channel and Electronic Program Guide meta-data to other services, such as Statistics Service.

Automation Service

Automation Service is responsible for managing and scheduling various automation rules (i.e. turning on the TV based on a Cron schedule).

EPG Scraping Service (New)

EPG Scraping service is responsible for scraping Electronic Program Guide data from various online data sources.

Since the WebOS API refuses to send the fetched EPG data from the ISP and Teleman's previous data source, iptv-org's EPG repository has been taken down, they have to be scraped with this service.

Authentication Service (New)

Authentication Service is responsible for onboarding and authenticating users.

This service is in early-stage, and authentication / authorization features are not complete yet.

Presentation Layer

Receives data in Real-Time through Server-Sent Events from the Service and Optimization Layer, then caches them in Redux stores.

Front-end

A NextJS front-end application with Redux.

Subscribes to Server-Sent Event streams of the Service and Optimization Layer components, and refreshes data in Real-Time in the Redux stores.

How To Use

Pre-requisites

A running instance of the following:

  • Apache Kafka
  • MongoDB
  • PostgreSQL
  • Redis

Configuring and starting Teleman

  1. Configure Kafka, Mongo, PostgreSQL and Redis
    • In case of control-service, stats-service, meta-service, automation-service, copy application-sample.properties and rename it to application.properties, then provide your configuration
    • In case of authentication-service, provide the POSTGRES_CONNECTION_STRING environment variable
  2. Configure interface
    • Copy environment.sample.ts and rename it to environment.ts, then provide your configuration
  3. Start the applications
    • In case of control-service, stats-service, meta-service, automation-service, execute gradle bootRun
    • In case of authentication-service, execute cargo run
    • In case of interface and frontend, execute yarn dev
  4. Register a user, then log in with it

Screenshots

Current Version

EPG

Automation Rules

Next Version (In-Development)

Dashboard (with randomized mock data)

Dashboard - Channel Picker (with randomized mock data)

License

AGPL-3.0