OpenHAB 3.1.0 HomeKit & AVM FritzBox @ CometDECT Thermostat

Hi there,

after almost 2 years break I started over with my OpenHAB setup. All old findings and setups still did work, basically EnOcean stuff, now newly mixed with Shelly actors and CometDECT radiator thermostats. So, pure openHAB with a proper layout in PaperUI and a lot items do work. Thanks for that cool solution.

Today I found out there’s a homekit integration, so installed and after reading a bit, all existing light and outlets did show up on my iPad & iPhone, superb, thanks.

It was also easy to map Shelly H&T as also the temperatur output of the CometDECT thermostat headers into homekit. That made me courious, how to map the thermostats as thermostats into Homekit.

The CometDECT are providing channel “radiator_mode”,“ON/OFF/COMFORT/ECO/BOOST/WINDOW_OPEN”, wheras I mapped those in services/homekit.cfg like that:


After that the related warnings in openHAB log regarding “TargetHeatingCoolingMode” were gone.

But I still get warnings in log regarding “CurrentHeatingCoolingMode”:

Wrong value AUTOMATIC for CurrentHeatingCoolingMode characteristic of the item BadDGMode. Expected one of following [MANUAL, HeatOn, CoolOn]. Returning OFF.

Those values should be the CometDECT channel “mode”,“MANUAL/AUTOMATIC/VACATION” and in homekit’s integration documentation I don’t see any hint to change mapping for “CurrentHeatingCoolingMode” …

Any ideas, input how to make that work properly?

Also a fixed/tied mapping as a workaround would be ok, for a while, the CometDECT thermostats are anyway running in “AUTOMATIC” mode all the time …

you have similar settings for current mode

  • thermostatCurrentModeHeating
  • thermostatCurrentModeCooling
  • thermostatCurrentModeOff

note: there is no “auto” mode for current state in the homekit specification.

alternatively you can do it at item level

String 			thermostat_current_mode  	"Thermostat Current Mode" (gThermostat) {homekit = "CurrentHeatingCoolingMode" [OFF="OFF", HEAT="HEATING", COOL="COOLING"]} 

or if you want to have less modes (you can have more than defined in homekit but only less)

String 			thermostat_current_mode  	"Thermostat Current Mode" 				(gThermostat) {homekit = "CurrentHeatingCoolingMode" [HEAT="HEATING", OFF="OFF"]}          

Thanks for the reply.

So, tried for a test to add that to my existing string line:

String BadDGMode "Aktueller Betriebsmodus [%s]" <heating> (DG_Bad_CometDECT) { channel="avmfritz:Comet_DECT:192_168_178_1:012345678900:mode",homekit="CurrentHeatingCoolingMode" [HEAT="AUTOMATIC", OFF="MANUAL"] }

Did work, no more warnings and complaints.

But since I have 9 of them running, I would prefer to have that defined globally, so trying what is not documented for HomeKit in “services/homekit.cfg”:


Doesn’t work, maybe one line too much. So, trying just two, either:




does work. Finally another try with three lines globally


Does work also.

Now I have that radiator head in HomeKit, showing “Heating to 6,0°C” … a little odd, barely the truth, but also not really wrong.

I’m aware that Thermostat is a more global approach. Here many houses don’t have that, just the header thermostats to control radiators from a central heating.

Can I group a “HeaterCooler” device like a “Thermostat” for HomeKit integration? Looks like that would be more flexible here …

Ok, brain reset, start over, re-thinking and try to turn around the values in “services/homekit.cfg”:


and exchange the channel to homekit mapping for those 2 channels:

String BadDGMode "Aktueller Betriebsmodus [%s]" <heating> (DG_Bad_CometDECT) { channel="avmfritz:Comet_DECT:192_168_178_1:012345678900:mode",homekit="TargetHeatingCoolingMode" }
String BadDGRadiatorMode "Aktueller Betriebszustand [%s]" <radiator> (DG_Bad_CometDECT) { channel="avmfritz:Comet_DECT:192_168_178_1:012345678900:radiator_mode",homekit="CurrentHeatingCoolingMode" }

Does bring that thermostat header up correctly in HomeKit, at least for my point of view, showing it green with “Set to 6,0°C” …

Downside, only three modes for ThermostatCurrentMode, OFF/ECO/COMFORT. “ON” is not really needed, its implied by any other mode than “OFF”, “BOOST” will not appear in my site, but is technical possible. That “WINDOW_OPEN” mode will raise here in winter time and causing issues, warnings.

ThermostatTargetMode “MANUAL” cannot not be covered and any cooling mode can’t be hidden, those radiator headers don’t provide cooling, just heating modes …

in order to hide something you need to re-define the modes at item level as it you did in previous message

String BadDGMode "Aktueller Betriebsmodus [%s]" <heating> (DG_Bad_CometDECT) { channel="avmfritz:Comet_DECT:192_168_178_1:012345678900:mode",homekit="CurrentHeatingCoolingMode" [HEAT="AUTOMATIC", OFF="MANUAL"] }

the same can be done for target mode.

it is not possible to do it at global level or make groups of thermostats

Ok, got you. But I keep it that way, I have at least “Cooling=ECO” as kind of a “2. Heating” mode to show.

So, additional “ThermostatCurrentModeEco” would be nice and helpful. I guess all thermostats might have a current mode, not being switched OFF, not really HEATING and not really COOLING …

Also a “BatteryLowStatus” for entity “Thermostat” would be nice.

And mode “MANUAL” doesn’t mean “OFF”, its doing something, but controlled by user. “VACATION” is rather kind of automated “OFF” definition for a specific time frame …

the list of possible modes displayed in home app is defined by apple and fixed. we cannot add new modes or rename existing. we can only hide some. it is very inflexible.

i also have thermostat that has more modes, like vacation, party, night, etc. but in home app i also have only heating

Hmm, ok, then will feedback to Apple here.

This topic was automatically closed 41 days after the last reply. New replies are no longer allowed.