Giter Site home page Giter Site logo

goracz / teleman Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 4.02 MB

Teleman - In-Development Real-Time Management & Dashboard Application for LG WebOS based TVs. Teleman is unstable yet, it is only for showcase purposes.

License: GNU Affero General Public License v3.0

TypeScript 36.17% Java 57.06% Rust 4.55% JavaScript 0.57% CSS 0.03% Dockerfile 1.62%
spring-webflux apache-kafka expressjs hacktoberfest java javascript nextjs nodejs redis typescript dashboard lg-webos mongodb actix rust postgresql mantine

teleman's Introduction


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

teleman's People

Contributors

rgoracz avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.