I'm trying to run a bridge with 14 blinds (as different accessories as I want to put them in different rooms).
These each have 3 services.
My setup can handle 9 blinds, from 10 blinds and above, the accessories have the red "not responsive" text.
Output from the terminal tells me that when all target and position characteristics are being requested not all of them "make it".
For only 12/14 blinds, both target and current position is being asked. For the unlucky 13th, only one is asked, and the 14th blind is ignored.
// ext := extension to separate pcb boards
// n := blind number on pcb
#define gen_blinds_accessory(ext, n, idd) \
HOMEKIT_ACCESSORY(.id= idd ,\
.category=homekit_accessory_category_window_covering,\
.services=(homekit_service_t*[]){\
HOMEKIT_SERVICE(ACCESSORY_INFORMATION,\
.characteristics=(homekit_characteristic_t*[]){\
HOMEKIT_CHARACTERISTIC(NAME, "Blind"#ext"_"#n),\
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Me"),\
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "B"#ext"_"#n),\
HOMEKIT_CHARACTERISTIC(MODEL, "BLIND"),\
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "0.1"),\
HOMEKIT_CHARACTERISTIC(IDENTIFY, NULL),\
NULL\
}),\
HOMEKIT_SERVICE(WINDOW_COVERING, .primary=true,\
.characteristics=(homekit_characteristic_t*[]){\
&blind_current_pos##ext##_##n,\
&blind_target_pos##ext##_##n,\
&blind_pos_state##ext##_##n,\
NULL\
}),\
NULL}),
homekit_accessory_t *accessories[] = {
HOMEKIT_ACCESSORY(.id=1 ,
.category=homekit_accessory_category_bridge,
.services=(homekit_service_t*[]){
HOMEKIT_SERVICE(ACCESSORY_INFORMATION,
.characteristics=(homekit_characteristic_t*[]){
HOMEKIT_CHARACTERISTIC(NAME, "CU Bridge"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Me"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "B"),
HOMEKIT_CHARACTERISTIC(MODEL, "BRIDGE"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "0.1"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, NULL),
NULL
}),
NULL}),
gen_blinds_accessory(_1,2,2)
gen_blinds_accessory(_1,3,3)
gen_blinds_accessory(_1,4,4)
gen_blinds_accessory(_1,6,5)
gen_blinds_accessory(_1,7,6)
gen_blinds_accessory(_1,8,7)
gen_blinds_accessory(_2,1,8)
gen_blinds_accessory(_2,2,9)
gen_blinds_accessory(_2,3,10)
gen_blinds_accessory(_2,4,11)
gen_blinds_accessory(_2,5,12)
gen_blinds_accessory(_2,6,13)
gen_blinds_accessory(_2,7,14)
gen_blinds_accessory(_2,8,15)
NULL
};
>>> HomeKit: [Client 2] Get Characteristics
>>> homekit_server_on_get_characteristics: Free heap: 185608
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 10.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 10.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 13.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 13.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 8.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 8.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 6.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 6.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 12.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 12.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 5.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 5.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 2.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 2.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 7.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 7.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 14.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 14.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 3.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 3.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 11.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 11.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 9.10
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 9.9
>>> homekit_server_on_get_characteristics: [Client 2] Requested characteristic info for 4.10
>>> client_sendv: [Client 2] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/hap+json\x0D\x0ATransfer-Encoding: chunked\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A
>>> HomeKit: [Client 2] Requested characteristic info for 10.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 10.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 13.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 13.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 8.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 8.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 6.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 6.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> client_sendv: [Client 2] Sending payload: 3ff\x0D\x0A{"characteristics":[{"aid":10,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":10,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":13,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":13,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":8,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":8,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":6,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":6,"iid":10,"description":"\x0D\x0A
>>> HomeKit: [Client 2] Requested characteristic info for 12.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 12.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 5.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 5.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 2.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 2.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 7.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> client_sendv: [Client 2] Sending payload: 3ff\x0D\x0ATarget Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":12,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":12,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":5,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":5,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":2,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":2,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":7,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","\x0D\x0A
>>> HomeKit: [Client 2] Requested characteristic info for 7.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 14.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 14.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 3.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 3.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 11.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 11.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 9.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> client_sendv: [Client 2] Sending payload: 400\x0D\x0AminValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":7,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":14,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":14,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":3,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":3,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":11,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":11,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"ai\x0D\x0A
>>> HomeKit: [Client 2] Requested characteristic info for 9.9 ("Current Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> HomeKit: [Client 2] Requested characteristic info for 4.10 ("Target Position")
printing get HK value for blind ~~~~~~~~~~~~~~
uint8 data: 0
>>> client_sendv: [Client 2] Sending payload: 19b\x0D\x0Ad":9,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":9,"iid":9,"description":"Current Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0},{"aid":4,"iid":10,"description":"Target Position","format":"uint8","unit":"percentage","minValue":0,"maxValue":100,"minStep":1,"value":0}]}\x0D\x0A
>>> client_sendv: [Client 2] Sending payload: \x30\x0D\x0A\x0D\x0A
>>> homekit_client_process: [Client 2] Finished processing
I'm trying to run a bridge with 14 blinds (as different accessories as I want to put them in different rooms).
These each have 3 services.
My setup can handle 9 blinds, from 10 blinds and above, the accessories have the red "not responsive" text.
Output from the terminal tells me that when all target and position characteristics are being requested not all of them "make it".
For only 12/14 blinds, both target and current position is being asked. For the unlucky 13th, only one is asked, and the 14th blind is ignored.
Fun shenanigans:
My Setup:
Part of the main.c code:
Part of the blinds.c code:
Output log:
(Note that for only 12/14 blinds, both target and current position is being asked. For the unlucky 13th, only one is asked, and the 14th blind is ignored.)