As far as I can tell it is actually more complicated than that. Each profile in an Edge driver package appears as one of the deviceIntegrationProfiles
in the driver metadata with a UUID style id
and a majorVersion
number. Each time you create a new version of the Edge profile it results in a new device profile with a different ID being created, or the reuse of an already existing profile. This suggests a mechanism similar to that used with device configs and device presentations.
When that device profile is created isn’t clear. It might be when the package is uploaded, or it might be when a particular Edge profile is used by a device. Either way the profile of a device and the Edge driver profile are not the same thing. I’ll retract that, as it is pretty obvious things happen at upload time.
Somewhere out there it seems there ought to be a mapping between the Edge profile, indexed by name and ID, and an actual device profile ID, though on reflection it perhaps doesn’t need to be stored anywhere as it is only needed when the device is being updated with a new profile. I wouldn’t be surprised if the Edge profiles are also maintained independently of the driver source but they surely must be out there somewhere.
Something like that anyway.
I haven’t found a trace of them anywhere.
For anyone who hasn’t read one, this is what the top of a driver metadata object looks like:
{
"driverId": "408981c2-91d4-4dfc-bbfb-84ca0205d993",
"name": "Zigbee Contact",
"packageKey": "zigbee-contact",
"deviceIntegrationProfiles": [
{
"id": "00abbee9-a609-3c9c-a947-931de6493109",
"majorVersion": 13
},
{
"id": "1d2dc3d4-2fde-3fb7-87b6-e7fdb91a9763",
"majorVersion": 0
},
{
"id": "1f9fdc55-9540-3faa-bf37-3ae992b69cd4",
"majorVersion": 4
},
{
"id": "229f559b-faf4-3d9a-9486-e53f6165c81e",
"majorVersion": 7
},
{
"id": "6b844edf-d465-32a9-9080-893f4a7a1e4f",
"majorVersion": 3
},
{
"id": "b4303d67-88a8-3d2c-8b60-283bbd637b93",
"majorVersion": 12
}
],
"permissions": [
{
"name": "zigbee",
"attributes": []
}
],
"version": "2023-02-28T20:01:54.635905863",
"fingerprints": [
{
"id": "LUMI/lumi.magnet.agl02",
"type": "ZIGBEE_MANUFACTURER",
"deviceLabel": "Aqara Door and Window Sensor T1",
"zigbeeManfacturer": {
"manufacturer": "LUMI",
"model": "lumi.magnet.agl02",
"deviceIntegrationProfileKey": {
"id": "b4303d67-88a8-3d2c-8b60-283bbd637b93",
"majorVersion": 12
}
}
},
The bottom of the file looks like:
{
"id": "SmartSense/MultiSensor/Generic",
"type": "ZIGBEE_GENERIC",
"deviceLabel": "Multipurpose Sensor",
"zigbeeGeneric": {
"clusters": [],
"deviceIdentifiers": [
313
],
"zigbeeProfiles": [
64513
],
"deviceIntegrationProfileKey": {
"id": "1d2dc3d4-2fde-3fb7-87b6-e7fdb91a9763",
"majorVersion": 0
}
}
}
]
}
Oh and it really does say zigbeeManfacturer
in the API. I didn’t lose the u
.