core: Ecobee Fan Mode Not Supported In Homekit Controller
The problem
I am testing out the new homekit_controller support for ecobee preset modes and fan. The fan mode always shows auto and there is no info on whether or not the fan is currently running. It seems that in general the integration is supposed to support this, so I am not sure why the ecobee does not present this information.
What version of Home Assistant Core has the issue?
core-2022.3.0b0
What was the last working version of Home Assistant Core?
No response
What type of installation are you running?
Home Assistant Container
Integration causing the issue
homekit_controller
Link to integration documentation on our website
https://www.home-assistant.io/integrations/homekit_controller
Diagnostics information
{
"home_assistant": {
"installation_type": "Home Assistant Container",
"version": "2022.3.0b0",
"dev": false,
"hassio": false,
"virtualenv": false,
"python_version": "3.9.9",
"docker": true,
"arch": "x86_64",
"timezone": "America/Denver",
"os_name": "Linux",
"os_version": "5.10.28-Unraid",
"run_as_root": true
},
"custom_components": {
"frigate": {
"version": "2.2.2",
"requirements": []
},
"vesync_humidifier": {
"version": "1.0.0",
"requirements": []
},
"zha_toolkit": {
"version": "v0.7.18",
"requirements": []
},
"garbage_collection": {
"version": "4.5",
"requirements": [
"python-dateutil>=2.8.2"
]
},
"hacs": {
"version": "1.23.0",
"requirements": [
"aiogithubapi>=21.11.0"
]
},
"grocy": {
"version": "v3.0.1",
"requirements": [
"pygrocy==0.30.0",
"iso8601==0.1.12",
"integrationhelper==0.2.2"
]
}
},
"integration_manifest": {
"domain": "homekit_controller",
"name": "HomeKit Controller",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/homekit_controller",
"requirements": [
"aiohomekit==0.7.14"
],
"zeroconf": [
"_hap._tcp.local."
],
"after_dependencies": [
"zeroconf"
],
"codeowners": [
"@Jc2k",
"@bdraco"
],
"iot_class": "local_push",
"loggers": [
"aiohomekit",
"commentjson"
],
"is_built_in": true
},
"data": {
"config-entry": {
"title": "Thermostat",
"version": 1,
"data": {
"AccessoryPairingID": "69:BF:EE:A5:EB:5F",
"AccessoryLTPK": "83560f758a9261dad018499f4ca30d2059d1f8ed5247b485afca14c7b2decbf7",
"iOSPairingId": "9c14b1f6-0f83-48ad-ab0e-f3b14f9f59b8",
"iOSDeviceLTSK": "**REDACTED**",
"iOSDeviceLTPK": "c2a791d9eefb4aef19c65ede221ef824fa96ef728a541cc99b209a8aa14e03cc",
"AccessoryIP": "**REDACTED**",
"AccessoryPort": 48585,
"Connection": "IP"
}
},
"entity-map": [
{
"aid": 1,
"services": [
{
"iid": 1,
"type": "0000003E-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "00000014-0000-1000-8000-0026BB765291",
"iid": 6,
"perms": [
"pw"
],
"format": "bool",
"description": "Identify"
},
{
"type": "00000020-0000-1000-8000-0026BB765291",
"iid": 3,
"perms": [
"pr"
],
"format": "string",
"value": "ecobee Inc.",
"description": "Manufacturer",
"maxLen": 64
},
{
"type": "00000021-0000-1000-8000-0026BB765291",
"iid": 5,
"perms": [
"pr"
],
"format": "string",
"value": "ecobee3 lite",
"description": "Model",
"maxLen": 64
},
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 2,
"perms": [
"pr"
],
"format": "string",
"value": "Thermostat",
"description": "Name",
"maxLen": 64
},
{
"type": "00000030-0000-1000-8000-0026BB765291",
"iid": 4,
"perms": [
"pr"
],
"format": "string",
"value": "**REDACTED**",
"description": "Serial Number",
"maxLen": 64
},
{
"type": "00000052-0000-1000-8000-0026BB765291",
"iid": 8,
"perms": [
"pr"
],
"format": "string",
"value": "4.7.50244",
"description": "Firmware Revision",
"maxLen": 64
},
{
"type": "34AB8811-AC7F-4340-BAC3-FD6A85F9943B",
"iid": 11,
"perms": [
"pr",
"hd"
],
"format": "string",
"value": "4.1;3fac0fb4",
"maxLen": 64
},
{
"type": "00000220-0000-1000-8000-0026BB765291",
"iid": 10,
"perms": [
"pr",
"hd"
],
"format": "data",
"value": "u4qz9YgSXzQ="
},
{
"type": "000000A6-0000-1000-8000-0026BB765291",
"iid": 9,
"perms": [
"pr",
"ev"
],
"format": "uint32",
"value": 0,
"description": "Accessory Flags"
}
]
},
{
"iid": 30,
"type": "000000A2-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "00000037-0000-1000-8000-0026BB765291",
"iid": 31,
"perms": [
"pr"
],
"format": "string",
"value": "1.1.0",
"description": "Version",
"maxLen": 64
}
]
},
{
"iid": 16,
"type": "0000004A-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "0000000F-0000-1000-8000-0026BB765291",
"iid": 17,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Current Heating Cooling State",
"minValue": 0,
"maxValue": 2,
"minStep": 1,
"valid-values": [
0,
1,
2
]
},
{
"type": "00000033-0000-1000-8000-0026BB765291",
"iid": 18,
"perms": [
"pr",
"pw",
"ev"
],
"format": "uint8",
"value": 3,
"description": "Target Heating Cooling State",
"minValue": 0,
"maxValue": 3,
"minStep": 1,
"valid-values": [
0,
1,
2,
3
]
},
{
"type": "00000011-0000-1000-8000-0026BB765291",
"iid": 19,
"perms": [
"pr",
"ev"
],
"format": "float",
"value": 22.9,
"description": "Current Temperature",
"unit": "celsius",
"minValue": 0,
"maxValue": 40.0,
"minStep": 0.1
},
{
"type": "00000035-0000-1000-8000-0026BB765291",
"iid": 20,
"perms": [
"pr",
"pw",
"ev"
],
"format": "float",
"value": 24.5,
"description": "Target Temperature",
"unit": "celsius",
"minValue": 7.2,
"maxValue": 33.3,
"minStep": 0.1
},
{
"type": "00000036-0000-1000-8000-0026BB765291",
"iid": 21,
"perms": [
"pr",
"pw",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Temperature Display Units",
"minValue": 0,
"maxValue": 1,
"minStep": 1,
"valid-values": [
0,
1
]
},
{
"type": "0000000D-0000-1000-8000-0026BB765291",
"iid": 22,
"perms": [
"pr",
"pw",
"ev"
],
"format": "float",
"value": 25.6,
"description": "Cooling Threshold Temperature",
"unit": "celsius",
"minValue": 18.3,
"maxValue": 33.3,
"minStep": 0.1
},
{
"type": "00000012-0000-1000-8000-0026BB765291",
"iid": 23,
"perms": [
"pr",
"pw",
"ev"
],
"format": "float",
"value": 23.4,
"description": "Heating Threshold Temperature",
"unit": "celsius",
"minValue": 7.2,
"maxValue": 26.1,
"minStep": 0.1
},
{
"type": "00000010-0000-1000-8000-0026BB765291",
"iid": 24,
"perms": [
"pr",
"ev"
],
"format": "float",
"value": 41.0,
"description": "Current Relative Humidity",
"unit": "percentage",
"minValue": 0,
"maxValue": 100.0,
"minStep": 1.0
},
{
"type": "00000034-0000-1000-8000-0026BB765291",
"iid": 25,
"perms": [
"pr",
"pw",
"ev"
],
"format": "float",
"value": 50.0,
"description": "Target Relative Humidity",
"unit": "percentage",
"minValue": 20.0,
"maxValue": 50.0,
"minStep": 1.0
},
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 27,
"perms": [
"pr"
],
"format": "string",
"value": "Thermostat",
"description": "Name",
"maxLen": 64
},
{
"type": "000000BF-0000-1000-8000-0026BB765291",
"iid": 75,
"perms": [
"pr",
"pw",
"ev"
],
"format": "uint8",
"value": 1,
"description": "Target Fan State",
"minValue": 0,
"maxValue": 1,
"minStep": 1
},
{
"type": "000000AF-0000-1000-8000-0026BB765291",
"iid": 76,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Current Fan State",
"minValue": 0,
"maxValue": 2,
"minStep": 1
},
{
"type": "B7DDB9A3-54BB-4572-91D2-F1F5B0510F8C",
"iid": 33,
"perms": [
"pr"
],
"format": "uint8",
"value": 0,
"minValue": 0,
"maxValue": 3,
"minStep": 1
},
{
"type": "E4489BBC-5227-4569-93E5-B345E3E5508F",
"iid": 34,
"perms": [
"pr",
"pw"
],
"format": "float",
"value": 23.5,
"unit": "celsius",
"minValue": 7.2,
"maxValue": 26.1,
"minStep": 0.1
},
{
"type": "7D381BAA-20F9-40E5-9BE9-AEB92D4BECEF",
"iid": 35,
"perms": [
"pr",
"pw"
],
"format": "float",
"value": 25.5,
"unit": "celsius",
"minValue": 18.3,
"maxValue": 33.3,
"minStep": 0.1
},
{
"type": "73AAB542-892A-4439-879A-D2A883724B69",
"iid": 36,
"perms": [
"pr",
"pw"
],
"format": "float",
"value": 21.0,
"unit": "celsius",
"minValue": 7.2,
"maxValue": 26.1,
"minStep": 0.1
},
{
"type": "5DA985F0-898A-4850-B987-B76C6C78D670",
"iid": 37,
"perms": [
"pr",
"pw"
],
"format": "float",
"value": 26.0,
"unit": "celsius",
"minValue": 18.3,
"maxValue": 33.3,
"minStep": 0.1
},
{
"type": "05B97374-6DC0-439B-A0FA-CA33F612D425",
"iid": 38,
"perms": [
"pr",
"pw"
],
"format": "float",
"value": 22.4,
"unit": "celsius",
"minValue": 7.2,
"maxValue": 26.1,
"minStep": 0.1
},
{
"type": "A251F6E7-AC46-4190-9C5D-3D06277BDF9F",
"iid": 39,
"perms": [
"pr",
"pw"
],
"format": "float",
"value": 24.6,
"unit": "celsius",
"minValue": 18.3,
"maxValue": 33.3,
"minStep": 0.1
},
{
"type": "1B300BC2-CFFC-47FF-89F9-BD6CCF5F2853",
"iid": 40,
"perms": [
"pw"
],
"format": "uint8",
"minValue": 0,
"maxValue": 3,
"minStep": 1
},
{
"type": "1621F556-1367-443C-AF19-82AF018E99DE",
"iid": 41,
"perms": [
"pr",
"pw"
],
"format": "string",
"value": "2035-01-01T00:00:00-07:00T",
"maxLen": 64
},
{
"type": "FA128DE6-9D7D-49A4-B6D8-4E4E234DEE38",
"iid": 48,
"perms": [
"pw"
],
"format": "bool"
},
{
"type": "4A6AE4F6-036C-495D-87CC-B3702B437741",
"iid": 49,
"perms": [
"pr"
],
"format": "uint8",
"value": 1,
"minValue": 0,
"maxValue": 4,
"minStep": 1
},
{
"type": "DB7BF261-7042-4194-8BD1-3AA22830AEDD",
"iid": 50,
"perms": [
"pr"
],
"format": "uint8",
"value": 0,
"minValue": 0,
"maxValue": 3,
"minStep": 1
},
{
"type": "41935E3E-B54D-42E9-B8B9-D33C6319F0AF",
"iid": 51,
"perms": [
"pr"
],
"format": "bool",
"value": 0
},
{
"type": "C35DA3C0-E004-40E3-B153-46655CDD9214",
"iid": 52,
"perms": [
"pr",
"pw"
],
"format": "uint8",
"value": 100,
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "48F62AEC-4171-4B4A-8F0E-1EEB6708B3FB",
"iid": 53,
"perms": [
"pr"
],
"format": "uint8",
"value": 100,
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "1B1515F2-CC45-409F-991F-C480987F92C3",
"iid": 54,
"perms": [
"pr"
],
"format": "string",
"value": "Your ecobee thermostat is now paired with HomeKit.",
"maxLen": 64
}
]
}
]
},
{
"aid": 4297415482,
"services": [
{
"iid": 1,
"type": "0000003E-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 2,
"perms": [
"pr"
],
"format": "string",
"value": "Bedroom",
"description": "Name",
"maxLen": 64
},
{
"type": "00000020-0000-1000-8000-0026BB765291",
"iid": 3,
"perms": [
"pr"
],
"format": "string",
"value": "ecobee Inc.",
"description": "Manufacturer",
"maxLen": 64
},
{
"type": "00000030-0000-1000-8000-0026BB765291",
"iid": 4,
"perms": [
"pr"
],
"format": "string",
"value": "**REDACTED**",
"description": "Serial Number",
"maxLen": 64
},
{
"type": "00000021-0000-1000-8000-0026BB765291",
"iid": 5,
"perms": [
"pr"
],
"format": "string",
"value": "EBERS41",
"description": "Model",
"maxLen": 64
},
{
"type": "00000052-0000-1000-8000-0026BB765291",
"iid": 8,
"perms": [
"pr"
],
"format": "string",
"value": "1.0.0",
"description": "Firmware Revision",
"maxLen": 64
},
{
"type": "00000014-0000-1000-8000-0026BB765291",
"iid": 6,
"perms": [
"pw"
],
"format": "bool",
"description": "Identify"
}
]
},
{
"iid": 192,
"type": "00000096-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "0000008F-0000-1000-8000-0026BB765291",
"iid": 193,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 2,
"description": "Charging State",
"minValue": 0,
"maxValue": 2,
"minStep": 1
},
{
"type": "00000068-0000-1000-8000-0026BB765291",
"iid": 194,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 100,
"description": "Battery Level",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "00000079-0000-1000-8000-0026BB765291",
"iid": 195,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Status Low Battery",
"minValue": 0,
"maxValue": 1,
"minStep": 1
},
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 196,
"perms": [
"pr"
],
"format": "string",
"value": "Bedroom",
"description": "Name",
"maxLen": 64
}
]
},
{
"iid": 208,
"type": "0000008A-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "00000011-0000-1000-8000-0026BB765291",
"iid": 209,
"perms": [
"pr",
"ev"
],
"format": "float",
"value": 26.3,
"description": "Current Temperature",
"unit": "celsius",
"minValue": 0,
"maxValue": 100.0,
"minStep": 0.1
},
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 210,
"perms": [
"pr"
],
"format": "string",
"value": "Bedroom",
"description": "Name",
"maxLen": 64
},
{
"type": "00000075-0000-1000-8000-0026BB765291",
"iid": 211,
"perms": [
"pr",
"ev"
],
"format": "bool",
"value": 1,
"description": "Status Active"
},
{
"type": "00000079-0000-1000-8000-0026BB765291",
"iid": 212,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Status Low Battery",
"minValue": 0,
"maxValue": 1,
"minStep": 1
}
]
},
{
"iid": 57,
"type": "00000086-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "00000071-0000-1000-8000-0026BB765291",
"iid": 65,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Occupancy Detected",
"minValue": 0,
"maxValue": 1,
"minStep": 1
},
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 29,
"perms": [
"pr"
],
"format": "string",
"value": "Bedroom",
"description": "Name",
"maxLen": 64
},
{
"type": "00000075-0000-1000-8000-0026BB765291",
"iid": 117,
"perms": [
"pr",
"ev"
],
"format": "bool",
"value": 1,
"description": "Status Active"
},
{
"type": "00000079-0000-1000-8000-0026BB765291",
"iid": 116,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Status Low Battery",
"minValue": 0,
"maxValue": 1,
"minStep": 1
},
{
"type": "A8F798E0-4A40-11E6-BDF4-0800200C9A66",
"iid": 68,
"perms": [
"pr"
],
"format": "int",
"value": -1,
"unit": "seconds",
"minValue": -1,
"maxValue": 86400,
"minStep": 1
}
]
},
{
"iid": 56,
"type": "00000085-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "00000022-0000-1000-8000-0026BB765291",
"iid": 66,
"perms": [
"pr",
"ev"
],
"format": "bool",
"value": 0,
"description": "Motion Detected"
},
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 28,
"perms": [
"pr"
],
"format": "string",
"value": "Bedroom",
"description": "Name",
"maxLen": 64
},
{
"type": "00000075-0000-1000-8000-0026BB765291",
"iid": 101,
"perms": [
"pr",
"ev"
],
"format": "bool",
"value": 1,
"description": "Status Active"
},
{
"type": "00000079-0000-1000-8000-0026BB765291",
"iid": 100,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Status Low Battery",
"minValue": 0,
"maxValue": 1,
"minStep": 1
},
{
"type": "BFE61C70-4A40-11E6-BDF4-0800200C9A66",
"iid": 67,
"perms": [
"pr"
],
"format": "int",
"value": -1,
"unit": "seconds",
"minValue": -1,
"maxValue": 86400,
"minStep": 1
}
]
}
]
},
{
"aid": 4297415498,
"services": [
{
"iid": 1,
"type": "0000003E-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 2,
"perms": [
"pr"
],
"format": "string",
"value": "Stairway",
"description": "Name",
"maxLen": 64
},
{
"type": "00000020-0000-1000-8000-0026BB765291",
"iid": 3,
"perms": [
"pr"
],
"format": "string",
"value": "ecobee Inc.",
"description": "Manufacturer",
"maxLen": 64
},
{
"type": "00000030-0000-1000-8000-0026BB765291",
"iid": 4,
"perms": [
"pr"
],
"format": "string",
"value": "**REDACTED**",
"description": "Serial Number",
"maxLen": 64
},
{
"type": "00000021-0000-1000-8000-0026BB765291",
"iid": 5,
"perms": [
"pr"
],
"format": "string",
"value": "EBERS41",
"description": "Model",
"maxLen": 64
},
{
"type": "00000052-0000-1000-8000-0026BB765291",
"iid": 8,
"perms": [
"pr"
],
"format": "string",
"value": "1.0.0",
"description": "Firmware Revision",
"maxLen": 64
},
{
"type": "00000014-0000-1000-8000-0026BB765291",
"iid": 6,
"perms": [
"pw"
],
"format": "bool",
"description": "Identify"
}
]
},
{
"iid": 192,
"type": "00000096-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "0000008F-0000-1000-8000-0026BB765291",
"iid": 193,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 2,
"description": "Charging State",
"minValue": 0,
"maxValue": 2,
"minStep": 1
},
{
"type": "00000068-0000-1000-8000-0026BB765291",
"iid": 194,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 100,
"description": "Battery Level",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "00000079-0000-1000-8000-0026BB765291",
"iid": 195,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Status Low Battery",
"minValue": 0,
"maxValue": 1,
"minStep": 1
},
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 196,
"perms": [
"pr"
],
"format": "string",
"value": "Stairway",
"description": "Name",
"maxLen": 64
}
]
},
{
"iid": 208,
"type": "0000008A-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "00000011-0000-1000-8000-0026BB765291",
"iid": 209,
"perms": [
"pr",
"ev"
],
"format": "float",
"value": 23.7,
"description": "Current Temperature",
"unit": "celsius",
"minValue": 0,
"maxValue": 100.0,
"minStep": 0.1
},
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 210,
"perms": [
"pr"
],
"format": "string",
"value": "Stairway",
"description": "Name",
"maxLen": 64
},
{
"type": "00000075-0000-1000-8000-0026BB765291",
"iid": 211,
"perms": [
"pr",
"ev"
],
"format": "bool",
"value": 1,
"description": "Status Active"
},
{
"type": "00000079-0000-1000-8000-0026BB765291",
"iid": 212,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Status Low Battery",
"minValue": 0,
"maxValue": 1,
"minStep": 1
}
]
},
{
"iid": 57,
"type": "00000086-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "00000071-0000-1000-8000-0026BB765291",
"iid": 65,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Occupancy Detected",
"minValue": 0,
"maxValue": 1,
"minStep": 1
},
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 29,
"perms": [
"pr"
],
"format": "string",
"value": "Stairway",
"description": "Name",
"maxLen": 64
},
{
"type": "00000075-0000-1000-8000-0026BB765291",
"iid": 117,
"perms": [
"pr",
"ev"
],
"format": "bool",
"value": 1,
"description": "Status Active"
},
{
"type": "00000079-0000-1000-8000-0026BB765291",
"iid": 116,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Status Low Battery",
"minValue": 0,
"maxValue": 1,
"minStep": 1
},
{
"type": "A8F798E0-4A40-11E6-BDF4-0800200C9A66",
"iid": 68,
"perms": [
"pr"
],
"format": "int",
"value": -1,
"unit": "seconds",
"minValue": -1,
"maxValue": 86400,
"minStep": 1
}
]
},
{
"iid": 56,
"type": "00000085-0000-1000-8000-0026BB765291",
"characteristics": [
{
"type": "00000022-0000-1000-8000-0026BB765291",
"iid": 66,
"perms": [
"pr",
"ev"
],
"format": "bool",
"value": 0,
"description": "Motion Detected"
},
{
"type": "00000023-0000-1000-8000-0026BB765291",
"iid": 28,
"perms": [
"pr"
],
"format": "string",
"value": "Stairway",
"description": "Name",
"maxLen": 64
},
{
"type": "00000075-0000-1000-8000-0026BB765291",
"iid": 101,
"perms": [
"pr",
"ev"
],
"format": "bool",
"value": 1,
"description": "Status Active"
},
{
"type": "00000079-0000-1000-8000-0026BB765291",
"iid": 100,
"perms": [
"pr",
"ev"
],
"format": "uint8",
"value": 0,
"description": "Status Low Battery",
"minValue": 0,
"maxValue": 1,
"minStep": 1
},
{
"type": "BFE61C70-4A40-11E6-BDF4-0800200C9A66",
"iid": 67,
"perms": [
"pr"
],
"format": "int",
"value": -1,
"unit": "seconds",
"minValue": -1,
"maxValue": 86400,
"minStep": 1
}
]
}
]
}
],
"devices": [
{
"name": "Thermostat",
"model": "ecobee3 lite",
"manfacturer": "ecobee Inc.",
"sw_version": "4.7.50244",
"hw_version": "",
"entities": [
{
"original_name": "Thermostat",
"original_device_class": null,
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "climate.thermostat",
"state": "heat_cool",
"attributes": {
"hvac_modes": [
"off",
"heat",
"cool",
"heat_cool"
],
"min_temp": 7.2,
"max_temp": 33.3,
"min_humidity": 20,
"max_humidity": 50,
"current_temperature": 22.9,
"temperature": null,
"target_temp_high": 25.6,
"target_temp_low": 23.4,
"current_humidity": 41.0,
"humidity": 50.0,
"hvac_action": "idle",
"friendly_name": "Thermostat",
"supported_features": 7
},
"last_changed": "2022-02-23T23:52:33.978924+00:00",
"last_updated": "2022-02-24T00:26:25.120002+00:00"
}
},
{
"original_name": "Thermostat Away Cool Target",
"original_device_class": null,
"entity_category": "config",
"original_icon": "mdi:thermometer-minus",
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "number.thermostat_away_cool_target",
"state": "24.6",
"attributes": {
"min": 18.3,
"max": 33.3,
"step": 0.1,
"mode": "auto",
"icon": "mdi:thermometer-minus",
"friendly_name": "Thermostat Away Cool Target"
},
"last_changed": "2022-02-23T23:52:33.977704+00:00",
"last_updated": "2022-02-23T23:52:33.977704+00:00"
}
},
{
"original_name": "Thermostat Away Heat Target",
"original_device_class": null,
"entity_category": "config",
"original_icon": "mdi:thermometer-plus",
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "number.thermostat_away_heat_target",
"state": "22.4",
"attributes": {
"min": 7.2,
"max": 26.1,
"step": 0.1,
"mode": "auto",
"icon": "mdi:thermometer-plus",
"friendly_name": "Thermostat Away Heat Target"
},
"last_changed": "2022-02-23T23:52:33.977604+00:00",
"last_updated": "2022-02-23T23:52:33.977604+00:00"
}
},
{
"original_name": "Thermostat Clear Hold",
"original_device_class": null,
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "button.thermostat_clear_hold",
"state": "unknown",
"attributes": {
"friendly_name": "Thermostat Clear Hold"
},
"last_changed": "2022-02-23T23:52:33.978360+00:00",
"last_updated": "2022-02-23T23:52:33.978360+00:00"
}
},
{
"original_name": "Thermostat Current Humidity",
"original_device_class": "humidity",
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": "%",
"device_class": "humidity",
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "sensor.thermostat_humidity",
"state": "41.0",
"attributes": {
"state_class": "measurement",
"unit_of_measurement": "%",
"device_class": "humidity",
"friendly_name": "Thermostat Humidity"
},
"last_changed": "2022-02-24T00:22:40.193825+00:00",
"last_updated": "2022-02-24T00:22:40.193825+00:00"
}
},
{
"original_name": "Thermostat Current Mode",
"original_device_class": "homekit_controller__ecobee_mode",
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "select.thermostat_current_mode",
"state": "home",
"attributes": {
"options": [
"home",
"sleep",
"away"
],
"device_class": "homekit_controller__ecobee_mode",
"friendly_name": "Thermostat Current Mode"
},
"last_changed": "2022-02-23T23:52:33.976964+00:00",
"last_updated": "2022-02-23T23:52:33.976964+00:00"
}
},
{
"original_name": "Thermostat Current Temperature",
"original_device_class": "temperature",
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": "\u00b0C",
"device_class": "temperature",
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "sensor.thermostat_current_temperature",
"state": "22.9",
"attributes": {
"state_class": "measurement",
"unit_of_measurement": "\u00b0C",
"device_class": "temperature",
"friendly_name": "Thermostat Current Home Temp"
},
"last_changed": "2022-02-24T00:26:25.117773+00:00",
"last_updated": "2022-02-24T00:26:25.117773+00:00"
}
},
{
"original_name": "Thermostat Fan Mode",
"original_device_class": null,
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "number.thermostat_fan_mode",
"state": "100",
"attributes": {
"min": 0.0,
"max": 100,
"step": 1,
"mode": "auto",
"friendly_name": "Thermostat Fan Mode"
},
"last_changed": "2022-02-23T23:52:33.977833+00:00",
"last_updated": "2022-02-23T23:52:33.977833+00:00"
}
},
{
"original_name": "Thermostat Home Cool Target",
"original_device_class": null,
"entity_category": "config",
"original_icon": "mdi:thermometer-minus",
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "number.thermostat_home_cool_target",
"state": "25.5",
"attributes": {
"min": 18.3,
"max": 33.3,
"step": 0.1,
"mode": "auto",
"icon": "mdi:thermometer-minus",
"friendly_name": "Thermostat Home Cool Target"
},
"last_changed": "2022-02-24T00:14:04.312893+00:00",
"last_updated": "2022-02-24T00:14:04.312893+00:00"
}
},
{
"original_name": "Thermostat Home Heat Target",
"original_device_class": null,
"entity_category": "config",
"original_icon": "mdi:thermometer-plus",
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "number.thermostat_home_heat_target",
"state": "23.5",
"attributes": {
"min": 7.2,
"max": 26.1,
"step": 0.1,
"mode": "auto",
"icon": "mdi:thermometer-plus",
"friendly_name": "Thermostat Home Heat Target"
},
"last_changed": "2022-02-24T00:14:02.082079+00:00",
"last_updated": "2022-02-24T00:14:02.082079+00:00"
}
},
{
"original_name": "Thermostat Identify",
"original_device_class": null,
"entity_category": "diagnostic",
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "button.thermostat_identify",
"state": "unknown",
"attributes": {
"friendly_name": "Thermostat Identify"
},
"last_changed": "2022-02-23T23:52:33.978255+00:00",
"last_updated": "2022-02-23T23:52:33.978255+00:00"
}
},
{
"original_name": "Thermostat Sleep Cool Target",
"original_device_class": null,
"entity_category": "config",
"original_icon": "mdi:thermometer-minus",
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "number.thermostat_sleep_cool_target",
"state": "26.0",
"attributes": {
"min": 18.3,
"max": 33.3,
"step": 0.1,
"mode": "auto",
"icon": "mdi:thermometer-minus",
"friendly_name": "Thermostat Sleep Cool Target"
},
"last_changed": "2022-02-23T23:52:33.977502+00:00",
"last_updated": "2022-02-23T23:52:33.977502+00:00"
}
},
{
"original_name": "Thermostat Sleep Heat Target",
"original_device_class": null,
"entity_category": "config",
"original_icon": "mdi:thermometer-plus",
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "number.thermostat_sleep_heat_target",
"state": "21.0",
"attributes": {
"min": 7.2,
"max": 26.1,
"step": 0.1,
"mode": "auto",
"icon": "mdi:thermometer-plus",
"friendly_name": "Thermostat Sleep Heat Target"
},
"last_changed": "2022-02-23T23:52:33.977401+00:00",
"last_updated": "2022-02-23T23:52:33.977401+00:00"
}
}
]
},
{
"name": "Bedroom",
"model": "EBERS41",
"manfacturer": "ecobee Inc.",
"sw_version": "1.0.0",
"hw_version": "",
"entities": [
{
"original_name": "Bedroom",
"original_device_class": "motion",
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": "motion",
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "binary_sensor.bedroom_ecoobee_motion",
"state": "off",
"attributes": {
"device_class": "motion",
"friendly_name": "Bedroom Ecobee Motion"
},
"last_changed": "2022-02-23T23:52:33.978006+00:00",
"last_updated": "2022-02-23T23:52:33.978006+00:00"
}
},
{
"original_name": "Bedroom",
"original_device_class": "occupancy",
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": "occupancy",
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "binary_sensor.bedroom_ecobee_occupancy",
"state": "off",
"attributes": {
"device_class": "occupancy",
"friendly_name": "Bedroom Ecobee Occupancy"
},
"last_changed": "2022-02-23T23:52:33.977924+00:00",
"last_updated": "2022-02-23T23:52:33.977924+00:00"
}
},
{
"original_name": "Bedroom Battery",
"original_device_class": "battery",
"entity_category": null,
"original_icon": "mdi:battery-unknown",
"icon": null,
"unit_of_measurement": "%",
"device_class": "battery",
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "sensor.bedroom_ecoobee_battery",
"state": "100",
"attributes": {
"unit_of_measurement": "%",
"device_class": "battery",
"icon": "mdi:battery",
"friendly_name": "Bedroom Ecobee Battery"
},
"last_changed": "2022-02-23T23:52:33.975958+00:00",
"last_updated": "2022-02-23T23:52:33.975958+00:00"
}
},
{
"original_name": "Bedroom Identify",
"original_device_class": null,
"entity_category": "diagnostic",
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "button.bedroom_ecobee_identify",
"state": "unknown",
"attributes": {
"friendly_name": "Bedroom Ecobee Identify"
},
"last_changed": "2022-02-23T23:52:33.978427+00:00",
"last_updated": "2022-02-23T23:52:33.978427+00:00"
}
},
{
"original_name": "Bedroom Temperature",
"original_device_class": "temperature",
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": "\u00b0C",
"device_class": "temperature",
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "sensor.bedroom_ecobee_temperature",
"state": "26.3",
"attributes": {
"unit_of_measurement": "\u00b0C",
"device_class": "temperature",
"friendly_name": "Bedroom Ecobee Temp"
},
"last_changed": "2022-02-24T00:26:33.373140+00:00",
"last_updated": "2022-02-24T00:26:33.373140+00:00"
}
}
]
},
{
"name": "Stairway",
"model": "EBERS41",
"manfacturer": "ecobee Inc.",
"sw_version": "1.0.0",
"hw_version": "",
"entities": [
{
"original_name": "Stairway",
"original_device_class": "motion",
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": "motion",
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "binary_sensor.stairway_ecobee_motion",
"state": "off",
"attributes": {
"device_class": "motion",
"friendly_name": "Stairway Ecobee Motion"
},
"last_changed": "2022-02-23T23:52:33.978157+00:00",
"last_updated": "2022-02-23T23:52:33.978157+00:00"
}
},
{
"original_name": "Stairway",
"original_device_class": "occupancy",
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": "occupancy",
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "binary_sensor.stairway_ecobee_occupancy",
"state": "off",
"attributes": {
"device_class": "occupancy",
"friendly_name": "Stairway Ecobee Occupancy"
},
"last_changed": "2022-02-24T00:26:18.670881+00:00",
"last_updated": "2022-02-24T00:26:18.670881+00:00"
}
},
{
"original_name": "Stairway Battery",
"original_device_class": "battery",
"entity_category": null,
"original_icon": "mdi:battery-unknown",
"icon": null,
"unit_of_measurement": "%",
"device_class": "battery",
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "sensor.stairway_ecobee_battery",
"state": "100",
"attributes": {
"unit_of_measurement": "%",
"device_class": "battery",
"icon": "mdi:battery",
"friendly_name": "Stairway Ecobee Battery"
},
"last_changed": "2022-02-23T23:52:33.976313+00:00",
"last_updated": "2022-02-23T23:52:33.976313+00:00"
}
},
{
"original_name": "Stairway Identify",
"original_device_class": null,
"entity_category": "diagnostic",
"original_icon": null,
"icon": null,
"unit_of_measurement": null,
"device_class": null,
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "button.stairway_ecobee_identify",
"state": "unknown",
"attributes": {
"friendly_name": "Stairway Ecobee Identify"
},
"last_changed": "2022-02-23T23:52:33.978494+00:00",
"last_updated": "2022-02-23T23:52:33.978494+00:00"
}
},
{
"original_name": "Stairway Temperature",
"original_device_class": "temperature",
"entity_category": null,
"original_icon": null,
"icon": null,
"unit_of_measurement": "\u00b0C",
"device_class": "temperature",
"disabled": false,
"disabled_by": null,
"state": {
"entity_id": "sensor.stairway_ecobee_temperature",
"state": "23.7",
"attributes": {
"unit_of_measurement": "\u00b0C",
"device_class": "temperature",
"friendly_name": "Stairway Ecobee Temp"
},
"last_changed": "2022-02-24T00:26:17.662227+00:00",
"last_updated": "2022-02-24T00:26:17.662227+00:00"
}
}
]
}
]
}
}
Example YAML snippet
No response
Anything in the logs that might be useful for us?
No response
Additional information
No response
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 2
- Comments: 28 (22 by maintainers)
Would you please open a fresh issue. Thanks 👍
@bdraco, I tested the climate.set_fan_mode from the dev branch cloned today. There were three issues that I have found:
@imle The important thing with HomeKit is that its mostly about the services and characteristics the device implements. We implement the thermostat and fan services, and if a single accesory implements both that is something we totally support already. But the device itself has to actually support it!
The interfaces we support are largely driven by the diagnostics data we have captured from real world devices, as theres a lot of detail not quite captured in the specs. That said, if a device implements the required parts of the thermostat service only, and has no optional characteristics and no vendor characteristics, then absolutely there is no fan support and no way for us to provide fan support, even if the native API does indeed have a fan. It is completely out of our hands. The manufacturer has to wire it up in the HomeKit API first.
This sort of thing does happen - e.g. i’m aware of a window covering that can’t be stopped mid open/close using homekit (even though we absolutely have implemented the “stop” interface), but you can stop it using the devices native app. That is completely out of our hands, and with the manufacturer.
An ecobee implements the
thermostatservice. We know from the documentation Apple has released that there is an alternative interface calledheater-cooler. This does have fan control (and iirc slat control). But ecobee implementsthermostat, notheater-cooler.The documentation for
thermostatdoes not list any fan control characteristics as required or even optional, and until this ticket we had not encountered any way of doing fan control for athermostat. So our assumption for the last few years has been it was not supported.But as hinted at in the comments of this ticket it looks like Ecobee is using TargetFanState and CurrentFanState characteristics within the
thermostatservice. These 2 characterstics are normally part of the fan service, and if Ecobee had implemented a fan service we’d in theory already support them. If we assume this is an undocumented but supported extension to the documented thermostat interface, this means that homekit will let us pick between “Manual” and “Auto”. “Auto” is available for home assistant (see https://developers.home-assistant.io/docs/core/entity/climate/#fan-modes), but “Manual” isn’t. Luckily we are allowed to use custom modes. But it’s not clear what “Manual” and “Auto” actually mean. There doesn’t seem to be “On” or “Off” here.I don’t have much free time right now, so this ticket is unlikely to move forward in the next few months unless soemone else comes forward to take a crack at it.