This Interactive Building Performance Analyzer is built by Max Berggren (Data Scientist and Energy Engineer). The primary goal is to provide the most fair and transparent comparison tool available for accurately determining the real impact of upgrades or control strategy changes made to your building systems.
Understanding the true effect of an investment, like new windows or an optimized control algorithm, can be challenging due to many confounding factors, especially weather variations. This tool aims to cut through that noise by normalizing data and applying clear, pedagogical analysis methods.
This tool is the current workhorse powering all impact analytics on building energy performance conducted by Myrspoven AB in Stockholm. We are making it open and available because we believe this methodology offers a significantly more robust and accurate approach compared to traditional methods like 'heat load signatures' or 'degree-day corrections'.
This tool is fully open source! We believe in transparency and collaborative improvement. Contributions, suggestions, and feedback are highly encouraged. You can find the project and contribute on GitHub
This tool helps you analyze time-series data from your building systems to understand performance, particularly the impact of control strategies.
How it works:
Analyzing building performance data, especially when comparing different time periods like months or years, can be tricky. Why? Because the weather can be vastly different! One year might be significantly colder or warmer than another, sometimes by as much as 30% in terms of heating or cooling demand.
Imagine you've invested in new, energy-efficient windows for your building. You'd expect your energy bills to go down. However, if the following year turns out to be much colder than the previous one, you might be surprised to see higher energy consumption despite the new windows. This doesn't necessarily mean the windows aren't working; the weather variation is masking their positive impact.
This tool helps you overcome this challenge. By normalizing data against outdoor temperature and other relevant factors, it allows for a fairer and more accurate comparison of your building's performance and the effectiveness of any changes or control strategies you've implemented. It helps you see the true impact, beyond the weather.
This tool is designed to be highly pedagogical. Each step and analysis method is explained in detail, helping you understand not just the "what" but also the "how" and "why" of the analysis.
Click "Next" or select a step from the navigation above to begin.
Data Format Requirements:
Your Privacy Matters:
Don't have a file? Try the example:
Please tell us which columns from your uploaded file correspond to the following key data types. The dropdowns below are populated with the headers from your file.
Why this is important: Accurate time information is fundamental for any time-series analysis. We need to know when each data point was recorded.
Example: If your data looks like 2023-10-26 14:30:00, 15.5, 1, ...
, and "2023-10-26 14:30:00" is in a column named "ReadingTime", you'd select "ReadingTime" here.
Why this is important: Building energy consumption and system performance are heavily influenced by outdoor temperature. This allows us to normalize comparisons, ensuring we're comparing system states under similar external conditions.
Example: A column named "OAT" or "ExternalTemp" containing values like 10.2
, 15.7
, etc.
Why this is important: This is the signal whose impact you want to assess. The analysis will compare system behavior when this signal is "ON" versus "OFF".
Example: A column named "AI_Mode" with values 1
(for ON) and 0
(for OFF), or a specific system's status signal.
Why this is important: These are the dependent variables. We'll examine how their values change when the Primary Control Signal (C) is ON versus OFF, normalized by Outdoor Temperature (B).
Example: Columns like "Supply_Air_Temp_AHU1", "Heating_Valve_Position", "CHW_Flow_Rate", "Electricity_Meter_kWh". You can select multiple.
Define how "ON" and "OFF" states are determined for your selected Primary Control Signal (N/A).
Threshold-based Logic: For a numeric control signal (e.g., where 1 = ON, 0 = OFF, or a percentage activation), you define ranges.
The script uses these thresholds to classify each data point based on the *daily average* value of the control signal. All hours of a day where the daily average falls into the "ON" range are considered "ON" hours for the analysis (and similarly for "OFF").
Split by Date Ranges Logic: Manually define periods when the control was ON and when it was OFF. This is useful if the control isn't a simple signal in your data but was enabled/disabled based on a schedule.
Specify the overall date periods for your "ON state" data and "OFF state" data. The analysis will only consider data within these respective periods.
Example: You might have run an AI optimization (ON state) from 2023-01-01 to 2023-06-30, and want to compare it to a baseline period (OFF state) from 2022-01-01 to 2022-06-30.
Filter the data to include only points where the outdoor temperature was within the selected range. This applies to all signals and helps ensure comparisons are made under relevant conditions.
Example: If you're analyzing heating, you might filter for temperatures below 15°C. If analyzing cooling, above 20°C.
Filter data to specific hours of the day. This is useful for analyzing specific operational periods, like occupied hours (e.g., 8-17) or nighttime setbacks.
Example: To analyze performance only during working hours, you might set this to 8:00 - 18:00.
This section will display the various analyses performed on your data based on the configurations you've set. Ensure you have completed steps 1-3.
This section provides an initial overview of your data after filtering and control state assignment.
ON/OFF Sample Distribution Chart: Shows the count of data samples classified as "ON" and "OFF" for each day, after applying your initial date range and control signal definition filters. It helps you visualize the prevalence of ON vs. OFF states over time in your filtered dataset before temperature or hour filtering is applied.
Control Signal Counts: These metrics show the number of hours your system was in the "ON" state versus the "OFF" state, based on all applied filters (date ranges, control definition, temperature, and hour of day).
Methodology (Daily ON/OFF Chart):
Methodology (Control Signal Counts):
Use Case for Energy Engineers: Quickly verify if the control strategy was active as expected. Understand the proportion of time the control strategy was active versus inactive within the specific conditions (temperature, time of day) you're analyzing. This is crucial context for interpreting subsequent impact analyses.
This is a core analysis that compares the selected signal's behavior during "ON" vs. "OFF" control states, normalized by outdoor temperature. This ensures fair comparisons by only looking at data under similar weather conditions.
To compare apples to apples, we group data into "temperature bins". For example, we might use 2°C wide bins: 0-2°C, 2-4°C, 4-6°C, and so on, covering the range of your filtered outdoor temperature data.
Example: If an ON data point occurred at 3.1°C and an OFF data point at 3.5°C, both would fall into the 2-4°C bin.
Within each temperature bin, we calculate statistics for the "Signal for Analysis" separately for "ON" periods and "OFF" periods:
Example Table for a "Supply Air Temp" signal:
Temp Bin | State | Avg Temp | Samples | 2.5th Pctl | 97.5th Pctl |
---|---|---|---|---|---|
2-4°C | ON | 18.5°C | 120 | 17.0°C | 20.0°C |
2-4°C | OFF | 20.1°C | 150 | 18.5°C | 21.5°C |
A bar chart displays the average "ON" value and average "OFF" value for each temperature bin side-by-side. Error bars often show the 95% data range.
Bars for bins with few samples (e.g., fewer than 10 hourly samples) might be faded or marked as less reliable, as averages from small sample sizes can be misleading.
Example: If for reliable overlapping bins 0-2°C, 2-4°C, 4-6°C the differences are -1.0°C, -1.2°C, -0.8°C, the simple average diff is `(-1.0 - 1.2 - 0.8) / 3 = -1.0°C`.
Example: If Grand_Average_OFF_Value (from reliable overlapping bins) is 20°C, then `(-1.0°C / 20°C) * 100% = -5.0%`.
Calculation Sketch:
This provides a more realistic impact estimate reflecting typical operating conditions.
Example: A 10% reduction in pressure (`-10%`) leads to: `((1 - 0.1)^1.5 - 1)*100% ≈ ((0.9)^1.5 - 1)*100% ≈ (0.853 - 1)*100% ≈ -14.7%` estimated power reduction.
Use Case for Energy Engineers: This is the workhorse analysis to quantify control strategy effectiveness. It helps answer: "How much does my AI/control change signal X when it's ON, compared to when it's OFF, under similar outdoor conditions?" Is it reducing heating supply temps? Increasing AHU pressure? By how much?