Build and run the RTU simulator. For full AEMS platform setup, see the AEMS System Setup Guide.
- Go 1.24+ (
go version) - Git
git clone https://github.com/VOLTTRON/sim-rtu.git
cd sim-rtu
make buildOutput: bin/sim-rtu
Default config works out of the box for localhost development:
cat configs/default.ymlKey settings:
| Setting | Default | Notes |
|---|---|---|
api.host |
127.0.0.1 |
Change to 0.0.0.0 for Docker/remote access |
api.port |
8080 |
REST + NF API |
bacnet.interface |
127.0.0.1 |
Change to 0.0.0.0 for Docker/remote access |
bacnet.port |
47808 |
Standard BACnet/IP |
./bin/sim-rtu --config configs/default.ymlOr use the helper script (builds, starts in tmux, waits for ready):
./scripts/start-all.sh# Simulator status
curl http://127.0.0.1:8080/api/v1/status
# List devices
curl http://127.0.0.1:8080/api/v1/devices
# Read a point
curl http://127.0.0.1:8080/api/v1/devices/86254/points/ZoneTemperature
# Write a setpoint
curl -X PUT http://127.0.0.1:8080/api/v1/devices/86254/points/OccupiedCoolingSetPoint \
-H "Content-Type: application/json" \
-d '{"value": 73.0, "priority": 16}'
# Override weather
curl -X POST http://127.0.0.1:8080/api/v1/weather \
-H "Content-Type: application/json" \
-d '{"temperature": 95.0}'docker compose upBind to 0.0.0.0 in configs/default.yml for Docker access:
api:
host: "0.0.0.0"
bacnet:
interface: "0.0.0.0"These scripts install sim-rtu device configs into an aems-lib-fastapi checkout:
# NF driver (recommended)
./scripts/switch-to-nf.sh /path/to/aems-lib-fastapi
# Legacy BACnet driver
./scripts/switch-to-bacnet.sh /path/to/aems-lib-fastapiSee driver-switching.md for details.
Connect sim-rtu to the AEMS platform: AEMS System Setup Guide