Announce new HomeKit client binding

Your log shows something more intriguing than you may have noticed .. the characteristic “type” attributes have values that indicate custom characteristic types (check the Apple specs) and currently my binding (in absence of any knowledge about manufacturer specific custom types) does not generate ANY channels for such. So even if they would have the same aid and iid but different types (which is illegal) they cannot cause duplicates in the binding..

After a series of missteps on my part. I had to rest the device and start from scratch. The good news is that I still had the binding in trace when I added the device and it logged the following json:

Binding JSON
{
  "accessories": [
    {
      "aid": 1,
      "services": [
        {
          "iid": 1,
          "type": "3E",
          "primary": false,
          "hidden": false,
          "characteristics": [
            {
              "iid": 2,
              "type": "14",
              "format": "bool",
              "perms": [
                "pw"
              ]
            },
            {
              "iid": 3,
              "type": "20",
              "format": "string",
              "value": "Aqara",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false
            },
            {
              "iid": 4,
              "type": "21",
              "format": "string",
              "value": "PS-S02E",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false
            },
            {
              "iid": 5,
              "type": "23",
              "format": "string",
              "value": "Presence-Sensor-FP2-DB0B",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false
            },
            {
              "iid": 6,
              "type": "30",
              "format": "string",
              "value": "54EF447BDB0B",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false
            },
            {
              "iid": 7,
              "type": "52",
              "format": "string",
              "value": "1.3.3",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false
            },
            {
              "iid": 8,
              "type": "53",
              "format": "string",
              "value": "1.0.0",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false
            },
            {
              "iid": 9,
              "type": "34AB8811-AC7F-4340-BAC3-FD6A85F9943B",
              "format": "string",
              "value": "6.1;6.1",
              "perms": [
                "pr",
                "hd"
              ],
              "ev": false,
              "enc": false
            },
            {
              "iid": 10,
              "type": "220",
              "format": "data",
              "value": "xDsGOzOmv1k=",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false,
              "maxDataLen": 8
            }
          ]
        },
        {
          "iid": 16,
          "type": "A2",
          "primary": false,
          "hidden": false,
          "characteristics": [
            {
              "iid": 18,
              "type": "37",
              "format": "string",
              "value": "1.1.0",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false
            }
          ]
        },
        {
          "iid": 64,
          "type": "22A",
          "primary": false,
          "hidden": false,
          "characteristics": [
            {
              "iid": 66,
              "type": "22B",
              "format": "bool",
              "value": 1,
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false
            },
            {
              "iid": 67,
              "type": "22C",
              "format": "uint32",
              "value": 9,
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false,
              "minValue": 0,
              "maxValue": 15,
              "minStep": 1
            },
            {
              "iid": 68,
              "type": "22D",
              "format": "tlv8",
              "value": "",
              "perms": [
                "pr",
                "pw",
                "ev",
                "tw",
                "wr"
              ],
              "ev": false,
              "enc": false
            }
          ]
        },
        {
          "iid": 2560,
          "type": "239",
          "primary": false,
          "hidden": false,
          "characteristics": [
            {
              "iid": 2562,
              "type": "23C",
              "format": "data",
              "value": "",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false,
              "maxDataLen": 0
            }
          ]
        },
        {
          "iid": 80,
          "type": "9715BF53-AB63-4449-8DC7-2785D617390A",
          "primary": false,
          "hidden": true,
          "characteristics": [
            {
              "iid": 81,
              "type": "7D943F6A-E052-4E96-A176-D17BF00E32CB",
              "format": "int",
              "value": -1,
              "perms": [
                "pr",
                "ev",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "Firmware Update Status",
              "minValue": -128,
              "maxValue": 127,
              "minStep": 1
            },
            {
              "iid": 82,
              "type": "A45EFD52-0DB5-4C1A-9727-513FBCD8185F",
              "format": "string",
              "perms": [
                "pw",
                "hd"
              ],
              "description": "Firmware Update URL",
              "maxLen": 256
            },
            {
              "iid": 83,
              "type": "40F0124A-579D-40E4-865E-0EF6740EA64B",
              "format": "string",
              "perms": [
                "pw",
                "hd"
              ],
              "description": "Firmware Update Checksum"
            },
            {
              "iid": 85,
              "type": "96BF5F20-2996-4DB6-8D65-0E36314BCB6D",
              "format": "string",
              "value": "1.3.3",
              "perms": [
                "pr",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "Firmware Version"
            },
            {
              "iid": 84,
              "type": "36B7A28B-3200-4783-A3FB-6714F11B1417",
              "format": "string",
              "value": "lumi.motion.agl001",
              "perms": [
                "pr",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "Device Model"
            },
            {
              "iid": 86,
              "type": "F5329CB1-A50B-4225-BA9B-331449E7F7A9",
              "format": "uint8",
              "value": 1,
              "perms": [
                "pr",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "Selected IoT Platform",
              "minValue": 0,
              "maxValue": 4,
              "minStep": 1
            }
          ]
        },
        {
          "iid": 96,
          "type": "F49132D1-12DF-4119-87D3-A93E8D68531E",
          "primary": false,
          "hidden": true,
          "characteristics": [
            {
              "iid": 101,
              "type": "23",
              "format": "string",
              "value": "AIOT",
              "perms": [
                "pr",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "Name"
            },
            {
              "iid": 97,
              "type": "25D889CB-7135-4A29-B5B4-C1FFD6D2DD5C",
              "format": "string",
              "value": "",
              "perms": [
                "pr",
                "pw",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "Country Domain"
            },
            {
              "iid": 98,
              "type": "C7EECAA7-91D9-40EB-AD0C-FFDDE3143CB9",
              "format": "string",
              "value": "lumi1.54ef447bdb0b",
              "perms": [
                "pr",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "AIOT did"
            },
            {
              "iid": 99,
              "type": "80FA747E-CB45-45A4-B7BE-AA7D9964859E",
              "format": "string",
              "perms": [
                "pw",
                "hd"
              ],
              "description": "AIOT bindkey"
            },
            {
              "iid": 100,
              "type": "C3B8A329-EF0C-4739-B773-E5B7AEA52C71",
              "format": "bool",
              "value": 1,
              "perms": [
                "pr",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "AIOT bindstate"
            }
          ]
        },
        {
          "iid": 2672,
          "type": "84",
          "primary": false,
          "hidden": false,
          "characteristics": [
            {
              "iid": 2673,
              "type": "23",
              "format": "string",
              "value": "Light Sensor",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false
            },
            {
              "iid": 2674,
              "type": "6B",
              "format": "float",
              "value": 9,
              "perms": [
                "pr",
                "ev"
              ],
              "ev": false,
              "enc": false,
              "unit": "lux",
              "minValue": 0,
              "maxValue": 100000,
              "minStep": 1
            }
          ]
        },
        {
          "iid": 2688,
          "type": "86",
          "primary": true,
          "hidden": false,
          "characteristics": [
            {
              "iid": 2689,
              "type": "23",
              "format": "string",
              "value": "Presence Sensor 1",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false,
              "maxLen": 20
            },
            {
              "iid": 2690,
              "type": "71",
              "format": "uint8",
              "value": 1,
              "perms": [
                "pr",
                "ev"
              ],
              "ev": false,
              "enc": false,
              "minValue": 0,
              "maxValue": 1,
              "minStep": 1
            },
            {
              "iid": 2691,
              "type": "C8622A33-826A-4DD3-9BE9-D496361F29BB",
              "format": "uint8",
              "value": 0,
              "perms": [
                "pr",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "Sensor Index",
              "minValue": 0,
              "maxValue": 30,
              "minStep": 1
            }
          ]
        },
        {
          "iid": 2692,
          "type": "86",
          "primary": false,
          "hidden": false,
          "characteristics": [
            {
              "iid": 2693,
              "type": "23",
              "format": "string",
              "value": "Presence Sensor 2",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false,
              "maxLen": 20
            },
            {
              "iid": 2694,
              "type": "71",
              "format": "uint8",
              "value": 0,
              "perms": [
                "pr",
                "ev"
              ],
              "ev": false,
              "enc": false,
              "minValue": 0,
              "maxValue": 1,
              "minStep": 1
            },
            {
              "iid": 2695,
              "type": "C8622A33-826A-4DD3-9BE9-D496361F29BB",
              "format": "uint8",
              "value": 1,
              "perms": [
                "pr",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "Sensor Index",
              "minValue": 0,
              "maxValue": 30,
              "minStep": 1
            }
          ]
        },
        {
          "iid": 2696,
          "type": "86",
          "primary": false,
          "hidden": false,
          "characteristics": [
            {
              "iid": 2697,
              "type": "23",
              "format": "string",
              "value": "Presence Sensor 3",
              "perms": [
                "pr"
              ],
              "ev": false,
              "enc": false,
              "maxLen": 20
            },
            {
              "iid": 2698,
              "type": "71",
              "format": "uint8",
              "value": 1,
              "perms": [
                "pr",
                "ev"
              ],
              "ev": false,
              "enc": false,
              "minValue": 0,
              "maxValue": 1,
              "minStep": 1
            },
            {
              "iid": 2699,
              "type": "C8622A33-826A-4DD3-9BE9-D496361F29BB",
              "format": "uint8",
              "value": 2,
              "perms": [
                "pr",
                "hd"
              ],
              "ev": false,
              "enc": false,
              "description": "Sensor Index",
              "minValue": 0,
              "maxValue": 30,
              "minStep": 1
            }
          ]
        }
      ]
    }
  ]
}
I'm still not great at translating this, yet, but if I'm reading it right, in that json the custom characteristics are just the "Sensor index" value which isn't very relevant. All three of the detection zones have the legit presence characteristics type (71) and different iids:
  • Presence1 - 2690
  • Presence2 - 2694
  • Presence3 - 2698

So, the fact that all three channels are bound to events from 2698 (and the binding polls 2698 3 separate times), indicates to me that value from the third channel is improperly held over during later parts of the channel definitions or configuration. That is why all three channels are just responding to the events from the one detection zone.

As for the reverse polarity of the 1 and 0, I can deal with it (I’ve already got the profiles set up because it’s the same thing coming through the matter connection), I was just hoping that there was a cleaner solution than “fix it at the user end”. Sometimes, that’s just what you get though.

Thanks for all the great work on this. If the presence channel thing gets worked out, I can probably move all my sensors over to it now.

Thanks for this. I see my prior mistake. I was creating one channel definition for the characteristic type, and then creating three channels from that one definition. But I need instead to create three separate channel definitions from the characteristic type plus iid, and then create one channel from each definition. I will fix this; but as I am on a trip at the moment, it will be next week.

1 Like

@JustinG I just uploaded a commit that should hopefully resolve the problem of the triplicated channels (I say hopefully because I tested with your JSON above but not on a live system) the new Jar files are here. Nota Bene: the channel-types and channel-group-types now include the iid to eliminate duplicates, which means that your channels and item-channel-links will need to be recreated.

Initial tests look promising! I’ll put it through its paces for a day or two and report back.

1 Like

@AndrewFG, I haven’t had much time yet to play around with tado via HomeKit, but I just now installed the latest jar, and tried updating the target temp of one of my TVR’s.

This is what’s logged:

2025-11-23 09:31:15.846 [TRACE] [.handler.HomekitBaseAccessoryHandler - 2002      ] - homekit:accessory:72157980e9e1:3 throttling call for 1999 ms to respect minimum interval
2025-11-23 09:31:17.846 [TRACE] [mekit.internal.transport.IpTransport - 2002      ] - HTTP request:
PUT /characteristics HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.
Content-Length: 53
Content-Type: application/hap+json

{"characteristics":[{"iid":15,"value":16.0,"aid":3}]}
2025-11-23 09:31:17.889 [TRACE] [mekit.internal.transport.IpTransport - 2002      ] - HTTP response:
HTTP/1.1 204 No Content
Content-Length:0


2025-11-23 09:31:41.824 [TRACE] [mekit.internal.transport.IpTransport - 1491      ] - HTTP request:
GET /characteristics?id=3.15,3.14,3.12 HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.


2025-11-23 09:31:41.857 [TRACE] [mekit.internal.transport.IpTransport - 1491      ] - HTTP response:
HTTP/1.1 200 OK
Content-Length:112
Content-Type:application/hap+json

{"characteristics":[{"aid":3,"iid":12,"value":0},{"aid":3,"iid":14,"value":17.3},{"aid":3,"iid":15,"value":16}]}
2025-11-23 09:32:41.859 [TRACE] [mekit.internal.transport.IpTransport - 1489      ] - HTTP request:
GET /characteristics?id=3.15,3.14,3.12 HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.


2025-11-23 09:32:41.900 [TRACE] [mekit.internal.transport.IpTransport - 1489      ] - HTTP response:
HTTP/1.1 200 OK
Content-Length:112
Content-Type:application/hap+json

{"characteristics":[{"aid":3,"iid":12,"value":0},{"aid":3,"iid":14,"value":17.3},{"aid":3,"iid":15,"value":16}]}
2025-11-23 09:33:41.903 [TRACE] [mekit.internal.transport.IpTransport - 2023      ] - HTTP request:
GET /characteristics?id=3.15,3.14,3.12 HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.


2025-11-23 09:33:41.948 [TRACE] [mekit.internal.transport.IpTransport - 2023      ] - HTTP response:
HTTP/1.1 200 OK
Content-Length:112
Content-Type:application/hap+json

{"characteristics":[{"aid":3,"iid":12,"value":0},{"aid":3,"iid":14,"value":17.3},{"aid":3,"iid":15,"value":16}]}

I see the PUT call received a 204 No Content response. I thought 2xx was positive, but No Content sounds negative…?

After that call, GET calls seem to indicate that the target temperature is indeed 16 °C, but the tado app still indicated 17 °C (on SCHEDULE mode).

Rotating the TVR manually shows that it too was still set at 17 °C. Rotating it to 15 °C doesn’t change the response to the GET calls:

2025-11-23 09:39:42.291 [TRACE] [mekit.internal.transport.IpTransport - 2155      ] - HTTP request:
GET /characteristics?id=3.15,3.14,3.12 HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.


2025-11-23 09:39:42.338 [TRACE] [mekit.internal.transport.IpTransport - 2155      ] - HTTP response:
HTTP/1.1 200 OK
Content-Length:112
Content-Type:application/hap+json

{"characteristics":[{"aid":3,"iid":12,"value":0},{"aid":3,"iid":14,"value":17.2},{"aid":3,"iid":15,"value":16}]}

All HTTP 20x responses are positive. The 204 indicates that there was no content supplied. Which is self evidently true as you can see from the log. An HTTP PUT request does not elicit a content response; whereas an HTTP GET does..

Tado TRVs have a “Mode” channel that supports the values OFF, HEAT, COOL, DRY, FAN, AUTO. In HomeKit the corresponding channel (it is called Heating Cooling Target) apparently supports the values OFF, HEAT, COOL (only). Nevertheless it seems that if the TRV is set via the App to follow a schedule then it is in AUTO mode (??) and when in that mode it will not accept external temperature setpoint overrides. So probably you must first command Heating Cooling Target to HEAT. @Punsher says here that he made it work, so perhaps he can kindly provide more explanation?

Set the Mode to off and later Set the mode to heat. Then i was able to control the target temperature. However any such Action disables the schedule Set via the app. BTW how often are you receiving status updates on the humidity? I only got three changes in 24h. Seems a bit low.

1 Like

Okay, I deleted my things, and then replaced the jar with the most recent one. I then did as you said:

openhab> bundle:list -s | grep -i homekit
openhab> log:display | grep -i verwarming_studieruimte_via
21:07:16.362 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_Heating_Cooling_Target' changed from NULL to 1
21:08:00.747 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_ambiantTemp' changed from NULL to 20.1 °C
21:08:31.982 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_targetTemp' changed from NULL to 5 °C
21:08:31.987 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_ambiantTemp' changed from 20.1 °C to 20 °C
21:08:59.857 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_Heating_Cooling_Current' changed from NULL to 0
21:09:07.032 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_Relative_Humidity_Current' changed from NULL to 66 %
21:11:21.157 [INFO ] [openhab.event.ItemCommandEvent       ] - Item 'Verwarming_studieruimte_via_HomeKit_Heating_Cooling_Target' received command 0
21:11:21.160 [INFO ] [openhab.event.ItemStatePredictedEvent] - Item 'Verwarming_studieruimte_via_HomeKit_Heating_Cooling_Target' predicted to become 0
21:11:21.164 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_Heating_Cooling_Target' changed from 1 to 0
21:12:43.172 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_ambiantTemp' changed from 20 °C to 19.9 °C
21:12:44.019 [INFO ] [openhab.event.ItemCommandEvent       ] - Item 'Verwarming_studieruimte_via_HomeKit_Heating_Cooling_Target' received command 1
21:12:44.022 [INFO ] [openhab.event.ItemStatePredictedEvent] - Item 'Verwarming_studieruimte_via_HomeKit_Heating_Cooling_Target' predicted to become 1
21:12:44.024 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_Heating_Cooling_Target' changed from 0 to 1
21:13:13.338 [INFO ] [openhab.event.ItemCommandEvent       ] - Item 'Verwarming_studieruimte_via_HomeKit_targetTemp' received command 16
21:13:13.341 [INFO ] [openhab.event.ItemStatePredictedEvent] - Item 'Verwarming_studieruimte_via_HomeKit_targetTemp' predicted to become 16
21:13:13.346 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_targetTemp' changed from 5 °C to 16 °C
21:18:43.515 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_studieruimte_via_HomeKit_ambiantTemp' changed from 19.9 °C to 19.7 °C

But sadly:

2025-11-25 21:10:43.047 [TRACE] [mekit.internal.transport.IpTransport - 2055      ] - HTTP response:
HTTP/1.1 200 OK
Content-Length:168
Content-Type:application/hap+json

{"characteristics":[{"aid":3,"iid":12,"value":0},{"aid":3,"iid":13,"value":1},{"aid":3,"iid":14,"value":20},{"aid":3,"iid":15,"value":5},{"aid":3,"iid":17,"value":66}]}
2025-11-25 21:11:21.172 [TRACE] [.handler.HomekitBaseAccessoryHandler - 1314      ] - homekit:bridged-accessory:72157980e9e1:3 throttling call for 1999 ms to respect minimum interval
2025-11-25 21:11:23.171 [TRACE] [mekit.internal.transport.IpTransport - 1314      ] - HTTP request:
PUT /characteristics HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.
Content-Length: 50
Content-Type: application/hap+json

{"characteristics":[{"iid":13,"value":0,"aid":3}]}
2025-11-25 21:11:23.223 [TRACE] [mekit.internal.transport.IpTransport - 1314      ] - HTTP response:
HTTP/1.1 204 No Content
Content-Length:0


2025-11-25 21:11:43.052 [TRACE] [mekit.internal.transport.IpTransport - 2038      ] - HTTP request:
GET /characteristics?id=3.17,3.15,3.14,3.13,3.12 HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.


2025-11-25 21:11:43.118 [TRACE] [mekit.internal.transport.IpTransport - 2038      ] - HTTP response:
HTTP/1.1 200 OK
Content-Length:168
Content-Type:application/hap+json

{"characteristics":[{"aid":3,"iid":12,"value":0},{"aid":3,"iid":13,"value":0},{"aid":3,"iid":14,"value":20},{"aid":3,"iid":15,"value":5},{"aid":3,"iid":17,"value":66}]}
2025-11-25 21:12:43.121 [TRACE] [mekit.internal.transport.IpTransport - 2140      ] - HTTP request:
GET /characteristics?id=3.17,3.15,3.14,3.13,3.12 HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.


2025-11-25 21:12:43.167 [TRACE] [mekit.internal.transport.IpTransport - 2140      ] - HTTP response:
HTTP/1.1 200 OK
Content-Length:170
Content-Type:application/hap+json

{"characteristics":[{"aid":3,"iid":12,"value":0},{"aid":3,"iid":13,"value":0},{"aid":3,"iid":14,"value":19.9},{"aid":3,"iid":15,"value":5},{"aid":3,"iid":17,"value":66}]}
2025-11-25 21:12:44.028 [TRACE] [mekit.internal.transport.IpTransport - 1941      ] - HTTP request:
PUT /characteristics HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.
Content-Length: 50
Content-Type: application/hap+json

{"characteristics":[{"iid":13,"value":1,"aid":3}]}
2025-11-25 21:12:44.072 [TRACE] [mekit.internal.transport.IpTransport - 1941      ] - HTTP response:
HTTP/1.1 204 No Content
Content-Length:0


2025-11-25 21:13:13.352 [TRACE] [mekit.internal.transport.IpTransport - 1314      ] - HTTP request:
PUT /characteristics HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.
Content-Length: 53
Content-Type: application/hap+json

{"characteristics":[{"iid":15,"value":16.0,"aid":3}]}
2025-11-25 21:13:15.130 [TRACE] [mekit.internal.transport.IpTransport - 1314      ] - HTTP response:
HTTP/1.1 204 No Content
Content-Length:0


2025-11-25 21:13:43.171 [TRACE] [mekit.internal.transport.IpTransport - 2093      ] - HTTP request:
GET /characteristics?id=3.17,3.15,3.14,3.13,3.12 HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.


2025-11-25 21:13:43.206 [TRACE] [mekit.internal.transport.IpTransport - 2093      ] - HTTP response:
HTTP/1.1 200 OK
Content-Length:171
Content-Type:application/hap+json

{"characteristics":[{"aid":3,"iid":12,"value":0},{"aid":3,"iid":13,"value":1},{"aid":3,"iid":14,"value":19.9},{"aid":3,"iid":15,"value":16},{"aid":3,"iid":17,"value":66}]}
2025-11-25 21:14:43.210 [TRACE] [mekit.internal.transport.IpTransport - 1874      ] - HTTP request:
GET /characteristics?id=3.17,3.15,3.14,3.13,3.12 HTTP/1.1
Host: tado\032Internet\032Bridge\032IB3857268224._hap._tcp.local.


2025-11-25 21:14:43.264 [TRACE] [mekit.internal.transport.IpTransport - 1874      ] - HTTP response:
HTTP/1.1 200 OK
Content-Length:171
Content-Type:application/hap+json

{"characteristics":[{"aid":3,"iid":12,"value":0},{"aid":3,"iid":13,"value":1},{"aid":3,"iid":14,"value":19.9},{"aid":3,"iid":15,"value":16},{"aid":3,"iid":17,"value":66}]}

Nothing happened in the tado app. https://app.tado.com/nl/main/home/zoneV2/3:

Interestingly, HomeKit registers a different humidity than the tado app, and ever stranger, it detects “current temperature” changes, which are also very different from what the tado app reads.



And now I see it! These are my zones:

  1. Zone 2 (Eetkamer) - 1 TVR + the thermostat
  2. Zone 3 (Studieruimte) - 2 TVR’s
  3. Zone 5 (Badkamer) - 1 TVR
  4. Zone 6 (Keuken) - 1 TVR
  5. Zone 8 (Gang gelijkvloers) - 1 TVR
  6. Zone 9 (Dressing) - 1 TVR

But these are the “to be things” still in my inbox:

I assumed “zone 3” would be 72157980e9e1:3. But instead, I need to look for the VA0000000000 number. So HomeKit controls the separate TVR’s, not the zones. And the thing I made is for VA0158226688, which indeed has been set:

openhab>
log:display | grep -i verwarming_badkamer_via
21:39:44.778 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_badkamer_via_HomeKit_Heating_Cooling_Target' changed from NULL to 1
21:39:59.491 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_badkamer_via_HomeKit_targetTemp' changed from NULL to 16 °C
21:40:08.823 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_badkamer_via_HomeKit_Relative_Humidity_Current' changed from NULL to 60 %
21:40:16.965 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_badkamer_via_HomeKit_Heating_Cooling_Current' changed from NULL to 0
21:40:30.516 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_badkamer_via_HomeKit_ambientTemp' changed from NULL to 19 °C
21:41:54.098 [INFO ] [openhab.event.ItemCommandEvent       ] - Item 'Verwarming_badkamer_via_HomeKit_targetTemp' received command 15
21:41:54.101 [INFO ] [openhab.event.ItemStatePredictedEvent] - Item 'Verwarming_badkamer_via_HomeKit_targetTemp' predicted to become 15
21:41:54.103 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'Verwarming_badkamer_via_HomeKit_targetTemp' changed from 16 °C to 15 °C

Also reactivating the schedule in the tado app has effect in openHAB.

This looks workable, hooray!

(Apologies for the “follow-along” style of this post…)

Yes that looks the same as my setup. I also noticed that there are sometimes differences for the humidity reading between homekit and app. Also I noticed that I only get a changed value every few hours. Is that the same for you?

In my experience, HomeKit reacts only if there is a change of at least 5% in the humidity, whereas the Tado app shows every change.

I think the same is described here.

I have now tried to move to aqara FP2’s over from the HA homekit bridge and I have encountered the exact same strange behavior twice.

Procedure:

  1. Unlink from HA
  2. Restart FP2 device
  3. OH Inbox scan
  4. Add device as thing
  5. Device added as thing but status is “failed to connect” ← ? But the inbox correctly found the device and the thing properties have been correctly downloaded
  6. Restart device
  7. Thing status changes to “not paired”
  8. Pair device
  9. Thing status changes to “online”
  10. Link items to channels ← Verify that polling is getting correct values
  11. Restart binding to enable eventing (or restart all OH, result is the same)
  12. Thing status changes to “failed to connect” ← eventing is not enables as binding cannot reach device
  13. Restart device
  14. Thing status changes to “unknown” ← No amount of waiting will get further thing status changes
  15. Disable and Re-enable thing
  16. Thing status changes to online ← Polling is getting correct values

From there I can return to step 11 and the process is stuck in an infinite loop from step 11 to step 16 as many times as I’m wiling to restart various bindings and devices etc.

Eventually, I get tired of troubleshooting this failed to connect loop and unpair the device. When I then try again rebooting and pairing the device there’s a chance that everything to stays connected and I can get the device configured and restart the binding to enable eventing, but there’s also a chance I wind right back up at step 11.

I didn’t report this the first time as I figured it was user error, but having seen the exact same pattern a second time, I wanted to report some observations that may or may not be relevant:

  1. When I first added the device as a Thing and got the “failed to connect” error, I checked the thing advanced properties and noted that where it says ip4 it had instead collected the ip6 version of the ip. I have iv6 enabled because I also use matter, but the other two FP2’s that I now have connected and working show a correct ip4 address in that field. Manually setting that value to the correct ip4 did not fix any issues.

  1. The MAC address is incorrect. The ip6 address correctly shows the MAC address of the device, but the MAC address field shows some other MAC altogether which does not match anything on my network as far as I can tell. Interestingly, it turns out my two working FP2 Things also have completely random MAC addresses but since they work that doesn’t seem to be the issue.

Eventually, it seems I hit the correct sequence and timing of restarts and pairing attempts combined with the correct incantations and planetary positions and I get the device full connected and eventing and from then everything remains rock solid.

I don’t know if there’s a particular point in the process where logs would be helpful (I’m not even sure I can recreate the ip6 issue, I’ve only noticed it one time). But, I’ll report back if I figure out what it is I’m doing wrong.

1 Like

Two things come to mind:

  1. Homekit does not (cannot) use IPv6 addresses. So any connection attempt using ipv6 will certainly fail to connect and pair. => Can you please confirm that the mDNS discovery is actually putting a thing in the inbox with an ipv6 rather than an ipv4 address? Ideally show a trace log during the respective discovery process.

  2. Apropos your comment about the mac address. Indeed Homekit uses a unique id that looks very much like a mac address, but may actually not be. We made a change to the readme to reflect that. In many cases the unique id is identical to the mac address, but apparently in your case it is not. Important is that you use the unique id that is found by the mDNS discovery (and not the mac address if they differ).


EDIT: I have just committed a new version of the v5.1.x SNAPSHOT Jar that addresses both the ipV6 issue and the (not) mac address issue. (NB unfortunately due to a recent commit in OH core, the v5.0.x SNAPSHOT Jar no longer tracks the latest commits).

1 Like

I can confirm that I see no ipV6 issues now. I’ve deleted and re-created all three of my FP2 things and the first two have come back up and are working flawlessly.

Edit: Third device appears to also be working after a complete device rest. Something just got out-of-whack, it seems.

This whole thing can now be ignored

The elimination of the ip issue has at least allowed me to track down the problem I’ve been having with the third.

I unpaired the third, deleted the thing, and started from scratch. Device was discovered immediately upon me rebooting the device and the thing was added without incident.

I paired the device and as far as I can tell that went correctly:

Pairing trace logs

2025-12-07 10:27:51.532 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb no stored pairing credentials
2025-12-07 10:28:07.533 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb no stored pairing credentials
2025-12-07 10:28:11.410 [DEBUG] [mekit.internal.transport.IpTransport] - Connecting to 192.168.1.120:53034 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:53034
2025-12-07 10:28:11.619 [DEBUG] [mekit.internal.transport.IpTransport] - Connected to 192.168.1.120:53034 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:53034
2025-12-07 10:28:11.620 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb starting Pair-Setup
2025-12-07 10:28:11.620 [DEBUG] [internal.hapservices.PairSetupClient] - Created with pairing code: ***-**-***
2025-12-07 10:28:11.620 [DEBUG] [internal.hapservices.PairSetupClient] - Pair-Setup M1: Send pairing start request to server
2025-12-07 10:28:11.621 [TRACE] [internal.hapservices.PairSetupClient] - 
 - 0x06: 01 {1}
 - 0x00: 00 {1}
2025-12-07 10:28:11.621 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
POST /pair-setup HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:53034
Content-Length: 6
Content-Type: application/pairing+tlv8

\00\00
2025-12-07 10:28:12.345 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/pairing+tlv8
Content-Length: 409

ÿî©7I,]2ð4èÐõæ§³Ã_#ÇFçšèˆ÷ßíW[©R—üÖ9ψú…˜ZIA÷¥>•N%–·”~;.(·‰iÃcKL*Â7Ô¹e݈§uï4|RñÖc³Ö·Ý袚ÈGœ—SŒŸjppN3î;V¤lÒ»U¹G3o¬OO¶ÅL'6ÆÞhO]k#çLÁ›÷A†‰
H‰Kƒí3'õ'NíWÎo‹aÿJ³7Õ¸aP–óNëBD/q‡‰1j{“çn¯3qBîa!ڇזÜIï´s
]'vNعÀ03‘3Q¦ÜB†ÏÕ´ŸcޛgãO˙ԁ¯düYàÿXܗ›qk+ka¨Ëe´4>LàN4£IÁOÞ͵„òÅÔ×Û®8N„4*!z¥Ãùû·\005Úo™]i–‚ã\00“q‚–%‡´å„_´QP­Gߜ^¥¢‹‘
倡<üƒ]oºá9–4Ü,Ç®“^w†$Ž¿”|Ÿ"léa}W¦$û™_‹»#À4æ÷¸ÚÜnãf
2025-12-07 10:28:12.345 [DEBUG] [internal.hapservices.PairSetupClient] - Pair-Setup M2: Read server salt and accessory ephemeral PK; initialize SRP client
2025-12-07 10:28:12.345 [TRACE] [internal.hapservices.PairSetupClient] - 
 - 0x06: 02 {1}
 - 0x03: eea937492c5d32f034e8d0f5e6a7b3c35f23c746e79ae81488f7dfed575ba95297fcd639cf88fa85985a490f41f7a53e954e25961312b7947e3b2e280eb789697fc3634b4c042ac237d4b965dd88a77581ef347c52f1d663b3d618b71e1adde8a29a9dc8479c97538c9f6a1770709d4e8d33ee3b56a46cd2bb1455b947336fac174f8f4fb6c54c2736c6de684f5d6b23e74cc19bf74186890d48894b83ed3327f5274eed57ce6f8b07ff4ab390371581d5b86150960f0bf34eeb42442f17718789080e11316a7b9318e76eaf337142ee0721da1f87d796dc49efb4730d5d27764ed8b9c03033913351a6dc4281868d08cfd5b49f63de9b6703e34fcb99d47faf64fc59e0ff58dc979b716b2b6b61a814cb65b419343e4ce04e34a349c14fdecdb584f2c5d4d7dbae384e84342a217aa5c3f9fb1eb70035da6f995d691d9682e300937182962587b4e584185fb45150ad47df9c5ea5a28b910ae580a13cfc835d6fbae1399634dc2cc7ae935e7786248ebf947c9f226ce9077d579da624fb995f {384}
 - 0x02: 8bbb1623c034e6f7b8dadc6e05e36606 {16}
2025-12-07 10:28:12.381 [TRACE] [ng.homekit.internal.crypto.SRPclient] - Pair-Setup M2: SRP client initialized:
 - K: 03ce6e4f406a1f7c85720f3f777be0c16608b9bd76b69ad73fbdec6348b89029fbe858c7e29f538b2c7a1cd82fb4215cd6cd74612bc42fb7d44bfaddd7c3a167
 - S: ba38fce10b6dafb044e3b207d7cf0f3e8dc5e65c8a62018a84298a7dcdba249eee4f9159151422fbda16d8acdee69aecb133ae09fe47707262bd57c77ae886eeb73b35699f5b0281cf2fae252c91c5ddb320508ed77e95aa3826527741794466b476a0eb70266f50e2d823a9134fd1c7291c3ff5996b6082631cf177fc096074540b7623f8af1a8c02d79fbe24daf46e79add510eae6ebf15f27fda49d2913a2612da306762953511afe7583cae4b3cf344d3b246970e85e1e2c5bfeab9431f36d60ce7fc4d08cab72a5c1051846ede0680a0a357fdacc38a42c7f242e0bf6f28cbb14f4d3351681b64298d0418c09e39f483d626e8189fe2614acaa4f1983c1508c18d118ed1bd5783439a8449125d30eebf2a2bea61fed2390420fe747c96ccee550166fb42ff761030316fb97e1c570894dffd23e5d9b83e7d7df0040e790804aff8276549d2df2fe628fcd786d2f5a35f1068c7914afc48c61052e033eea967d8fafef08713042c4adad61145e8611c41858855fa759e84b3961a93168b3
 - Controller M1: be8e51f84bcce07301ca4a0b80c435bde952929bb1a0636dc41e20298d287db5e0ba9dc5812a289bfffffcd7c1988d02c161416f7b229b05bb99ce7de107e1c1
 - Expected M2: 5b236865c975c9178cf2d00e68d2b55f41e8e75ec4f80fb4cb364f19f02e3cb3f7b78dcb172a241fb664e6646266f176bd5d5212f5abe0d2d07c1e4770221526

2025-12-07 10:28:12.381 [DEBUG] [internal.hapservices.PairSetupClient] - Pair-Setup M3: Send controller ephemeral PK and M1 proof to accessory
2025-12-07 10:28:12.381 [TRACE] [internal.hapservices.PairSetupClient] - 
 - 0x06: 03 {1}
 - 0x03: b6bfaf0343fd549847f63182475a513dda2a984200b039e0b199e8f0c10d9f4d3c8be69aa153e290e51b68c6d19ce5eadc5ca45ec3dba3167724442648cb2a23870d12d5c1324abcd966b2ce7152e63ba954ec0fa29335594ca331bb9f6531cd7b8fa59bea7bdf21a2936300468c73dc6f1dc4810e6dbd97617a933945a26714d32beaf206d0c16ccee001b6956d6261d95761a2544a702cfeac9f32293b688852c8481de3d65019706562a303b49b50f817886483cf59064d471a6c9b8cf92f869885f9bd37264a86661e08b1b0f9b4dd679f30dd0541ca1f15040c925a88e31b7c7d421d0c3aeb3e8c22bc4815a9611a296cfadb35b8dffc88af854149b712dae2bdbc4184ea4396d4c57d676037488490b64e3d553a3b29e20499340ee6c66ca7c38609bce03d0ca5bd09133b80d3229ed58b2ce2629963dd7bf6e0e87d64ce1f485be6f18640b10c0f716941c4821a99112f9ad8feac038e848d40be683ff97b3c8adf4fc605f302b90eae0bc1bc13b1eac20bee20c4047c8c170c6c5dda {384}
 - 0x04: be8e51f84bcce07301ca4a0b80c435bde952929bb1a0636dc41e20298d287db5e0ba9dc5812a289bfffffcd7c1988d02c161416f7b229b05bb99ce7de107e1c1 {64}
2025-12-07 10:28:12.594 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
POST /pair-setup HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:53034
Content-Length: 457
Content-Type: application/pairing+tlv8

ÿ¶¿¯CýT˜Gö1‚GZQ=Ú*˜B\00°9ౙèðÁ
ŸM<‹æš¡SâåehÆÑœåêÜ\¤^ÃÛ£w$D&HË*#‡
ÕÁ2J¼Ùf²ÎqRæ;©T좓5YL£1»Ÿe1Í{¥›ê{ß!¢“c\00FŒsÜoām½—az“9E¢gÓ+êòÐÁlÎà¶•mbaÙWa¢TJp,þ¬Ÿ2);hˆRÈHãÖPpeb£´›PøˆdƒÏYMGl›Œù/†˜…ù½7&J†f±°ù´ÝgŸ0ÝAÊ’Zˆãe|}B:ë>Œ"¼H©a)lúÛ5¸ßüˆ¯…AI·Úâ½¼A„êC–ÔÅ}g`7H„¶N=U:;)â™4æÆl§Ã†	¼à=¥½	;€Ó"žÕ‹,âb™cÝ{öàè}dÎH[æñ†@±qiAĂ™/šØþ¬Ž„@¾h?ù{<ŠßOÆó¹®Á¼±êÂî Ä|Œl]Ú@¾ŽQøKÌàsÊJ€Ä5½éR’›± cmÄ )(}µàºÅ*(›ÿÿü×Á˜ÁaAo{"›»™Î}áaáÁ
2025-12-07 10:28:13.494 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/pairing+tlv8
Content-Length: 97

@[#heÉuÉŒòÐhÒµ_Aèç^Äø´Ë6Oð.<³÷·Ë*$¶dædbfñv½]Rõ«àÒÐ|Gp"&Û,t™)4(¾±&#¡ˆ/ É^—-Zšñ¨ø
2025-12-07 10:28:13.495 [DEBUG] [internal.hapservices.PairSetupClient] - Pair-Setup M4: Read accessory M2 proof; and verify it
2025-12-07 10:28:13.495 [TRACE] [internal.hapservices.PairSetupClient] - 
 - 0x06: 04 {1}
 - 0x04: 5b236865c975c9178cf2d00e68d2b55f41e8e75ec4f80fb4cb364f19f02e3cb3f7b78dcb172a241fb664e6646266f176bd5d5212f5abe0d2d07c1e4770221526 {64}
 - 0x05: db2c7499293428beb12623a1882fa0c95e16972d5a0e9af1a8f8 {26}
2025-12-07 10:28:13.495 [TRACE] [ng.homekit.internal.crypto.SRPclient] - Pair-Setup M4: Accessory info:
 - Controller M2: 5b236865c975c9178cf2d00e68d2b55f41e8e75ec4f80fb4cb364f19f02e3cb3f7b78dcb172a241fb664e6646266f176bd5d5212f5abe0d2d07c1e4770221526
 - Accessory M2:  5b236865c975c9178cf2d00e68d2b55f41e8e75ec4f80fb4cb364f19f02e3cb3f7b78dcb172a241fb664e6646266f176bd5d5212f5abe0d2d07c1e4770221526
2025-12-07 10:28:13.496 [DEBUG] [internal.hapservices.PairSetupClient] - Pair-Setup M5: Send controller id, LTPK, and signature to accessory
2025-12-07 10:28:13.498 [TRACE] [ng.homekit.internal.crypto.SRPclient] - Pair-Setup M5: Controller info:
 - X: d48804a099e41a0125ef14a51a0963e76f0cc8ae59af2867a68be9ec099499cb
 - LTPK: 89ce5216de92877663c7884f507ecac8e38070176f942741dabf7428807faf00
 - Info: d48804a099e41a0125ef14a51a0963e76f0cc8ae59af2867a68be9ec099499cb62376565643330622d643331642d343265352d623332332d36356639393337646539636389ce5216de92877663c7884f507ecac8e38070176f942741dabf7428807faf00
 - Signature: 75cead36218a746b1388eb20e9a91f27ee0ebaa89590fdd80fb6c869a2c10dc2568eed480c02f2f546340b656e1cdd5686fa6aba1b4bb38405994afa0c7eaf0a
 - Plain text: 012462376565643330622d643331642d343265352d623332332d363566393933376465396363032089ce5216de92877663c7884f507ecac8e38070176f942741dabf7428807faf000a4075cead36218a746b1388eb20e9a91f27ee0ebaa89590fdd80fb6c869a2c10dc2568eed480c02f2f546340b656e1cdd5686fa6aba1b4bb38405994afa0c7eaf0a
 - Key: f1a7fd7b433d631ddd500f4e973d43e50728c95720d77fdd7397cec5e70fb036
2025-12-07 10:28:13.499 [TRACE] [ng.homekit.internal.crypto.SRPclient] - Pair-Setup M5: Controller info:
 - Cipher text: 29ce49aaa668f8ef6d4338c8deeb4e6a2c00cdaf850f6ba32e1054e7cabd902d76b4d1f7d0314daeb572469cba27c78f91616697c884c46ad4517eb721ef78f12c4e99fd20200048e5a44d8014f5b80783f8d3afa0bdee3f5633fe8c9a326e6774eee2144333ebc8fec72fc24c788c756cb3e80b9b750f5acd96a3c6f3744d20c58014972d9e0bf4b363066f7db65dcce30b5a6cf594a51c14b3
2025-12-07 10:28:13.499 [TRACE] [internal.hapservices.PairSetupClient] - 
 - 0x06: 05 {1}
 - 0x05: 29ce49aaa668f8ef6d4338c8deeb4e6a2c00cdaf850f6ba32e1054e7cabd902d76b4d1f7d0314daeb572469cba27c78f91616697c884c46ad4517eb721ef78f12c4e99fd20200048e5a44d8014f5b80783f8d3afa0bdee3f5633fe8c9a326e6774eee2144333ebc8fec72fc24c788c756cb3e80b9b750f5acd96a3c6f3744d20c58014972d9e0bf4b363066f7db65dcce30b5a6cf594a51c14b3 {154}
2025-12-07 10:28:13.744 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
POST /pair-setup HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:53034
Content-Length: 159
Content-Type: application/pairing+tlv8

š)ÎIª¦høïmC8ÈÞëNj,\00ͯ…k£.Tçʽ-v´Ñ÷Ð1M®µrFœº'Ǐ‘af—È„ÄjÔQ~·!ïxñ,N™ý  \00Hå¤M€õ¸aƒøÓ¯ ½î?V3þŒš2ngtîâC3ëÈþÇ/ÂLxŒul³è›uZ͖£ÆótM ŀ—-žô³co}¶]ÌãZlõ”¥³
2025-12-07 10:28:14.037 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/pairing+tlv8
Content-Length: 140

‡È2-z
Ý)×J,³:út°?¾!„.ž>Lmê¶v¸°Ž2%/Üajl“êR
?\00P´È.r®¨3&µ'NÑòðÞ{q–ó˅în±§¥¤$ZCs
7¹y
›•÷$ÛºJÌ9ŸW=Ø4ŽƒPÉŸT=ìÚÈȜ—øáyoñȋ
2025-12-07 10:28:14.037 [DEBUG] [internal.hapservices.PairSetupClient] - Pair-Setup M6: Read accessory id, LTPK, and signature; and verify it
2025-12-07 10:28:14.037 [TRACE] [internal.hapservices.PairSetupClient] - 
 - 0x06: 06 {1}
 - 0x05: c8322d7a0ddd2905d74a012cb33afa74b03fbe21842e1c9e3e1c4c6deab676b8811ab08e1e12321f252fdc61186a6c931aea03520a3f0050b4c82e72aea83326b5274ed1f2f0de7b037196f3cb85ee6eb106a7a505a4240e5a43730a371ab9790d9b95f724dbba4acc399f57173dd8348e8350c90e9f543decdac805c89c97f8e1796ff11fc88b {135}
2025-12-07 10:28:14.037 [TRACE] [ng.homekit.internal.crypto.SRPclient] - Pair-Setup M6: Accessory info:
 - Cipher text: c8322d7a0ddd2905d74a012cb33afa74b03fbe21842e1c9e3e1c4c6deab676b8811ab08e1e12321f252fdc61186a6c931aea03520a3f0050b4c82e72aea83326b5274ed1f2f0de7b037196f3cb85ee6eb106a7a505a4240e5a43730a371ab9790d9b95f724dbba4acc399f57173dd8348e8350c90e9f543decdac805c89c97f8e1796ff11fc88b
 - Key: f1a7fd7b433d631ddd500f4e973d43e50728c95720d77fdd7397cec5e70fb036
2025-12-07 10:28:14.038 [TRACE] [ng.homekit.internal.crypto.SRPclient] - Pair-Setup M6: Accessory info:
 - Plain text: 011141393a45323a42423a43393a32343a45420320222db4366cf485ab9b4911f42f696a5c704f88b1bfdfa0016384a3233ec9bac10a4047300de8b4b58680d92ba9d3fa99aa49d5352a074eabd1a0e9d1e007aa1ad140f43e5b1d4415d0d3c14ad940226dfe451938c2b08d2101e7764408d9e08ee30c
 - X: b25438e61d504f9ae88c171584cbb58bdfdb23b0051fa6bbda256a5fa1f017fb
 - LTPK: 222db4366cf485ab9b4911f42f696a5c704f88b1bfdfa0016384a3233ec9bac1
 - Info: b25438e61d504f9ae88c171584cbb58bdfdb23b0051fa6bbda256a5fa1f017fb41393a45323a42423a43393a32343a4542222db4366cf485ab9b4911f42f696a5c704f88b1bfdfa0016384a3233ec9bac1
 - Signature: 47300de8b4b58680d92ba9d3fa99aa49d5352a074eabd1a0e9d1e007aa1ad140f43e5b1d4415d0d3c14ad940226dfe451938c2b08d2101e7764408d9e08ee30c
2025-12-07 10:28:14.039 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb completed Pair-Setup; starting Pair-Verify
2025-12-07 10:28:49.830 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:28:49.982 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:28:50.135 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:28:50.332 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":1}]}
2025-12-07 10:29:09.770 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:29:41.094 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:29:47.153 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:29:49.208 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:29:49.982 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:29:50.209 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:29:50.210 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:29:50.333 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:29:50.511 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":38},{"aid":1,"iid":2698,"value":1}]}
2025-12-07 10:29:52.213 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:29:53.215 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:29:54.218 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:29:55.271 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:29:57.274 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:29:58.276 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:30:00.280 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:30:01.284 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:30:02.335 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:30:03.337 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:30:04.340 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:30:07.395 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:30:09.399 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:30:10.401 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:30:11.403 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:30:15.460 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:30:47.765 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:30:49.768 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:30:50.209 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:30:50.256 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:30:50.512 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:30:50.720 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":38},{"aid":1,"iid":2698,"value":1}]}
2025-12-07 10:30:55.827 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:30:57.881 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:30:58.883 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:31:02.940 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:31:06.948 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:31:08.953 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:31:12.008 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:31:16.065 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:31:19.070 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:31:20.072 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:31:21.074 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:31:22.126 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:31:42.311 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:31:44.315 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:31:50.256 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:31:50.309 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:31:50.375 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:31:50.720 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:31:50.977 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":1}]}
2025-12-07 10:31:52.429 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:31:53.432 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:31:56.488 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:31:59.494 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:32:06.557 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:32:07.559 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:32:11.617 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:32:12.619 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:32:19.682 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:32:23.534 [DEBUG] [mekit.internal.transport.IpTransport] - Connecting to 192.168.1.120:53034 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:53034
2025-12-07 10:32:27.729 [DEBUG] [mekit.internal.transport.IpTransport] - Connecting to 192.168.1.120:53034 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:53034
2025-12-07 10:32:32.806 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:32:33.858 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:32:37.865 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:32:39.920 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":38}]}
2025-12-07 10:32:40.923 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:32:44.040 [DEBUG] [mekit.internal.transport.IpTransport] - Connecting to 192.168.1.120:53034 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:53034
2025-12-07 10:32:50.310 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:32:50.570 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:32:50.978 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:32:51.140 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":1}]}
2025-12-07 10:33:50.571 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:33:50.781 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:33:51.140 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:33:51.362 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":1}]}
2025-12-07 10:34:50.782 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:34:50.985 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:34:51.363 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:34:51.574 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":1}]}
2025-12-07 10:35:40.206 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2698,"value":0}]}
2025-12-07 10:35:50.986 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:35:51.182 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:35:51.575 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:35:51.777 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":0}]}
2025-12-07 10:36:51.183 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:36:51.384 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:36:51.778 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:36:52.027 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":0}]}
2025-12-07 10:37:00.110 [DEBUG] [mekit.internal.transport.IpTransport] - Connecting to 192.168.1.120:53034 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:53034
2025-12-07 10:37:51.384 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:37:51.630 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:37:52.028 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:37:52.227 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":0}]}
2025-12-07 10:38:51.631 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:38:51.829 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:38:52.227 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:38:52.430 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":0}]}
2025-12-07 10:39:51.830 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:39:52.026 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:39:52.431 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:39:52.627 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":0}]}
2025-12-07 10:40:52.027 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:40:52.233 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:40:52.628 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:40:52.834 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":0}]}
2025-12-07 10:41:52.234 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:41:52.435 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:41:52.835 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:41:53.086 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":1},{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":0}]}
2025-12-07 10:42:23.894 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2698,"value":1}]}
2025-12-07 10:42:24.896 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":0}]}
2025-12-07 10:42:25.897 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":0}]}
2025-12-07 10:42:25.898 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":48}]}
2025-12-07 10:42:52.435 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694 HTTP/1.1
Host: Presence-Sensor-FP2-847A._hap._tcp.local.:57272


2025-12-07 10:42:52.642 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":0}]}
2025-12-07 10:42:53.087 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2690,1.2694,1.2674,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-DB0B._hap._tcp.local.:60648


2025-12-07 10:42:53.294 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 146

{"characteristics":[{"aid":1,"iid":2690,"value":1},{"aid":1,"iid":2694,"value":0},{"aid":1,"iid":2674,"value":48},{"aid":1,"iid":2698,"value":1}]}
2025-12-07 10:43:06.266 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:43:08.270 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 52

{"characteristics":[{"aid":1,"iid":2694,"value":1}]}
2025-12-07 10:43:09.272 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 84

{"characteristics":[{"aid":1,"iid":2674,"value":43},{"aid":1,"iid":2698,"value":0}]}
2025-12-07 10:43:10.475 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":48}]}
2025-12-07 10:43:11.477 [TRACE] [mekit.internal.transport.IpTransport] - HTTP event:
EVENT/1.0 200 OK
Content-Type: application/hap+json
Content-Length: 53

{"characteristics":[{"aid":1,"iid":2674,"value":43}]}
2025-12-07 10:43:17.000 [DEBUG] [nternal.action.HomekitPairingActions] - bundle org.openhab.binding.homekit:5.1.0.202512071125 (367)[org.openhab.binding.homekit.internal.action.HomekitPairingActions(540)] : ServiceFactory.ungetService()
2025-12-07 10:43:17.000 [DEBUG] [nternal.action.HomekitPairingActions] - bundle org.openhab.binding.homekit:5.1.0.202512071125 (367)[org.openhab.binding.homekit.internal.action.HomekitPairingActions(540)] : DependencyManager: osgi.ds.satisfying.condition close component unbinding from org.apache.felix.scr.impl.manager.ComponentContextImpl@4aa34308 at tracking count 1 refpairs: [[RefPair: ref: [{org.osgi.service.condition.Condition}={service.id=6, service.bundleid=0, service.scope=singleton, service.pid=0.org.osgi.service.condition.ConditionImpl, osgi.condition.id=true}] service: [null]]]
2025-12-07 10:43:20.072 [DEBUG] [nternal.action.HomekitPairingActions] - bundle org.openhab.binding.homekit:5.1.0.202512071125 (367)[org.openhab.binding.homekit.internal.action.HomekitPairingActions(540)] : ServiceFactory.getService()
2025-12-07 10:43:20.072 [DEBUG] [nternal.action.HomekitPairingActions] - bundle org.openhab.binding.homekit:5.1.0.202512071125 (367)[org.openhab.binding.homekit.internal.action.HomekitPairingActions(540)] : This thread collected dependencies
2025-12-07 10:43:20.072 [DEBUG] [nternal.action.HomekitPairingActions] - bundle org.openhab.binding.homekit:5.1.0.202512071125 (367)[org.openhab.binding.homekit.internal.action.HomekitPairingActions(540)] : getService (ServiceFactory) dependencies collected.
2025-12-07 10:43:20.073 [DEBUG] [nternal.action.HomekitPairingActions] - bundle org.openhab.binding.homekit:5.1.0.202512071125 (367)[org.openhab.binding.homekit.internal.action.HomekitPairingActions(540)] : Querying state active
2025-12-07 10:43:20.073 [DEBUG] [nternal.action.HomekitPairingActions] - bundle org.openhab.binding.homekit:5.1.0.202512071125 (367)[org.openhab.binding.homekit.internal.action.HomekitPairingActions(540)] : For dependency osgi.ds.satisfying.condition, optional: false; to bind: [[RefPair: ref: [{org.osgi.service.condition.Condition}={service.id=6, service.bundleid=0, service.scope=singleton, service.pid=0.org.osgi.service.condition.ConditionImpl, osgi.condition.id=true}] service: [null]]]
2025-12-07 10:43:20.073 [DEBUG] [nternal.action.HomekitPairingActions] - bundle org.openhab.binding.homekit:5.1.0.202512071125 (367)[org.openhab.binding.homekit.internal.action.HomekitPairingActions(540)] : Changed state from active to active
2025-12-07 10:43:22.076 [DEBUG] [mekit.internal.transport.IpTransport] - Connecting to 192.168.1.120:53762 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:53762
2025-12-07 10:43:22.173 [DEBUG] [mekit.internal.transport.IpTransport] - Connected to 192.168.1.120:53762 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:53762
2025-12-07 10:43:22.173 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb starting Pair-Verify with existing key
2025-12-07 10:43:22.173 [DEBUG] [nternal.hapservices.PairVerifyClient] - Created..
2025-12-07 10:43:22.173 [DEBUG] [nternal.hapservices.PairVerifyClient] - Pair-Verify M1: Send verification start request with client ephemeral X25519 PK to server
2025-12-07 10:43:22.173 [TRACE] [nternal.hapservices.PairVerifyClient] - 
 - 0x06: 01 {1}
 - 0x03: e9c0cdc26e4476bc937159b0e28c39dab0c3c17af38c30f02b0f3771ee735312 {32}
2025-12-07 10:43:22.174 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
POST /pair-verify HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:53762
Content-Length: 37
Content-Type: application/pairing+tlv8

 éÀÍÂnDv¼“qY°âŒ9Ú°ÃÁzóŒ0ð+7qîsS
2025-12-07 10:43:23.107 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/pairing+tlv8
Content-Length: 140

 ¿RXko3õ‘xKicþz¦žäғÇ㘴\00æ§/gAŸAsefaŸZkí/ÉûA;Ʊ²¿³°¬=Õ	°~"Ò®\ïAW 2}#˜¨„èÔ`¿ú…Ê@i&.Š>ô$ÂxÙîx£m‰uJ=–ÛîiµvnU€—~_£‹µ_ïùï
2025-12-07 10:43:23.107 [DEBUG] [nternal.hapservices.PairVerifyClient] - Pair-Verify M2: Read server ephemeral X25519 PK and encrypted id; validate signature
2025-12-07 10:43:23.107 [TRACE] [nternal.hapservices.PairVerifyClient] - 
 - 0x06: 02 {1}
 - 0x03: bf52586b6f33f591784b6963fe7aa69ee4d293c7e398b400e6a72f67419f4173 {32}
 - 0x05: 661d079f0f5a106bed1d2fc9fb413bc6b10bb2bfb3b012ac0b3d0cd509b07e22d2ae5cef41571420327d2398a88411e8d46016bf169dfa85ca0b407f0b69262e8a3ef424c278d9ee78a36d89754a3d1496dbee6901b5766e5580977e5fa38bb55feff914ef {101}
2025-12-07 10:43:23.109 [DEBUG] [nternal.hapservices.PairVerifyClient] - Pair-Verify M3: Send encrypted controller id with signature
2025-12-07 10:43:23.110 [TRACE] [nternal.hapservices.PairVerifyClient] - 
 - 0x06: 03 {1}
 - 0x05: 1dff8b5070397defc2fea3220c383b6d88b0c634b7a4d934c9acb4b96976ede5ddc455cbc7246c39977edf1870bd14b5590af98893ec33dc1b826192560daee3b05a0b9126e3091db1355b43093f1000797fd504b3ec4474ee7c5790d71d546e03af51fa0ed3e24aaa53bceab452372f8b6f21f8a85fd957 {120}
2025-12-07 10:43:23.356 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
POST /pair-verify HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:53762
Content-Length: 125
Content-Type: application/pairing+tlv8

xÿ‹Pp9}ïÂþ£"8;mˆ°Æ4·¤Ù4ɬ´¹ivíåÝÄUËÇ$l9—~ßp½µY
ùˆ“ì3Üe‚a’V
®ã°Z‘&ã	±5[C	?\00yÕ³ìDtî|W×Tn¯QúÓâJªS¼ê´R7/‹o!ø¨_ÙW
2025-12-07 10:43:23.457 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/pairing+tlv8
Content-Length: 3


2025-12-07 10:43:23.457 [DEBUG] [nternal.hapservices.PairVerifyClient] - Pair-Verify M4: Confirm validation; derive session keys
2025-12-07 10:43:23.457 [TRACE] [nternal.hapservices.PairVerifyClient] - 
 - 0x06: 04 {1}
2025-12-07 10:43:23.458 [TRACE] [mekit.internal.transport.IpTransport] - setSessionKeys()
2025-12-07 10:43:23.458 [TRACE] [mekit.internal.transport.IpTransport] - setSessionKeys() org.openhab.binding.homekit.internal.session.SecureSession@472f2238
2025-12-07 10:43:23.458 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb restored pairing was verified
2025-12-07 10:43:25.459 [TRACE] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb throttling call for PT1.999989961S to respect minimum interval
2025-12-07 10:43:27.459 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /accessories HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:53762


2025-12-07 10:43:27.615 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/hap+json

3B5
{"accessories":[{"aid":1,"services":[{"iid":1,"type":"3E","primary":false,"hidden":false,"characteristics":[{"iid":2,"type":"14","format":"bool","perms":["pw"]},{"iid":3,"type":"20","format":"string","value":"Aqara","perms":["pr"],"ev":false,"enc":false},{"iid":4,"type":"21","format":"string","value":"PS-S02E","perms":["pr"],"ev":false,"enc":false},{"iid":5,"type":"23","format":"string","value":"Presence-Sensor-FP2-CDD3","perms":["pr"],"ev":false,"enc":false},{"iid":6,"type":"30","format":"string","value":"54EF4472CDD3","perms":["pr"],"ev":false,"enc":false},{"iid":7,"type":"52","format":"string","value":"1.3.3","perms":["pr"],"ev":false,"enc":false},{"iid":8,"type":"53","format":"string","value":"1.0.0","perms":["pr"],"ev":false,"enc":false},{"iid":9,"type":"34AB8811-AC7F-4340-BAC3-FD6A85F9943B","format":"string","value":"6.1;6.1","perms":["pr","hd"],"ev":false,"enc":false},{"iid":10,"type":"220","format":"data","value":"xDsGOzOmv1k="
3F2
,"perms":["pr"],"ev":false,"enc":false,"maxDataLen":8}]},{"iid":16,"type":"A2","primary":false,"hidden":false,"characteristics":[{"iid":18,"type":"37","format":"string","value":"1.1.0","perms":["pr"],"ev":false,"enc":false}]},{"iid":64,"type":"22A","primary":false,"hidden":false,"characteristics":[{"iid":66,"type":"22B","format":"bool","value":1,"perms":["pr"],"ev":false,"enc":false},{"iid":67,"type":"22C","format":"uint32","value":9,"perms":["pr"],"ev":false,"enc":false,"minValue":0,"maxValue":15,"minStep":1},{"iid":68,"type":"22D","format":"tlv8","value":"","perms":["pr","pw","ev","tw","wr"],"ev":false,"enc":false}]},{"iid":2560,"type":"239","primary":false,"hidden":false,"characteristics":[{"iid":2562,"type":"23C","format":"data","value":"","perms":["pr"],"ev":false,"enc":false,"maxDataLen":0}]},{"iid":80,"type":"9715BF53-AB63-4449-8DC7-2785D617390A","primary":false,"hidden":true,"characteristics":[{"iid":81,"type":"7D943F6A-E052-4E96-A176-D17BF00E32CB","format":"int","value":-1,"perms":["pr"
3F9
,"ev","hd"],"ev":false,"enc":false,"description":"Firmware Update Status","minValue":-128,"maxValue":127,"minStep":1},{"iid":82,"type":"A45EFD52-0DB5-4C1A-9727-513FBCD8185F","format":"string","perms":["pw","hd"],"description":"Firmware Update URL","maxLen":256},{"iid":83,"type":"40F0124A-579D-40E4-865E-0EF6740EA64B","format":"string","perms":["pw","hd"],"description":"Firmware Update Checksum"},{"iid":85,"type":"96BF5F20-2996-4DB6-8D65-0E36314BCB6D","format":"string","value":"1.3.3","perms":["pr","hd"],"ev":false,"enc":false,"description":"Firmware Version"},{"iid":84,"type":"36B7A28B-3200-4783-A3FB-6714F11B1417","format":"string","value":"lumi.motion.agl001","perms":["pr","hd"],"ev":false,"enc":false,"description":"Device Model"},{"iid":86,"type":"F5329CB1-A50B-4225-BA9B-331449E7F7A9","format":"uint8","value":1,"perms":["pr","hd"],"ev":false,"enc":false,"description":"Selected IoT Platform","minValue":0,"maxValue":4,"minStep":1}]},{"iid":96,"type":"F49132D1-12DF-4119-87D3-A93E8D68531E","primary":false
3FB
,"hidden":true,"characteristics":[{"iid":101,"type":"23","format":"string","value":"AIOT","perms":["pr","hd"],"ev":false,"enc":false,"description":"Name"},{"iid":97,"type":"25D889CB-7135-4A29-B5B4-C1FFD6D2DD5C","format":"string","value":"","perms":["pr","pw","hd"],"ev":false,"enc":false,"description":"Country Domain"},{"iid":98,"type":"C7EECAA7-91D9-40EB-AD0C-FFDDE3143CB9","format":"string","value":"lumi1.54ef4472cdd3","perms":["pr","hd"],"ev":false,"enc":false,"description":"AIOT did"},{"iid":99,"type":"80FA747E-CB45-45A4-B7BE-AA7D9964859E","format":"string","perms":["pw","hd"],"description":"AIOT bindkey"},{"iid":100,"type":"C3B8A329-EF0C-4739-B773-E5B7AEA52C71","format":"bool","value":1,"perms":["pr","hd"],"ev":false,"enc":false,"description":"AIOT bindstate"}]},{"iid":2672,"type":"84","primary":false,"hidden":false,"characteristics":[{"iid":2673,"type":"23","format":"string","value":"Light Sensor","perms":["pr"],"ev":false,"enc":false},{"iid":2674,"type":"6B","format":"float","value":13,"perms":["pr"
3F9
,"ev"],"ev":false,"enc":false,"unit":"lux","minValue":0,"maxValue":100000,"minStep":1}]},{"iid":2688,"type":"86","primary":true,"hidden":false,"characteristics":[{"iid":2689,"type":"23","format":"string","value":"Presence Sensor 1","perms":["pr"],"ev":false,"enc":false,"maxLen":20},{"iid":2690,"type":"71","format":"uint8","value":1,"perms":["pr","ev"],"ev":false,"enc":false,"minValue":0,"maxValue":1,"minStep":1},{"iid":2691,"type":"C8622A33-826A-4DD3-9BE9-D496361F29BB","format":"uint8","value":0,"perms":["pr","hd"],"ev":false,"enc":false,"description":"Sensor Index","minValue":0,"maxValue":30,"minStep":1}]},{"iid":2692,"type":"86","primary":false,"hidden":false,"characteristics":[{"iid":2693,"type":"23","format":"string","value":"Presence Sensor 2","perms":["pr"],"ev":false,"enc":false,"maxLen":20},{"iid":2694,"type":"71","format":"uint8","value":1,"perms":["pr","ev"],"ev":false,"enc":false,"minValue":0,"maxValue":1,"minStep":1},{"iid":2695,"type":"C8622A33-826A-4DD3-9BE9-D496361F29BB","format":"uint8"
28F
,"value":1,"perms":["pr","hd"],"ev":false,"enc":false,"description":"Sensor Index","minValue":0,"maxValue":30,"minStep":1}]},{"iid":2696,"type":"86","primary":false,"hidden":false,"characteristics":[{"iid":2697,"type":"23","format":"string","value":"Presence Sensor 3","perms":["pr"],"ev":false,"enc":false,"maxLen":20},{"iid":2698,"type":"71","format":"uint8","value":0,"perms":["pr","ev"],"ev":false,"enc":false,"minValue":0,"maxValue":1,"minStep":1},{"iid":2699,"type":"C8622A33-826A-4DD3-9BE9-D496361F29BB","format":"uint8","value":2,"perms":["pr","hd"],"ev":false,"enc":false,"description":"Sensor Index","minValue":0,"maxValue":30,"minStep":1}]}]}]}
0


2025-12-07 10:43:27.616 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb fetched 1 accessories
2025-12-07 10:43:27.618 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb ChannelGroupDefinition id:protocol-information-service, typeUID:homekit:channel-group-type-protocol-information-service-16-a9e2bbc924eb-1, label:Protocol Information Service, description:null
2025-12-07 10:43:27.618 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb  ChannelGroupType UID:homekit:channel-group-type-protocol-information-service-16-a9e2bbc924eb-1, label:Protocol Information Service, category:null, description:null
2025-12-07 10:43:27.619 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:static, label:null, description:null, channelTypeUID:homekit:static-data, autoUpdatePolicy:null, properties:{version=1.1.0}
2025-12-07 10:43:27.619 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    Property {version=1.1.0}
2025-12-07 10:43:27.619 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb ChannelGroupDefinition id:sensor-light, typeUID:homekit:channel-group-type-sensor-light-2672-a9e2bbc924eb-1, label:Light Sensor, description:null
2025-12-07 10:43:27.620 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb  ChannelGroupType UID:homekit:channel-group-type-sensor-light-2672-a9e2bbc924eb-1, label:Sensor Light, category:null, description:null
2025-12-07 10:43:27.620 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:static, label:null, description:null, channelTypeUID:homekit:static-data, autoUpdatePolicy:null, properties:{name=Light Sensor}
2025-12-07 10:43:27.621 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    Property {name=Light Sensor}
2025-12-07 10:43:27.621 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:light-level-current-2674, label:Light Level Current, description:null, channelTypeUID:homekit:channel-type-light-level-current-2674-a9e2bbc924eb-1, autoUpdatePolicy:null, properties:{format=float, iid=2674}
2025-12-07 10:43:27.621 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    ChannelType category:null, description:null, itemType:Number:Illuminance, label:Light Level Current, autoUpdatePolicy:null, itemType:Number:Illuminance, kind:STATE, tags:[Illuminance, Measurement], uid:homekit:channel-type-light-level-current-2674-a9e2bbc924eb-1, unitHint:lx
2025-12-07 10:43:27.622 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb     Channel acceptedItemType:Number:Illuminance, defaultTags:[Illuminance, Measurement], description:null, kind:STATE, label:Light Level Current, properties:{format=float, iid=2674}, uid:homekit:accessory:a9e2bbc924eb:sensor-light#light-level-current-2674
2025-12-07 10:43:27.622 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb ChannelGroupDefinition id:sensor-occupancy, typeUID:homekit:channel-group-type-sensor-occupancy-2688-a9e2bbc924eb-1, label:Presence Sensor 1, description:null
2025-12-07 10:43:27.622 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb  ChannelGroupType UID:homekit:channel-group-type-sensor-occupancy-2688-a9e2bbc924eb-1, label:Sensor Occupancy, category:null, description:null
2025-12-07 10:43:27.622 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:static, label:null, description:null, channelTypeUID:homekit:static-data, autoUpdatePolicy:null, properties:{name=Presence Sensor 1}
2025-12-07 10:43:27.622 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    Property {name=Presence Sensor 1}
2025-12-07 10:43:27.623 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:occupancy-detected-2690, label:Occupancy Detected, description:null, channelTypeUID:homekit:channel-type-occupancy-detected-2690-a9e2bbc924eb-1, autoUpdatePolicy:null, properties:{dataType=number, format=uint8, iid=2690}
2025-12-07 10:43:27.623 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    ChannelType category:null, description:null, itemType:Contact, label:Occupancy Detected, autoUpdatePolicy:null, itemType:Contact, kind:STATE, tags:[Presence, Status], uid:homekit:channel-type-occupancy-detected-2690-a9e2bbc924eb-1, unitHint:null
2025-12-07 10:43:27.623 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb     Channel acceptedItemType:Contact, defaultTags:[Presence, Status], description:null, kind:STATE, label:Occupancy Detected, properties:{dataType=number, format=uint8, iid=2690}, uid:homekit:accessory:a9e2bbc924eb:sensor-occupancy#occupancy-detected-2690
2025-12-07 10:43:27.623 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb ChannelGroupDefinition id:sensor-occupancy, typeUID:homekit:channel-group-type-sensor-occupancy-2692-a9e2bbc924eb-1, label:Presence Sensor 2, description:null
2025-12-07 10:43:27.623 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb  ChannelGroupType UID:homekit:channel-group-type-sensor-occupancy-2692-a9e2bbc924eb-1, label:Sensor Occupancy, category:null, description:null
2025-12-07 10:43:27.624 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:static, label:null, description:null, channelTypeUID:homekit:static-data, autoUpdatePolicy:null, properties:{name=Presence Sensor 2}
2025-12-07 10:43:27.624 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    Property {name=Presence Sensor 2}
2025-12-07 10:43:27.624 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:occupancy-detected-2694, label:Occupancy Detected, description:null, channelTypeUID:homekit:channel-type-occupancy-detected-2694-a9e2bbc924eb-1, autoUpdatePolicy:null, properties:{dataType=number, format=uint8, iid=2694}
2025-12-07 10:43:27.625 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    ChannelType category:null, description:null, itemType:Contact, label:Occupancy Detected, autoUpdatePolicy:null, itemType:Contact, kind:STATE, tags:[Presence, Status], uid:homekit:channel-type-occupancy-detected-2694-a9e2bbc924eb-1, unitHint:null
2025-12-07 10:43:27.625 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb     Channel acceptedItemType:Contact, defaultTags:[Presence, Status], description:null, kind:STATE, label:Occupancy Detected, properties:{dataType=number, format=uint8, iid=2694}, uid:homekit:accessory:a9e2bbc924eb:sensor-occupancy#occupancy-detected-2694
2025-12-07 10:43:27.625 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb ChannelGroupDefinition id:sensor-occupancy, typeUID:homekit:channel-group-type-sensor-occupancy-2696-a9e2bbc924eb-1, label:Presence Sensor 3, description:null
2025-12-07 10:43:27.625 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb  ChannelGroupType UID:homekit:channel-group-type-sensor-occupancy-2696-a9e2bbc924eb-1, label:Sensor Occupancy, category:null, description:null
2025-12-07 10:43:27.625 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:static, label:null, description:null, channelTypeUID:homekit:static-data, autoUpdatePolicy:null, properties:{name=Presence Sensor 3}
2025-12-07 10:43:27.626 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    Property {name=Presence Sensor 3}
2025-12-07 10:43:27.626 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:occupancy-detected-2698, label:Occupancy Detected, description:null, channelTypeUID:homekit:channel-type-occupancy-detected-2698-a9e2bbc924eb-1, autoUpdatePolicy:null, properties:{dataType=number, format=uint8, iid=2698}
2025-12-07 10:43:27.626 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    ChannelType category:null, description:null, itemType:Contact, label:Occupancy Detected, autoUpdatePolicy:null, itemType:Contact, kind:STATE, tags:[Presence, Status], uid:homekit:channel-type-occupancy-detected-2698-a9e2bbc924eb-1, unitHint:null
2025-12-07 10:43:27.626 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb     Channel acceptedItemType:Contact, defaultTags:[Presence, Status], description:null, kind:STATE, label:Occupancy Detected, properties:{dataType=number, format=uint8, iid=2698}, uid:homekit:accessory:a9e2bbc924eb:sensor-occupancy#occupancy-detected-2698
2025-12-07 10:43:27.627 [DEBUG] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb updated with 4 channels (of which 2 polled, 2 evented), 10 properties, label: 'null', equipment tag: 'null'
2025-12-07 10:43:27.627 [TRACE] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb throttling call for PT1.988423975S to respect minimum interval
2025-12-07 10:43:29.616 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
PUT /characteristics HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:53762
Content-Length: 83
Content-Type: application/hap+json

{"characteristics":[{"iid":2694,"ev":true,"aid":1},{"iid":2698,"ev":true,"aid":1}]}
2025-12-07 10:43:29.870 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 204 No Content


2025-12-07 10:43:29.871 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb eventing enabled for 2 channels

Links still existed from the previous thing so items were immediately linked back up to the channels. I’m guessing that’s why even on first pairing, the logs indicate that those two channels were set up for eventing.

However, despite that log statement, eventing does not appear to work for those two channels. Polling does work, however, and continues for about 10 minutes, until there is a connection error.

Successful polling:

==> /log/openhab.log <==
2025-12-07 10:52:31.680 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:53762
2025-12-07 10:52:31.872 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/hap+json
Content-Length: 83
{"characteristics":[{"aid":1,"iid":2694,"value":0},{"aid":1,"iid":2698,"value":0}]}

Next polling attempt 1 minute later:

==> /log/openhab.log <==
2025-12-07 10:53:31.873 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:53762
2025-12-07 10:53:46.874 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb communication error 'null' polling accessories, reconnecting..
java.util.concurrent.TimeoutException: null
	at java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1960) ~[?:?]
	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2095) ~[?:?]
	at org.openhab.binding.homekit.internal.transport.IpTransport.execute(IpTransport.java:212) ~[?:?]
	at org.openhab.binding.homekit.internal.transport.IpTransport.get(IpTransport.java:131) ~[?:?]
	at org.openhab.binding.homekit.internal.hapservices.CharacteristicReadWriteClient.readCharacteristics(CharacteristicReadWriteClient.java:54) ~[?:?]
	at org.openhab.binding.homekit.internal.handler.HomekitBaseAccessoryHandler.lambda$12(HomekitBaseAccessoryHandler.java:759) ~[?:?]
	at org.openhab.binding.homekit.internal.handler.HomekitBaseAccessoryHandler$Throttler.call(HomekitBaseAccessoryHandler.java:161) ~[?:?]
	at org.openhab.binding.homekit.internal.handler.HomekitBaseAccessoryHandler.refresh(HomekitBaseAccessoryHandler.java:759) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
	at java.lang.Thread.run(Thread.java:1583) [?:?]

==> /log/events.log <==
2025-12-07 10:53:46.875 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'homekit:accessory:a9e2bbc924eb' changed from ONLINE to OFFLINE (COMMUNICATION_ERROR): Polling error: 'null'

Next polling attempt after “Polling error: ‘null’” failure (and, of course, all polling attempts after that)

==> /log/openhab.log <==
2025-12-07 10:54:09.264 [DEBUG] [mekit.internal.transport.IpTransport] - Connecting to 192.168.1.120:53762 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:53762
2025-12-07 10:54:46.875 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /characteristics?id=1.2694,1.2698 HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:53762
2025-12-07 10:54:46.875 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb communication error 'Socket is closed' polling accessories, reconnecting..
java.net.SocketException: Socket is closed
	at java.net.Socket.getOutputStream(Socket.java:1157) ~[?:?]
	at org.openhab.binding.homekit.internal.transport.IpTransport.execute(IpTransport.java:214) ~[?:?]
	at org.openhab.binding.homekit.internal.transport.IpTransport.get(IpTransport.java:131) ~[?:?]
	at org.openhab.binding.homekit.internal.hapservices.CharacteristicReadWriteClient.readCharacteristics(CharacteristicReadWriteClient.java:54) ~[?:?]
	at org.openhab.binding.homekit.internal.handler.HomekitBaseAccessoryHandler.lambda$12(HomekitBaseAccessoryHandler.java:759) ~[?:?]
	at org.openhab.binding.homekit.internal.handler.HomekitBaseAccessoryHandler$Throttler.call(HomekitBaseAccessoryHandler.java:161) ~[?:?]
	at org.openhab.binding.homekit.internal.handler.HomekitBaseAccessoryHandler.refresh(HomekitBaseAccessoryHandler.java:759) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358) ~[?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
	at java.lang.Thread.run(Thread.java:1583) [?:?]

==> /log/events.log <==
2025-12-07 10:54:46.876 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'homekit:accessory:a9e2bbc924eb' changed from OFFLINE (COMMUNICATION_ERROR): Failed to connect: 'Connection refused' to OFFLINE (COMMUNICATION_ERROR): Polling error: 'Socket is closed'

If I reboot the FP2 the thing changes from error to unknown:

2025-12-07 11:36:10.974 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'homekit:accessory:a9e2bbc924eb' changed from OFFLINE (COMMUNICATION_ERROR): Polling error: 'Socket is closed' to UNKNOWN

But, there are no other logs related to this change.

Disabling and re-enabling the thing brings is back online in the same state as before (polling, but not eventing despite the log claiming eventing is enabled)

Disable / Re-enable logs

2025-12-07 11:39:18.455 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'homekit:accessory:a9e2bbc924eb' changed from UNKNOWN to UNINITIALIZED

==> /log/openhab.log <==
2025-12-07 11:39:18.458 [DEBUG] [nternal.action.HomekitPairingActions] - bundle org.openhab.binding.homekit:5.1.0.202512071125 (367)[org.openhab.binding.homekit.internal.action.HomekitPairingActions(540)] : ServiceFactory.ungetService()
2025-12-07 11:39:18.458 [DEBUG] [nternal.action.HomekitPairingActions] - bundle org.openhab.binding.homekit:5.1.0.202512071125 (367)[org.openhab.binding.homekit.internal.action.HomekitPairingActions(540)] : DependencyManager: osgi.ds.satisfying.condition close component unbinding from org.apache.felix.scr.impl.manager.ComponentContextImpl@11b39ae0 at tracking count 1 refpairs: [[RefPair: ref: [{org.osgi.service.condition.Condition}={service.id=6, service.bundleid=0, service.scope=singleton, service.pid=0.org.osgi.service.condition.ConditionImpl, osgi.condition.id=true}] service: [null]]]

==> /log/events.log <==
2025-12-07 11:39:18.459 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'homekit:accessory:a9e2bbc924eb' changed from UNINITIALIZED to UNINITIALIZED (DISABLED)

==> /log/events.log <==
2025-12-07 11:40:09.598 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'homekit:accessory:a9e2bbc924eb' changed from UNINITIALIZED (DISABLED) to INITIALIZING
2025-12-07 11:40:09.602 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'homekit:accessory:a9e2bbc924eb' changed from INITIALIZING to UNKNOWN

==> /log/openhab.log <==
2025-12-07 11:40:11.599 [DEBUG] [mekit.internal.transport.IpTransport] - Connecting to 192.168.1.120:55365 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:55365
2025-12-07 11:40:11.926 [DEBUG] [mekit.internal.transport.IpTransport] - Connected to 192.168.1.120:55365 alias Presence-Sensor-FP2-CDD3._hap._tcp.local.:55365
2025-12-07 11:40:11.926 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb starting Pair-Verify with existing key
2025-12-07 11:40:11.926 [DEBUG] [nternal.hapservices.PairVerifyClient] - Created..
2025-12-07 11:40:11.926 [DEBUG] [nternal.hapservices.PairVerifyClient] - Pair-Verify M1: Send verification start request with client ephemeral X25519 PK to server
2025-12-07 11:40:11.926 [TRACE] [nternal.hapservices.PairVerifyClient] - 
 - 0x06: 01 {1}
 - 0x03: e7ea35cdebcc837926be32b638bfe30873702be2abfe6dbf50da901af925c34b {32}
2025-12-07 11:40:11.926 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
POST /pair-verify HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:55365
Content-Length: 37
Content-Type: application/pairing+tlv8
 çê5Íë̃y&¾2¶8¿ãsp+â«þm¿Pڐù%ÃK
2025-12-07 11:40:12.734 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/pairing+tlv8
Content-Length: 140
 ÍGìÔ>QPe¥SÄt;LúSBm;hÇ1†—âÄ
'e9üùX°I/_9ãÅEËD×Åj ßq5ùQN¿}AñL2ëË]C+»g`˜a:ž‡h]Ö½‡–búP1\ù
Ø*èx¦Šsr×íIԜæL
>ƒ‘›C”-&T”
Ãì¯
2025-12-07 11:40:12.734 [DEBUG] [nternal.hapservices.PairVerifyClient] - Pair-Verify M2: Read server ephemeral X25519 PK and encrypted id; validate signature
2025-12-07 11:40:12.734 [TRACE] [nternal.hapservices.PairVerifyClient] - 
 - 0x06: 02 {1}
 - 0x03: cd47ecd43e515065a55302c4741e3b4cfa53426d123b6812c7318697e2c48527 {32}
 - 0x05: 39fcf958b0491d2f1c5f39e3c545cb44d7c56a20df713511f9514ebf037d0641f14c3217ebcb5d431e2b17bb671f6098613a9e87685dd6bd879662fa50315c06f90cd8052a9de878a68a73720ed7ed49d49ce64c0b3e8306919b43942d2654940ac3ec08af {101}
2025-12-07 11:40:12.735 [DEBUG] [nternal.hapservices.PairVerifyClient] - Pair-Verify M3: Send encrypted controller id with signature
2025-12-07 11:40:12.735 [TRACE] [nternal.hapservices.PairVerifyClient] - 
 - 0x06: 03 {1}
 - 0x05: 8587b993b3f097db7ef314925b6b1175293c3b038476f34564e61e015c078347386dee29180d5ad2d5b9b401f71bb6960ba2fd3a94e94f7d5836a99a30083f28b007567cba0ee6dfa768754af349bc0b30b5339ce954e32ddf11b7639a181eb78e182dd482248b31050e366000bd05eee1e1fac068887754 {120}
2025-12-07 11:40:12.983 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
POST /pair-verify HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:55365
Content-Length: 125
Content-Type: application/pairing+tlv8
x
‡¹“³ð—Û~ó’[ku)<;„vóEdæ\aƒG8mî)
ZÒÕ¹´÷e¶–
¢ý:”éO}X6©š0?(°aV|ºæß§huJóI¼
0µ3œéTã-ß·cš·Ž-Ԃ$‹16`½îááúÀhˆwT
2025-12-07 11:40:13.207 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Content-Type: application/pairing+tlv8
Content-Length: 3

2025-12-07 11:40:13.207 [DEBUG] [nternal.hapservices.PairVerifyClient] - Pair-Verify M4: Confirm validation; derive session keys
2025-12-07 11:40:13.207 [TRACE] [nternal.hapservices.PairVerifyClient] - 
 - 0x06: 04 {1}
2025-12-07 11:40:13.207 [TRACE] [mekit.internal.transport.IpTransport] - setSessionKeys()
2025-12-07 11:40:13.208 [TRACE] [mekit.internal.transport.IpTransport] - setSessionKeys() org.openhab.binding.homekit.internal.session.SecureSession@6629a279
2025-12-07 11:40:13.208 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb restored pairing was verified
2025-12-07 11:40:15.208 [TRACE] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb throttling call for PT1.999998S to respect minimum interval
2025-12-07 11:40:17.208 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
GET /accessories HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:55365
2025-12-07 11:40:17.665 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/hap+json
3B5
{"accessories":[{"aid":1,"services":[{"iid":1,"type":"3E","primary":false,"hidden":false,"characteristics":[{"iid":2,"type":"14","format":"bool","perms":["pw"]},{"iid":3,"type":"20","format":"string","value":"Aqara","perms":["pr"],"ev":false,"enc":false},{"iid":4,"type":"21","format":"string","value":"PS-S02E","perms":["pr"],"ev":false,"enc":false},{"iid":5,"type":"23","format":"string","value":"Presence-Sensor-FP2-CDD3","perms":["pr"],"ev":false,"enc":false},{"iid":6,"type":"30","format":"string","value":"54EF4472CDD3","perms":["pr"],"ev":false,"enc":false},{"iid":7,"type":"52","format":"string","value":"1.3.3","perms":["pr"],"ev":false,"enc":false},{"iid":8,"type":"53","format":"string","value":"1.0.0","perms":["pr"],"ev":false,"enc":false},{"iid":9,"type":"34AB8811-AC7F-4340-BAC3-FD6A85F9943B","format":"string","value":"6.1;6.1","perms":["pr","hd"],"ev":false,"enc":false},{"iid":10,"type":"220","format":"data","value":"xDsGOzOmv1k="
3F2
,"perms":["pr"],"ev":false,"enc":false,"maxDataLen":8}]},{"iid":16,"type":"A2","primary":false,"hidden":false,"characteristics":[{"iid":18,"type":"37","format":"string","value":"1.1.0","perms":["pr"],"ev":false,"enc":false}]},{"iid":64,"type":"22A","primary":false,"hidden":false,"characteristics":[{"iid":66,"type":"22B","format":"bool","value":1,"perms":["pr"],"ev":false,"enc":false},{"iid":67,"type":"22C","format":"uint32","value":9,"perms":["pr"],"ev":false,"enc":false,"minValue":0,"maxValue":15,"minStep":1},{"iid":68,"type":"22D","format":"tlv8","value":"","perms":["pr","pw","ev","tw","wr"],"ev":false,"enc":false}]},{"iid":2560,"type":"239","primary":false,"hidden":false,"characteristics":[{"iid":2562,"type":"23C","format":"data","value":"","perms":["pr"],"ev":false,"enc":false,"maxDataLen":0}]},{"iid":80,"type":"9715BF53-AB63-4449-8DC7-2785D617390A","primary":false,"hidden":true,"characteristics":[{"iid":81,"type":"7D943F6A-E052-4E96-A176-D17BF00E32CB","format":"int","value":-1,"perms":["pr"
3F9
,"ev","hd"],"ev":false,"enc":false,"description":"Firmware Update Status","minValue":-128,"maxValue":127,"minStep":1},{"iid":82,"type":"A45EFD52-0DB5-4C1A-9727-513FBCD8185F","format":"string","perms":["pw","hd"],"description":"Firmware Update URL","maxLen":256},{"iid":83,"type":"40F0124A-579D-40E4-865E-0EF6740EA64B","format":"string","perms":["pw","hd"],"description":"Firmware Update Checksum"},{"iid":85,"type":"96BF5F20-2996-4DB6-8D65-0E36314BCB6D","format":"string","value":"1.3.3","perms":["pr","hd"],"ev":false,"enc":false,"description":"Firmware Version"},{"iid":84,"type":"36B7A28B-3200-4783-A3FB-6714F11B1417","format":"string","value":"lumi.motion.agl001","perms":["pr","hd"],"ev":false,"enc":false,"description":"Device Model"},{"iid":86,"type":"F5329CB1-A50B-4225-BA9B-331449E7F7A9","format":"uint8","value":1,"perms":["pr","hd"],"ev":false,"enc":false,"description":"Selected IoT Platform","minValue":0,"maxValue":4,"minStep":1}]},{"iid":96,"type":"F49132D1-12DF-4119-87D3-A93E8D68531E","primary":false
3FB
,"hidden":true,"characteristics":[{"iid":101,"type":"23","format":"string","value":"AIOT","perms":["pr","hd"],"ev":false,"enc":false,"description":"Name"},{"iid":97,"type":"25D889CB-7135-4A29-B5B4-C1FFD6D2DD5C","format":"string","value":"","perms":["pr","pw","hd"],"ev":false,"enc":false,"description":"Country Domain"},{"iid":98,"type":"C7EECAA7-91D9-40EB-AD0C-FFDDE3143CB9","format":"string","value":"lumi1.54ef4472cdd3","perms":["pr","hd"],"ev":false,"enc":false,"description":"AIOT did"},{"iid":99,"type":"80FA747E-CB45-45A4-B7BE-AA7D9964859E","format":"string","perms":["pw","hd"],"description":"AIOT bindkey"},{"iid":100,"type":"C3B8A329-EF0C-4739-B773-E5B7AEA52C71","format":"bool","value":1,"perms":["pr","hd"],"ev":false,"enc":false,"description":"AIOT bindstate"}]},{"iid":2672,"type":"84","primary":false,"hidden":false,"characteristics":[{"iid":2673,"type":"23","format":"string","value":"Light Sensor","perms":["pr"],"ev":false,"enc":false},{"iid":2674,"type":"6B","format":"float","value":13,"perms":["pr"
3F9
,"ev"],"ev":false,"enc":false,"unit":"lux","minValue":0,"maxValue":100000,"minStep":1}]},{"iid":2688,"type":"86","primary":true,"hidden":false,"characteristics":[{"iid":2689,"type":"23","format":"string","value":"Presence Sensor 1","perms":["pr"],"ev":false,"enc":false,"maxLen":20},{"iid":2690,"type":"71","format":"uint8","value":0,"perms":["pr","ev"],"ev":false,"enc":false,"minValue":0,"maxValue":1,"minStep":1},{"iid":2691,"type":"C8622A33-826A-4DD3-9BE9-D496361F29BB","format":"uint8","value":0,"perms":["pr","hd"],"ev":false,"enc":false,"description":"Sensor Index","minValue":0,"maxValue":30,"minStep":1}]},{"iid":2692,"type":"86","primary":false,"hidden":false,"characteristics":[{"iid":2693,"type":"23","format":"string","value":"Presence Sensor 2","perms":["pr"],"ev":false,"enc":false,"maxLen":20},{"iid":2694,"type":"71","format":"uint8","value":0,"perms":["pr","ev"],"ev":false,"enc":false,"minValue":0,"maxValue":1,"minStep":1},{"iid":2695,"type":"C8622A33-826A-4DD3-9BE9-D496361F29BB","format":"uint8"
28F
,"value":1,"perms":["pr","hd"],"ev":false,"enc":false,"description":"Sensor Index","minValue":0,"maxValue":30,"minStep":1}]},{"iid":2696,"type":"86","primary":false,"hidden":false,"characteristics":[{"iid":2697,"type":"23","format":"string","value":"Presence Sensor 3","perms":["pr"],"ev":false,"enc":false,"maxLen":20},{"iid":2698,"type":"71","format":"uint8","value":0,"perms":["pr","ev"],"ev":false,"enc":false,"minValue":0,"maxValue":1,"minStep":1},{"iid":2699,"type":"C8622A33-826A-4DD3-9BE9-D496361F29BB","format":"uint8","value":2,"perms":["pr","hd"],"ev":false,"enc":false,"description":"Sensor Index","minValue":0,"maxValue":30,"minStep":1}]}]}]}
0
2025-12-07 11:40:17.666 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb fetched 1 accessories
2025-12-07 11:40:17.667 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb ChannelGroupDefinition id:protocol-information-service, typeUID:homekit:channel-group-type-protocol-information-service-16-a9e2bbc924eb-1, label:Protocol Information Service, description:null
2025-12-07 11:40:17.667 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb  ChannelGroupType UID:homekit:channel-group-type-protocol-information-service-16-a9e2bbc924eb-1, label:Protocol Information Service, category:null, description:null
2025-12-07 11:40:17.667 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:static, label:null, description:null, channelTypeUID:homekit:static-data, autoUpdatePolicy:null, properties:{version=1.1.0}
2025-12-07 11:40:17.667 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    Property {version=1.1.0}
2025-12-07 11:40:17.667 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb ChannelGroupDefinition id:sensor-light, typeUID:homekit:channel-group-type-sensor-light-2672-a9e2bbc924eb-1, label:Light Sensor, description:null
2025-12-07 11:40:17.667 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb  ChannelGroupType UID:homekit:channel-group-type-sensor-light-2672-a9e2bbc924eb-1, label:Sensor Light, category:null, description:null
2025-12-07 11:40:17.667 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:static, label:null, description:null, channelTypeUID:homekit:static-data, autoUpdatePolicy:null, properties:{name=Light Sensor}
2025-12-07 11:40:17.667 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    Property {name=Light Sensor}
2025-12-07 11:40:17.667 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:light-level-current-2674, label:Light Level Current, description:null, channelTypeUID:homekit:channel-type-light-level-current-2674-a9e2bbc924eb-1, autoUpdatePolicy:null, properties:{format=float, iid=2674}
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    ChannelType category:null, description:null, itemType:Number:Illuminance, label:Light Level Current, autoUpdatePolicy:null, itemType:Number:Illuminance, kind:STATE, tags:[Illuminance, Measurement], uid:homekit:channel-type-light-level-current-2674-a9e2bbc924eb-1, unitHint:lx
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb     Channel acceptedItemType:Number:Illuminance, defaultTags:[Illuminance, Measurement], description:null, kind:STATE, label:Light Level Current, properties:{format=float, iid=2674}, uid:homekit:accessory:a9e2bbc924eb:sensor-light#light-level-current-2674
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb ChannelGroupDefinition id:sensor-occupancy, typeUID:homekit:channel-group-type-sensor-occupancy-2688-a9e2bbc924eb-1, label:Presence Sensor 1, description:null
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb  ChannelGroupType UID:homekit:channel-group-type-sensor-occupancy-2688-a9e2bbc924eb-1, label:Sensor Occupancy, category:null, description:null
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:static, label:null, description:null, channelTypeUID:homekit:static-data, autoUpdatePolicy:null, properties:{name=Presence Sensor 1}
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    Property {name=Presence Sensor 1}
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:occupancy-detected-2690, label:Occupancy Detected, description:null, channelTypeUID:homekit:channel-type-occupancy-detected-2690-a9e2bbc924eb-1, autoUpdatePolicy:null, properties:{dataType=number, format=uint8, iid=2690}
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    ChannelType category:null, description:null, itemType:Contact, label:Occupancy Detected, autoUpdatePolicy:null, itemType:Contact, kind:STATE, tags:[Presence, Status], uid:homekit:channel-type-occupancy-detected-2690-a9e2bbc924eb-1, unitHint:null
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb     Channel acceptedItemType:Contact, defaultTags:[Presence, Status], description:null, kind:STATE, label:Occupancy Detected, properties:{dataType=number, format=uint8, iid=2690}, uid:homekit:accessory:a9e2bbc924eb:sensor-occupancy#occupancy-detected-2690
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb ChannelGroupDefinition id:sensor-occupancy, typeUID:homekit:channel-group-type-sensor-occupancy-2692-a9e2bbc924eb-1, label:Presence Sensor 2, description:null
2025-12-07 11:40:17.668 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb  ChannelGroupType UID:homekit:channel-group-type-sensor-occupancy-2692-a9e2bbc924eb-1, label:Sensor Occupancy, category:null, description:null
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:static, label:null, description:null, channelTypeUID:homekit:static-data, autoUpdatePolicy:null, properties:{name=Presence Sensor 2}
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    Property {name=Presence Sensor 2}
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:occupancy-detected-2694, label:Occupancy Detected, description:null, channelTypeUID:homekit:channel-type-occupancy-detected-2694-a9e2bbc924eb-1, autoUpdatePolicy:null, properties:{dataType=number, format=uint8, iid=2694}
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    ChannelType category:null, description:null, itemType:Contact, label:Occupancy Detected, autoUpdatePolicy:null, itemType:Contact, kind:STATE, tags:[Presence, Status], uid:homekit:channel-type-occupancy-detected-2694-a9e2bbc924eb-1, unitHint:null
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb     Channel acceptedItemType:Contact, defaultTags:[Presence, Status], description:null, kind:STATE, label:Occupancy Detected, properties:{dataType=number, format=uint8, iid=2694}, uid:homekit:accessory:a9e2bbc924eb:sensor-occupancy#occupancy-detected-2694
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb ChannelGroupDefinition id:sensor-occupancy, typeUID:homekit:channel-group-type-sensor-occupancy-2696-a9e2bbc924eb-1, label:Presence Sensor 3, description:null
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb  ChannelGroupType UID:homekit:channel-group-type-sensor-occupancy-2696-a9e2bbc924eb-1, label:Sensor Occupancy, category:null, description:null
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:static, label:null, description:null, channelTypeUID:homekit:static-data, autoUpdatePolicy:null, properties:{name=Presence Sensor 3}
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    Property {name=Presence Sensor 3}
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb   ChannelDefinition id:occupancy-detected-2698, label:Occupancy Detected, description:null, channelTypeUID:homekit:channel-type-occupancy-detected-2698-a9e2bbc924eb-1, autoUpdatePolicy:null, properties:{dataType=number, format=uint8, iid=2698}
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb    ChannelType category:null, description:null, itemType:Contact, label:Occupancy Detected, autoUpdatePolicy:null, itemType:Contact, kind:STATE, tags:[Presence, Status], uid:homekit:channel-type-occupancy-detected-2698-a9e2bbc924eb-1, unitHint:null
2025-12-07 11:40:17.669 [TRACE] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb     Channel acceptedItemType:Contact, defaultTags:[Presence, Status], description:null, kind:STATE, label:Occupancy Detected, properties:{dataType=number, format=uint8, iid=2698}, uid:homekit:accessory:a9e2bbc924eb:sensor-occupancy#occupancy-detected-2698
2025-12-07 11:40:17.671 [DEBUG] [rnal.handler.HomekitAccessoryHandler] - homekit:accessory:a9e2bbc924eb updated with 4 channels (of which 2 polled, 2 evented), 10 properties, label: 'null', equipment tag: 'null'
2025-12-07 11:40:17.671 [TRACE] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb throttling call for PT1.994862415S to respect minimum interval
==> /log/events.log <==
2025-12-07 11:40:17.671 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'homekit:accessory:a9e2bbc924eb' changed from UNKNOWN to ONLINE
==> /log/openhab.log <==
2025-12-07 11:40:19.666 [TRACE] [mekit.internal.transport.IpTransport] - HTTP request:
PUT /characteristics HTTP/1.1
Host: Presence-Sensor-FP2-CDD3._hap._tcp.local.:55365
Content-Length: 83
Content-Type: application/hap+json
{"characteristics":[{"iid":2694,"ev":true,"aid":1},{"iid":2698,"ev":true,"aid":1}]}
2025-12-07 11:40:19.971 [TRACE] [mekit.internal.transport.IpTransport] - HTTP response:
HTTP/1.1 204 No Content
2025-12-07 11:40:19.971 [DEBUG] [.handler.HomekitBaseAccessoryHandler] - homekit:accessory:a9e2bbc924eb eventing enabled for 2 channels

A short time later, same connection issue (communication error 'null' polling accessories) occurs.

I suspect this is the underlying issue I was having before, but with the ip repeatedly changing back to the ipv6 form on the attempts to reconnect, it was less obvious what was going on.

I cannot think of what is different about this device that is causing the problem:

  1. It is on the same firmware as the two that work flawlessly. So it shouldn’t be about the information the device is sending.
  2. It ran for many months when connected to HA without ever having a connection issue. So, unless I’ve borked the device somehow with my repeated attempts to get it working the device itself is not faulty.
  3. The device retains it connection my lan and the aqara app. So, this has to be just an issue with the homekit connection.

I thought it could it possibly be the fact that the items and link already exist when this thing is removed, readded and re-paried, but that was also true for the other two devices that I had to create new things for with the newest jar, and this issue is definitely not occurring with the other two.

I’ve been trying to do this with out resetting the device itself, but I’ll do that next and see if that helps.

1 Like

A thorough analysis of my logs from the last few days of adding FP2s has revealed the ultimate culprit.

When pairing a device, the pairing action returns an OK status (and the binding considers the device paired) when initial pairing is complete, but the logs show a secondary pairing “verification” step. This can get interrupted (that issue I think is related to my own OH’s network issues which I still haven’t managed to track down). If that verification is interrupted, then you get the unstable connections I was seeing in the FP2s where calls can produce “null polling” and result in the socket connection being dropped.

I don’t think this is going to be a common issue because you have to be unlucky enough to get some LAN interruption during the pairing process otherwise the verification step completes quite rapidly, but there is at least this possibility for the binding and the device to disagree on the status of the pairing connection.

Related question to polling issues: should setting the Things Refresh Interval to 0 disable polling? If not, is there some other way to disable polling for channels that are eventing?

Concerning the pairing, there are three steps:

  1. Pairing setup is a one time operation that creates long term shared keys that are persisted on both sides.

  2. Once there is such a pair of long term keys, then the two parties go through a pair verification process to confirm that they are mutually ok.

  3. And once the verification has passed then a secure encypted socket connection is established.

Step 1. is one time only, whereas 2. and 3. are done for each session.


Concerning the polling, I would not try to cancel it. The events are sent unilaterally by the accessory without any handshake. So there is a risk that an event may get lost. The polling is a mechanism to always ensure that the state is eventually restored to its correct value. Furthermore the polling is a transaction which does involve a handshake, so it is the only mechanism that can actually detect if the session connection has dropped, and thus recycle it.

1 Like

Yeah, I’ve seen the verification on subsequent sessions as well. The problem is with that very first one. This is most likely device specific (as well a reasonably unlikely case), which is why I think this is more PSA than rising to the level of an issue with the binding. When that first verification does not complete, the FP2 remains in pairing mode which, both prevents the device from working as it is supposed to and results in the binding reporting that socket connection attempts are refused. This necessitates rebooting the device. What I don’t quite understand is why rebooting the device doesn’t fix the problem since verification reruns. My only guess is that, at that point, the failed successful completion of the pairing from the device’s point of view has left a discrepancy between the configurations on binding and device.

The polling issue is not a big deal it just means that I have a rule which runs on updates to one of my sensors which is now borked and has to be redone because the device updates every minute instead of only on changes. Of course, it didn’t do this before because the polling was managed outside of OH by HA and only changes were sent through the bridges to OH.

If the pair-setup did complete then OH will have persisted the key. You can check it in a homekit key json file (offhand I cant remember its exact name) but it is in the userdata json folder. And this key is used every time that the thing subsequently tries to go online (via pair-verify). And if that pair-verify request fails (the first or any other time) then the binding will retry at intervals of 4 seconds, 16 seconds, 256 seconds, and finally 300 seconds (5 minutes) thereafter. So maybe all you need to do is wait a bit more patiently..

Yeah, it’s more insidious than that, which is why I suspect it has more to do with the FP2s than the binding. That the key is persisted is clear because a rebooting the device and the thing recreates the connection, it’s just that something is still missing between the two (again, at this point, I’m fairly certain its on the device side) because that connection is unstable and will fail within a few minutes when for some reason a poll request is sent but gets some null response.

I can guarantee this is not the solution to this particular problem. I think one of the logs posted in the “you can ignore this” section above, is one of the examples where in the middle of the that initial verification process all of those subsequent retrys fail to connect. Then I reboot the device and the Thing and verification runs to completion (if I’m reading the logs right) and that’s when the channels are then created. As I said, the device gives the appearance of working for at least a few minutes after this, but then runs into the problem.

Only pairing attempts where that initial verification attempt runs to completion result in a permanently stable connection to the device. :person_shrugging:

Don’t waste any more of your time trying to work this out, you’ve almost certainly got more important things to attend to, and if I ever need to connect more FP2s, I now know what success and fails look like so the process will be greatly streamlined for me.

Hi, i recently paired two fp2 sensors. It took few restarts both devices and OH but worked. I was previously using smarthings and matter binding to push the values to OH. But using this binding is more reliable and simple.

I also integrated aqara doorbell g410. I got multiple channels like motion sensor , alarm and doorbell click. But I m not seeing any channel to view video. Is video view possible for homekit camera?

Thanks for this awesome binding.

1 Like