diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b6f16b5..54164a0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,6 +47,12 @@ jobs: cd bsyncpy poetry run python bsyncpy_generator.py BuildingSync-2.4.xsd + - name: Run Generator (BuildingSync 2.5) + run: | + curl -L -o bsyncpy/BuildingSync-2.5.xsd https://github.com/BuildingSync/schema/releases/download/v2.5.0/BuildingSync.xsd + cd bsyncpy + poetry run python bsyncpy_generator.py BuildingSync-2.5.xsd + - name: Run Generator (BuildingSync Develop V2) run: | curl -L -o bsyncpy/BuildingSync-develop-v2.xsd https://raw.githubusercontent.com/BuildingSync/schema/develop-v2/BuildingSync.xsd diff --git a/CHANGELOG.md b/CHANGELOG.md index 959fc56..7a79594 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,16 @@ -# Version 0.3.0.alpha.0 +# Version 0.3.0 * Generated for BuildingSync 2.5 (which is currently develop-v2) * Added GHG emission metrics + * Changed UsefulLife type + * Added DiscountRate + * Added EquipmentID + * Updated MeasureSavingsAnalysis + * Added and sorted enumerations in AuditorQualificationType + * Added PrincipalHVACSystemType, PrincipalLightingSystemType, CondenserType + * Added FacilityEvaluationAuditDefinition + * Added AuditCycle + * Added WCM categories and measures # Version 0.2.0 diff --git a/README.md b/README.md index f8ca3da..efe660d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![Build Status](https://github.com/BuildingSync/bsyncpy/actions/workflows/ci.yml/badge.svg?branch=develop) -Current BuildingSync version: `2.4.0`. +Current BuildingSync version: `2.5.0`. ## Installing @@ -12,9 +12,9 @@ Current BuildingSync version: `2.4.0`. - `poetry install` - `poetry run pre-commit install` - Download, copy, or curl a BuildingSync schema into `bsyncpy/bsyncpy` - - `curl -L -o bsyncpy/BuildingSync-2.4.xsd https://github.com/BuildingSync/schema/releases/download/v2.4.0/BuildingSync.xsd` + - `curl -L -o bsyncpy/BuildingSync-2.5.xsd https://github.com/BuildingSync/schema/releases/download/v2.5.0/BuildingSync.xsd` - cd into `bsyncpy/bsyncpy` -- Run generator: `poetry run python bsyncpy_generator.py BuildingSync-2.4.xsd` +- Run generator: `poetry run python bsyncpy_generator.py BuildingSync-2.5.xsd` - Go back to the root `bsyncpy` and run tests: `poetry run pytest` - Make sure formatting is good: `poetry run pre-commit run --all-files` - On commit, pre-commit should run again @@ -28,7 +28,7 @@ from bsyncpy import bsync # Create a root and set the version attribute root = bsync.BuildingSync() -root.set('version', '2.4.0') +root.set('version', '2.5.0') # Valid element attributes can also be passed in as kwargs f = bsync.Facilities(bsync.Facilities.Facility(ID='Facility-1')) @@ -45,7 +45,7 @@ with open('output.xml', 'wb+') as f: *Output* ```xml - + diff --git a/bsyncpy/bsync.py b/bsyncpy/bsync.py index 2d6a4e8..aa35729 100644 --- a/bsyncpy/bsync.py +++ b/bsyncpy/bsync.py @@ -509,6 +509,7 @@ class PrimaryContactID(BSElement): "IDref", # IDREF ] + # BuildingType.BuildingClassification class BuildingClassification(BSElement): """Specify the type of building.""" @@ -1115,6 +1116,7 @@ class DeliveryID(BSElement): "IDref", # IDREF ] + # ThermalZoneType.HVACScheduleIDs.HVACScheduleID class HVACScheduleID(BSElement): """ID numbers of the heating, cooling, or other HVAC schedules associated with the zone.""" @@ -1124,6 +1126,7 @@ class HVACScheduleID(BSElement): "IDref", # IDREF ] + # SpaceType.OccupantsActivityLevel class OccupantsActivityLevel(BSElement): """The activity level that drives the amount of internal gains due to occupants. "Low" corresponds to typical office/retail work (Sensible load 250 Btu/hr, Latent load 200 Btu/hr), "High" corresponds to heavier factory work or gymnasiums (Sensible load 580 Btu/hr, Latent load 870 Btu/hr).""" @@ -1169,6 +1172,7 @@ class OccupancyScheduleID(BSElement): "IDref", # IDREF ] + # ScheduleType.SchedulePeriodBeginDate class SchedulePeriodBeginDate(BSElement): """Date when the schedule begins. (CCYY-MM-DD)""" @@ -1383,6 +1387,35 @@ class ContactID(BSElement): "IDref", # IDREF ] + +# AuditCycleType.AuditCycleName +class AuditCycleName(BSElement): + """Name identifying the audit cycle other than the ID""" + + element_type = "xs:string" + + +# AuditCycleType.AuditCycleNotes +class AuditCycleNotes(BSElement): + """Details about the Audit Cycle""" + + element_type = "xs:string" + + +# AuditCycleType.AuditCycleStartYear +class AuditCycleStartYear(BSElement): + """Year the Audit Cycle starts (inclusive, CCYY)""" + + element_type = "xs:gYear" + + +# AuditCycleType.AuditCycleEndYear +class AuditCycleEndYear(BSElement): + """Year the Audit Cycle ends (inclusive, CCYY)""" + + element_type = "xs:gYear" + + # ScenarioType.ScenarioName class ScenarioName(BSElement): """Name of the scenario for which energy use data is included. This may include benchmarks, baselines, and improved cases. For retrofits, each package represents a different scenario.""" @@ -1542,6 +1575,7 @@ class ReferenceCase(BSElement): "IDref", # IDREF ] + # AnnualSavingsSiteEnergy class AnnualSavingsSiteEnergy(BSElement): """Site energy savings per year. (MMBtu/year)""" @@ -1640,15 +1674,6 @@ class InternalRateOfReturn(BSElement): element_type = "xs:decimal" -# ScenarioType.ScenarioType.PackageOfMeasures.MeasureIDs.MeasureID -class MeasureID(BSElement): - """ID number of measure.""" - - -MeasureID.element_attributes = [ - "IDref", # IDREF -] - # LowMedHigh class LowMedHigh(BSElement): element_type = "xs:string" @@ -1851,6 +1876,7 @@ class Actual(BSElement): ("WeatherDataSource", WeatherDataSource), ] + # OtherType class OtherType(BSElement): pass @@ -2355,6 +2381,7 @@ class ParentResourceUseID(BSElement): "IDref", # IDREF ] + # ResourceUseType.AnnualFuelUseLinkedTimeSeriesIDs.LinkedTimeSeriesID class LinkedTimeSeriesID(BSElement): pass @@ -2364,6 +2391,7 @@ class LinkedTimeSeriesID(BSElement): "IDref", # IDREF ] + # ResourceUseType.UtilityIDs.UtilityID class UtilityID(BSElement): """ID of utility associated with this resource use.""" @@ -2373,6 +2401,7 @@ class UtilityID(BSElement): "IDref", # IDREF ] + # ResourceUseType.Emissions.Emission.EmissionsLinkedTimeSeriesIDs.EmissionsLinkedTimeSeriesID class EmissionsLinkedTimeSeriesID(BSElement): pass @@ -2382,6 +2411,7 @@ class EmissionsLinkedTimeSeriesID(BSElement): "IDref", # IDREF ] + # ResourceUseType.Emissions.Emission.EmissionBoundary class EmissionBoundary(BSElement): """The boundary that encompasses the measured emissions.""" @@ -2718,6 +2748,7 @@ class ResourceUseID(BSElement): "IDref", # IDREF ] + # TimeSeriesType.WeatherStationID class WeatherStationID(BSElement): """ID number of weather station this time series contributes to.""" @@ -2727,6 +2758,7 @@ class WeatherStationID(BSElement): "IDref", # IDREF ] + # IntervalFrequencyType class IntervalFrequencyType(BSElement): """Indicates frequency of data that's available for a given variable. Data that's available can range from 1 minute interval to annual. This interval frequency can be applied to resource or other time series data like weather.""" @@ -2836,7 +2868,7 @@ class MVOption(BSElement): class UsefulLife(BSElement): """Productive life that can be expected of measure or a project. (yrs)""" - element_type = "xs:decimal" + element_type = "xs:nonNegativeInteger" # MeasureType.MeasureTotalFirstCost @@ -2933,6 +2965,7 @@ class ExistingSystemReplaced(BSElement): "IDref", # IDREF ] + # MeasureType.TypeOfMeasure.Replacements.Replacement.AlternativeSystemReplacement class AlternativeSystemReplacement(BSElement): """ID numbers of alternative systems that would replace the existing systems.""" @@ -2942,6 +2975,7 @@ class AlternativeSystemReplacement(BSElement): "IDref", # IDREF ] + # ExistingScheduleAffected class ExistingScheduleAffected(BSElement): """ID numbers of schedules replaced by the measure.""" @@ -2951,6 +2985,7 @@ class ExistingScheduleAffected(BSElement): "IDref", # IDREF ] + # ModifiedSchedule class ModifiedSchedule(BSElement): """ID numbers of schedules associated with the improved systems.""" @@ -2960,6 +2995,7 @@ class ModifiedSchedule(BSElement): "IDref", # IDREF ] + # MeasureType.TypeOfMeasure.ModificationRetrocommissions.ModificationRetrocommissioning.ExistingSystemAffected class ExistingSystemAffected(BSElement): """ID numbers of any existing systems affected by the measure.""" @@ -2969,6 +3005,7 @@ class ExistingSystemAffected(BSElement): "IDref", # IDREF ] + # MeasureType.TypeOfMeasure.ModificationRetrocommissions.ModificationRetrocommissioning.ModifiedSystem class ModifiedSystem(BSElement): """ID numbers of alternative systems that represent "improvements" to existing systems.""" @@ -2978,6 +3015,7 @@ class ModifiedSystem(BSElement): "IDref", # IDREF ] + # MeasureType.TypeOfMeasure.Additions.Addition.AlternativeSystemAdded class AlternativeSystemAdded(BSElement): """ID numbers of alternative systems that would be added as part of the measure.""" @@ -2987,6 +3025,7 @@ class AlternativeSystemAdded(BSElement): "IDref", # IDREF ] + # MeasureType.TypeOfMeasure.Removals.Removal.ExistingSystemRemoved class ExistingSystemRemoved(BSElement): """ID numbers of any existing systems removed as part of the measure.""" @@ -2996,6 +3035,7 @@ class ExistingSystemRemoved(BSElement): "IDref", # IDREF ] + # MeasureType.MeasureSavingsAnalysis.MeasureRank class MeasureRank(BSElement): """Sequence in which the measure was analyzed relative to other measures. Ranking should be 1 if it is analyzed first, 2 if analyzed after Measure 1 is applied, etc. This accounts for interactive effects between measures. Ranking may be 1 for all measures if they are not analyzed as a package.""" @@ -3059,6 +3099,13 @@ class DiscountFactor(BSElement): element_type = "xs:decimal" +# ReportType.DiscountRate +class DiscountRate(BSElement): + """Discount rate applied to calculate present values of future cash flows. (0-100) (%)""" + + element_type = "xs:decimal" + + # ReportType.AnalysisPeriod class AnalysisPeriod(BSElement): """Period used for financial analysis. Can be combined with IntervalFrequency to specify the units. (yrs)""" @@ -3118,6 +3165,7 @@ class AuditorContactID(BSElement): "IDref", # IDREF ] + # ReportType.AuditDates.AuditDate.Date class Date(BSElement): """Date of DateType enumeration. (CCYY-MM-DD)""" @@ -3149,64 +3197,83 @@ class EscalationRate(BSElement): # AuditorQualificationType class AuditorQualificationType(BSElement): + element_type = "xs:string" element_enumerations = [ - "Professional Engineer (PE)", + "AABC Commissioning Group (ACG) Commissioning Authority (CxA)", + "ASHRAE Building Commissioning Professional (BCxP)", + "ASHRAE Building Energy Assessment Professional (BEAP)", + "ASHRAE Building Energy Modeling Professional (BEMP)", + "Accredited Commissioning Process Authority Professional (CxAP)", + "Associate Commissioning Professional (ACP)", "Associated Air Balance Council (AABC) Certified Member Agency", "Associated Air Balance Council (AABC) Test and Balance Technician", + "Association of Energy Engineers Certified Building Commissioning Firm (CBCF)", + "Association of Energy Engineers Certified Building Commissioning Professional (CBCP)", + "Association of Energy Engineers Certified Building Energy Simulation Analyst (BESA)", + "Association of Energy Engineers Certified Business Energy Professional (BEP)", "Association of Energy Engineers Certified Carbon Reduction Manager (CRM)", - "Association of Energy Engineers Certified Sustainable Development Professional (CSDP)", - "Association of Energy Engineers Certified Power Quality Professional (CPQ)", "Association of Energy Engineers Certified Demand Side Manager (CDSM)", + "Association of Energy Engineers Certified Energy Auditor (CEA)", + "Association of Energy Engineers Certified Energy Manager (CEM)", "Association of Energy Engineers Certified Energy Procurement Professional (CEP)", - "Association of Energy Engineers Certified Lighting Efficiency Professional (CLEP)", - "Association of Energy Engineers Certified Measurement & Verification Professional (CMVP)", "Association of Energy Engineers Certified GeoExchange Designer Program (CGD)", - "Association of Energy Engineers Certified Business Energy Professional (BEP)", + "Association of Energy Engineers Certified Green Building Engineer (GBE)", "Association of Energy Engineers Certified Industrial Energy Professional (CIEP)", + "Association of Energy Engineers Certified Lighting Efficiency Professional (CLEP)", + "Association of Energy Engineers Certified Measurement & Verification Professional (CMVP)", + "Association of Energy Engineers Certified Power Quality Professional (CPQ)", + "Association of Energy Engineers Certified Residential Energy Auditor (REA)", + "Association of Energy Engineers Certified Sustainable Development Professional (CSDP)", "Association of Energy Engineers Certified Water Efficiency Professional (CWEP)", - "Association of Energy Engineers Energy Efficiency Practitioner (EEP)", - "Association of Energy Engineers Renewable Energy Professional (REP)", "Association of Energy Engineers Distributed Generation Certified Professional (DGCP)", - "Association of Energy Engineers Certified Building Energy Simulation Analyst (BESA)", + "Association of Energy Engineers Energy Efficiency Practitioner (EEP)", "Association of Energy Engineers Performance Contracting and Funding Professional (PCF)", - "Association of Energy Engineers Certified Residential Energy Auditor (REA)", - "Association of Energy Engineers Certified Building Commissioning Firm Program (CBCF)", - "Association of Energy Engineers Certified Green Building Engineer (GBE)", - "Association of Energy Engineers Certified Energy Manager (CEM)", - "Association of Energy Engineers Certified Energy Auditor (CEA)", - "Association of Energy Engineers Certified Building Commissioning Professional (CBCP)", + "Association of Energy Engineers Renewable Energy Professional (REP)", + "Building Commissioning Association (BCA) Certified Commissioning Professional (CCP)", + "Building Commissioning Certification Board (BCCB) Certified Commissioning Professional (CCP)", "Building Operator Certification (BOC): Level 1", "Building Operator Certification (BOC): Level 2", + "Building Owners and Managers Institute (BOMI) International - Facilities Management Administrator (FMA)", + "Building Owners and Managers Institute (BOMI) International - High-Performance Sustainable Building Management (BOMI-HP)", + "Building Owners and Managers Institute (BOMI) International - Real Property Administrator (RPA)", + "Building Owners and Managers Institute (BOMI) International - System Maintenance Administrator (SMA)", + "Building Owners and Managers Institute (BOMI) International - System Maintenance Technician (SMT)", "Building Performance Institute (BPI) Certification", - "Building Performance Institute (BPI): Building Analyst (BA)", "Building Performance Institute (BPI): Advanced Home Energy Professional (HEP)", + "Building Performance Institute (BPI): Advanced Home Energy Professional - Crew Leader (HEP-CL)", "Building Performance Institute (BPI): Advanced Home Energy Professional - Energy Auditor (HEP-EA)", "Building Performance Institute (BPI): Advanced Home Energy Professional - Quality Control Inspector (HEP-QCI)", "Building Performance Institute (BPI): Advanced Home Energy Professional - Retrofit Installer (HEP-RI)", - "Building Performance Institute (BPI): Advanced Home Energy Professional - Crew Leader (HEP-CL)", + "Building Performance Institute (BPI): Building Analyst (BA)", "Building Performance Institute (BPI): Multifamily Building Analyst", - "Residential Energy Services Network (RESNET) Certification", - "Residential Energy Services Network (RESNET) - Home Partner", - "Registered Architect (RA)", - "Refrigerating System Operating Engineer", - "High Pressure Boiler Operating Engineer", "Certified Commissioning Professional (CCP)", - "Associate Commissioning Professional (ACP)", - "Existing Building Commissioning Professional (EBCP)", "Commissioning Process Management Professional (CPMP)", - "Accredited Commissioning Process Authority Professional (CxAP)", - "NYSERDA FlexTech Consultant", - "ASHRAE Building Commissioning Professional (BCxP)", - "ASHRAE Building Energy Assessment Professional (BEAP)", - "ASHRAE Building Energy Modeling Professional (BEMP)", "Department of Buildings (DOB) Approved Agent", - "High-Performance Building Design Professional (HBDP)", + "Energy Management Association (EMA): Energy Management Professional (EMP)", + "Existing Building Commissioning Professional (EBCP)", "GreenPoint Rater Existing Home Multifamily Rater", "HERS Whole House (HERS II) Rater", + "High Pressure Boiler Operating Engineer", + "High-Performance Building Design Professional (HBDP)", + "International Facility Management Association (IFMA) Certified Facilities Manager (CFM)", + "International Facility Management Association (IFMA) Facility Management Professional (FMP)", + "International Facility Management Association (IFMA) Sustainability Facility Professional (SFP)", "International Union of Operating Engineers Certified Energy Specialist", + "Mechanical, Electrical and Plumbing (MEP) Professional Engineer (PE)", + "New York State Energy Research and Development Authority (NYSERDA) FlexTech Consultant", + "National Environmental Balancing Bureau (NEBB) Building Systems Commissioning (BSC)", + "National Environmental Balancing Bureau (NEBB) Commissioning Process Professional (CxPP)", "Northwest Energy Education Institute Energy Management Certification", "PhD in Mechanical Engineering", + "Professional Engineer (PE)", + "Refrigerating System Operating Engineer", + "Registered Architect (RA)", + "Residential Energy Services Network (RESNET) - Home Partner", + "Residential Energy Services Network (RESNET) Certification", + "University of Wisconsin Accredited Commissioning Process Authority Professional (CxAP or CAP)", + "University of Wisconsin Accredited Commissioning Process Manager (CxM)", + "University of Wisconsin Accredited Green Commissioning Process Provider (GCxP or GCP)" "Other", "None", ] @@ -3402,7 +3469,7 @@ class PrimaryHVACSystemType(BSElement): ] -# HVACSystemType.PrincipalHVACSystemType +# PrincipalHVACSystemType class PrincipalHVACSystemType(BSElement): """Principal HVAC type.""" @@ -3678,6 +3745,7 @@ class CoolingSourceID(BSElement): "IDref", # IDREF ] + # HVACSystemType.HeatingAndCoolingSystems.HeatingSources.HeatingSource.HeatingSourceType.HeatPump.LinkedHeatingPlantID class LinkedHeatingPlantID(BSElement): """ID number of HeatingPlant serving as the source for this heat pump.""" @@ -3687,6 +3755,7 @@ class LinkedHeatingPlantID(BSElement): "IDref", # IDREF ] + # HVACSystemType.HeatingAndCoolingSystems.HeatingSources.HeatingSource.HeatingSourceType.SourceHeatingPlantID class SourceHeatingPlantID(BSElement): """ID number of HeatingPlant serving as the source for this zonal system.""" @@ -3696,6 +3765,7 @@ class SourceHeatingPlantID(BSElement): "IDref", # IDREF ] + # OutputCapacity class OutputCapacity(BSElement): """Output capacity of equipment. WARNING: This element is being deprecated, use Capacity instead""" @@ -3832,6 +3902,13 @@ class Manufacturer(BSElement): element_type = "xs:string" +# EquipmentID +class EquipmentID(BSElement): + """Identifier for the equipment.""" + + element_type = "xs:string" + + # ModelNumber class ModelNumber(BSElement): """Model or catalog number that can be used to identify more detailed system characteristics.""" @@ -4100,6 +4177,7 @@ class ReheatPlantID(BSElement): "IDref", # IDREF ] + # HVACSystemType.HeatingAndCoolingSystems.Deliveries.Delivery.DeliveryCondition class DeliveryCondition(EquipmentCondition): pass @@ -4114,6 +4192,7 @@ class HeatingSourceID(BSElement): "IDref", # IDREF ] + # HVACSystemType.HeatingAndCoolingSystems.ZoningSystemType class ZoningSystemType(BSElement): """Identifies whether a system is single or multi-zone.""" @@ -4266,6 +4345,7 @@ class HeatingDeliveryID(BSElement): "IDref", # IDREF ] + # DuctSystemType.CoolingDeliveryID class CoolingDeliveryID(BSElement): """Cooling delivery system supported by the air-distribution system.""" @@ -4275,6 +4355,7 @@ class CoolingDeliveryID(BSElement): "IDref", # IDREF ] + # InsulationCondition class InsulationCondition(BSElement): """Assessed condition of installed insulation.""" @@ -4586,6 +4667,14 @@ class WaterCooledCondenserType(BSElement): element_enumerations = ["Cooling tower", "Other", "Unknown"] +# CoolingPlant.CondenserType +class CondenserType(BSElement): + """condenser associated with the cooling plant. The usage of this element is not recommended except for Audit Template use cases. User is recommended to use CondenserPlant instead.""" + + element_type = "xs:string" + element_enumerations = ["Air Cooled", "Water Cooled", "Other", "Unknown"] + + # CondenserWaterTemperature class CondenserWaterTemperature(BSElement): """The temperature of water supplied to a water-cooled condenser under normal operating conditions. (°F)""" @@ -4742,6 +4831,7 @@ class AirCleaner(BSElement): ("SystemPerformanceRatio", SystemPerformanceRatio), ] + # VentilationRate class VentilationRate(BSElement): """Installed flow rate for mechanical ventilation system. (cfm)""" @@ -4841,6 +4931,7 @@ class LinkedDeliveryID(BSElement): "IDref", # IDREF ] + # LightingSystemType.BallastType class BallastType(BSElement): """A ballast is a piece of equipment required to control the starting and operating voltages of electrical gas discharge lights.""" @@ -5146,6 +5237,7 @@ class Combustion(BSElement): ("CondensingOperation", CondensingOperation), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.StorageTank.TankHeatingType.Indirect.IndirectTankHeatingSource.HeatPump.HPWHMinimumAirTemperature class HPWHMinimumAirTemperature(BSElement): """The minimum ambient operating temperature for the compressor. This can be inferred from the operating range of the heat pump. Below this value, the heat pump will not operate and the supplemental heating system is required to produce hot water, thus reducing the efficiency of the heat pump water heater. (°F)""" @@ -5238,6 +5330,7 @@ class HeatingPlantID(BSElement): "IDref", # IDREF ] + # DomesticHotWaterSystemType.DomesticHotWaterType.StorageTank.TankVolume class TankVolume(BSElement): """Hot water tank volume. (gal)""" @@ -6077,6 +6170,7 @@ class SystemIDReceivingHeat(BSElement): "IDref", # IDREF ] + # HeatRecoverySystemType.SystemIDProvidingHeat class SystemIDProvidingHeat(BSElement): """ID number of the system that usually provides heat to another system.""" @@ -6086,6 +6180,7 @@ class SystemIDProvidingHeat(BSElement): "IDref", # IDREF ] + # WallSystemType.WallRValue class WallRValue(BSElement): """(Also known as thermal resistance), quantity determined by the temperature difference, at steady state, between two defined surfaces of a material or construction that induces a unit heat flow rate through unit area (R = ΔT/q). R-value is the reciprocal of thermal conductance. A unit of thermal resistance used for comparing insulating values of different materials, for the specific thickness of the material. The higher the R-value number, a material, the greater its insulating properties and the slower the heat flow through it. This R-value does not include the interior and exterior air film coefficients. (hr-ft2-F/Btu)""" @@ -8903,7 +8998,6 @@ class eGRIDSubregionCode(BSElement): "FRCC", "HIMS", "HIOA", - "MORE", "MROE", "MROW", "NEWE", @@ -9853,14 +9947,6 @@ class ClimateZone(BSElement): ("ClimateZone", CBECSType.ClimateZone), ] -# ScenarioType.ScenarioType.PackageOfMeasures.MeasureIDs -class MeasureIDs(BSElement): - """ID numbers for measures included in the package. Multiple items may be selected.""" - - -MeasureIDs.element_children = [ - ("MeasureID", MeasureID), -] # ScenarioType.ScenarioType.PackageOfMeasures.SimpleImpactAnalysis.EstimatedCost class EstimatedCost(LowMedHigh): @@ -10230,6 +10316,13 @@ class MeasureName(BSElement): "Add energy recovery", "Convert gas-fired unit to boiler loop", "Convert system from steam to hot water", + "Add boiler automatic chemical feed system", + "Install boiler condensate return system", + "Install boiler automatic blowdown system", + "Install boiler blowdown heat exchanger", + "Install boiler expansion flash tank", + "Install meters on boiler make-up lines", + "Install dehumidification system", "Clean and/or repair", "Implement training and/or documentation", "Upgrade operating protocols, calibration, and/or sequencing", @@ -10257,6 +10350,13 @@ class MeasureName(BSElement): "Install gas cooling", "Add or repair economizer cycle", "Add or replace cooling tower", + "Implement advanced cooling tower controls to manage cycles of concentration", + "Install cooling tower water treatment system", + "Install automated chemical feed systems for cooling tower management", + "Install conductivity controller for cooling tower management", + "Install covers on open distribution decks on top of cooling tower", + "Install flow meters on make-up and blowdown lines for cooling tower management", + "Install side-stream filtration system for cooling tower management", "Clean and/or repair", "Implement training and/or documentation", "Upgrade operating protocols, calibration, and/or sequencing", @@ -10324,6 +10424,10 @@ class MeasureName(BSElement): "Install variable refrigerant flow system", "Capture and return condensate", "Install or Upgrade Master Venting", + "Retrofit single-pass cooling with an automatic shut-off device", + "Retrofit single-pass cooling with closed loop/recirculation system", + "Install water-efficient evaporative cooler", + "Replace water-cooled equipment with air-cooled equipment", "Clean and/or repair", "Implement training and/or documentation", "Upgrade operating protocols, calibration, and/or sequencing", @@ -10429,6 +10533,7 @@ class MeasureName(BSElement): "Install or upgrade master venting", "Replace steam traps with orifice plates", "Install steam condensate heat recovery", + "Install leak detection system", "Clean and/or repair", "Implement training and/or documentation", "Upgrade operating protocols, calibration, and/or sequencing", @@ -10604,6 +10709,15 @@ class MeasureName(BSElement): "Install low-flow plumbing equipment", "Install onsite sewer treatment systems", "Implement water efficient irrigation", + "Remove water softeners with timers", + "Install high-efficiency faucet aerator in lavatory public restrooms", + "Install WaterSense-qualified faucet aerator in lavatory private restrooms", + "Install WaterSense-qualified showerhead", + "Install WaterSense-qualified flushometer toilets", + "Install WaterSense-qualified tank toilets", + "Install WaterSense-qualified flushing urinal", + "Install leak detection system", + "Install temporary shut-off or foot-operated valves with kitchen faucets", "Clean and/or repair", "Implement training and/or documentation", "Upgrade operating protocols, calibration, and/or sequencing", @@ -10739,6 +10853,9 @@ class MeasureName(BSElement): "Implement hot aisle cold aisle design", "Implement server virtualization", "Upgrade servers", + "Eliminate redundant power supplies", + "Install battery storage", + "Replace inefficient hardware", "Clean and/or repair", "Implement training and/or documentation", "Upgrade operating protocols, calibration, and/or sequencing", @@ -10750,6 +10867,163 @@ class MeasureName(BSElement): ("MeasureName", DataCenterImprovements.MeasureName), ] + +# MeasureType.TechnologyCategories.TechnologyCategory.AlternativeWaterSources +class AlternativeWaterSources(BSElement): + """Measures reserved for future and other ECMs.Alternative water sources options for water saving.""" + + class MeasureName(BSElement): + """Short description of measure.""" + + element_type = "xs:string" + element_enumerations = [ + "Install condensate capture equipment", + "Install atmospheric water generator", + "Install wastewater treatment plant", + "Install rainwater harvesting system", + "Install cooling tower blowdown for appropriate applications", + "Install desalinated water treatment for reuse", + "Use discharged water from water purification processes", + "Install foundation water treatment for reuse", + "Install greywater reuse system", + "Clean and/or repair", + "Implement training and/or documentation", + "Upgrade operating protocols, calibration, and/or sequencing", + "Other", + ] + + +AlternativeWaterSources.element_children = [ + ("MeasureName", AlternativeWaterSources.MeasureName), +] + + +# MeasureType.TechnologyCategories.TechnologyCategory.KitchenImprovements +class KitchenImprovements(BSElement): + """Kitchen improvements.""" + + class MeasureName(BSElement): + """Short description of measure.""" + + element_type = "xs:string" + element_enumerations = [ + "Retrofit single-pass cooling ice machine to closed loop", + "Install food disposal load sensing device", + "Replace with ENERGY STAR-qualified commercial dishwashers", + "Replace with ENERGY STAR-qualified steam cookers or boilerless commercial steam cookers", + "Replace with ENERGY STAR-qualified ice machine", + "Replace food disposal with food pulper system", + "Install WaterSense-qualified pre-rinse spray valves", + "Install in-line flow restrictor on dipper wells", + "Install steam kettle with condensate return", + "Clean and/or repair", + "Implement training and/or documentation", + "Upgrade operating protocols, calibration, and/or sequencing", + "Other", + ] + + +KitchenImprovements.element_children = [ + ("MeasureName", KitchenImprovements.MeasureName), +] + + +# MeasureType.TechnologyCategories.TechnologyCategory.LaboratoryAndMedicalEquipments +class LaboratoryAndMedicalEquipments(BSElement): + """Improvements for laboratory and medical equipments.""" + + class MeasureName(BSElement): + """Short description of measure.""" + + element_type = "xs:string" + element_enumerations = [ + "Install dry vacuum or air-cooled vacuum pump", + "Retrofit liquid-ring vacuum pump with a water recovery system", + "Install digital photographic or X-ray equipment", + "Retrofit traditional photographic or X-ray equipment with a water recycling system", + "Install water-efficient glassware washer with water recycling system", + "Retrofit glassware washer with water recycling system", + "Install pretreatment of water purification equipment to increase system recovery", + "Install high efficiency water purification system with high recovery rate", + "Install steam sterilizer system with automated tempering system and automatic shut off", + "Retrofit vivarium washing equipment with water recycling system", + "Install water-efficient vivarium washing equipment with advanced controls and water recycling", + "Install water-efficient vivarium watering equipment with recirculation system", + "Install steam sterilizer condensate retrofit kit", + "Clean and/or repair", + "Implement training and/or documentation", + "Upgrade operating protocols, calibration, and/or sequencing", + "Other", + ] + + +LaboratoryAndMedicalEquipments.element_children = [ + ("MeasureName", LaboratoryAndMedicalEquipments.MeasureName), +] + + +# MeasureType.TechnologyCategories.TechnologyCategory.IrrigationSystemsAndLandscapingImprovements +class IrrigationSystemsAndLandscapingImprovements(BSElement): + """Improvements for irrigation systems and landscaping.""" + + class MeasureName(BSElement): + """Short description of measure.""" + + element_type = "xs:string" + element_enumerations = [ + "Install advanced weather-based irrigation controller", + "Install advanced soil-moisture based irrigation controller", + "Install water-efficient irrigation sprinkler heads", + "Reprogram irrigation controller to water-efficient settings", + "Install irrigation meter", + "Install micro-irrigation or drip irrigation", + "Install irrigation sprinkler shut-off device", + "Remove or Recirculate ornamental water feature", + "Install native/adaptive plants", + "Remove high water consuming plants or replace with native/adaptive plants", + "Clean and/or repair", + "Implement training and/or documentation", + "Upgrade operating protocols, calibration, and/or sequencing", + "Other", + ] + + +IrrigationSystemsAndLandscapingImprovements.element_children = [ + ("MeasureName", IrrigationSystemsAndLandscapingImprovements.MeasureName), +] + + +# MeasureType.TechnologyCategories.TechnologyCategory.WashingEquipmentsAndTechiques +class WashingEquipmentsAndTechiques(BSElement): + """Improvements for washing equipments and techiques.""" + + class MeasureName(BSElement): + """Short description of measure.""" + + element_type = "xs:string" + element_enumerations = [ + "Install automatic shutoff nozzle for self-service vehicle wash", + "Implement water-efficient optimization for vehicle washing equipment", + "Retrofit vehicle washing equipment with water recycling system", + "Install high-pressure self-service vehicle washer", + "Install ozone system for laundry equipment", + "Install water-efficient conveyor/in-bay vehicle washing equipment", + "Install ENERGY STAR-qualified laundry washing machines", + "Install water-efficient industrial/commercial laundry equipment", + "Retrofit laundry washing equipment with water recycling system", + "Install meter on vehicle wash system", + "Clean and/or repair", + "Implement training and/or documentation", + "Upgrade operating protocols, calibration, and/or sequencing", + "Other", + ] + + +WashingEquipmentsAndTechiques.element_children = [ + ("MeasureName", WashingEquipmentsAndTechiques.MeasureName), +] + + # MeasureType.TechnologyCategories.TechnologyCategory.FutureOtherECMs class FutureOtherECMs(BSElement): """Measures reserved for future and other ECMs.""" @@ -10765,6 +11039,7 @@ class MeasureName(BSElement): ("MeasureName", FutureOtherECMs.MeasureName), ] + # MeasureType.TechnologyCategories.TechnologyCategory.HealthAndSafety class HealthAndSafety(BSElement): """Category heading for measures that are necessary for health, comfort, or safety reasons, not for energy efficiency reasons.""" @@ -10779,6 +11054,7 @@ class MeasureName(BSElement): ("MeasureName", HealthAndSafety.MeasureName), ] + # MeasureType.TechnologyCategories.TechnologyCategory.Uncategorized class Uncategorized(BSElement): """Category heading for measures that don't fit into another category.""" @@ -10794,6 +11070,7 @@ class MeasureName(BSElement): ("MeasureName", Uncategorized.MeasureName), ] + # MeasureType.TechnologyCategories.TechnologyCategory class TechnologyCategory(BSElement): """Authorized technology category as defined by the Federal Energy Management Program (FEMP). In some cases a single measure may include multiple components affecting multiple categories.""" @@ -10844,6 +11121,14 @@ class MeasureName(BSElement): ("AdvancedMeteringSystems", AdvancedMeteringSystems), ("PlugLoadReductions", PlugLoadReductions), ("DataCenterImprovements", DataCenterImprovements), + ("AlternativeWaterSources", AlternativeWaterSources), + ("KitchenImprovements", KitchenImprovements), + ("LaboratoryAndMedicalEquipments", LaboratoryAndMedicalEquipments), + ( + "IrrigationSystemsAndLandscapingImprovements", + IrrigationSystemsAndLandscapingImprovements, + ), + ("WashingEquipmentsAndTechiques", WashingEquipmentsAndTechiques), ("FutureOtherECMs", FutureOtherECMs), ("HealthAndSafety", HealthAndSafety), ("Uncategorized", Uncategorized), @@ -10852,6 +11137,7 @@ class MeasureName(BSElement): ("MeasureName", TechnologyCategory.ConveyanceSystems.MeasureName), ] + # ReportType.AuditDates.AuditDate class AuditDate(BSElement): pass @@ -10863,6 +11149,7 @@ class AuditDate(BSElement): ("CustomDateType", CustomDateType), ] + # ReportType.OtherEscalationRates.OtherEscalationRate class OtherEscalationRate(BSElement): pass @@ -10876,6 +11163,7 @@ class OtherEscalationRate(BSElement): ("EscalationRate", EscalationRate), ] + # ReportType.Qualifications.Qualification.AuditorQualification class AuditorQualification(AuditorQualificationType): """Qualification of auditor responsible for the audit report.""" @@ -10904,6 +11192,7 @@ class Qualification(BSElement): ("AuditorYearsOfExperience", AuditorYearsOfExperience), ] + # HVACSystemType.HVACControlSystemTypes class HVACControlSystemTypes(BSElement): """HVAC equipment control strategies.""" @@ -10913,6 +11202,7 @@ class HVACControlSystemTypes(BSElement): ("HVACControlSystemType", HVACControlSystemType), ] + # ElectricResistance class ElectricResistance(ElectricResistanceType): pass @@ -10939,6 +11229,7 @@ class Furnace(BSElement): ("ThirdPartyCertification", ThirdPartyCertification), ] + # HVACSystemType.HeatingAndCoolingSystems.HeatingSources.HeatingSource.HeatingSourceType.HeatPump.HeatPumpBackupSystemFuel class HeatPumpBackupSystemFuel(FuelTypes): """Backup fuel used by the heat pump.""" @@ -10968,6 +11259,7 @@ class CondenserPlantIDs(BSElement): ("CondenserPlantID", CondenserPlantID), ] + # HVACSystemType.HeatingAndCoolingSystems.CoolingSources.CoolingSource.CoolingSourceType.EvaporativeCooler class EvaporativeCooler(BSElement): pass @@ -10977,6 +11269,7 @@ class EvaporativeCooler(BSElement): ("EvaporativeCoolingType", EvaporativeCoolingType), ] + # NoCooling class NoCooling(NoCoolingType): pass @@ -11003,6 +11296,7 @@ class Convection(BSElement): ("PipeLocation", PipeLocation), ] + # HVACSystemType.HeatingAndCoolingSystems.Deliveries.Delivery.DeliveryType.ZoneEquipment.Radiant class Radiant(BSElement): pass @@ -11014,6 +11308,7 @@ class Radiant(BSElement): ("PipeLocation", PipeLocation), ] + # DuctSystemType.DuctInsulationCondition class DuctInsulationCondition(InsulationCondition): pass @@ -11049,6 +11344,7 @@ class Capacity(BSElement): ("Quantity", Quantity), ] + # HeatingPlantType.SolarThermal class SolarThermal(BSElement): class OutputCapacity(OutputCapacity): @@ -11069,6 +11365,7 @@ class Capacity(BSElement): ("Quantity", Quantity), ] + # CoolingPlantType.DistrictChilledWater class DistrictChilledWater(BSElement): pass @@ -11084,6 +11381,7 @@ class DistrictChilledWater(BSElement): ("ActiveDehumidification", ActiveDehumidification), ] + # CoolingPlantType.Chiller.PartLoadRatioBelowWhichHotGasBypassOperates class PartLoadRatioBelowWhichHotGasBypassOperates( BoundedDecimalZeroToOneWithSourceAttribute @@ -11102,6 +11400,7 @@ class GlycolCooledDryCooler(BSElement): ("CapacityUnits", CapacityUnits), ] + # CondenserPlantType.AirCooled.EvaporativelyCooledCondenser class EvaporativelyCooledCondenser(BSElement): """If exists then the unit uses evaporative cooling to enhance heat rejection from the condenser coils.""" @@ -11121,6 +11420,7 @@ class EvaporativelyCooledCondenser(BSElement): ), ] + # OtherHVACSystemType.LinkedDeliveryIDs class LinkedDeliveryIDs(BSElement): """List of connections to air distribution systems.""" @@ -11130,6 +11430,7 @@ class LinkedDeliveryIDs(BSElement): ("LinkedDeliveryID", LinkedDeliveryID), ] + # OtherHVACSystemType.OtherHVACType.Humidifier class Humidifier(BSElement): pass @@ -11144,6 +11445,7 @@ class Humidifier(BSElement): ("SystemPerformanceRatio", SystemPerformanceRatio), ] + # OtherHVACSystemType.OtherHVACType.Dehumidifier class Dehumidifier(BSElement): pass @@ -11159,6 +11461,7 @@ class Dehumidifier(BSElement): ("ThirdPartyCertification", ThirdPartyCertification), ] + # VentilationControlMethods class VentilationControlMethods(BSElement): """List of ventilation control methods.""" @@ -11168,6 +11471,7 @@ class VentilationControlMethods(BSElement): ("VentilationControlMethod", VentilationControlMethod), ] + # OtherHVACSystemType.OtherHVACType.SpotExhaust class SpotExhaust(BSElement): pass @@ -11186,6 +11490,7 @@ class SpotExhaust(BSElement): ("ThirdPartyCertification", ThirdPartyCertification), ] + # OtherHVACSystemType.OtherHVACType.NaturalVentilation class NaturalVentilation(BSElement): pass @@ -11200,6 +11505,7 @@ class NaturalVentilation(BSElement): ("DutyCycle", DutyCycle), ] + # LightingSystemType.LampType.Incandescent class Incandescent(BSElement): class LampLabel(BSElement): @@ -11232,6 +11538,7 @@ class LampLabel(BSElement): ("LampLabel", Incandescent.LampLabel), ] + # LightingSystemType.LampType.LinearFluorescent class LinearFluorescent(BSElement): class LampLabel(BSElement): @@ -11257,6 +11564,7 @@ class LampLabel(BSElement): ("LampLength", LampLength), ] + # LightingSystemType.LampType.CompactFluorescent class CompactFluorescent(BSElement): class LampLabel(BSElement): @@ -11278,6 +11586,7 @@ class LampLabel(BSElement): ("FluorescentStartType", FluorescentStartType), ] + # LightingSystemType.LampType.Halogen class Halogen(BSElement): class LampLabel(BSElement): @@ -11306,6 +11615,7 @@ class LampLabel(BSElement): ("TransformerNeeded", TransformerNeeded), ] + # LightingSystemType.LampType.HighIntensityDischarge class HighIntensityDischarge(BSElement): class LampLabel(BSElement): @@ -11327,6 +11637,7 @@ class LampLabel(BSElement): ("MetalHalideStartType", MetalHalideStartType), ] + # LightingSystemType.LampType.SolidStateLighting class SolidStateLighting(BSElement): class LampLabel(BSElement): @@ -11341,6 +11652,7 @@ class LampLabel(BSElement): ("TransformerNeeded", TransformerNeeded), ] + # LightingSystemType.LampType.Neon class Neon(NeonType): pass @@ -11385,6 +11697,7 @@ class Recirculation(BSElement): ("RecirculationEnergyLossRate", RecirculationEnergyLossRate), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.StorageTank.TankHeatingType.Direct.DirectTankHeatingSource class DirectTankHeatingSource(BSElement): """Direct source of heat for hot water tank.""" @@ -11409,6 +11722,7 @@ class Unknown(Unknown): ("Unknown", DirectTankHeatingSource.Unknown), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.StorageTank.TankHeatingType.Direct class Direct(BSElement): pass @@ -11418,6 +11732,7 @@ class Direct(BSElement): ("DirectTankHeatingSource", DirectTankHeatingSource), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.StorageTank.TankHeatingType.Indirect.IndirectTankHeatingSource.HeatPump.RatedHeatPumpSensibleHeatRatio class RatedHeatPumpSensibleHeatRatio(BoundedDecimalZeroToOneWithSourceAttribute): """The fraction of total energy transfer between the evaporator coil and air that is associated with sensible capacity (change in air temperature) expressed as a dimensionless value, and at the rated conditions prescribed for this system. (0-1) (fraction)""" @@ -11432,6 +11747,7 @@ class SpaceHeatingSystem(BSElement): ("HeatingPlantID", HeatingPlantID), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.Instantaneous.InstantaneousWaterHeatingSource class InstantaneousWaterHeatingSource(BSElement): """Source of heat for instantaneous water heater.""" @@ -11456,6 +11772,7 @@ class Unknown(Unknown): ("Unknown", InstantaneousWaterHeatingSource.Unknown), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.Instantaneous class Instantaneous(BSElement): pass @@ -11465,6 +11782,7 @@ class Instantaneous(BSElement): ("InstantaneousWaterHeatingSource", InstantaneousWaterHeatingSource), ] + # RefrigerationSystemType.RefrigerationSystemCategory.CentralRefrigerationSystem.RefrigerationCompressor.CompressorUnloader class CompressorUnloader(BSElement): """If exists then a device is used for controlling compressor capacity by rendering one or more cylinders ineffective.""" @@ -11474,6 +11792,7 @@ class CompressorUnloader(BSElement): ("CompressorUnloaderStages", CompressorUnloaderStages), ] + # RefrigerationSystemType.RefrigerationSystemCategory.CentralRefrigerationSystem.RefrigerationCompressor class RefrigerationCompressor(BSElement): pass @@ -11489,6 +11808,7 @@ class RefrigerationCompressor(BSElement): ("CrankcaseHeater", CrankcaseHeater), ] + # RefrigerationSystemType.RefrigerationSystemCategory.CentralRefrigerationSystem class CentralRefrigerationSystem(BSElement): pass @@ -11507,6 +11827,7 @@ class CentralRefrigerationSystem(BSElement): ("CondenserPlantIDs", CondenserPlantIDs), ] + # RefrigerationSystemType.RefrigerationSystemCategory.RefrigerationUnit.AntiSweatHeaters class AntiSweatHeaters(BSElement): """If exists then refrigerated cases include anti-sweat heaters.""" @@ -11517,8 +11838,10 @@ class AntiSweatHeaters(BSElement): ("AntiSweatHeaterControls", AntiSweatHeaterControls), ("Manufacturer", Manufacturer), ("ModelNumber", ModelNumber), + ("EquipmentID", EquipmentID), ] + # RefrigerationSystemType.RefrigerationSystemCategory.RefrigerationUnit class RefrigerationUnit(BSElement): pass @@ -11536,6 +11859,7 @@ class RefrigerationUnit(BSElement): ("RefrigerationEnergy", RefrigerationEnergy), ] + # LaundrySystemType.LaundryType.Washer class Washer(BSElement): pass @@ -11549,6 +11873,7 @@ class Washer(BSElement): ("ClothesWasherCapacity", ClothesWasherCapacity), ] + # LaundrySystemType.LaundryType.Dryer class Dryer(BSElement): pass @@ -11560,6 +11885,7 @@ class Dryer(BSElement): ("DryerGasEnergyUsePerLoad", DryerGasEnergyUsePerLoad), ] + # LaundrySystemType.LaundryType.Combination class Combination(BSElement): pass @@ -11577,6 +11903,7 @@ class Combination(BSElement): ("DryerGasEnergyUsePerLoad", DryerGasEnergyUsePerLoad), ] + # LinkedSystemIDs class LinkedSystemIDs(BSElement): pass @@ -11636,6 +11963,7 @@ class WallInsulation(BSElement): ("WallInsulationRValue", WallInsulationRValue), ] + # CeilingSystemType.CeilingInsulations.CeilingInsulation class CeilingInsulation(BSElement): pass @@ -11649,6 +11977,7 @@ class CeilingInsulation(BSElement): ("CeilingInsulationCondition", CeilingInsulationCondition), ] + # RoofSystemType.RoofInsulations.RoofInsulation class RoofInsulation(BSElement): pass @@ -11663,6 +11992,7 @@ class RoofInsulation(BSElement): ("RoofInsulationRValue", RoofInsulationRValue), ] + # FenestrationSystemType.FenestrationType.Window.LightShelves class LightShelves(BSElement): """If exists then light shelves are used with this window group, otherwise false.""" @@ -11674,6 +12004,7 @@ class LightShelves(BSElement): ("LightShelfInteriorProtrusion", LightShelfInteriorProtrusion), ] + # FenestrationSystemType.FenestrationType.Window class Window(BSElement): class AssemblyType(BSElement): @@ -11701,6 +12032,7 @@ class AssemblyType(BSElement): ("InteriorShadingType", InteriorShadingType), ] + # FenestrationSystemType.FenestrationType.Skylight class Skylight(BSElement): class AssemblyType(BSElement): @@ -11718,6 +12050,7 @@ class AssemblyType(BSElement): ("SkylightSolarTube", SkylightSolarTube), ] + # FenestrationSystemType.FenestrationType.Door.DoorGlazedAreaFraction class DoorGlazedAreaFraction(BoundedDecimalZeroToOneWithSourceAttribute): """Fraction of door area that is glazed. (0-1) (fraction)""" @@ -11735,6 +12068,7 @@ class Door(BSElement): ("DoorGlazedAreaFraction", DoorGlazedAreaFraction), ] + # FoundationSystemType.GroundCouplings.GroundCoupling.SlabOnGrade class SlabOnGrade(BSElement): pass @@ -11752,6 +12086,7 @@ class SlabOnGrade(BSElement): ("SlabHeating", SlabHeating), ] + # FoundationSystemType.GroundCouplings.GroundCoupling.Crawlspace.CrawlspaceVenting.Ventilated class Ventilated(BSElement): pass @@ -11767,6 +12102,7 @@ class Ventilated(BSElement): ("FloorFramingFactor", FloorFramingFactor), ] + # FoundationSystemType.GroundCouplings.GroundCoupling.Crawlspace.CrawlspaceVenting.Unventilated class Unventilated(BSElement): pass @@ -11782,6 +12118,7 @@ class Unventilated(BSElement): ("FoundationWallInsulationCondition", FoundationWallInsulationCondition), ] + # FoundationSystemType.GroundCouplings.GroundCoupling.Crawlspace.CrawlspaceVenting class CrawlspaceVenting(BSElement): class Other(OtherType): @@ -11795,6 +12132,7 @@ class Other(OtherType): ("Unknown", Unknown), ] + # FoundationSystemType.GroundCouplings.GroundCoupling.Crawlspace class Crawlspace(BSElement): pass @@ -11804,6 +12142,7 @@ class Crawlspace(BSElement): ("CrawlspaceVenting", CrawlspaceVenting), ] + # FoundationSystemType.GroundCouplings.GroundCoupling.Basement class Basement(BSElement): pass @@ -11827,6 +12166,7 @@ class Basement(BSElement): ("SlabHeating", SlabHeating), ] + # FoundationSystemType.GroundCouplings.GroundCoupling class GroundCoupling(BSElement): """The manner in which the building is connected to the ground.""" @@ -11846,6 +12186,7 @@ class Unknown(Unknown): ("Unknown", GroundCoupling.Unknown), ] + # ProcessGasElectricLoadType.HeatGainFraction class HeatGainFraction(BoundedDecimalZeroToOneWithSourceAttribute): """Fraction of installed power that results in heat gain to the space. (0-1) (fraction)""" @@ -11861,6 +12202,7 @@ class Storage(BSElement): ("ThermalMedium", ThermalMedium), ] + # OnsiteStorageTransmissionGenerationSystemType.EnergyConversionType.Generation.OnsiteGenerationType.PV class PV(BSElement): pass @@ -11889,6 +12231,7 @@ class PV(BSElement): ("PhotovoltaicModuleWidth", PhotovoltaicModuleWidth), ] + # OnsiteStorageTransmissionGenerationSystemType.EnergyConversionType.Generation.OnsiteGenerationType class OnsiteGenerationType(BSElement): """Identifies whether the onsite generation is provided by a photovoltaic system or by another technology.""" @@ -11906,6 +12249,7 @@ class Other(BSElement): ("OutputResourceType", OutputResourceType), ] + # OnsiteStorageTransmissionGenerationSystemType.EnergyConversionType.Generation class Generation(BSElement): pass @@ -11916,6 +12260,7 @@ class Generation(BSElement): ("ExternalPowerSupply", ExternalPowerSupply), ] + # WaterUseType.WaterFixtureFractionHotWater class WaterFixtureFractionHotWater(BoundedDecimalZeroToOneWithSourceAttribute): """Average fraction of water use for this application that is drawn from the hot water system. (0-1) (fraction)""" @@ -11933,6 +12278,7 @@ class Modeled(BSElement): ("SimulationCompletionStatus", SimulationCompletionStatus), ] + # CalculationMethodType.Estimated class Estimated(EstimatedType): """The 'Estimated' calculation method is used to represent a scenario in which a guess or judgement call was used to derive data represented by this scenario type.""" @@ -11955,6 +12301,7 @@ class Other(OtherType): ("Other", MeasuredEnergySource.Other), ] + # SpatialUnitTypeType class SpatialUnitTypeType(BSElement): pass @@ -11967,6 +12314,7 @@ class SpatialUnitTypeType(BSElement): ("SpatialUnitOccupiedPercentage", SpatialUnitOccupiedPercentage), ] + # LinkedPremisesOrSystem.System class System(BSElement): pass @@ -11976,6 +12324,7 @@ class System(BSElement): ("LinkedSystemID", LinkedSystemID), ] + # Address.StreetAddressDetail.Simplified class Simplified(BSElement): pass @@ -11986,6 +12335,7 @@ class Simplified(BSElement): ("StreetAdditionalInfo", StreetAdditionalInfo), ] + # Address.StreetAddressDetail.Complex class Complex(BSElement): pass @@ -12005,6 +12355,7 @@ class Complex(BSElement): ("SubaddressIdentifier", SubaddressIdentifier), ] + # Address.StreetAddressDetail class StreetAddressDetail(BSElement): """Choice of simplified or more complex address format.""" @@ -12015,6 +12366,7 @@ class StreetAddressDetail(BSElement): ("Complex", Complex), ] + # PremisesIdentifiers.PremisesIdentifier class PremisesIdentifier(BSElement): pass @@ -12026,6 +12378,7 @@ class PremisesIdentifier(BSElement): ("IdentifierValue", IdentifierValue), ] + # TypicalOccupantUsages.TypicalOccupantUsage class TypicalOccupantUsage(BSElement): pass @@ -12036,6 +12389,7 @@ class TypicalOccupantUsage(BSElement): ("TypicalOccupantUsageUnits", TypicalOccupantUsageUnits), ] + # UserDefinedFields.UserDefinedField class UserDefinedField(BSElement): pass @@ -12046,6 +12400,7 @@ class UserDefinedField(BSElement): ("FieldValue", FieldValue), ] + # FloorAreas.FloorArea.ExcludedSectionIDs class ExcludedSectionIDs(BSElement): """Links to Sections not included in the floor area calculation.""" @@ -12055,6 +12410,7 @@ class ExcludedSectionIDs(BSElement): ("ExcludedSectionID", ExcludedSectionID), ] + # FloorAreas.FloorArea class FloorArea(BSElement): pass @@ -12069,6 +12425,7 @@ class FloorArea(BSElement): ("ExcludedSectionIDs", ExcludedSectionIDs), ] + # OccupancyLevels.OccupancyLevel class OccupancyLevel(BSElement): pass @@ -12080,6 +12437,7 @@ class OccupancyLevel(BSElement): ("OccupantQuantity", OccupantQuantity), ] + # EnergyUseByFuelTypes.EnergyUseByFuelType class EnergyUseByFuelType(BSElement): pass @@ -12090,6 +12448,7 @@ class EnergyUseByFuelType(BSElement): ("EnergyUse", EnergyUse), ] + # EnergyUseByFuelTypes class EnergyUseByFuelTypes(BSElement): pass @@ -12099,6 +12458,7 @@ class EnergyUseByFuelTypes(BSElement): ("EnergyUseByFuelType", EnergyUseByFuelType), ] + # AssetScoreData class AssetScoreData(BSElement): """A facility's Commercial Building Energy Asset Score, and optional Site/Source energy use by fuel type.""" @@ -12123,6 +12483,7 @@ class SourceEnergyUse(BSElement): ("SourceEnergyUseIntensity", SourceEnergyUseIntensity), ] + # AssetScore.WholeBuilding.EnergyUseByEndUses.EnergyUseByEndUse class EnergyUseByEndUse(BSElement): pass @@ -12133,6 +12494,7 @@ class EnergyUseByEndUse(BSElement): ("EndUse", EndUse), ] + # AssetScore.WholeBuilding.EnergyUseByEndUses class EnergyUseByEndUses(BSElement): pass @@ -12142,6 +12504,7 @@ class EnergyUseByEndUses(BSElement): ("EnergyUseByEndUse", EnergyUseByEndUse), ] + # AssetScore.WholeBuilding.Rankings.Ranking.Type class Type(BSElement): pass @@ -12152,6 +12515,7 @@ class Type(BSElement): ("EnvelopeType", EnvelopeType), ] + # AssetScore.WholeBuilding.Rankings.Ranking.Rank class Rank(RankType): pass @@ -12167,6 +12531,7 @@ class Ranking(BSElement): ("Rank", Rank), ] + # AssetScore.WholeBuilding.Rankings class Rankings(BSElement): pass @@ -12176,6 +12541,7 @@ class Rankings(BSElement): ("Ranking", Ranking), ] + # AssetScore.WholeBuilding class WholeBuilding(BSElement): pass @@ -12187,6 +12553,7 @@ class WholeBuilding(BSElement): ("Rankings", Rankings), ] + # AssetScore.UseTypes.UseType class UseType(BSElement): pass @@ -12197,6 +12564,7 @@ class UseType(BSElement): ("AssetScoreUseType", AssetScoreUseType), ] + # AssetScore.UseTypes class UseTypes(BSElement): pass @@ -12206,6 +12574,7 @@ class UseTypes(BSElement): ("UseType", UseType), ] + # PortfolioManagerType class PortfolioManagerType(BSElement): pass @@ -12220,6 +12589,7 @@ class PortfolioManagerType(BSElement): ), ] + # FanBasedDistributionTypeType.FanCoil class FanCoil(BSElement): pass @@ -12232,6 +12602,7 @@ class FanCoil(BSElement): ("PipeLocation", PipeLocation), ] + # FanBasedType.AirSideEconomizer class AirSideEconomizer(BSElement): pass @@ -12249,6 +12620,7 @@ class AirSideEconomizer(BSElement): ("EconomizerLowTemperatureLockout", EconomizerLowTemperatureLockout), ] + # ControlSystemType.Analog class Analog(BSElement): """Analog control system.""" @@ -12261,6 +12633,7 @@ class CommunicationProtocol(CommunicationProtocolAnalogType): ("CommunicationProtocol", Analog.CommunicationProtocol), ] + # ControlSystemType.Digital class Digital(BSElement): """Digital (or Direct Digital Control [DDC]) system.""" @@ -12273,6 +12646,7 @@ class CommunicationProtocol(CommunicationProtocolDigitalType): ("CommunicationProtocol", Digital.CommunicationProtocol), ] + # ClimateZoneType.ASHRAE class ASHRAE(BSElement): class ClimateZone(BSElement): @@ -12322,6 +12696,7 @@ class ClimateZone(BSElement): ("ClimateZone", EnergyStar.ClimateZone), ] + # ClimateZoneType.CaliforniaTitle24 class CaliforniaTitle24(BSElement): class ClimateZone(BSElement): @@ -12352,6 +12727,7 @@ class ClimateZone(BSElement): ("ClimateZone", CaliforniaTitle24.ClimateZone), ] + # ClimateZoneType.IECC class IECC(BSElement): class ClimateZone(BSElement): @@ -12375,6 +12751,7 @@ class ClimateZone(BSElement): ("ClimateZone", IECC.ClimateZone), ] + # ClimateZoneType.BuildingAmerica class BuildingAmerica(BSElement): class ClimateZone(BSElement): @@ -12397,6 +12774,7 @@ class ClimateZone(BSElement): ("ClimateZone", BuildingAmerica.ClimateZone), ] + # ClimateZoneType.DOE class DOE(BSElement): class ClimateZone(BSElement): @@ -12419,6 +12797,7 @@ class ClimateZone(BSElement): ("ClimateZone", DOE.ClimateZone), ] + # WindowID.WindowToWallRatio class WindowToWallRatio(BoundedDecimalZeroToOneWithSourceAttribute): """Ratio of total window area to total wall area. (0-1) (fraction)""" @@ -12434,6 +12813,7 @@ class ResourceUnitsType(BSElement): ResourceUnitsBaseType, ] + # DerivedModelType.Models.Model.DerivedModelInputs.ResponseVariable.ResponseVariableEndUse class ResponseVariableEndUse(EndUseType): pass @@ -12453,6 +12833,7 @@ class Guideline14Model(BSElement): ("Beta4", Beta4), ] + # DerivedModelType.Models.Model.DerivedModelCoefficients class DerivedModelCoefficients(BSElement): pass @@ -12463,6 +12844,7 @@ class DerivedModelCoefficients(BSElement): ("TimeOfWeekTemperatureModel", TimeOfWeekTemperatureModel), ] + # DerivedModelType.Models.Model.DerivedModelPerformance class DerivedModelPerformance(BSElement): """Characterization of the performance of the model.""" @@ -12478,6 +12860,7 @@ class DerivedModelPerformance(BSElement): ("NMBE", NMBE), ] + # DerivedModelType.Models.Model.SummaryInformation class SummaryInformation(BSElement): pass @@ -12491,6 +12874,7 @@ class SummaryInformation(BSElement): ("AggregateModeledEnergyUse", AggregateModeledEnergyUse), ] + # PressureUnitsType class PressureUnitsType(BSElement): pass @@ -12501,6 +12885,7 @@ class PressureUnitsType(BSElement): PressureUnitsBaseType, ] + # PeakResourceUnitsType class PeakResourceUnitsType(BSElement): pass @@ -12511,6 +12896,7 @@ class PeakResourceUnitsType(BSElement): PeakResourceUnitsBaseType, ] + # TemperatureUnitsType class TemperatureUnitsType(BSElement): pass @@ -12521,6 +12907,7 @@ class TemperatureUnitsType(BSElement): TemperatureUnitsBaseType, ] + # DimensionlessUnitsType class DimensionlessUnitsType(BSElement): pass @@ -12531,6 +12918,7 @@ class DimensionlessUnitsType(BSElement): DimensionlessUnitsBaseType, ] + # AnnualSavingsByFuels.AnnualSavingsByFuel class AnnualSavingsByFuel(BSElement): pass @@ -12540,8 +12928,12 @@ class AnnualSavingsByFuel(BSElement): ("EnergyResource", EnergyResource), ("ResourceUnits", ResourceUnits), ("AnnualSavingsNativeUnits", AnnualSavingsNativeUnits), + ("AnnualSavingsAverageGHGEmissions", AnnualSavingsAverageGHGEmissions), + ("AnnualSavingsMarginalGHGEmissions", AnnualSavingsMarginalGHGEmissions), + ("AnnualSavingsGHGEmissionIntensity", AnnualSavingsGHGEmissionIntensity), ] + # LinkedScheduleIDs class LinkedScheduleIDs(BSElement): pass @@ -12551,6 +12943,7 @@ class LinkedScheduleIDs(BSElement): ("LinkedScheduleID", LinkedScheduleID), ] + # SpatialUnits.SpatialUnit class SpatialUnit(SpatialUnitTypeType): pass @@ -12565,6 +12958,7 @@ class UserDefinedFields(BSElement): ("UserDefinedField", UserDefinedField), ] + # PremisesIdentifiers class PremisesIdentifiers(BSElement): """Identifier used in a specific program or dataset. There can be multiple instances of Identifier Types within a dataset.""" @@ -12574,6 +12968,7 @@ class PremisesIdentifiers(BSElement): ("PremisesIdentifier", PremisesIdentifier), ] + # Address class Address(BSElement): class State(State): @@ -12590,6 +12985,7 @@ class State(State): ("Country", Country), ] + # ClimateZoneType class ClimateZoneType(BSElement): """The climate zone type, based on the organization defining it. Many different organizations have implemented different climate zone definitions based on their needs. The list below represents the current list. This list can be added to over time based on the collaborative BEDES development process.""" @@ -12618,6 +13014,7 @@ class ClimateZone(BSElement): ("ClimateZone", ClimateZoneType.Other.ClimateZone), ] + # FloorAreas class FloorAreas(BSElement): pass @@ -12627,6 +13024,7 @@ class FloorAreas(BSElement): ("FloorArea", FloorArea), ] + # OccupancyLevels class OccupancyLevels(BSElement): pass @@ -12636,6 +13034,7 @@ class OccupancyLevels(BSElement): ("OccupancyLevel", OccupancyLevel), ] + # TypicalOccupantUsages class TypicalOccupantUsages(BSElement): """Characterization of the usage of the space (complex, whole building, or section) by building occupants.""" @@ -12654,6 +13053,7 @@ class SpatialUnits(BSElement): ("SpatialUnit", SpatialUnit), ] + # PortfolioManager class PortfolioManager(PortfolioManagerType): """If exists then the data for this building is included in ENERGY STAR Portfolio Manager.""" @@ -12678,6 +13078,7 @@ class Assessments(BSElement): ("Assessment", Assessment), ] + # WindowID class WindowID(BSElement): """ID number of the window type associated with this side of the section.""" @@ -12692,6 +13093,7 @@ class WindowID(BSElement): ("PercentOfWindowAreaShaded", PercentOfWindowAreaShaded), ] + # BuildingType.Sections.Section.Sides.Side.WindowIDs class WindowIDs(BSElement): pass @@ -12701,6 +13103,7 @@ class WindowIDs(BSElement): ("WindowID", WindowID), ] + # BuildingType.Sections.Section.Sides.Side class Side(BSElement): class WallID(WallID): @@ -12725,6 +13128,7 @@ class DoorID(DoorID): ("ThermalZoneIDs", ThermalZoneIDs), ] + # BuildingType.Sections.Section.Sides class Sides(BSElement): """List of sides.""" @@ -12734,6 +13138,7 @@ class Sides(BSElement): ("Side", Side), ] + # BuildingType.Sections.Section.Ceilings.Ceiling.CeilingID class CeilingID(BSElement): """ID number of the roof/ceiling type associated with this section.""" @@ -12749,6 +13154,7 @@ class CeilingID(BSElement): ("SpaceIDs", SpaceIDs), ] + # BuildingType.Sections.Section.Ceilings.Ceiling class Ceiling(BSElement): """A finished construction under the roof or adjacent floor.""" @@ -12758,6 +13164,7 @@ class Ceiling(BSElement): ("CeilingID", CeilingID), ] + # BuildingType.Sections.Section.Ceilings class Ceilings(BSElement): """List of ceilings.""" @@ -12767,6 +13174,7 @@ class Ceilings(BSElement): ("Ceiling", Ceiling), ] + # SpaceType class SpaceType(BSElement): pass @@ -12794,6 +13202,7 @@ class SpaceType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # ScheduleType.ScheduleDetails class ScheduleDetails(BSElement): pass @@ -12803,6 +13212,7 @@ class ScheduleDetails(BSElement): ("ScheduleDetail", ScheduleDetail), ] + # ContactType.ContactTelephoneNumbers class ContactTelephoneNumbers(BSElement): pass @@ -12812,6 +13222,7 @@ class ContactTelephoneNumbers(BSElement): ("ContactTelephoneNumber", ContactTelephoneNumber), ] + # ContactType.ContactEmailAddresses class ContactEmailAddresses(BSElement): pass @@ -12821,6 +13232,7 @@ class ContactEmailAddresses(BSElement): ("ContactEmailAddress", ContactEmailAddress), ] + # TenantType.TenantTelephoneNumbers class TenantTelephoneNumbers(BSElement): pass @@ -12830,6 +13242,7 @@ class TenantTelephoneNumbers(BSElement): ("TenantTelephoneNumber", TenantTelephoneNumber), ] + # TenantType.TenantEmailAddresses class TenantEmailAddresses(BSElement): pass @@ -12839,6 +13252,7 @@ class TenantEmailAddresses(BSElement): ("TenantEmailAddress", TenantEmailAddress), ] + # ScenarioType.WeatherType class WeatherType(BSElement): """Weather conditions associated with the scenario.""" @@ -12854,6 +13268,7 @@ class Other(OtherType): ("Other", WeatherType.Other), ] + # AssetScore class AssetScore(BSElement): """A facility's Commercial Building Energy Asset Score Data.""" @@ -12864,6 +13279,7 @@ class AssetScore(BSElement): ("UseTypes", UseTypes), ] + # ScenarioType.ScenarioType.Target class Target(BSElement): pass @@ -12889,6 +13305,7 @@ class Target(BSElement): ("ENERGYSTARScore", ENERGYSTARScore), ] + # AnnualSavingsByFuels class AnnualSavingsByFuels(BSElement): pass @@ -12898,6 +13315,7 @@ class AnnualSavingsByFuels(BSElement): ("AnnualSavingsByFuel", AnnualSavingsByFuel), ] + # AllResourceTotalType class AllResourceTotalType(BSElement): class SiteEnergyUse(BSElement): @@ -12959,6 +13377,7 @@ class WaterUse(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # UtilityType.RateSchedules.RateSchedule.TypeOfRateStructure class TypeOfRateStructure(BSElement): """Basic type of rate structure used by the utility.""" @@ -12982,6 +13401,7 @@ class Unknown(Unknown): ("Unknown", TypeOfRateStructure.Unknown), ] + # UtilityType.RateSchedules.RateSchedule class RateSchedule(BSElement): """Rate structure characteristics.""" @@ -13004,6 +13424,7 @@ class RateSchedule(BSElement): ("AverageMarginalCostRate", AverageMarginalCostRate), ] + # ResourceUseType.Emissions class Emissions(BSElement): pass @@ -13013,6 +13434,7 @@ class Emissions(BSElement): ("Emission", Emission), ] + # TimeSeriesType class TimeSeriesType(BSElement): pass @@ -13042,6 +13464,7 @@ class TimeSeriesType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # MeasureType.TypeOfMeasure class TypeOfMeasure(BSElement): """Type of action associated with the measure.""" @@ -13054,6 +13477,7 @@ class TypeOfMeasure(BSElement): ("Removals", Removals), ] + # MeasureType.TechnologyCategories class TechnologyCategories(BSElement): pass @@ -13063,6 +13487,7 @@ class TechnologyCategories(BSElement): ("TechnologyCategory", TechnologyCategory), ] + # ReportType.AuditDates class AuditDates(BSElement): pass @@ -13072,6 +13497,7 @@ class AuditDates(BSElement): ("AuditDate", AuditDate), ] + # ReportType.OtherEscalationRates class OtherEscalationRates(BSElement): pass @@ -13081,6 +13507,7 @@ class OtherEscalationRates(BSElement): ("OtherEscalationRate", OtherEscalationRate), ] + # ReportType.Qualifications class Qualifications(BSElement): pass @@ -13090,6 +13517,7 @@ class Qualifications(BSElement): ("Qualification", Qualification), ] + # HVACSystemType.HeatingAndCoolingSystems.HeatingSources.HeatingSource.HeatingSourceType class HeatingSourceType(BSElement): """Source of energy used for heating the zone.""" @@ -13132,6 +13560,7 @@ class Unknown(Unknown): ("LinkedHeatingPlantID", LinkedHeatingPlantID), ] + # HVACSystemType.HeatingAndCoolingSystems.CoolingSources.CoolingSource.CoolingSourceType.DX class DX(BSElement): pass @@ -13147,6 +13576,7 @@ class DX(BSElement): ("ActiveDehumidification", ActiveDehumidification), ] + # HVACSystemType.HeatingAndCoolingSystems.CoolingSources.CoolingSource.CoolingSourceType class CoolingSourceType(BSElement): """Source of energy used for cooling the zone.""" @@ -13170,6 +13600,7 @@ class Unknown(Unknown): ("Unknown", CoolingSourceType.Unknown), ] + # HeatingPlantType.Boiler class Boiler(BSElement): class OutputCapacity(OutputCapacity): @@ -13219,6 +13650,7 @@ class Capacity(BSElement): ("Quantity", Quantity), ] + # ControlSystemType class ControlSystemType(BSElement): """Identifier for the type of control (e.g., Pneumatic, Analog, Digital).""" @@ -13237,6 +13669,7 @@ class Other(BSElement): ("OtherCommunicationProtocolName", OtherCommunicationProtocolName), ] + # CoolingPlantType.Chiller class Chiller(BSElement): pass @@ -13271,6 +13704,7 @@ class Chiller(BSElement): ("Quantity", Quantity), ] + # CondenserPlantType.AirCooled class AirCooled(BSElement): pass @@ -13287,6 +13721,7 @@ class AirCooled(BSElement): ("CapacityUnits", CapacityUnits), ] + # CondenserPlantType.WaterCooled class WaterCooled(BSElement): class WaterSideEconomizer(BSElement): @@ -13318,6 +13753,7 @@ class WaterSideEconomizer(BSElement): ), ] + # CondenserPlantType.GroundSource class GroundSource(BSElement): class WaterSideEconomizer(BSElement): @@ -13347,6 +13783,7 @@ class WaterSideEconomizer(BSElement): ), ] + # OtherHVACSystemType.OtherHVACType.MechanicalVentilation class MechanicalVentilation(BSElement): pass @@ -13367,6 +13804,7 @@ class MechanicalVentilation(BSElement): ("ThirdPartyCertification", ThirdPartyCertification), ] + # LightingSystemType.LampType class LampType(BSElement): """A lamp is a replaceable component, or bulb, which is designed to produce light from electricity, though, non-electric lamps also exist.""" @@ -13394,6 +13832,7 @@ class Unknown(Unknown): ("Unknown", LampType.Unknown), ] + # LightingSystemType.DimmingCapability class DimmingCapability(BSElement): """If exists then the lighting system can be dimmed across a range of outputs.""" @@ -13404,6 +13843,7 @@ class DimmingCapability(BSElement): ("MinimumDimmingPowerFraction", MinimumDimmingPowerFraction), ] + # RefrigerationSystemType.RefrigerationSystemCategory class RefrigerationSystemCategory(BSElement): """Basic type of refrigeration equipment.""" @@ -13414,6 +13854,7 @@ class RefrigerationSystemCategory(BSElement): ("RefrigerationUnit", RefrigerationUnit), ] + # LaundrySystemType.LaundryType class LaundryType(BSElement): """Type of laundry system.""" @@ -13433,6 +13874,7 @@ class Unknown(Unknown): ("Unknown", LaundryType.Unknown), ] + # WallSystemType.WallInsulations class WallInsulations(BSElement): """A description of the type of insulation and how it is applied.""" @@ -13442,6 +13884,7 @@ class WallInsulations(BSElement): ("WallInsulation", WallInsulation), ] + # CeilingSystemType.CeilingInsulations class CeilingInsulations(BSElement): pass @@ -13451,6 +13894,7 @@ class CeilingInsulations(BSElement): ("CeilingInsulation", CeilingInsulation), ] + # RoofSystemType.RoofInsulations class RoofInsulations(BSElement): pass @@ -13460,6 +13904,7 @@ class RoofInsulations(BSElement): ("RoofInsulation", RoofInsulation), ] + # FenestrationSystemType.FenestrationType class FenestrationType(BSElement): """Type of fenestration in this group (windows, skylights, doors).""" @@ -13475,6 +13920,7 @@ class Other(OtherType): ("Other", FenestrationType.Other), ] + # FoundationSystemType.GroundCouplings class GroundCouplings(BSElement): pass @@ -13484,6 +13930,7 @@ class GroundCouplings(BSElement): ("GroundCoupling", GroundCoupling), ] + # OnsiteStorageTransmissionGenerationSystemType.EnergyConversionType class EnergyConversionType(BSElement): """Type of energy conversion provided by the system.""" @@ -13494,6 +13941,7 @@ class EnergyConversionType(BSElement): ("Generation", Generation), ] + # CalculationMethodType.Measured class Measured(BSElement): """The 'Measured' calculation method is used to represent a scenario in which actual measurements were used to derive data represented by this scenario type.""" @@ -13503,6 +13951,7 @@ class Measured(BSElement): ("MeasuredEnergySource", MeasuredEnergySource), ] + # LinkedFacilityID class LinkedFacilityID(BSElement): """ID numbers of the facilities associated with the system.""" @@ -13516,6 +13965,7 @@ class LinkedFacilityID(BSElement): ("FloorAreas", FloorAreas), ] + # LinkedSiteID class LinkedSiteID(BSElement): """ID numbers of the sites associated with the system.""" @@ -13529,6 +13979,7 @@ class LinkedSiteID(BSElement): ("FloorAreas", FloorAreas), ] + # LinkedBuildingID class LinkedBuildingID(BSElement): """ID numbers of the associated buildings.""" @@ -13542,6 +13993,7 @@ class LinkedBuildingID(BSElement): ("FloorAreas", FloorAreas), ] + # LinkedSectionID class LinkedSectionID(BSElement): """ID numbers of the associated sections.""" @@ -13555,6 +14007,7 @@ class LinkedSectionID(BSElement): ("FloorAreas", FloorAreas), ] + # LinkedThermalZoneID class LinkedThermalZoneID(BSElement): """ID numbers of the associated zones.""" @@ -13568,6 +14021,7 @@ class LinkedThermalZoneID(BSElement): ("FloorAreas", FloorAreas), ] + # LinkedSpaceID class LinkedSpaceID(BSElement): """ID numbers of the associated spaces.""" @@ -13581,6 +14035,41 @@ class LinkedSpaceID(BSElement): ("FloorAreas", FloorAreas), ] + +# LinkedAuditCycle.IndexYearOfAuditCycle +class IndexYearOfAuditCycle(BSElement): + """Index number of the year when the audit is conducted from the start of the audit cycle. 1 corresponds to auc:AuditCycleStartYear.""" + + element_type = "xs:integer" + + +# LinkedAuditCycles.LinkedAuditCycle +class LinkedAuditCycle(BSElement): + """ID number of the associated Audit Cycle for the report""" + + pass + + +LinkedAuditCycle.element_attributes = [ + "IDref", # IDREF +] +LinkedAuditCycle.element_children = [ + ("IndexYearOfAuditCycle", IndexYearOfAuditCycle), +] + + +# LinkedAuditCycles +class LinkedAuditCycles(BSElement): + """ID numbers of the associated zones.""" + + pass + + +LinkedAuditCycles.element_children = [ + ("LinkedAuditCycle", LinkedAuditCycle), +] + + # FanBasedDistributionTypeType class FanBasedDistributionTypeType(BSElement): pass @@ -13590,6 +14079,7 @@ class FanBasedDistributionTypeType(BSElement): ("FanCoil", FanCoil), ] + # FanBasedType.FanBasedDistributionType class FanBasedDistributionType(FanBasedDistributionTypeType): pass @@ -13613,6 +14103,7 @@ class ControlStrategy(ControlStrategyOccupancyType): ("OtherControlStrategyName", OtherControlStrategyName), ] + # ControlGeneralType.Thermostat class Thermostat(BSElement): """Thermostat-based control technology.""" @@ -13627,6 +14118,7 @@ class ControlStrategy(ControlStrategyGeneralType): ("OtherControlStrategyName", OtherControlStrategyName), ] + # ControlLightingType.Daylighting class Daylighting(BSElement): """Type of daylighting controls used to manage lighting.""" @@ -13646,6 +14138,7 @@ class ControlStrategy(ControlStrategyDaylightingType): ("OtherControlStrategyName", OtherControlStrategyName), ] + # DerivedModelType.Models.Model.DerivedModelInputs.ResponseVariable.ResponseVariableUnits class ResponseVariableUnits(ResourceUnitsType): pass @@ -13662,6 +14155,7 @@ class ResponseVariable(BSElement): ("ResponseVariableEndUse", ResponseVariableEndUse), ] + # UnitsType class UnitsType(BSElement): """Enumeration for different potential units.""" @@ -13674,6 +14168,7 @@ class UnitsType(BSElement): TemperatureUnitsType, ] + # WallSystemType class WallSystemType(BSElement): pass @@ -13704,6 +14199,7 @@ class WallSystemType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # RoofSystemType class RoofSystemType(BSElement): pass @@ -13738,6 +14234,7 @@ class RoofSystemType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # CeilingSystemType class CeilingSystemType(BSElement): pass @@ -13764,6 +14261,7 @@ class CeilingSystemType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # FenestrationSystemType class FenestrationSystemType(BSElement): pass @@ -13792,8 +14290,10 @@ class FenestrationSystemType(BSElement): ("Manufacturer", Manufacturer), ("ModelNumber", ModelNumber), ("UserDefinedFields", UserDefinedFields), + ("EquipmentID", EquipmentID), ] + # ExteriorFloorSystemType class ExteriorFloorSystemType(BSElement): pass @@ -13825,6 +14325,7 @@ class ExteriorFloorSystemType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # FoundationSystemType class FoundationSystemType(BSElement): pass @@ -13844,6 +14345,7 @@ class FoundationSystemType(BSElement): ("Quantity", Quantity), ] + # ContactType class ContactType(BSElement): pass @@ -13863,6 +14365,7 @@ class ContactType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # TenantType class TenantType(BSElement): pass @@ -13880,6 +14383,24 @@ class TenantType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + +# AuditCycleType +class AuditCycleType(BSElement): + pass + + +AuditCycleType.element_attributes = [ + "ID", # ID +] +AuditCycleType.element_children = [ + ("AuditCycleName", AuditCycleName), + ("AuditCycleNotes", AuditCycleNotes), + ("AuditCycleStartYear", AuditCycleStartYear), + ("AuditCycleEndYear", AuditCycleEndYear), + ("UserDefinedFields", UserDefinedFields), +] + + # ResourceUseType class ResourceUseType(BSElement): pass @@ -13913,6 +14434,7 @@ class ResourceUseType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # TimeSeries class TimeSeries(TimeSeriesType): pass @@ -13932,6 +14454,7 @@ class RateSchedules(BSElement): ("RateSchedule", RateSchedule), ] + # LinkedPremisesOrSystem class LinkedPremisesOrSystem(BSElement): """Establishes whether an item applies to one or more systems, entire buildings, sections, spaces, or zones within buildings. Developer note: the XSD should be done as a union, but cannot due to limitations of automatic processors.""" @@ -13983,6 +14506,7 @@ class Space(BSElement): ("LinkedSpaceID", LinkedSpaceID), ] + # CoolingPlantType class CoolingPlantType(BSElement): class OtherCombination(OtherCombination): @@ -14008,6 +14532,7 @@ class ControlSystemTypes(BSElement): ("OtherCombination", OtherCombination), ("NoCooling", NoCooling), ("Unknown", Unknown), + ("CondenserType", CondenserType), ("CoolingPlantCondition", CoolingPlantCondition), ("Location", Location), ("YearInstalled", YearInstalled), @@ -14020,6 +14545,7 @@ class ControlSystemTypes(BSElement): ("ControlSystemType", ControlSystemType), ] + # CondenserPlantType class CondenserPlantType(BSElement): class Other(OtherType): @@ -14054,6 +14580,7 @@ class ControlSystemTypes(BSElement): ("ControlSystemType", ControlSystemType), ] + # ControlGeneralType class ControlGeneralType(BSElement): """An instance of a general control technology.""" @@ -14113,6 +14640,7 @@ class ControlStrategy(ControlStrategyGeneralType): ("OtherControlStrategyName", OtherControlStrategyName), ] + # HVACSystemType.HeatingAndCoolingSystems.CoolingSources.CoolingSource class CoolingSource(BSElement): class Controls(BSElement): @@ -14148,11 +14676,13 @@ class Control(ControlGeneralType): ("ModelNumber", ModelNumber), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] CoolingSource.Controls.element_children = [ ("Control", CoolingSource.Controls.Control), ] + # HVACSystemType.HeatingAndCoolingSystems.CoolingSources class CoolingSources(BSElement): pass @@ -14162,6 +14692,7 @@ class CoolingSources(BSElement): ("CoolingSource", CoolingSource), ] + # OtherHVACSystemType.OtherHVACType class OtherHVACType(BSElement): """Type of space conditioning equipment that is not classified as heating, cooling, or air-distribution. This category includes ventilation, dehumidification, humidification, and air cleaning systems.""" @@ -14184,6 +14715,7 @@ class Unknown(Unknown): ("Unknown", OtherHVACType.Unknown), ] + # ControlLightingType class ControlLightingType(BSElement): """An instance of a lighting control technology.""" @@ -14252,6 +14784,7 @@ class ControlStrategy(ControlStrategyLightingType): ("OtherControlStrategyName", OtherControlStrategyName), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.StorageTank.TankHeatingType.Indirect.IndirectTankHeatingSource.Solar class Solar(BSElement): class Controls(BSElement): @@ -14276,11 +14809,13 @@ class Control(ControlGeneralType): ("Manufacturer", Manufacturer), ("ModelNumber", ModelNumber), ("Location", Location), + ("EquipmentID", EquipmentID), ] Solar.Controls.element_children = [ ("Control", Solar.Controls.Control), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.StorageTank.TankHeatingType.Indirect.IndirectTankHeatingSource class IndirectTankHeatingSource(BSElement): """Source of heat for indirect-fired hot water tank.""" @@ -14308,6 +14843,7 @@ class Unknown(Unknown): ("Refrigerant", Refrigerant), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.StorageTank.TankHeatingType.Indirect class Indirect(BSElement): pass @@ -14317,6 +14853,7 @@ class Indirect(BSElement): ("IndirectTankHeatingSource", IndirectTankHeatingSource), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.StorageTank.TankHeatingType class TankHeatingType(BSElement): """Direct or indirect heating of hot water tank.""" @@ -14335,6 +14872,7 @@ class Unknown(Unknown): ("Unknown", TankHeatingType.Unknown), ] + # DomesticHotWaterSystemType.DomesticHotWaterType.StorageTank class StorageTank(BSElement): pass @@ -14351,6 +14889,7 @@ class StorageTank(BSElement): ("OffCycleHeatLossCoefficient", OffCycleHeatLossCoefficient), ] + # CalculationMethodType class CalculationMethodType(BSElement): class Other(OtherType): @@ -14365,6 +14904,7 @@ class Other(OtherType): ("Other", CalculationMethodType.Other), ] + # FanBasedType class FanBasedType(BSElement): pass @@ -14413,6 +14953,7 @@ class FanBasedType(BSElement): ("StaticPressureResetControl", StaticPressureResetControl), ] + # DerivedModelType.Models.Model.DerivedModelInputs.ExplanatoryVariables.ExplanatoryVariable.ExplanatoryVariableUnits class ExplanatoryVariableUnits(UnitsType): pass @@ -14428,6 +14969,7 @@ class ExplanatoryVariable(BSElement): ("ExplanatoryVariableUnits", ExplanatoryVariableUnits), ] + # DerivedModelType.Models.Model.DerivedModelInputs.ExplanatoryVariables class ExplanatoryVariables(BSElement): pass @@ -14437,6 +14979,7 @@ class ExplanatoryVariables(BSElement): ("ExplanatoryVariable", ExplanatoryVariable), ] + # DerivedModelType.Models.Model.DerivedModelInputs class DerivedModelInputs(BSElement): pass @@ -14448,6 +14991,7 @@ class DerivedModelInputs(BSElement): ("ExplanatoryVariables", ExplanatoryVariables), ] + # DerivedModelType.Models.Model.ModeledTimeSeriesData class ModeledTimeSeriesData(BSElement): """This element stores the timeseries data generated when the model is applied to the training data, oftentimes referred to as yhat. The difference between each pairwise element in this series with its corresponding data from the Current Building Modeled Scenario would generate the residuals.""" @@ -14457,6 +15001,7 @@ class ModeledTimeSeriesData(BSElement): ("TimeSeries", TimeSeries), ] + # DerivedModelType.Models.Model class Model(BSElement): pass @@ -14475,6 +15020,7 @@ class Model(BSElement): ("ModeledTimeSeriesData", ModeledTimeSeriesData), ] + # DerivedModelType.SavingsSummaries.SavingsSummary.ComparisonPeriodModeledTimeSeriesData class ComparisonPeriodModeledTimeSeriesData(BSElement): """Applicable when the NormalizationMethod is Forecast or Backcast. Used to capture the modeled timeseries data associated with the comparison period.""" @@ -14484,6 +15030,7 @@ class ComparisonPeriodModeledTimeSeriesData(BSElement): ("TimeSeries", TimeSeries), ] + # DerivedModelType.SavingsSummaries.SavingsSummary.StandardConditionsBaselinePeriodModeledTimeSeriesData class StandardConditionsBaselinePeriodModeledTimeSeriesData(BSElement): """Applicable when the NormalizationMethod is Standard Conditions. Used to capture the modeled timeseries data associated with the baseline period at standard conditions.""" @@ -14493,6 +15040,7 @@ class StandardConditionsBaselinePeriodModeledTimeSeriesData(BSElement): ("TimeSeries", TimeSeries), ] + # DerivedModelType.SavingsSummaries.SavingsSummary.StandardConditionsReportingPeriodModeledTimeSeriesData class StandardConditionsReportingPeriodModeledTimeSeriesData(BSElement): """Applicable when the NormalizationMethod is Standard Conditions. Used to capture the modeled timeseries data associated with the reporting period at standard conditions.""" @@ -14502,6 +15050,7 @@ class StandardConditionsReportingPeriodModeledTimeSeriesData(BSElement): ("TimeSeries", TimeSeries), ] + # DerivedModelType.SavingsSummaries.SavingsSummary.StandardConditionsTimeSeriesData class StandardConditionsTimeSeriesData(BSElement): """Applicable when the NormalizationMethod is Standard Conditions. Used to capture timeseries data inputs (i.e. temperature or weather data from a TMY3 file, etc.).""" @@ -14511,6 +15060,7 @@ class StandardConditionsTimeSeriesData(BSElement): ("TimeSeries", TimeSeries), ] + # DerivedModelType.SavingsSummaries.SavingsSummary class SavingsSummary(BSElement): pass @@ -14557,6 +15107,7 @@ class SavingsSummary(BSElement): ("StandardConditionsTimeSeriesData", StandardConditionsTimeSeriesData), ] + # BuildingSync.Facilities.Facility.Systems.WallSystems.WallSystem class WallSystem(WallSystemType): pass @@ -14571,6 +15122,7 @@ class WallSystems(BSElement): ("WallSystem", WallSystem), ] + # BuildingSync.Facilities.Facility.Systems.RoofSystems.RoofSystem class RoofSystem(RoofSystemType): pass @@ -14585,6 +15137,7 @@ class RoofSystems(BSElement): ("RoofSystem", RoofSystem), ] + # BuildingSync.Facilities.Facility.Systems.CeilingSystems.CeilingSystem class CeilingSystem(CeilingSystemType): pass @@ -14599,6 +15152,7 @@ class CeilingSystems(BSElement): ("CeilingSystem", CeilingSystem), ] + # BuildingSync.Facilities.Facility.Systems.FenestrationSystems.FenestrationSystem class FenestrationSystem(FenestrationSystemType): pass @@ -14627,6 +15181,7 @@ class ExteriorFloorSystems(BSElement): ("ExteriorFloorSystem", ExteriorFloorSystem), ] + # BuildingSync.Facilities.Facility.Systems.FoundationSystems.FoundationSystem class FoundationSystem(FoundationSystemType): pass @@ -14641,6 +15196,7 @@ class FoundationSystems(BSElement): ("FoundationSystem", FoundationSystem), ] + # LinkedPremises class LinkedPremises(BSElement): """Establishes whether the system applies to one or more entire buildings, sections, spaces, or zones within buildings. Power consuming system loads should be distributed in proportion to the floor areas of linked premises. Envelope systems should be distributed in proportion to the exterior surface areas of linked premises.""" @@ -14691,6 +15247,7 @@ class Space(BSElement): ("LinkedSpaceID", LinkedSpaceID), ] + # BuildingSync.Facilities.Facility.Systems.WaterInfiltrationSystems.WaterInfiltrationSystem class WaterInfiltrationSystem(BSElement): """Description of the infiltration characteristics for an opaque surface, fenestration unit, a thermal zone.""" @@ -14710,6 +15267,7 @@ class WaterInfiltrationSystem(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # BuildingSync.Facilities.Facility.Systems.WaterInfiltrationSystems class WaterInfiltrationSystems(BSElement): pass @@ -14719,6 +15277,7 @@ class WaterInfiltrationSystems(BSElement): ("WaterInfiltrationSystem", WaterInfiltrationSystem), ] + # ScheduleType class ScheduleType(BSElement): pass @@ -14736,6 +15295,7 @@ class ScheduleType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # BuildingSync.Facilities.Facility.Contacts.Contact class Contact(ContactType): pass @@ -14750,6 +15310,7 @@ class Contacts(BSElement): ("Contact", Contact), ] + # BuildingSync.Facilities.Facility.Tenants.Tenant class Tenant(TenantType): pass @@ -14764,6 +15325,22 @@ class Tenants(BSElement): ("Tenant", Tenant), ] + +# BuildingSync.Facilities.Facility.AuditCycles.AuditCycle +class AuditCycle(AuditCycleType): + pass + + +# BuildingSync.Facilities.Facility.AuditCycles +class AuditCycles(BSElement): + pass + + +AuditCycles.element_children = [ + ("AuditCycle", AuditCycle), +] + + # ThermalZoneType.Spaces class Spaces(BSElement): """Areas of a building that share systems characteristics such as occupancy, plug loads, or lighting.""" @@ -14776,6 +15353,7 @@ class Space(SpaceType): ("Space", Spaces.Space), ] + # ScenarioType.TimeSeriesData class TimeSeriesData(BSElement): pass @@ -14785,6 +15363,7 @@ class TimeSeriesData(BSElement): ("TimeSeries", TimeSeries), ] + # ScenarioType.AllResourceTotals class AllResourceTotals(BSElement): pass @@ -14794,6 +15373,7 @@ class AllResourceTotals(BSElement): ("AllResourceTotal", AllResourceTotal), ] + # CalculationMethod class CalculationMethod(CalculationMethodType): """Method used to determine energy use.""" @@ -14811,6 +15391,7 @@ class CodeMinimum(BSElement): ("CalculationMethod", CalculationMethod), ] + # ScenarioType.ScenarioType.Benchmark.BenchmarkType.StandardPractice class StandardPractice(BSElement): pass @@ -14821,6 +15402,7 @@ class StandardPractice(BSElement): ("CalculationMethod", CalculationMethod), ] + # ScenarioType.ScenarioType.Benchmark.BenchmarkType class BenchmarkType(BSElement): """Source of energy data or building characteristics for benchmarking energy performance.""" @@ -14847,6 +15429,7 @@ class Other(BSElement): ("CalculationMethod", CalculationMethod), ] + # ScenarioType.ScenarioType.Benchmark class Benchmark(BSElement): pass @@ -14860,6 +15443,65 @@ class Benchmark(BSElement): ("LinkedPremises", LinkedPremises), ] + +# MeasureType.MeasureSavingsAnalysis +class MeasureSavingsAnalysis(BSElement): + """Energy and cost effectiveness data for an individual measure. In most cases, this data depends on the other measures included in the package, and should be entered at the package level under Scenarios.""" + + +MeasureSavingsAnalysis.element_children = [ + ("MeasureRank", MeasureRank), + ("ReferenceCase", ReferenceCase), + ("CalculationMethod", CalculationMethod), + ("AnnualSavingsSiteEnergy", AnnualSavingsSiteEnergy), + ("AnnualSavingsSourceEnergy", AnnualSavingsSourceEnergy), + ("AnnualSavingsCost", AnnualSavingsCost), + ("AnnualSavingsByFuels", AnnualSavingsByFuels), + ("SummerPeakElectricityReduction", SummerPeakElectricityReduction), + ("WinterPeakElectricityReduction", WinterPeakElectricityReduction), + ("AnnualPeakElectricityReduction", AnnualPeakElectricityReduction), + ("AnnualDemandSavingsCost", AnnualDemandSavingsCost), + ("AnnualWaterSavings", AnnualWaterSavings), + ("AnnualWaterCostSavings", AnnualWaterCostSavings), + ("AnnualSavingsAverageGHGEmissions", AnnualSavingsAverageGHGEmissions), + ("AnnualSavingsMarginalGHGEmissions", AnnualSavingsMarginalGHGEmissions), + ("AnnualSavingsGHGEmissionIntensity", AnnualSavingsGHGEmissionIntensity), + ("OMCostAnnualSavings", OMCostAnnualSavings), + ("OtherCostAnnualSavings", OtherCostAnnualSavings), + ("EquipmentDisposalAndSalvageCosts", EquipmentDisposalAndSalvageCosts), + ("FundingFromIncentives", FundingFromIncentives), + ("FundingFromTaxCredits", FundingFromTaxCredits), + ("NPVofTaxImplications", NPVofTaxImplications), + ("CostEffectivenessScreeningMethod", CostEffectivenessScreeningMethod), + ("SimplePayback", SimplePayback), + ("NetPresentValue", NetPresentValue), + ("InternalRateOfReturn", InternalRateOfReturn), +] + + +# ScenarioType.ScenarioType.PackageOfMeasures.MeasureIDs.MeasureID +class MeasureID(BSElement): + """ID number of measure.""" + + +MeasureID.element_attributes = [ + "IDref", # IDREF +] +MeasureID.element_children = [ + ("MeasureSavingsAnalysis", MeasureSavingsAnalysis), +] + + +# ScenarioType.ScenarioType.PackageOfMeasures.MeasureIDs +class MeasureIDs(BSElement): + """ID numbers for measures included in the package. Multiple items may be selected.""" + + +MeasureIDs.element_children = [ + ("MeasureID", MeasureID), +] + + # ScenarioType.ScenarioType.PackageOfMeasures class PackageOfMeasures(BSElement): pass @@ -14910,6 +15552,7 @@ class PackageOfMeasures(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # ScenarioType.ResourceUses.ResourceUse class ResourceUse(ResourceUseType): pass @@ -14938,36 +15581,6 @@ class UtilityType(BSElement): ("SourceSiteRatio", SourceSiteRatio), ] -# MeasureType.MeasureSavingsAnalysis -class MeasureSavingsAnalysis(BSElement): - """Energy and cost effectiveness data for an individual measure. In most cases, this data depends on the other measures included in the package, and should be entered at the package level under Scenarios.""" - - -MeasureSavingsAnalysis.element_children = [ - ("MeasureRank", MeasureRank), - ("ReferenceCase", ReferenceCase), - ("CalculationMethod", CalculationMethod), - ("AnnualSavingsSiteEnergy", AnnualSavingsSiteEnergy), - ("AnnualSavingsSourceEnergy", AnnualSavingsSourceEnergy), - ("AnnualSavingsCost", AnnualSavingsCost), - ("AnnualSavingsByFuels", AnnualSavingsByFuels), - ("SummerPeakElectricityReduction", SummerPeakElectricityReduction), - ("WinterPeakElectricityReduction", WinterPeakElectricityReduction), - ("AnnualPeakElectricityReduction", AnnualPeakElectricityReduction), - ("AnnualDemandSavingsCost", AnnualDemandSavingsCost), - ("AnnualWaterSavings", AnnualWaterSavings), - ("AnnualWaterCostSavings", AnnualWaterCostSavings), - ("OMCostAnnualSavings", OMCostAnnualSavings), - ("OtherCostAnnualSavings", OtherCostAnnualSavings), - ("EquipmentDisposalAndSalvageCosts", EquipmentDisposalAndSalvageCosts), - ("FundingFromIncentives", FundingFromIncentives), - ("FundingFromTaxCredits", FundingFromTaxCredits), - ("NPVofTaxImplications", NPVofTaxImplications), - ("CostEffectivenessScreeningMethod", CostEffectivenessScreeningMethod), - ("SimplePayback", SimplePayback), - ("NetPresentValue", NetPresentValue), - ("InternalRateOfReturn", InternalRateOfReturn), -] # ReportType.Utilities.Utility class Utility(UtilityType): @@ -15012,6 +15625,7 @@ class ControlSystemTypes(BSElement): ("ControlSystemType", ControlSystemType), ] + # HVACSystemType.Plants.CoolingPlants.CoolingPlant class CoolingPlant(CoolingPlantType): """Type of cooling plant. Zonal cooling is recorded in a separate data field. Use of fans or blowers by themselves without chilled air or water is not included in this definition of cooling. Stand-alone dehumidifiers are also not included.""" @@ -15026,6 +15640,7 @@ class CoolingPlants(BSElement): ("CoolingPlant", CoolingPlant), ] + # HVACSystemType.Plants.CondenserPlants.CondenserPlant class CondenserPlant(CondenserPlantType): """Type of condenser used for refrigerant-based systems.""" @@ -15040,6 +15655,7 @@ class CondenserPlants(BSElement): ("CondenserPlant", CondenserPlant), ] + # HVACSystemType.HeatingAndCoolingSystems.HeatingSources.HeatingSource class HeatingSource(BSElement): class OutputCapacity(OutputCapacity): @@ -15083,11 +15699,13 @@ class Control(ControlGeneralType): ("ModelNumber", ModelNumber), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] HeatingSource.Controls.element_children = [ ("Control", HeatingSource.Controls.Control), ] + # HVACSystemType.HeatingAndCoolingSystems.HeatingSources class HeatingSources(BSElement): pass @@ -15097,6 +15715,7 @@ class HeatingSources(BSElement): ("HeatingSource", HeatingSource), ] + # FanBased class FanBased(FanBasedType): pass @@ -15116,6 +15735,7 @@ class CentralAirDistribution(BSElement): ("FanBased", FanBased), ] + # DuctSystemType class DuctSystemType(BSElement): pass @@ -15152,8 +15772,10 @@ class DuctSystemType(BSElement): ("CoolingDeliveryID", CoolingDeliveryID), ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), + ("EquipmentID", EquipmentID), ] + # DomesticHotWaterSystemType.DomesticHotWaterType class DomesticHotWaterType(BSElement): """Type of water heating equipment for hot running water.""" @@ -15173,6 +15795,7 @@ class Unknown(Unknown): ("Unknown", DomesticHotWaterType.Unknown), ] + # PoolType.Heated class Heated(BSElement): """If exists then the pool is heated.""" @@ -15194,6 +15817,7 @@ class Control(ControlGeneralType): ("Control", Heated.Controls.Control), ] + # DerivedModelType.Models class Models(BSElement): pass @@ -15203,6 +15827,7 @@ class Models(BSElement): ("Model", Model), ] + # DerivedModelType.SavingsSummaries class SavingsSummaries(BSElement): pass @@ -15212,6 +15837,7 @@ class SavingsSummaries(BSElement): ("SavingsSummary", SavingsSummary), ] + # DomesticHotWaterSystemType class DomesticHotWaterSystemType(BSElement): class Controls(BSElement): @@ -15249,11 +15875,13 @@ class Control(ControlGeneralType): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] DomesticHotWaterSystemType.Controls.element_children = [ ("Control", DomesticHotWaterSystemType.Controls.Control), ] + # CookingSystemType class CookingSystemType(BSElement): pass @@ -15280,8 +15908,10 @@ class CookingSystemType(BSElement): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] + # RefrigerationSystemType class RefrigerationSystemType(BSElement): pass @@ -15303,8 +15933,10 @@ class RefrigerationSystemType(BSElement): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] + # DishwasherSystemType class DishwasherSystemType(BSElement): class Controls(BSElement): @@ -15336,11 +15968,13 @@ class Control(ControlGeneralType): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] DishwasherSystemType.Controls.element_children = [ ("Control", DishwasherSystemType.Controls.Control), ] + # LaundrySystemType class LaundrySystemType(BSElement): class Controls(BSElement): @@ -15369,11 +16003,13 @@ class Control(ControlGeneralType): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] LaundrySystemType.Controls.element_children = [ ("Control", LaundrySystemType.Controls.Control), ] + # PumpSystemType class PumpSystemType(BSElement): class Controls(BSElement): @@ -15408,11 +16044,13 @@ class Control(ControlGeneralType): ("Location", Location), ("LinkedSystemIDs", LinkedSystemIDs), ("UserDefinedFields", UserDefinedFields), + ("EquipmentID", EquipmentID), ] PumpSystemType.Controls.element_children = [ ("Control", PumpSystemType.Controls.Control), ] + # FanSystemType class FanSystemType(BSElement): class Controls(BSElement): @@ -15455,11 +16093,13 @@ class Control(ControlGeneralType): ("LinkedPremises", LinkedPremises), ("LinkedSystemIDs", LinkedSystemIDs), ("UserDefinedFields", UserDefinedFields), + ("EquipmentID", EquipmentID), ] FanSystemType.Controls.element_children = [ ("Control", FanSystemType.Controls.Control), ] + # MotorSystemType class MotorSystemType(BSElement): class Controls(BSElement): @@ -15495,11 +16135,13 @@ class Control(ControlGeneralType): ("LinkedPremises", LinkedPremises), ("LinkedSystemIDs", LinkedSystemIDs), ("UserDefinedFields", UserDefinedFields), + ("EquipmentID", EquipmentID), ] MotorSystemType.Controls.element_children = [ ("Control", MotorSystemType.Controls.Control), ] + # HeatRecoverySystemType class HeatRecoverySystemType(BSElement): class Controls(BSElement): @@ -15528,11 +16170,13 @@ class Control(ControlGeneralType): ("ModelNumber", ModelNumber), ("Location", Location), ("UserDefinedFields", UserDefinedFields), + ("EquipmentID", EquipmentID), ] HeatRecoverySystemType.Controls.element_children = [ ("Control", HeatRecoverySystemType.Controls.Control), ] + # CriticalITSystemType class CriticalITSystemType(BSElement): class Controls(BSElement): @@ -15562,11 +16206,13 @@ class Control(ControlGeneralType): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] CriticalITSystemType.Controls.element_children = [ ("Control", CriticalITSystemType.Controls.Control), ] + # PlugElectricLoadType class PlugElectricLoadType(BSElement): class Controls(BSElement): @@ -15598,11 +16244,13 @@ class Control(ControlGeneralType): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] PlugElectricLoadType.Controls.element_children = [ ("Control", PlugElectricLoadType.Controls.Control), ] + # ProcessGasElectricLoadType class ProcessGasElectricLoadType(BSElement): class Controls(BSElement): @@ -15635,11 +16283,13 @@ class Control(ControlGeneralType): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] ProcessGasElectricLoadType.Controls.element_children = [ ("Control", ProcessGasElectricLoadType.Controls.Control), ] + # ConveyanceSystemType class ConveyanceSystemType(BSElement): class ConveyanceSystemType(BSElement): @@ -15683,11 +16333,13 @@ class Control(ControlGeneralType): ("Location", Location), ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), + ("EquipmentID", EquipmentID), ] ConveyanceSystemType.Controls.element_children = [ ("Control", ConveyanceSystemType.Controls.Control), ] + # OnsiteStorageTransmissionGenerationSystemType class OnsiteStorageTransmissionGenerationSystemType(BSElement): class Controls(BSElement): @@ -15718,11 +16370,13 @@ class Control(ControlGeneralType): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] OnsiteStorageTransmissionGenerationSystemType.Controls.element_children = [ ("Control", OnsiteStorageTransmissionGenerationSystemType.Controls.Control), ] + # PoolType class PoolType(BSElement): class PoolType(BSElement): @@ -15751,8 +16405,10 @@ class PoolType(BSElement): ("Location", Location), ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), + ("EquipmentID", EquipmentID), ] + # WaterUseType class WaterUseType(BSElement): class WaterUseType(BSElement): @@ -15813,11 +16469,13 @@ class Control(ControlGeneralType): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] WaterUseType.Controls.element_children = [ ("Control", WaterUseType.Controls.Control), ] + # BuildingSync.Facilities.Facility.Systems.AirInfiltrationSystems.AirInfiltrationSystem class AirInfiltrationSystem(BSElement): """Description of the infiltration characteristics for an opaque surface, fenestration unit, a thermal zone.""" @@ -15839,6 +16497,7 @@ class Tightness(Tightness): ("UserDefinedFields", UserDefinedFields), ] + # BuildingSync.Facilities.Facility.Systems.AirInfiltrationSystems class AirInfiltrationSystems(BSElement): pass @@ -15848,6 +16507,7 @@ class AirInfiltrationSystems(BSElement): ("AirInfiltrationSystem", AirInfiltrationSystem), ] + # BuildingSync.Facilities.Facility.Schedules.Schedule class Schedule(ScheduleType): pass @@ -15862,6 +16522,7 @@ class Schedules(BSElement): ("Schedule", Schedule), ] + # MeasureType class MeasureType(BSElement): pass @@ -15895,6 +16556,7 @@ class MeasureType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # ThermalZoneType class ThermalZoneType(BSElement): pass @@ -15917,6 +16579,7 @@ class ThermalZoneType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # ScenarioType.ResourceUses class ResourceUses(BSElement): pass @@ -15926,6 +16589,7 @@ class ResourceUses(BSElement): ("ResourceUse", ResourceUse), ] + # ScenarioType.ScenarioType.CurrentBuilding class CurrentBuilding(BSElement): pass @@ -15937,6 +16601,7 @@ class CurrentBuilding(BSElement): ("ENERGYSTARScore", ENERGYSTARScore), ] + # DerivedModelType class DerivedModelType(BSElement): """A derived model represents a supervised or unsupervised learning model derived from data presented in a scenario.""" @@ -15953,6 +16618,7 @@ class DerivedModelType(BSElement): ("UserDefinedFields", UserDefinedFields), ] + # ReportType.Utilities class Utilities(BSElement): pass @@ -15962,6 +16628,7 @@ class Utilities(BSElement): ("Utility", Utility), ] + # HVACSystemType.Plants.HeatingPlants.HeatingPlant class HeatingPlant(HeatingPlantType): """Type of central heating system, defined as any source of heating energy separate from the zone being heated. Local heating systems (such as packaged systems and fan-coils) are recorded in a separate data field.""" @@ -15976,6 +16643,7 @@ class HeatingPlants(BSElement): ("HeatingPlant", HeatingPlant), ] + # HVACSystemType.HeatingAndCoolingSystems.Deliveries.Delivery.DeliveryType.ZoneEquipment class ZoneEquipment(BSElement): """A type of HVAC equipment serving a single thermal zone, such as a hotel room PTHP/PTAC.""" @@ -15991,6 +16659,7 @@ class Other(OtherType): ("Other", ZoneEquipment.Other), ] + # HVACSystemType.HeatingAndCoolingSystems.Deliveries.Delivery.DeliveryType class DeliveryType(BSElement): class Other(OtherType): @@ -16003,6 +16672,7 @@ class Other(OtherType): ("Other", DeliveryType.Other), ] + # HVACSystemType.HeatingAndCoolingSystems.Deliveries.Delivery class Delivery(BSElement): class Controls(BSElement): @@ -16031,11 +16701,13 @@ class Control(ControlGeneralType): ("ThirdPartyCertification", ThirdPartyCertification), ("Quantity", Quantity), ("DeliveryCondition", DeliveryCondition), + ("EquipmentID", EquipmentID), ] Delivery.Controls.element_children = [ ("Control", Delivery.Controls.Control), ] + # HVACSystemType.HeatingAndCoolingSystems.Deliveries class Deliveries(BSElement): pass @@ -16045,6 +16717,7 @@ class Deliveries(BSElement): ("Delivery", Delivery), ] + # HVACSystemType.DuctSystems.DuctSystem class DuctSystem(DuctSystemType): pass @@ -16078,11 +16751,13 @@ class Control(ControlGeneralType): ("LinkedDeliveryIDs", LinkedDeliveryIDs), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] OtherHVACSystemType.Controls.element_children = [ ("Control", OtherHVACSystemType.Controls.Control), ] + # LightingSystemType class LightingSystemType(BSElement): class Controls(BSElement): @@ -16129,11 +16804,45 @@ class Control(ControlLightingType): ("LinkedPremises", LinkedPremises), ("UserDefinedFields", UserDefinedFields), ("Quantity", Quantity), + ("EquipmentID", EquipmentID), ] LightingSystemType.Controls.element_children = [ ("Control", LightingSystemType.Controls.Control), ] + +# PrincipalLightingSystemType +class PrincipalLightingSystemType(BSElement): + """Principal Lighting type for a building or a section. The usage of this element is not recommended except for Audit Template use cases.""" + + element_type = "xs:string" + element_enumerations = [ + "Incandescent", + "Linear Fluorescent", + "Compact Fluorescent", + "Halogen", + "High Intensity Discharge", + "Solid State Lighting", + "LED", + "Mercury Vapor", + "Metal Halide", + "Sodium Vapor High Pressure", + "T5", + "T5HO", + "T8", + "Super T8", + "T12", + "T12HO", + "Induction", + "Neon", + "Plasma", + "Photoluminescent", + "Self Luminous", + "Other", + "Unknown", + ] + + # BuildingSync.Facilities.Facility.Systems.DomesticHotWaterSystems.DomesticHotWaterSystem class DomesticHotWaterSystem(DomesticHotWaterSystemType): pass @@ -16148,6 +16857,7 @@ class DomesticHotWaterSystems(BSElement): ("DomesticHotWaterSystem", DomesticHotWaterSystem), ] + # BuildingSync.Facilities.Facility.Systems.CookingSystems.CookingSystem class CookingSystem(CookingSystemType): pass @@ -16162,6 +16872,7 @@ class CookingSystems(BSElement): ("CookingSystem", CookingSystem), ] + # BuildingSync.Facilities.Facility.Systems.RefrigerationSystems.RefrigerationSystem class RefrigerationSystem(RefrigerationSystemType): pass @@ -16176,6 +16887,7 @@ class RefrigerationSystems(BSElement): ("RefrigerationSystem", RefrigerationSystem), ] + # BuildingSync.Facilities.Facility.Systems.DishwasherSystems.DishwasherSystem class DishwasherSystem(DishwasherSystemType): pass @@ -16190,6 +16902,7 @@ class DishwasherSystems(BSElement): ("DishwasherSystem", DishwasherSystem), ] + # BuildingSync.Facilities.Facility.Systems.LaundrySystems.LaundrySystem class LaundrySystem(LaundrySystemType): pass @@ -16204,6 +16917,7 @@ class LaundrySystems(BSElement): ("LaundrySystem", LaundrySystem), ] + # BuildingSync.Facilities.Facility.Systems.PumpSystems.PumpSystem class PumpSystem(PumpSystemType): pass @@ -16218,6 +16932,7 @@ class PumpSystems(BSElement): ("PumpSystem", PumpSystem), ] + # BuildingSync.Facilities.Facility.Systems.FanSystems.FanSystem class FanSystem(FanSystemType): pass @@ -16232,6 +16947,7 @@ class FanSystems(BSElement): ("FanSystem", FanSystem), ] + # BuildingSync.Facilities.Facility.Systems.MotorSystems.MotorSystem class MotorSystem(MotorSystemType): pass @@ -16246,6 +16962,7 @@ class MotorSystems(BSElement): ("MotorSystem", MotorSystem), ] + # BuildingSync.Facilities.Facility.Systems.HeatRecoverySystems.HeatRecoverySystem class HeatRecoverySystem(HeatRecoverySystemType): pass @@ -16260,6 +16977,7 @@ class HeatRecoverySystems(BSElement): ("HeatRecoverySystem", HeatRecoverySystem), ] + # BuildingSync.Facilities.Facility.Systems.CriticalITSystems.CriticalITSystem class CriticalITSystem(CriticalITSystemType): pass @@ -16274,6 +16992,7 @@ class CriticalITSystems(BSElement): ("CriticalITSystem", CriticalITSystem), ] + # BuildingSync.Facilities.Facility.Systems.PlugLoads.PlugLoad class PlugLoad(PlugElectricLoadType): pass @@ -16288,6 +17007,7 @@ class PlugLoads(BSElement): ("PlugLoad", PlugLoad), ] + # BuildingSync.Facilities.Facility.Systems.ProcessLoads.ProcessLoad class ProcessLoad(ProcessGasElectricLoadType): pass @@ -16302,6 +17022,7 @@ class ProcessLoads(BSElement): ("ProcessLoad", ProcessLoad), ] + # BuildingSync.Facilities.Facility.Systems.ConveyanceSystems.ConveyanceSystem class ConveyanceSystem(ConveyanceSystemType): pass @@ -16326,6 +17047,7 @@ class OnsiteStorageTransmissionGenerationSystems(BSElement): ), ] + # BuildingSync.Facilities.Facility.Systems.Pools.Pool class Pool(PoolType): pass @@ -16340,6 +17062,7 @@ class Pools(BSElement): ("Pool", Pool), ] + # BuildingSync.Facilities.Facility.Systems.WaterUses class WaterUses(BSElement): class WaterUse(WaterUseType): @@ -16350,6 +17073,7 @@ class WaterUse(WaterUseType): ("WaterUse", WaterUses.WaterUse), ] + # BuildingSync.Facilities.Facility.Measures.Measure class Measure(MeasureType): pass @@ -16364,6 +17088,7 @@ class Measures(BSElement): ("Measure", Measure), ] + # BuildingType.Sections.Section.ThermalZones class ThermalZones(BSElement): """Section of a building that share thermal control characteristics. May be one or many.""" @@ -16376,6 +17101,7 @@ class ThermalZone(ThermalZoneType): ("ThermalZone", ThermalZones.ThermalZone), ] + # ScenarioType.ScenarioType.DerivedModel class DerivedModel(DerivedModelType): pass @@ -16392,6 +17118,7 @@ class Plants(BSElement): ("CondenserPlants", CondenserPlants), ] + # HVACSystemType.HeatingAndCoolingSystems class HeatingAndCoolingSystems(BSElement): pass @@ -16404,6 +17131,7 @@ class HeatingAndCoolingSystems(BSElement): ("Deliveries", Deliveries), ] + # HVACSystemType.DuctSystems class DuctSystems(BSElement): pass @@ -16413,6 +17141,7 @@ class DuctSystems(BSElement): ("DuctSystem", DuctSystem), ] + # HVACSystemType.OtherHVACSystems.OtherHVACSystem class OtherHVACSystem(OtherHVACSystemType): pass @@ -16432,6 +17161,7 @@ class LightingSystems(BSElement): ("LightingSystem", LightingSystem), ] + # BuildingType.Sections class Sections(BSElement): class Section(BSElement): @@ -16456,6 +17186,8 @@ class Section(BSElement): ("SpatialUnits", SpatialUnits), ("PrimaryContactID", PrimaryContactID), ("TenantIDs", TenantIDs), + ("PrincipalHVACSystemType", PrincipalHVACSystemType), + ("PrincipalLightingSystemType", PrincipalLightingSystemType), ("YearOfConstruction", YearOfConstruction), ("FootprintShape", FootprintShape), ("NumberOfSides", NumberOfSides), @@ -16481,6 +17213,7 @@ class Section(BSElement): ("ThermalZones", ThermalZones), ] + # HVACSystemType.OtherHVACSystems class OtherHVACSystems(BSElement): pass @@ -16490,6 +17223,7 @@ class OtherHVACSystems(BSElement): ("OtherHVACSystem", OtherHVACSystem), ] + # HVACSystemType class HVACSystemType(BSElement): pass @@ -16515,6 +17249,7 @@ class HVACSystemType(BSElement): ("Quantity", Quantity), ] + # BuildingType class BuildingType(BSElement): class eGRIDRegionCode(eGRIDRegionCode): @@ -16593,6 +17328,8 @@ class WeatherStations(WeatherStations): ("VerticalSurroundings", VerticalSurroundings), ("Assessments", Assessments), ("YearOfConstruction", YearOfConstruction), + ("PrincipalHVACSystemType", PrincipalHVACSystemType), + ("PrincipalLightingSystemType", PrincipalLightingSystemType), ("YearOccupied", YearOccupied), ("YearOfLastEnergyAudit", YearOfLastEnergyAudit), ("RetrocommissioningDate", RetrocommissioningDate), @@ -16606,6 +17343,7 @@ class WeatherStations(WeatherStations): ("UserDefinedFields", UserDefinedFields), ] + # ScenarioType class ScenarioType(BSElement): class Other(BSElement): @@ -16663,6 +17401,7 @@ class ScenarioType(BSElement): ("Other", ScenarioType.Other), ] + # ReportType.Scenarios.Scenario class Scenario(ScenarioType): pass @@ -16682,6 +17421,7 @@ class HVACSystems(BSElement): ("HVACSystem", HVACSystem), ] + # BuildingSync.Facilities.Facility.Systems class Systems(BSElement): class ConveyanceSystems(BSElement): @@ -16723,6 +17463,7 @@ class ConveyanceSystems(BSElement): ("ConveyanceSystem", ConveyanceSystem), ] + # ReportType.Scenarios class Scenarios(BSElement): pass @@ -16732,6 +17473,70 @@ class Scenarios(BSElement): ("Scenario", Scenario), ] + +# BasicOnsiteAudit +class BasicOnsiteAudit(BSElement): + """Ignition mechanism in gas heating equipment. Either pilot light or an intermittent ignition device (IID).""" + + element_type = "xs:string" + element_enumerations = [ + "ASHRAE Level 1 Audit", + "Industrial Assessment Center (IAC) Audit", + "Utility Incentive Program Audit", + ] + + +# DetailedOnsiteAudit +class DetailedOnsiteAudit(BSElement): + """Ignition mechanism in gas heating equipment. Either pilot light or an intermittent ignition device (IID).""" + + element_type = "xs:string" + element_enumerations = [ + "ASHRAE Level 2 Audit", + "ASHRAE Level 3 Audit", + "Deep Energy Retrofit Audit", + "Preliminary Assessment (PA)", + "Investment Grade Audit (IGA)", + "Retrocommissioning Audit", + ] + + +# BasicRemoteAudit +class BasicRemoteAudit(BSElement): + """Ignition mechanism in gas heating equipment. Either pilot light or an intermittent ignition device (IID).""" + + element_type = "xs:string" + element_enumerations = [ + "Rapid/Automated Audit", + "Continuous Monitoring of Building Systems", + "Portfolio Screening Analysis", + ] + + +# DetailedRemoteAudit +class DetailedRemoteAudit(BSElement): + """Ignition mechanism in gas heating equipment. Either pilot light or an intermittent ignition device (IID).""" + + element_type = "xs:string" + element_enumerations = [ + "Desk Audit", + "Remote Controls Audit", + ] + + +# ReportType.FacilityEvaluationAuditDefinition +class FacilityEvaluationAuditDefinition(BSElement): + pass + + +FacilityEvaluationAuditDefinition.element_children = [ + ("BasicOnsiteAudit", BasicOnsiteAudit), + ("DetailedOnsiteAudit", DetailedOnsiteAudit), + ("BasicRemoteAudit", BasicRemoteAudit), + ("DetailedRemoteAudit", DetailedRemoteAudit), +] + + # ReportType class ReportType(BSElement): pass @@ -16746,6 +17551,7 @@ class ReportType(BSElement): ("AuditFilingStatus", AuditFilingStatus), ("EarlyCompliance", EarlyCompliance), ("ASHRAEAuditLevel", ASHRAEAuditLevel), + ("FacilityEvaluationAuditDefinition", FacilityEvaluationAuditDefinition), ("RetrocommissioningAudit", RetrocommissioningAudit), ("AuditCost", AuditCost), ("DiscountFactor", DiscountFactor), @@ -16760,9 +17566,11 @@ class ReportType(BSElement): ("Utilities", Utilities), ("AuditorContactID", AuditorContactID), ("LinkedPremisesOrSystem", LinkedPremisesOrSystem), + ("LinkedAuditCycles", LinkedAuditCycles), ("UserDefinedFields", UserDefinedFields), ] + # SiteType.Buildings class Buildings(BSElement): class Building(BuildingType): @@ -16773,6 +17581,7 @@ class Building(BuildingType): ("Building", Buildings.Building), ] + # SiteType class SiteType(BSElement): class eGRIDRegionCode(eGRIDRegionCode): @@ -16820,6 +17629,7 @@ class WeatherStations(WeatherStations): ("UserDefinedFields", UserDefinedFields), ] + # BuildingSync.Facilities.Facility.Reports.Report class Report(ReportType): pass @@ -16834,6 +17644,7 @@ class Reports(BSElement): ("Report", Report), ] + # BuildingSync.Facilities.Facility.Sites class Sites(BSElement): class Site(SiteType): @@ -16844,6 +17655,7 @@ class Site(SiteType): ("Site", Sites.Site), ] + # BuildingSync.Facilities class Facilities(BSElement): class Facility(BSElement): @@ -16864,9 +17676,11 @@ class Facility(BSElement): ("Reports", Reports), ("Contacts", Contacts), ("Tenants", Tenants), + ("AuditCycles", AuditCycles), ("UserDefinedFields", UserDefinedFields), ] + # BuildingSync class BuildingSync(BSElement): pass diff --git a/bsyncpy/bsyncpy_generator.py b/bsyncpy/bsyncpy_generator.py index 3dfc54e..7bf2728 100644 --- a/bsyncpy/bsyncpy_generator.py +++ b/bsyncpy/bsyncpy_generator.py @@ -281,7 +281,7 @@ def do_simpleType(element) -> BSElement: if union_type.startswith("auc:"): bs_element.element_union.append(union_type[4:]) else: - raise RuntimError(f"union out of scope: {union_type}") + raise RuntimeError(f"union out of scope: {union_type}") else: raise RuntimeError(f"unrecognized child of a simple type: {child}") diff --git a/pyproject.toml b/pyproject.toml index d7f084b..d799277 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [tool.poetry] name = "bsyncpy" -version = "0.3.0-alpha.0" +version = "0.3.0" description = "Tools to autogenerate a Python SDK for BuildingSync given an XSD" -authors = ["Joel Bender ", "Nicholas Long "] +authors = ["Joel Bender ", "Nicholas Long ", "Jie Xiong "] [tool.poetry.dependencies] python = "^3.7.9" diff --git a/tests/test_basic.py b/tests/test_basic.py index 4a81bd4..4742fb2 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -11,7 +11,7 @@ def test_writefile(): # Create a root and set the version attribute root = bsync.BuildingSync() - root.set("version", "2.4.0") + root.set("version", "2.5.0") # Valid element attributes can also be passed in as kwargs f = bsync.Facilities(bsync.Facilities.Facility(ID="Facility-42")) @@ -32,7 +32,7 @@ def test_writefile(): assert os.path.exists("output.xml") == True with open("output.xml") as f: - if '' in f.read(): + if '' in f.read(): assert True else: assert False, "Could not find correct BuildingSync version in file"