Support for Velux gateway (KIX 300)
See original GitHub issueI’ve managed to pair the Velux Gateway with Home Assistant as Homekit controller, and the device is showing the temperature and humidity sensor, but not the CO2 sensor. I thought I would give this a try, to see the raw output of HomeKit Python:
(For the record - I have only tinkered with KIX300 (gateway) and KLA300 (indoor sensor) for now, as I’m awaiting the motorized windows to be installed)
python3 -m homekit.discover
Name: VELUX gateway._hap._tcp.local.
Url: http_impl://192.168.1.157:5001
Configuration number (c#): 14
Feature Flags (ff): Supports HAP Pairing (Flag: 1)
Device ID (id): D3:4E:DB:1E:AE:43
Model Name (md): VELUX Gateway
Protocol Version (pv): 1.1
State Number (s#): 1
Status Flags (sf): Accessory has not been paired with any controllers. (Flag: 1)
Category Identifier (ci): Bridge (Id: 2)
python3 -m homekit.pair -d D3:4E:DB:1E:AE:43 -p RED-AC-TED -f velux -a velux --log debug
2019-07-30 23:41:48,443 __init__.py:0106 DEBUG #1 ios -> accessory: send SRP start request
2019-07-30 23:41:48,450 tlv.py:0134 DEBUG sending [
6: (1 bytes/<class 'bytearray'>) 0x01
0: (1 bytes/<class 'bytearray'>) 0x01
]
2019-07-30 23:41:48,476 tlv.py:0117 DEBUG receiving [
6: (1 bytes/<class 'bytearray'>) 0x01
0: (1 bytes/<class 'bytearray'>) 0x01
]
2019-07-30 23:41:48,487 __init__.py:0060 DEBUG write message: [
6: (1 bytes/<class 'bytearray'>) 0x01
0: (1 bytes/<class 'bytearray'>) 0x01
]
2019-07-30 23:41:50,197 tlv.py:0117 DEBUG receiving [
2: (16 bytes/<class 'bytearray'>) 0x043a66f70ce4bc0009528533ee880ad9
6: (1 bytes/<class 'bytearray'>) 0x02
3: (384 bytes/<class 'bytearray'>) 0x48123c8d2f46af4260a9f183db3ab99bb0f44bf397575b4026cd0a6f5e8c5b5a6051ef12c2b2867547a752427459879b01d65b77953bd67f22eff670215f6d92fe4093f05c0a294f9d1d72989adc60bb764c9b55d88efd25d784396e22a91d086b3930ba623ee18fc3f399fd881865b556fb4968a5019f07e46fc02ae56e6254bfa4089f3e20f5fc6eabd1922acbac7553329af5fa3ea9cf107d11852117af282ffb1ace0983db2601138fed06d572c8ac454eab216609e24b0ae13feb3687746357207861e62629e8fe4a2e41f2bf6a18b2fe1288a21c8f9de5fef698687d1c6b539207a19c2cee4e8a723fead7dc35a80f06af4549d07ea1f35bd833f0d706ff5dd948954d0cd2c56e96af5c87a4a4516cc393aaa276d4324b9748868b6dcf52f18cadb9c956c468da8068ae2a48db6a2fa8c38fbbe9b1845722e22b01093763ca5f09673c721c3571f0747549bf2cd4890beb64aa533a724b1fd7d78009399be83c3611bc7ba73d9b6608b0f5b9911fdb9db376af5048f157386c06944057
]
2019-07-30 23:41:50,209 __init__.py:0067 DEBUG response: [
2: (16 bytes/<class 'bytearray'>) 0x043a66f70ce4bc0009528533ee880ad9
6: (1 bytes/<class 'bytearray'>) 0x02
3: (384 bytes/<class 'bytearray'>) 0x48123c8d2f46af4260a9f183db3ab99bb0f44bf397575b4026cd0a6f5e8c5b5a6051ef12c2b2867547a752427459879b01d65b77953bd67f22eff670215f6d92fe4093f05c0a294f9d1d72989adc60bb764c9b55d88efd25d784396e22a91d086b3930ba623ee18fc3f399fd881865b556fb4968a5019f07e46fc02ae56e6254bfa4089f3e20f5fc6eabd1922acbac7553329af5fa3ea9cf107d11852117af282ffb1ace0983db2601138fed06d572c8ac454eab216609e24b0ae13feb3687746357207861e62629e8fe4a2e41f2bf6a18b2fe1288a21c8f9de5fef698687d1c6b539207a19c2cee4e8a723fead7dc35a80f06af4549d07ea1f35bd833f0d706ff5dd948954d0cd2c56e96af5c87a4a4516cc393aaa276d4324b9748868b6dcf52f18cadb9c956c468da8068ae2a48db6a2fa8c38fbbe9b1845722e22b01093763ca5f09673c721c3571f0747549bf2cd4890beb64aa533a724b1fd7d78009399be83c3611bc7ba73d9b6608b0f5b9911fdb9db376af5048f157386c06944057
]
2019-07-30 23:41:50,222 __init__.py:0118 DEBUG #3 ios -> accessory: send SRP verify request
2019-07-30 23:41:53,696 tlv.py:0134 DEBUG sending [
6: (1 bytes/<class 'bytearray'>) 0x03
3: (384 bytes/<class 'bytearray'>) 0xf2b22f519f1bfde2090ded7df1883189f7e8f3e4dc94e691d3f821a4b1fe7edc4c70143b8debc6f69966b002bb21107053ebd41a4da5c85dc7f44e9f57defde69602cec0ab172aee879cb210c7c9430fbf67a1d4b3a3b02cd3d490bf55b2da2c04349327a257b5d239859b89efc3d75ce87dbe3672ad767d7aecf13b6282ab3ecc59433d4f875f11e095947e728817c687ccbd62550ded17a5c59ef81c578cf4736977016f7484970a381c40b8b6e8925cb571fdd5c2c8c9846596131baed6892eb83db51d12dff099c2c4a6f97fecb9fef2d2bfa27af3a9daeb013c2a0699c98a0d03c121f468837cc3b488b2d5ce216e580d4efcf4cc37116472552594d28068c0d5284cf6b603b5c42adc80ebbdc4c75e041bb3732a242a5a06a3e7d96b2d0190bac75421838a9c199f64b4b6bc7f30cf1957031e6188afbcfe2a5f54fe9d208aacd8fb465d5f67aa50f18843b5d3963b8230d20288ff8590490814f8fd428b800145d9777122d3cfb563e04dc82bd644c5fa595d67eef900c6db793a1a60
4: (64 bytes/<class 'bytearray'>) 0x16aa0c9b2ef0689e5a3738f256840374ea6ffb1f77df961ac9e70a9238b6bfff6a78eada1ee4176a7ed4ea54ff73b2666384b6d018f185113f607076c944dd39
]
2019-07-30 23:41:53,724 tlv.py:0117 DEBUG receiving [
6: (1 bytes/<class 'bytearray'>) 0x03
3: (384 bytes/<class 'bytearray'>) 0xf2b22f519f1bfde2090ded7df1883189f7e8f3e4dc94e691d3f821a4b1fe7edc4c70143b8debc6f69966b002bb21107053ebd41a4da5c85dc7f44e9f57defde69602cec0ab172aee879cb210c7c9430fbf67a1d4b3a3b02cd3d490bf55b2da2c04349327a257b5d239859b89efc3d75ce87dbe3672ad767d7aecf13b6282ab3ecc59433d4f875f11e095947e728817c687ccbd62550ded17a5c59ef81c578cf4736977016f7484970a381c40b8b6e8925cb571fdd5c2c8c9846596131baed6892eb83db51d12dff099c2c4a6f97fecb9fef2d2bfa27af3a9daeb013c2a0699c98a0d03c121f468837cc3b488b2d5ce216e580d4efcf4cc37116472552594d28068c0d5284cf6b603b5c42adc80ebbdc4c75e041bb3732a242a5a06a3e7d96b2d0190bac75421838a9c199f64b4b6bc7f30cf1957031e6188afbcfe2a5f54fe9d208aacd8fb465d5f67aa50f18843b5d3963b8230d20288ff8590490814f8fd428b800145d9777122d3cfb563e04dc82bd644c5fa595d67eef900c6db793a1a60
4: (64 bytes/<class 'bytearray'>) 0x16aa0c9b2ef0689e5a3738f256840374ea6ffb1f77df961ac9e70a9238b6bfff6a78eada1ee4176a7ed4ea54ff73b2666384b6d018f185113f607076c944dd39
]
2019-07-30 23:41:53,739 __init__.py:0060 DEBUG write message: [
6: (1 bytes/<class 'bytearray'>) 0x03
3: (384 bytes/<class 'bytearray'>) 0xf2b22f519f1bfde2090ded7df1883189f7e8f3e4dc94e691d3f821a4b1fe7edc4c70143b8debc6f69966b002bb21107053ebd41a4da5c85dc7f44e9f57defde69602cec0ab172aee879cb210c7c9430fbf67a1d4b3a3b02cd3d490bf55b2da2c04349327a257b5d239859b89efc3d75ce87dbe3672ad767d7aecf13b6282ab3ecc59433d4f875f11e095947e728817c687ccbd62550ded17a5c59ef81c578cf4736977016f7484970a381c40b8b6e8925cb571fdd5c2c8c9846596131baed6892eb83db51d12dff099c2c4a6f97fecb9fef2d2bfa27af3a9daeb013c2a0699c98a0d03c121f468837cc3b488b2d5ce216e580d4efcf4cc37116472552594d28068c0d5284cf6b603b5c42adc80ebbdc4c75e041bb3732a242a5a06a3e7d96b2d0190bac75421838a9c199f64b4b6bc7f30cf1957031e6188afbcfe2a5f54fe9d208aacd8fb465d5f67aa50f18843b5d3963b8230d20288ff8590490814f8fd428b800145d9777122d3cfb563e04dc82bd644c5fa595d67eef900c6db793a1a60
4: (64 bytes/<class 'bytearray'>) 0x16aa0c9b2ef0689e5a3738f256840374ea6ffb1f77df961ac9e70a9238b6bfff6a78eada1ee4176a7ed4ea54ff73b2666384b6d018f185113f607076c944dd39
]
2019-07-30 23:42:01,275 tlv.py:0117 DEBUG receiving [
6: (1 bytes/<class 'bytearray'>) 0x04
4: (64 bytes/<class 'bytearray'>) 0xa73084eb9a92c8b1ecd4ca0f66f01d49e7c101f96292275b4d812f4fa8cac5852298dce267f7a543c7ac56f7e2921982b4bf2d967dff7c0c95dc00cf47996304
]
2019-07-30 23:42:01,286 __init__.py:0067 DEBUG response: [
6: (1 bytes/<class 'bytearray'>) 0x04
4: (64 bytes/<class 'bytearray'>) 0xa73084eb9a92c8b1ecd4ca0f66f01d49e7c101f96292275b4d812f4fa8cac5852298dce267f7a543c7ac56f7e2921982b4bf2d967dff7c0c95dc00cf47996304
]
2019-07-30 23:42:01,297 __init__.py:0169 DEBUG #5 ios -> accessory: send SRP exchange request
2019-07-30 23:42:10,945 tlv.py:0134 DEBUG sending [
1: (36 bytes/<class 'bytes'>) b'ccce48fc-61a8-4d98-8b34-3f473afe0029'
3: (32 bytes/<class 'bytes'>) b'v\x81\x93d\x89,\x12\xe6\x17\x12C\x07\xb6\x8e!\x1b\xa2Qz\xd6\x03/\xfe{\xa8h#\x87\xbd\xfa\x9a\x93'
10: (64 bytes/<class 'bytes'>) b'1\x05w\\\x96\xe0\xc0x\xb4@\x1eA%\xdc\xb8\xa1\xa7\xbe!+\x92z\xa9\xbc0\x9b\x83\xd7e\x06\xb1b\xff \xabOFH\x1e"\xbcf\xd7\x8e\xbf\t0\xc7\xec\xdeY\x0c\xee\x04\x1bF[>\xe6#\x9c\xaa\x1e\x0e'
]
2019-07-30 23:42:11,382 tlv.py:0134 DEBUG sending [
6: (1 bytes/<class 'bytearray'>) 0x05
5: (154 bytes/<class 'bytearray'>) 0x7d4f77a32c82eab29e76f861c9d35f3b4a542a9f9c4a5738f28bf4789e85827b2782dcfeb36a96707b471f519b700c05e5253a457ed60e09d82fd580ae713983b118201711a2621673a07aec8a61b19b42ca604dccb1d700aeb004e1e71e3dc9d99abfc68baa82234df72f587637381a4dc9dd96f3cd7f67e4c14dde887ecb3caed2dc819142dc4bb67f362f954a91ae2777eb929977f83d25db
]
2019-07-30 23:42:11,414 tlv.py:0117 DEBUG receiving [
6: (1 bytes/<class 'bytearray'>) 0x05
5: (154 bytes/<class 'bytearray'>) 0x7d4f77a32c82eab29e76f861c9d35f3b4a542a9f9c4a5738f28bf4789e85827b2782dcfeb36a96707b471f519b700c05e5253a457ed60e09d82fd580ae713983b118201711a2621673a07aec8a61b19b42ca604dccb1d700aeb004e1e71e3dc9d99abfc68baa82234df72f587637381a4dc9dd96f3cd7f67e4c14dde887ecb3caed2dc819142dc4bb67f362f954a91ae2777eb929977f83d25db
]
2019-07-30 23:42:11,436 __init__.py:0060 DEBUG write message: [
6: (1 bytes/<class 'bytearray'>) 0x05
5: (154 bytes/<class 'bytearray'>) 0x7d4f77a32c82eab29e76f861c9d35f3b4a542a9f9c4a5738f28bf4789e85827b2782dcfeb36a96707b471f519b700c05e5253a457ed60e09d82fd580ae713983b118201711a2621673a07aec8a61b19b42ca604dccb1d700aeb004e1e71e3dc9d99abfc68baa82234df72f587637381a4dc9dd96f3cd7f67e4c14dde887ecb3caed2dc819142dc4bb67f362f954a91ae2777eb929977f83d25db
]
2019-07-30 23:42:13,039 tlv.py:0117 DEBUG receiving [
6: (1 bytes/<class 'bytearray'>) 0x06
5: (135 bytes/<class 'bytearray'>) 0xf11e47c72c88b96ae1b8f518e02de4a594b8152c64fa5d1117af39e5c435b989741a67e4ee7f90305f243cab3d67c417fb090bb2198ddff6ff016400f8244092212383a5ad6e8d5bdbcdef7b1d649735d18ed51b7bcd122141e7951ac19d89567b2942edb9e88ec8afeb49870682a694827176805e99a9e867601b5722605821012926af19d211
]
2019-07-30 23:42:13,052 __init__.py:0067 DEBUG response: [
6: (1 bytes/<class 'bytearray'>) 0x06
5: (135 bytes/<class 'bytearray'>) 0xf11e47c72c88b96ae1b8f518e02de4a594b8152c64fa5d1117af39e5c435b989741a67e4ee7f90305f243cab3d67c417fb090bb2198ddff6ff016400f8244092212383a5ad6e8d5bdbcdef7b1d649735d18ed51b7bcd122141e7951ac19d89567b2942edb9e88ec8afeb49870682a694827176805e99a9e867601b5722605821012926af19d211
]
2019-07-30 23:42:13,164 tlv.py:0117 DEBUG receiving [
1: (17 bytes/<class 'bytearray'>) 0x44333a34453a44423a31453a41453a3433
3: (32 bytes/<class 'bytearray'>) 0x31049791d792a8ea67a83e72e60cfd1e9b9613740df41aa278347ce1702117c0
10: (64 bytes/<class 'bytearray'>) 0x0bebe66810357e9e3b2db5dfa57d793d7263b113e6bbafb75c8334a2811ec3574a9d3e3a13dda299b6d777af45440c3480334eb87b9bbdf3d96d539007f88401
]
2019-07-30 23:42:16,200 ip_implementation.py:0416 DEBUG init session
2019-07-30 23:42:19,084 tlv.py:0134 DEBUG sending [
6: (1 bytes/<class 'bytearray'>) 0x01
3: (32 bytes/<class 'bytes'>) b'\xfem\xb1\x8c\x9b^e?\xcc\x11\xe5\x8c\x0b\xa4|\x8a\xf8\xcb\xcd\xf3ObRB\x9cA\x11Y\x00\x961E'
]
2019-07-30 23:42:19,112 tlv.py:0117 DEBUG receiving [
6: (1 bytes/<class 'bytearray'>) 0x01
3: (32 bytes/<class 'bytearray'>) 0xfe6db18c9b5e653fcc11e58c0ba47c8af8cbcdf34f6252429c41115900963145
]
2019-07-30 23:42:19,124 __init__.py:0075 DEBUG write message: [
6: (1 bytes/<class 'bytearray'>) 0x01
3: (32 bytes/<class 'bytearray'>) 0xfe6db18c9b5e653fcc11e58c0ba47c8af8cbcdf34f6252429c41115900963145
]
2019-07-30 23:42:19,614 tlv.py:0117 DEBUG receiving [
6: (1 bytes/<class 'bytearray'>) 0x02
3: (32 bytes/<class 'bytearray'>) 0x90bd8c5b3347f69e7547cf2af31549c6c798da1c8931a52b80afd2c27cc32247
5: (101 bytes/<class 'bytearray'>) 0x70cf68a93d07a423c44ba6327c81f9cec22becc8beb4bb5e7e6662e327494603fa7b2e83b3649c59fd98bf3f1c318e17401b8c20202508ca0a63f2818bed3e00ac024f5aa22ac88d70dc49a918b77a4edf1fe271d0e6f0db4588fcabbba6ec5e5b6c04743b
]
2019-07-30 23:42:19,626 __init__.py:0082 DEBUG response: [
6: (1 bytes/<class 'bytearray'>) 0x02
3: (32 bytes/<class 'bytearray'>) 0x90bd8c5b3347f69e7547cf2af31549c6c798da1c8931a52b80afd2c27cc32247
5: (101 bytes/<class 'bytearray'>) 0x70cf68a93d07a423c44ba6327c81f9cec22becc8beb4bb5e7e6662e327494603fa7b2e83b3649c59fd98bf3f1c318e17401b8c20202508ca0a63f2818bed3e00ac024f5aa22ac88d70dc49a918b77a4edf1fe271d0e6f0db4588fcabbba6ec5e5b6c04743b
]
2019-07-30 23:42:19,762 tlv.py:0117 DEBUG receiving [
1: (17 bytes/<class 'bytearray'>) 0x44333a34453a44423a31453a41453a3433
10: (64 bytes/<class 'bytearray'>) 0xa105a78325eebeacd3e37d8d269a67d211548d38c80c2118048b80b03944c719413d670f0f7b74b66e7502ea918ebfe8a94716806389094abe3a353553c54a03
]
2019-07-30 23:42:19,875 tlv.py:0134 DEBUG sending [
1: (36 bytes/<class 'bytes'>) b'ccce48fc-61a8-4d98-8b34-3f473afe0029'
10: (64 bytes/<class 'bytes'>) b'y--\xca+\x03\xd5:}\x85\x9ae\xf4\xf1H\xfd)5B \xe2d\x08\x84\xf6I T\x18+\xaaw\xbb9\xe2\xc4E\x14=\xa8\xe5*}\x17\x82\x10\xf7\xc3\xfe\xdc\\\xdc,\xf9?h\x902%\xb8\xd0\xbb7\x03'
]
2019-07-30 23:42:19,994 tlv.py:0134 DEBUG sending [
6: (1 bytes/<class 'bytearray'>) 0x03
5: (120 bytes/<class 'bytearray'>) 0xfd29de6de7fc96a7a503483563fbca4d60fc334dbca0559cc8dc7a0a764b5d2043287b880947eb157cda09c9693ba7d1d0b87078590eebc5fc6f1723036cf5b1ae8d7f6e152b9414aaf0c08f109fe84f8f7de1bda5ce7d917f4362a379033419e67de4990bb746b431f0606dfa34881c1e7631e320add67e
]
2019-07-30 23:42:20,013 tlv.py:0117 DEBUG receiving [
6: (1 bytes/<class 'bytearray'>) 0x03
5: (120 bytes/<class 'bytearray'>) 0xfd29de6de7fc96a7a503483563fbca4d60fc334dbca0559cc8dc7a0a764b5d2043287b880947eb157cda09c9693ba7d1d0b87078590eebc5fc6f1723036cf5b1ae8d7f6e152b9414aaf0c08f109fe84f8f7de1bda5ce7d917f4362a379033419e67de4990bb746b431f0606dfa34881c1e7631e320add67e
]
2019-07-30 23:42:20,033 __init__.py:0075 DEBUG write message: [
6: (1 bytes/<class 'bytearray'>) 0x03
5: (120 bytes/<class 'bytearray'>) 0xfd29de6de7fc96a7a503483563fbca4d60fc334dbca0559cc8dc7a0a764b5d2043287b880947eb157cda09c9693ba7d1d0b87078590eebc5fc6f1723036cf5b1ae8d7f6e152b9414aaf0c08f109fe84f8f7de1bda5ce7d917f4362a379033419e67de4990bb746b431f0606dfa34881c1e7631e320add67e
]
2019-07-30 23:42:20,154 tlv.py:0117 DEBUG receiving [
6: (1 bytes/<class 'bytearray'>) 0x04
]
2019-07-30 23:42:20,170 __init__.py:0082 DEBUG response: [
6: (1 bytes/<class 'bytearray'>) 0x04
]
2019-07-30 23:42:20,194 ip_implementation.py:0443 DEBUG session established
2019-07-30 23:42:20,203 secure_http.py:0073 DEBUG handle request: b'GET /accessories HTTP/1.1\r\nHost: 192.168.1.157:5001\r\n\r\n'
Pairing for "velux" was established.
python3 -m homekit.get_accessories -f velux -a velux
1.1: >accessory-information<
1.2: VELUX gateway () >name< [pr]
1.3: VELUX () >manufacturer< [pr]
1.4: VELUX Gateway () >model< [pr]
1.5: g37416e () >serial-number< [pr]
1.6: () >identify< [pw]
1.7: 61 () >firmware.revision< [pr]
1.8: >service<
1.9: 1.1.0 () >version< [pr]
2.1: >accessory-information<
2.2: VELUX Sensor () >name< [pr]
2.3: VELUX () >manufacturer< [pr]
2.4: VELUX Sensor () >model< [pr]
2.5: p0040fd () >serial-number< [pr]
2.7: () >identify< [pw]
2.6: 16 () >firmware.revision< [pr]
2.8: >temperature<
2.9: Temperature sensor () >name< [pr]
2.10: 22.8 () >temperature.current< [pr,ev]
2.11: >humidity<
2.12: Humidity sensor () >name< [pr]
2.13: 67.0 () >relative-humidity.current< [pr,ev]
2.14: >carbon-dioxide<
2.15: Carbon Dioxide sensor () >name< [pr]
2.16: 0 () >carbon-dioxide.detected< [pr,ev]
2.17: 400.0 () >carbon-dioxide.level< [pr,ev]
Also it won’t unpair:
python3 -m homekit.remove_pairing -f velux -a velux -i D3:4E:DB:1E:AE:43
Pairing for "velux" was removed.
python3 -m homekit.discover
Name: VELUX gateway._hap._tcp.local.
Url: http_impl://192.168.1.157:5001
Configuration number (c#): 16
Feature Flags (ff): Supports HAP Pairing (Flag: 1)
Device ID (id): D3:4E:DB:1E:AE:43
Model Name (md): VELUX Gateway
Protocol Version (pv): 1.1
State Number (s#): 1
Status Flags (sf): Accessory has been paired. (Flag: 0)
Category Identifier (ci): Bridge (Id: 2)
Issue Analytics
- State:
- Created 4 years ago
- Comments:11 (10 by maintainers)
Top Results From Across the Web
VELUX ACTIVE Indoor Climate Control Starter Kit KIX 300
The starter kit includes a climate sensor, internet gateway and departure ... reach out to VELUX Technical Support for assistance by dialing 1-800-888-0361....
Read more >VELUX Product and Installation Training - VELUX ACTIVE
Your browser can't play this video. Learn more. Switch camera.
Read more >[solved] HA is unable to find Velux Active / KIX 300, but ...
[solved] HA is unable to find Velux Active / KIX 300, but homekit_python is · Press and hold the button marked with the...
Read more >VELUX ACTIVE with NETATMO indoor climate control KIX 300
VELUX ACTIVE indoor climate sensor, departure switch, gateway, 3 AA ... Please visit www.velux.co.uk/help-and-advice/support/velux-active-.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Absolutely! For now I only have the gateway and the climate sensor up and running. But when the motorized windows are installed I will fill out the template 😃
With help from @Jc2k I have got the CO2 sensor available in Home Assistant now:
We don’t have a Home Assistant entity to map HomeKit CO2 sensors to to HomeAssistant sensors, i’m not sure that there is actually any problem on the homekit_python side.