HVAC Automation Control — Deployment Guide

Preset

Standard Deployment

Deploy the HVAC setpoint prediction and control service, connect an Eastron SDM630 energy meter, and commission in observe mode. Enable writes only after readback, rollback and alarms have been verified on your own plant and an engineer has approved the safety limits.

  • Devices: reComputer R1100 or any Docker host; Eastron SDM630 energy meter (Modbus TCP or RS-485); HVAC controller (OPC UA, Modbus or BACnet/IP) — the built-in simulator covers a dry run.
  • Software: Docker Engine 20.10+, about 1 GB free disk, host ports 8280 and 4841 free.
  • Data: at least one week of historical operation data as CSV or Excel.
  • Limits: this is not a safety-certified control system; the plant's own interlocks and safety controls stay in effect. Write limits ship as placeholders (18–30 °C, 1 °C per 5 minutes, off/fan/cool/heat/auto mode whitelist) and need approval by a site engineer. No energy-saving figure is provided.
1

Deploy the HVAC Control Service

Deploy the prediction and control service and enter the meter, control-mode, safety and alarm settings.

Prerequisites
  • The meter's transport and unit id; the OPC UA endpoint of the HVAC controller (the default address reaches the built-in simulator).
  • Leave Control Mode at observe. Leave Safety Baseline Approved By blank until an engineer has approved the limits.
Deployment method

Deploy on the machine running SenseCraft Solution, for a dry run against the built-in simulator or when this machine can reach the plant network. Modbus RTU is not available on this target.

Wiring
  1. Put this machine on the same network as the HVAC controller and the meter or its Modbus TCP gateway.
  2. Connect the meter over Modbus TCP; for RS-485 use the remote target.
  3. Make sure ports 8280 and 4841 are free.
What you will be asked for(filled in the SenseCraft Solution app)
  • Meter Host

    IP address of the meter or of the Modbus TCP gateway in front of it. Leave blank for Modbus RTU.

  • Safety Baseline Approved By

    Leave blank until a named site engineer approves the four limits above. While blank the baseline reports itself as unapproved.

15 more with defaults you can keep
  • OPC-UA Server Addressdefault opc.tcp://localhost:4841

    OPC-UA server address of the HVAC controller (keep the default to use the built-in simulator)

  • Meter Transportdefault modbus_tcp
    3 options
    • · Modbus TCP (direct or through a TCP gateway)
    • · Modbus RTU over RS-485
    • · No meter for now

    How the SDM630 is reached. Modbus RTU additionally requires the serial-device deployment profile; the standard Docker profile attaches no host serial device.

  • Meter TCP Portdefault 502

    Modbus TCP port, normally 502

  • Meter Unit IDdefault 1

    Modbus slave/unit address of the meter, 1-247. Required for both transports.

  • Serial Devicedefault /dev/ttyUSB0

    Host serial device for Modbus RTU. Only used when the transport is Modbus RTU.

  • Serial Baud Ratedefault 9600
    3 options
    • · 9600
    • · 19200
    • · 38400

    RS-485 baud rate; must match the meter's configured rate

  • Float Word Orderdefault big_endian
    2 options
    • · Big-endian words (vendor default)
    • · Little-endian words (byte-swapped gateways)

    Word order for the meter's 32-bit float registers. The template default follows the vendor document, but the order must be confirmed against the actual meter before the scaled values are trusted.

  • Control Modedefault observe
    2 options
    • · Observe only (no writes)
    • · Control (writes enabled)

    Observe runs predictions without writing anything to the plant. Switch to control only after readback, rollback and alarms have been verified and the safety limits approved.

  • Minimum Setpoint (°C)default 18

    PENDING SITE APPROVAL — placeholder lower bound; no write below it is accepted

  • Maximum Setpoint (°C)default 30

    PENDING SITE APPROVAL — placeholder upper bound; no write above it is accepted

  • Maximum Change (°C)default 1.0

    PENDING SITE APPROVAL — placeholder maximum setpoint movement within the window below

  • Change Window (seconds)default 300

    PENDING SITE APPROVAL — window the maximum change applies over. The limit scales with elapsed time and is capped at one step, so an idle period cannot bank a large jump.

  • Readback Delay (seconds)default 10

    How long to wait after a write before reading the point back from the field

  • Readback Tolerancedefault 0.05

    Absolute tolerance for comparing a numeric readback against the value that was sent. A readback whose quality is not good never verifies, whatever its value.

  • Stale Sample Threshold (seconds)default 60

    Age at which a sample counts as stale. A stale input raises a sample-stale alarm and fails the prediction cycle closed rather than writing on old data.

Troubleshooting
SymptomFix
Docker not runningStart Docker Desktop or Docker Engine, then retry
Port 8280 in useFree the port
Container exits after startingRun docker logs missionpack_knn; the last lines show the failure
Web page not loadingWait about 30 s for the service to start
Meter points read but the values are nonsenseByte or word order mismatch; see Step 3
2

Open the Control Dashboard

Open the console, create the first administrator, and check that the sources from Step 1 are online.

Prerequisites

The service from Step 1 is healthy.

Troubleshooting
SymptomFix
Page not loadingConfirm Step 1 finished
Wrong host/portIf you deployed remotely, use the device IP in the URL
A source shows offlineCheck reachability and the unit id; for RS-485, also the baud rate and wiring polarity
3

Commission the Meter, Control Path and Alarms

Register the meter, run predictions in observe mode, trigger each failure path to verify rollback and alarms, and enable writes only after all of them pass.

Turn on write-back verification

Write-back verification is off by default. Add a rollback section when you create the prediction run in the console:

{
  "schema_version": "prediction-run.v3",
  "interval_seconds": 60,
  "rollback": { "enabled": true, "settle_seconds": 2.5 }
}

settle_seconds (0–30, default 1.0) must be longer than the source's collection interval, or readback reports a false mismatch. Only Modbus points are verified; BACnet outputs are not.

Prerequisites
  • The administrator account from Step 2; a view of the meter's own display; someone who operates this plant to review the recommendations.
  • Run docker inspect -f '{{.Config.Image}}' missionpack_knn to check the image version. v1.6.5 does not include the SDM630 template, rollback or alarms; only the observe-mode part can be completed on it.
Troubleshooting
SymptomFix
Meter template import rejectedTemplates are limited to 256 rows; trim the custom template
Voltage and frequency look plausible but wrongSwitch the float word order in the deployment form and re-read
Imported energy jumps backwardsSwitch word order; or check for two sources polling the same meter with different unit ids
A write is acknowledged but the readback never verifiesCheck the point's quality; readback does not verify unless quality is good
A rollback itself failsA critical compensation-failed alarm is raised. Restore the plant by hand and do not re-enable writes until the cause is found
The same fault opens a new alarm each timeCompare the source and point ids of the two alarms
After Deployment

Quick verification

  1. docker inspect -f '{{.Config.Image}}' missionpack_knn returns the version you intend to run.
  2. All ten SDM630 points read, and voltage, frequency and imported energy agree with the meter's own display.
  3. Imported active energy only increases, and survives a restart of the source.
  4. A full occupancy cycle of predictions has run in observe mode and the recommendations have been reviewed by the plant operator.
  5. The safety limits carry an approver's name; the baseline no longer reports as unapproved.
  6. One write inside the limits produced a command receipt, a readback within tolerance, and a point quality of good.
  7. Source-offline, readback-mismatch and stale-sample faults each produced the expected alarm, and the first two each triggered a rollback.
  8. If northbound publishing is enabled, northbound.spool.queued in GET /system/runtime-metrics is 0 with dropped unchanged.

Evidence to export

For the handover record: the image version; the meter template id and confirmed word order; the approved safety limits and approver; the command audit trail for the verified write; the rollback journal entries from the fault injection; the alarm history. Container logs (docker logs missionpack_knn) rotate, so copy what you need promptly.

Next steps

  1. Enable writes on one zone only, and watch it for a full cycle before widening.
  2. Set up notifications for the critical compensation-failed alarm.
  3. Re-approve the safety limits whenever the plant is rebalanced.