Skip to content

honnix/kheos

Repository files navigation

kheos

Codacy Badge CircleCI Coverage Status Maven Central License

A Kotlin implementation of HEOS API Spec.

Why

For unknown reason, HEOS decided to go with plain socket which is anything than being modern (despite that many commands do return JSON!)

The goal of this project is to add an gRPC interface to make it easier interacting with HEOS from other services. And of course we need common models, core lib, service and client to make it complete.

Usage

Prerequisite

JDK8 and Maven.

To build

$ git clone git@github.com:honnix/kheos.git
$ mvn package

This gives you a Docker image as bonus that you can ship directly, or you can use a pre-built image here.

To start the service:

$ java -jar kheos-service/target/kheos-service.jar

Or

docker run -d honnix/kheos-service:<tag>

By default the service listens on 8888 and can be configured by env GRPC_PORT.

Use KHEOS_HEOS_HOST to configure where to find your HEOS.

For details and other configurations, refer to application.conf.

To start hacking

Import the maven project to IntelliJ (it works nicer with Kotlin, of course) and start sending PRs!

kheos-proto

The place where all protobuf files are stored.

kheos-common

This module contains mostly data classes and utilities.

kheos-lib

This module contains core libraries that connect to HEOS, send heartbeat and commands, and discover HEOS speakers.

Test cases are the best place to get a quick idea how to use the lib.

kheos-service

This module exposes gRPC interface to interact with HEOS.