DIY BACnet gateway RPC contract

The DIY BACnet gateway at :8080 is a JSON-RPC API, not a plain REST body-per-method API.

This matters because a naive POST like:

{
  "device_instance": 3456790,
  "object_type": "analog-value",
  "object_instance": 1,
  "property_identifier": "present-value"
}

will fail with JSON-RPC validation errors.

Correct shape for client_read_property

Use a JSON-RPC envelope:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "client_read_property",
  "params": {
    "request": {
      "device_instance": 3456790,
      "object_identifier": "analog-value,1",
      "property_identifier": "present-value"
    }
  }
}

Example result

{
  "jsonrpc": "2.0",
  "result": {
    "present-value": 72.0
  },
  "id": 1
}

Why this matters for overnight verification

A malformed request should be classified as tooling / API-contract mismatch.

It should not be treated as proof that:

  • BACnet is down
  • the gateway is unreachable
  • Open-FDD ingest is broken

Only after using the correct JSON-RPC contract should the overnight workflow make BACnet-side health judgments.

See also BACnet overview and Swagger at http://localhost:8080/docs when the stack is running.