THIS IS A PROVISIONAL SPEC THAT IS SUBJECT TO CHANGE.
UDMI supports reading BACnet points by specifying them via a bacnet:// URL schema.
bacnet://<device_id>/<object_type>:<object_instance>[#property_identifier]
device_id: The BACnet Device Object Instance Number. It uniquely identifies the BACnet device on the network.
1 to 4194303 (22-bit Device Object Instance range).01293 is invalid), and 0 is invalid.object_type: A 2 to 4 character uppercase string representing the BACnet object type (e.g., AI, AO, AV, BI, BO, BV, MSI, MSO, MSV, DO).object_instance: A non-negative integer representing the BACnet object instance index (e.g., 0, 1, 21, 100).
0.property_identifier: (Optional) A lowercase string with underscores representing the property identifier of the BACnet object, preceded by # (e.g., #present_value, #something_else).
present_value property.The following are common BACnet object types used as part of the point reference:
AI: Analog InputAO: Analog OutputAV: Analog ValueBI: Binary InputBO: Binary OutputBV: Binary ValueMSI: Multi-state InputMSO: Multi-state OutputMSV: Multi-state ValueDO: Device Object / Binary OutputUnder the localnet configuration, BACnet parameters define the communication settings:
addr: The BACnet Device Object Instance Number. Must be a positive integer in the range 1 to 4194303 with no leading zeroes.network: (Optional) The 16-bit BACnet Network Number. Must be a positive integer in the range 1 to 65534 with no leading zeroes.The metadata values in the examples below map to the following complete BACnet URIs:
bacnet://291842/AI:2#present_valuebacnet://3/DO:0bacnet://1/AI:2bacnet://291842/BO:21The BACnet network specification as part of a gateway metadata.json file under localnet.families:
{
"localnet": {
"families": {
"bacnet": {
"addr": "19233",
"network": "9288"
}
}
}
}
Or defined under localnet.networks as a named BACnet network:
{
"localnet": {
"networks": {
"bacnet_1": {
"family": "bacnet",
"addr": "19233",
"network": "9288"
}
}
}
}
For a proxied BACnet device, the gateway block in the metadata.json specifies the protocol family, while the pointset block defines individual points and their object mappings.
{
"gateway": {
"target": {
"family": "bacnet"
}
},
"localnet": {
"families": {
"bacnet": {
"addr": "582312"
}
}
},
"pointset": {
"points": {
"filter_alarm_pressure_status": {
"units": "No-units",
"ref": "BV:11#present_value"
},
"filter_differential_pressure_sensor": {
"units": "Degrees-Celsius",
"ref": "AV:12#present_value"
}
}
}
}