Custom bldgPrograms

Happy Monday! I would like to create custom bldgPrograms I can attach to models using Honeybee_bldgPrograms. Tips on how to build out a library of custom programs with custom schedules and intensities? Many thanks.

1 Like

Hi Arpan,

I apologize for the late response. To be honest, we coded the present version of Honeybee in a manner that is not too friendly to the insertion of new building programs and this is something that we intend to make better in the revision of honeybee that is currently happening and the new Honeyb…. This is not to say that you could not add new building programs in the present Honeybee. Just that it would be difficult and you might have better progress with an alternative method until the new API is ready.

As such, it is probably most helpful for me to explain how to create/assign a new building program with as few components as possible. All building programs are essentially defined only by schedules and loads. Therefore, you can effectively change the program of any HBzone with just 2 Honeybee components: “Honeybee_Set EnergyPlus Zone Loads” and “Honeybee_Set EnergyPlus Zone Schedules”.

The loads are straightforward to set if you know them and it is usually the definition of schedules which is more difficult. This said, you will get a lot of help with generating new schedules thanks to the “Honeybee_Annual Schedule” component and the “Honeybee_Daily Schedule” that Antonello recently added to Honeybee. Notably, these components output schedIDFText, which you can either internalize in a GH component and connect to the “Honeybee_Add to EnergyPlus Library” in any GH definition and you will have those schedules available without the need for the schedule generating component. Alternatively, you can copy/paste the schedIDFText into the userCustomEPLibrar.idf to have it automatically available whenever you load up Honeybee. In this way, all that you have to do is plug the name of the schedule into the “Honeybee_Set EnergyPlus Zone Schedules” component without a ton of schedule-generating components in everyone’s definitions.

Antonello has an example file up for his components but it is a bit old at this point.

I will post an example file tomorrow about how to use the schedIDFText since this has become a critical part of how I am defining new building programs in my office.

Hope this is enough to get you started.



Here is the example file that I said I would post. It shows how to make new schedules and package them for use in other GH files:…

By packaging the schedules as such, you can use this to build up new Building Program schedule templates.


Hi Arpan and Chris,

I have updated the example file.…


In this example file you can understand how to use the inputs of the schedule components.

Basically, the first step is to create a daily schedule by using:

a) HB daily schedule: this component let you transform a ‘Grasshopper Gene Pool’ into a list of 24 value (thus a daily schedule). This way is very fast especially with occupancy schedules.


b) Native components of GH: for example ‘duplicate data’ component or by writing a list of 24 values manually.

The second step is to connect daily schedules to HB annual schedule.

You can choose if you want to include holidays in your schedule:

a) you can use the internal library of the component by using EPW file input, this option considers just national holidays (regional and local holidays are not considered)

b) you can create your own holidays with the overwriteHolidays input

I strongly suggest you take a look at Chris’ examples where the schedule components are used



Hi Chris,

Was this implemented within the new Honeybee UI yet? I want to create programs which have default settings for each building type based on our building construction codes - for minimum compliance testing. Currently, our modelling has been largely based on a series of overwriting the default program workflows. It would be much simpler if we could connect a single data stream or upload a new program for each file type :slight_smile:

Kind regards

@ElzineBraasch ,

I am not sure what Honeybee UI you are referring to (do you mean Honeybee[+]?). The ability to customize building programs is largely the same as it has been over the past couple of years. I have added an example file to hydra that shows the recommended “clean” ways for overwriting schedules and loads for a laboratory building (a custom type of program):

Technically some parts can be stripped out even further (like the schedules can be added to the userCustomEPLibrary.idf and then there’s no need to have the “write to EP library” component). I would suggest that, if you are trying to build a library of schedules and loads that describe new building types, building a userCustomEPLibrary.idf that you can send to other people will probably be the most helpful and most portable.

Depending on how we parse the OpenStudio standards json in HB+, we will try to add the possibility of creating your own program objects from the schedules and loads that you have in your library. It will be a year or so before we have these capabilities, however.