Skip to main content
Hardware identity of one component, as a plain JSON-serializable dict. The manufacturer-assigned identity of the physical unit behind a component: burned into the device, it survives IP changes, renames, and re-imaging, so it — not the user-chosen name or the configured address — is what says which robot or sensor this is. Every field is optional and a missing field means “unknown”, never “different”. A key is present only when it was actually read from the device (or is knowledge the class holds about itself); drivers with no hardware identifier produce an empty mapping, and so does a device that is unreachable. Consumers de-duplicating or verifying hardware must therefore treat absence as unknown: two components that both report no serial are not thereby the same unit, and are not thereby different ones either. The field set is closed. These four fields are all a component can report: a driver hook that returns any other key has it dropped with a warning, so the mapping always matches the config envelope’s identity block (ComponentIdentityConfig, which rejects unknown keys). Extending the set means adding the field here and there in one change. Read it with Component.getIdentity; it also appears as the identity block of Component.serialize.