Skip to content

PQA024 — Identity property not found

A type's identity: names a property the type does not have.

Discovery re-runs. Every run emits the same physical devices again, and the reconciler has to recognise which emitted node is which existing Thing. identity: names the properties that carry that recognition — the stable hardware key, such as a bus address or a port number.

- type_id: Module
  identity: [addres]        # the property is address
  properties:
    address:
      type: byte
      required: true

Why the build refuses this

The key has to be persisted to work. Re-pairing compares the identity of a freshly discovered node against the identity of Things already in the tree. A name with no property behind it reads as nothing on both sides.

The failure surfaces as duplication, far from its cause. Unrecognised nodes are imported as new Things, so a second discovery run doubles the tree instead of updating it. By then the operator sees a device list, not a YAML key.

How to fix it

Point identity: at properties declared on the type or inherited through extends:. Both are accepted — the check collects the full property set of the inheritance chain.

Pick properties the hardware itself determines. A name or a description is operator-editable and makes a poor key; a bus address is stable across discoveries.

What is not reported

identity: type. That keys the node by its type instead of by properties, and has its own rule (PQA026).

A type with no identity:. It is a passthrough type — it takes part in the tree but is not re-paired on its own.

If you disagree with a report

Do not suppress it. A wrong report is a bug in the check — report it with the YAML that triggered it.