plug into the BAS network→the site draws itself→walk out with a tagged point list
plug in, watch every controller answer — or say why it didn't. querying · responding · enumerating · timed-out · segmentation-reject, by name.
most tools flatten the site to a list of IPs. you get the real shape — MS/TP devices behind the router, on the right wire, weighted by latency.
the point schedule you hand the office — select on the canvas, export in place. no re-typing, no per-point fee.
id,dis,equip,net,unit,curVal,tags @p:1a4f,Discharge Air Temp,AHU-1,1,°F,54.6,point sensor temp air discharge @p:2b7c,Supply Fan Cmd,AHU-1,1,,on,point cmd fan @p:3d19,Mixed Air Damper,AHU-1,1,%,38,point cmd damper @p:5f22,Zone Temp,VAV-204,12,°F,71.2,point sensor temp air zone @p:7a04,kW Demand,MTR-Main,1,kW,48.6,point sensor power elec … 209 more · 3 formats · one click
BACnet, Modbus, MQTT — one process each. a wedged protocol stack can't take the rest down.
fanless · offline · one static binary · fits in your bag
everything the field tool does, the same daemon serves over an API — REST + WebSocket, described by OpenAPI, token-authed. the UI is just a client. embed the whole engine in your product.
$ curl -H "Authorization: Bearer $TOKEN" edge.local/v1/devices { "id":"@d:AHU-1", "proto":"bacnet", "net":1, "points":40, "status":"ok", "latencyMs":12 } $ websocat wss://edge.local/v1/ws ◂ { "ev":"i-am", "dev":"@d:VAV-204", "ms":47 } ◂ { "ev":"cur", "pt":"@p:1a4f", "val":54.6 } ◂ { "ev":"tagged", "pt":"@p:1a4f", "conf":0.93 }