What Who-Has Is
Who-Has is the object-discovery service in BACnet, defined in Clause 16.9 of ANSI/ASHRAE 135-2024. Where Who-Is finds devices, Who-Has finds an object: it asks which devices hold an object with a given Object_Name or a given Object_Identifier. It is an unconfirmed service, and devices answer with I-Have.
Who-Has and I-Have are the object-level counterpart to the device-level Who-Is and I-Am pair.
How It Works
The sender broadcasts a Who-Has naming either an object identifier (a type and instance, such as Analog Value 7) or an object name (a text string). An optional device-instance range limits which devices answer. Any device that holds a matching object replies with an I-Have carrying its own device identity and the object it found. A device may also send I-Have unsolicited to advertise an object.
Where You’ll See It
- Finding a point by name. A tool locating which controller owns a specifically named object without knowing its device instance in advance.
- Cross-device references. Resolving where a referenced object lives when only its name is known.
- The broadcast reach limit. Like Who-Is, Who-Has is a broadcast, so reaching other IP subnets depends on a working BACnet BBMD design.
Who-Has Error Codes
Who-Has is an unconfirmed, broadcast service with no acknowledgment and no application-layer error. A Who-Has that yields no I-Have is a discovery problem, not a service error:
- No device on the reachable network holds an object with that name or identifier.
- The object exists but on a subnet the broadcast could not reach, usually a missing BACnet BBMD path.
- A device-instance range was supplied and the holder falls outside it.
Profiles That Require It
Answering Who-Has (and sending the I-Have back) comes from DM-DOB-B, the dynamic-object-binding BIBB, and is required of most device profiles that expose objects, including B-BC, B-AAC, B-ASC, and B-SA. Initiating Who-Has is a client behavior and is not separately required by the standard device profiles, though operator and client tools commonly send it.
What Chipkin Provides
The CAS BACnet Stack answers Who-Has with I-Have as a server, and the test tooling can initiate object discovery. Talk to us about adding BACnet client or server support to your device.