-
Notifications
You must be signed in to change notification settings - Fork 14
Project Haystack Conformance
By default, Alfalfa is configured to conform to Project Haystack standards in two ways. Kicking off a fully Haystack-tagged and interactive virtual building is as simple as uploading and hitting "Run". Both actions can be triggered either via API or GUI.
Alfalfa implements the Project Haystack REST API endpoints for reading and writing data from building energy models as they run. This enables Haystack-enabled controllers to run seamlessly against a fully virtual building.
Alfalfa enables automated generation of Project Haystack metadata for OpenStudio haystack-measure, when run after creating a typical OpenStudio model (via Create DOE Prototype), will generate the following:
- model.getBuilding -> 'site' entity
- model.weatherFile.get -> 'weather' entity
- airloop = model.getAirLoopHVACs -> 'ahu' entity
- discharge_air_node = airloop.supplyOutletNode -> Node Points added to 'ahu'
- sc = airloop.supplyComponents
- If not UnitarySystem:
- oa_damper = sc.getControllerOutdoorAir -> Add OA damper points to 'ahu'
- mixed_air_node = sc.mixedAirModelObject -> Node Points added to 'ahu'
- outdoor_air_node = sc.outdoorAirModelObject -> Node Points added to 'ahu'
- return_air_node = sc.returnAirModelObject -> Node Points added to 'ahu'
- relief_air_node = sc.reliefAirModelObject -> Node Points added to 'ahu'
- if sc.to_Fan_ConstantVolume -> Constant Volume Fan added to 'ahu'
- if sc.to_FanVariableVolume -> Variable Volume Fan added to 'ahu'
- if sc.to_FanOnOff -> Variable Volume Fan added to 'ahu'
- if sc.to_CoilCoolingWater -> 'ahu' typed as chilledWaterCool, ref to plant loop created
- if sc.to_CoilHeatingWater -> 'ahu' typed as hotWaterHeat, ref to plant loop created
- if sc.to_CoilHeatingWater -> 'ahu' typed as hotWaterHeat, ref to plant loop created
- if sc.to_CoilHeatingElectric -> 'ahu' typed as elecHeat, ref to plant loop created
- If UnitarySystem:
- Similar to if not UnitarySystem
- If not UnitarySystem:
- dc = airloop.demandComponents
- tz = dc.to_ThermalZone -> 'zone' entity created, zone points created
- equip = tz.equipment ->
- equip.to_AirTerminalSingleDuctVAVReheat -> 'vav' entity created, 'ahu' typed as 'vavZone', equipRef to 'ahu' created
- rc = equip.to_AirTerminalSingleDuctVAVReheat.get.reheatCoil
- if rc.to_CoilHeatingWater -> 'vav' typed as 'hotWaterReheat'
- if rc.to_CoilHeatingElectric -> 'vav' typed as 'elecReheat'
- equip.to_AirTerminalSingleDuctUncontrolled -> 'ahu' typed as 'directZone', equipRef to 'ahu' created
- Air Temp Sensor (READ)
- Air Pressure Sensor (READ)
- Air Humidity Sensor (READ)
- Air Flow Sensor (READ)
- Outside Air Damper CMD (WRITE)
- Outdoor Air Damper Sensor Position (READ)
- Outside Air Mass Flow Rate
- Zone Air Temp Sensor (READ)
- Zone Air Humidity Sensor (READ)
- Zone Air Heating Sp
- Zone Air Cooling Sp
- Entering Air Temp Sensor (READ)
- Discharge Air Temp Sensor (READ)
See the SmallOffice and MediumOffice files for more information.
- Getting Started with Model Measures Part 1: Creating Inputs and Outputs
- Getting Started with Model Measures Part 2: Creating Actuators
- Getting Started with EnergyPlus Measures Part 1: Creating Inputs and Outputs
- Getting Started with EnergyPlus Measures Part 2: Creating Actuators
- How to Configure an OpenStudio Model
- How to Configure Measures for Use with Alfalfa Ruby Gem
- How to Create Inputs and Outputs With Measures
- How to Run URBANopt Output Models in Alfalfa
- How to Migrate EnergyPlus Python Plugins
- How to Integrate Python based Electric Vehicle Models with OpenStudio Workflows
- How to Locally Test OpenStudio Models
- Required Structure of OpenStudio Workflow
- List of Automatically Generated Energyplus Points
- Alfalfa EnergyPlus Mixin Methods
- Getting Started with Uploading and Running a Model Using Python
- Getting Started with Uploading and Running a Model Using the UI
- How to Install Alfalfa Client
- How to Preprocess and Upload a Model
- How to Step Through a Simulation
- How to View Historical Data in Grafana
- How to Configure an Alias
- How to Troubleshoot Models