I used the following code to generate the defrost schedule for the air chiller object. For refrigerated warehouse a more frequent defrost schedule than typical may be required.
note: generative A.I. was used to inform this code.
#create a defrost_schedule using ScheduleRuleset
defrost_schedule = OpenStudio::Model::ScheduleRuleset.new(model)
defrost_schedule.setName("Frequent Defrost Schedule")
default_day = defrost_schedule.defaultDaySchedule
default_day.setName("Default Day Schedule")
# Define hourly values for the default day with six defrost cycles per day
# Each cycle lasts for 30 minutes and occurs every 4 hours
default_day.addValue(OpenStudio::Time.new(0, 0, 0, 0), 0.0) # Start with no defrost
default_day.addValue(OpenStudio::Time.new(0, 0, 30, 0), 1.0) # Defrost from 12:00 AM to 12:30 AM
default_day.addValue(OpenStudio::Time.new(0, 4, 0, 0), 0.0) # No defrost from 12:30 AM to 4:00 AM
default_day.addValue(OpenStudio::Time.new(0, 4, 30, 0), 1.0) # Defrost from 4:00 AM to 4:30 AM
default_day.addValue(OpenStudio::Time.new(0, 8, 0, 0), 0.0) # No defrost from 4:30 AM to 8:00 AM
default_day.addValue(OpenStudio::Time.new(0, 8, 30, 0), 1.0) # Defrost from 8:00 AM to 8:30 AM
default_day.addValue(OpenStudio::Time.new(0, 12, 0, 0), 0.0) # No defrost from 8:30 AM to 12:00 PM
default_day.addValue(OpenStudio::Time.new(0, 12, 30, 0), 1.0) # Defrost from 12:00 PM to 12:30 PM
default_day.addValue(OpenStudio::Time.new(0, 16, 0, 0), 0.0) # No defrost from 12:30 PM to 4:00 PM
default_day.addValue(OpenStudio::Time.new(0, 16, 30, 0), 1.0) # Defrost from 4:00 PM to 4:30 PM
default_day.addValue(OpenStudio::Time.new(0, 20, 0, 0), 0.0) # No defrost from 4:30 PM to 8:00 PM
default_day.addValue(OpenStudio::Time.new(0, 20, 30, 0), 1.0) # Defrost from 8:00 PM to 8:30 PM
default_day.addValue(OpenStudio::Time.new(0, 24, 0, 0), 0.0) # No defrost from 8:30 PM to 12:00 AM