Skip to content

Monitoring data

MonitoringData wraps a regularly sampled, time-indexed DataFrame whose columns are named after the variables of the FastModel:

Column Unit Role
time timestamp (first column of the CSV by default)
<zone>.TAir K/°C measured air temperature of a zone (at least one zone)
valve_001_y.y, boiler_001_y.y, ... - the controls applied, held from each sample to the next
boiler_001.EEle, boiler_001.EFue, ... kWh readings of the energy meters, cumulative (optional)
weather_inputs.TDryBul, ... K, W/m², m/s, rad the weather channels (optional)
occupancy_1_gai.QCon, .QRad W/m² internal gains per floor area (optional; occupancy_1.gai.* before Trano 0.57)
from mpctrano import MonitoringData

data = MonitoringData.from_csv("monitoring.csv", temperature_unit="C", rename={"Living room": "space_001.TAir"})
report = data.validate(model)              # measured zones, controls, meters, missing columns, gaps
data = data.fill_disturbances(model, forecaster)  # weather file and occupancy schedules for the rest
training, validation = data.split(fraction=0.75)  # the validation starts where the training ends

resample(dt) averages the data on another period, window(start, end) cuts a period, to_csv(path, temperature_unit="C") writes it back.

Without a building at hand, Project.synthetic_data() (or generate_monitoring_data) records data on a copy of the model with its parameter groups at random values (perturb), operated by a thermostat with a random set point that excites the dynamics: the controls, the measured air temperatures with sensor noise, the meter readings and the disturbances.