homebridge-fellow-kettle
v1.0.1
Published
Homebridge plugin for the Fellow Stagg EKG Pro / Corvo EKG Pro kettle (BLE)
Maintainers
Readme
homebridge-fellow-kettle
A Homebridge plugin for the Fellow Stagg EKG Pro and
Corvo EKG Pro kettles. It exposes the kettle to HomeKit as a HeaterCooler
accessory so you can turn it on/off and set a target temperature from the Home
app, Siri, or automations.
The newer EKG Pro models communicate over Bluetooth LE without the auth sequence required by the older EKG+. This plugin targets the Pro models.
How it works
The kettle has no direct on/off command over BLE. Instead:
- On → the plugin syncs the kettle clock and sets a one-time schedule a minute in the future, so the kettle heats almost immediately.
- Off → the plugin cancels the schedule.
Because the kettle does not expose a live temperature readout over BLE, the
CurrentTemperature characteristic mirrors the target temperature.
| HomeKit characteristic | Behaviour |
| --------------------------- | ------------------------------------------------ |
| Active | On / off (schedule set / cancelled) |
| CurrentHeaterCoolerState | HEATING when on, INACTIVE when off |
| TargetHeaterCoolerState | Locked to HEAT |
| CurrentTemperature | Mirrors the target temperature |
| HeatingThresholdTemperature | The setpoint you control (40–100 °C, 1 °C steps) |
Requirements
- Node.js >= 18
- Homebridge >= 1.6
- A Bluetooth adapter supported by
@abandonware/noble
Linux BLE permissions
On Linux you may need to grant Node permission to access BLE without root:
sudo setcap cap_net_raw+eip $(eval readlink -f $(which node))Installation
npm install -g homebridge-fellow-kettleOr install it through the Homebridge Config UI X plugin browser.
Configuration
This is a platform plugin, so the easiest way to configure it is through the Homebridge Config UI X settings form — click Settings next to the plugin, then Add Kettle, and fill in the fields. No manual JSON editing required.
If you prefer to edit config.json directly, add a platform block:
{
"platforms": [
{
"platform": "FellowKettle",
"name": "Fellow Kettle",
"kettles": [
{
"name": "Kettle",
"deviceName": "EKG-a8-3d-54",
"minTemperature": 40,
"maxTemperature": 100,
"scheduleDelaySeconds": 60
}
]
}
]
}The kettles array can hold multiple entries if you have more than one kettle.
| Option | Required | Default | Description |
| -------------------------------- | -------- | -------- | --------------------------------------------------------------------------- |
| platform | yes | — | Must be "FellowKettle". |
| name | yes | — | Platform name (shown in logs). |
| kettles[].name | yes | Kettle | Accessory name shown in HomeKit. |
| kettles[].deviceName | yes | — | The advertised BLE name of your kettle (e.g. EKG-a8-3d-54). |
| kettles[].minTemperature | no | 40 | Minimum settable temperature in °C. |
| kettles[].maxTemperature | no | 100 | Maximum settable temperature in °C. |
| kettles[].scheduleDelaySeconds | no | 60 | How far in the future to schedule when turning on (rounded up to a minute). |
Finding your deviceName
The kettle advertises a name like EKG-a8-3d-54. You can find it with any BLE
scanner app, or on Linux:
sudo hcitool lescanNotes & limitations
- A BLE connection is opened per command and closed afterwards; the plugin does not hold a persistent connection.
- The kettle must be within Bluetooth range of the Homebridge host.
- Changing the temperature while the kettle is on re-applies the schedule with the new temperature.
License
MIT
