BACnet Simulation

BACOcean

A Virtual World for BACnet Testing

In Development
Illustration: a central virtual BACnet network linked to a building with a controller cabinet, rooftop HVAC units, an air-handling plant with sensors, a plant room with network routers, a server room and an engineer's workstation, with device and trend dashboards above

BACOcean is a virtual BACnet laboratory for developing, testing and troubleshooting building automation software without physical controllers, being built as an independent product in the IoTOcean portfolio. Simulated devices are designed to run on their own and answer BACnet clients over standard BACnet services, so the software under test can talk to them as it would to real controllers. The wider BACOcean project also covers BACnet discovery and data collection; this page is about the simulator.

Why virtual BACnet testing matters

BACnet software is usually tested against whatever controllers happen to be on the bench. That rarely looks like a real building. Sites have several subnets, BACnet routers, BBMDs and foreign devices, and the hardest bugs appear exactly there: a device that is not discovered across a router, a Trend Log that is read twice, a client that hangs when a controller stops answering. Reproducing these conditions with hardware is slow and expensive, and often impossible on demand.

A virtual network, layer by layer

BACOcean is designed to recreate a whole site, from the client down to the points:

  1. BACnet client or analytics platform Your software, a BMS front end or a data collection driver, talking standard BACnet/IP.
  2. Virtual BACnet network One or more simulated IP subnets, each with its own BACnet network number.
  3. BBMDs, routers and segments Broadcast forwarding, Foreign Device Registration and routing between network numbers, as on a real site.
  4. Simulated controllers Virtual devices with configurable device IDs, objects and properties.
  5. Sensors, actuators and Trend Logs Points whose values change over time, build up Trend Log history and can be made to fail.

Realistic values and Trend Logs

Present values are planned to come from deterministic, configurable generators, so a test run can be repeated and give the same time series. Representative scenarios include temperature and humidity sensors, fan speed, damper and valve positions, equipment status, energy consumption and alarm states. These are examples of what is meant to be configurable, not a fixed catalogue of equipment models.

Fault injection

Field problems are planned to be reproducible on purpose: devices going offline, intermittent communication, latency, packet loss, BACnet service errors, unresponsive controllers, faulty data, router or BBMD problems, and the recovery afterwards. A client can then be tested against the failures it will meet in a building, in a controlled lab.

Docker deployment and lab configuration

The simulator is designed to run in Docker, on bridge, host or MACVLAN networks, with devices getting their own IP and MAC identities where the network setup supports it. A whole lab, from devices, objects and addresses to value generators, Trend Logs and faults, is meant to be described in YAML, so a test environment can be version-controlled, shared and rebuilt.

Development status and roadmap

BACOcean is in development, and its BACnet services, topology scenarios and fault types are at different stages. None of them is presented as complete yet. The aim is to support automated integration tests and CI/CD pipelines, so BACnet software can be tested without a physical BMS laboratory. Progress will be shared in the IoTOcean Journal. If you build or integrate BACnet software and want to talk about what a lab like this should do, get in touch.

Features

What it does

  • Virtual BACnet/IP devices Being built to run many simulated controllers, each with its own device ID, objects and properties, answering clients over standard BACnet services.
  • Network topology simulation Planned scenarios with several IP subnets, BACnet network numbers, routers, BBMDs and Foreign Device Registration, to test discovery across network boundaries.
  • BACnet protocol services The simulator is being built to support Who-Is and I-Am, ReadProperty, ReadPropertyMultiple, ReadRange, WriteProperty where supported, COV and router discovery.
  • Trend Logs and dynamic values Planned deterministic value generators with periodic changes, COV-triggered behaviour and Trend Log history that repeats exactly from run to run.
  • Fault injection Planned scenarios for offline devices, latency, packet loss, service errors, unresponsive controllers, faulty data and router or BBMD problems, then recovery.
  • Flexible Docker networking Being designed for Docker bridge, host and MACVLAN networks, with each virtual device on its own IP and MAC address where the setup allows it.
  • Configuration in YAML Planned lab descriptions in YAML: devices, objects, networks, addresses, value generators, Trend Logs and faults, in files that can be version-controlled and shared.
  • Automated BACnet testing Planned use in integration tests and CI/CD: client validation, discovery, Trend Log collection, BBMD and routed-network checks, and scale tests.

Technology

Built with

  • BACnet/IP
  • Docker
  • YAML

Journal

Updates

Illustration: a glowing IoTOcean hub at the centre, linked to a secure router, a provisioning server sending images to devices, a smart speaker under a crescent moon, an audio waveform becoming text, an edge gateway with application cubes, and a building controller with sensors

Product Announcements

Introducing IoTOcean

October 25, 2026

IoTOcean is live: an independent technology brand building six products, from router fleets to BACnet testing. Here is what we are building and why.

Interested in BACOcean?

Tell us what you would like it to do, or ask us anything about where it is heading.