homebridge-ct200-revived
v2.3.5
Published
Homebridge plugin to control Bosch CT200 smart thermostat. Maintained fork of homebridge-ct200 with Node 24 and Homebridge 2.0 support.
Maintainers
Readme
Homebridge CT200 Revived
Homebridge plugin for Bosch Easycontrol CT200
This is a maintained fork of homebridge-ct200 by Domas Kalinauskas, which was archived in September 2025. All credit for the original implementation goes to the original author.
What this fork fixes
- Works on current Node.js (v20/v22/v24): the plugin now uses bosch-xmpp 2.x built on the modern, maintained @xmpp/client stack. The old node-xmpp-client stack crashed on recent Node versions with
TypeError ... at encode64and took the (child) bridge down with it (Child bridge ended (code 1)). - Homebridge 2.0 support.
- No more crash loops: connection failures are retried every 30 seconds instead of exiting the process.
- Survives connection drops: automatic reconnect is re-enabled after login and responses are routed correctly after a reconnect.
- More stable CT200 polling: Bosch XMPP requests are serialized, unhealthy streams are rebuilt, and HomeKit reads use cached values instead of creating request spikes.
- Controlled cache refreshes: humidity, localization, away status, target temperatures, and zone modes are refreshed on the configured interval.
Latest release
Version 2.3.5 focuses on CT200 stability: serialized Bosch XMPP requests, automatic client rebuilds for unhealthy streams, and controlled cache refreshes for HomeKit values.
See CHANGELOG.md and RELEASE_NOTES.md for details.
Migrating from homebridge-ct200
Uninstall homebridge-ct200, install homebridge-ct200-revived. Your existing config.json platform block keeps working unchanged (the platform name is still CT200). Accessories are re-created under the new plugin; if you had them assigned to rooms/automations in the Home app you may need to reassign them once.
Introduction
This homebridge plugin exposes CT200 status allowing for heater control
Note: The thermostat accessory in Home app shows a single button to change the control mode. On is the same as 'Auto' mode in the bosch EasyControl App. Off is the same as 'manual'.
Changing the temperature when set on 'Auto', only changes the setpoint until the next defined setpoint is reached.
Compatibility
While I haven't tested this for myself, the plugin apparently also works with the Buderus TC100 v2 as well as bosch radiator valves, and probably other smart thermostats that make use of boschs' EasyControl API.
Installation
To install homebridge ct200 revived:
- Install the plugin through Homebridge Config UI X (search for
ct200) or manually by:
$ sudo npm -g i homebridge-ct200-revived- Configure within Homebridge Config UI X or edit
config.jsonmanually e.g:
"platforms": [
{
"access": "ACCESS_KEY",
"serial": "SERIAL_KEY",
"password": "PASSWORD",
"zones": [
{
"index": 1,
"name": "NAME1"
},
{
"index": 2,
"name": "NAME2"
}
],
"platform": "CT200"
}
]Configuration settings
accessis the access key (found in bosch EasyControl app)serialis the serial key (found in bosch EasyControl app)passwordis the password used to login. For each device you want to control, add a zone, where:indexis the zone id (from 1 to X)nameis what will show up in the Home app.
Optional settings
awayif set to false, removes theAwaymode switch. (default: true)zoneIntervalhow often to query all zones (in minutes, default: 2)auxIntervalhow often to refresh humidity and localization (in minutes, default: 5)
Troubleshooting
List of problems you might encounter and how to fix them
- "SyntaxError ... Double-check login details!" If you encounter this error, then most likely you are using the wrong password. You need to set and use the password that is in 'Settings' -> 'Personal' -> 'Change Password', not the BOSCH ID password. More details here.
Getting help
If you need help troubleshooting, create an issue and I'll try to help you fix it.
