KOReader for Home Assistant — your Kindle as a first-class device

I read on a (jailbroken) Kindle running KOReader (https://koreader.rocks/), and I wanted Home Assistant to know what I'm reading — and to push things back to the device. So I built a native integration plus a companion KOReader plugin. Sharing it here in case other readers want the
same.

What you get: a KOReader device in Home Assistant with rich reading + device telemetry, full controls, and a couple of services — no cloud, all local.

:sparkles: What it does

Telemetry (sensors)

  • Book: title, author, series, format, language, chapter
  • Progress: %, current/total page, pages left (book & chapter), ETA to finish book & chapter
  • Habits: reading speed (pages/h), reading time today, pages today, session time, lifetime time per book, annotations (highlights/notes)
  • Device: battery, charging, wifi, frontlight level + on/off, warmth

Controls

  • Frontlight brightness & power, warmth, wifi
  • Next / previous page, refresh screen, force sync
  • Services: koreader.show_message (pop a message on the Kindle) and koreader.go_to_page

:wrench: How it works

The KOReader plugin sends a snapshot to Home Assistant on each check-in (page turn, wake, or a timed loop). Two modes:

  • Webhook (native, recommended) — the integration receives the snapshot, exposes every entity, and sends control commands back in the webhook response. Full telemetry and control.

  • REST (legacy) — the plugin writes sensors straight to /api/states with a long-lived token. Telemetry only.

  • Device: battery, charging, wifi, frontlight level + on/off, warmth

Controls

  • Frontlight brightness & power, warmth, wifi
  • Next / previous page, refresh screen, force sync
  • Services: koreader.show_message (pop a message on the Kindle) and koreader.go_to_page

:wrench: How it works

The KOReader plugin sends a snapshot to Home Assistant on each check-in (page turn, wake, or a timed loop). Two modes:

  • Webhook (native, recommended) — the integration receives the snapshot, exposes every entity, and sends control commands back in the webhook response. Full telemetry and control.
  • REST (legacy) — the plugin writes sensors straight to /api/states with a long-lived token. Telemetry only.

:warning: e-ink reality: commands reach the device on its next check-in with WiFi on — not instant while the screen is asleep.

:package: Install

Integration (HACS): HACS → Integrations → ⋮ → Custom repositories → add GitHub - hudsonbrendon/ha-koreader: Integração nativa KOReader para Home Assistant (webhook + controle do Kindle) · GitHub as Integration → install → restart → add the KOReader integration → copy the webhook id it shows.

Plugin: copy hatelemetry.koplugin (GitHub - hudsonbrendon/hatelemetry.koplugin: KOReader plugin: push Kindle reading + device telemetry to Home Assistant via the REST API · GitHub) into koreader/plugins/, set the webhook_id in ha_config.lua, restart KOReader.

A ready-to-use Lovelace dashboard ships in the repo (docs/home-assistant/dashboard.yaml).

:link: Links

A ready-to-use Lovelace dashboard ships in the repo (docs/home-assistant/dashboard.yaml).

:link: Links

Interesting…
I landed here as I was looking for something (possibly) a bit lighter - I already have a Calibre server, but want to sync progress between devices (e.g. KOReader on Kindle and on Android)

Will this do that?

For that I would just use koreader sync in a docker container and both koreaders can push and pull.

This plugin seems awesome though, I want reading stats syncing with crosspoint for xteink now!

2 Likes

Yeah I realised shortly after that there’s even a built in server with KO Reader. Honestly no idea where it is but I’m not too concerned about my reading data.
Uncertain if this syncs the stats as well, so you might have set me on a new mission now