Figure 1 - A screenshot of the Schedule Editor app running within a web browser.
Launch web app in new tab...

This application serves as an online visual editor for annual hourly schedule data. Schedules are basically just a list of one or more daily profiles together with information about which profile applies to each day of the year.

A daily profile contains 24 hourly values that describe the temporal operation of something - be that a piece of equipment, the occupancy of a space, how open an aperture is or how much energy something is using. For flexibility, these hourly values are usually stored as fractions or percentages as this allows the same profile to be applied to buildings or equipment of different sizes. In such cases the values are used as modifiers of whatever the maximum size, load or capacity is.

Individual daily profiles can then be assigned to one or more days of the year. Simple schedules allow assignment to the 365 actual days present within a year (366 for leap years). More complex schedules offer additional flexibility by adding some more virtual days to each week, such as for holidays or extreme design-days used for HVAC sizing. This way, the same annual schedule can be used for different years or even different locations and weather data, with the specifics of local holidays, work weeks and climate extrema all accommodated automatically.

Getting Started

When it starts up, the app already contains a simple schedule. You can load another schedule by dragging and dropping it anywhere within the application window in the browser, or by clicking the Import schedule data button in the main toolbar. The app supports a range of different schedule formats including CSV, DIVA/DaySim occupancy, EnergyPlus (IDF/epJSON) and OpenStudio (gbXML is on the way).

To assign a different profile to any range of days, first select them by pressing and holding the pointer in the week/day grid and dragging over the range you need. You can add to or remove from the current selection set using either the SHIFT key or the three selection option buttons in the middle of the top toolbar. You can also use the SELECT DATE RANGE popup by clicking the calendar button in the top-right.

To edit a profile, click/tap its small thumbnail in the profile list to display it in the profile editor. The data in the editor will change to reflect the new current profile and the colour of the ASSIGN button will update. Use this button to assign the current profile to the selected date range in the week/day grid. Either double-click/tap on a profile’s thumbnail or select the small button with a pencil in it will display the Edit Profile dialog box. In there you can edit the name of the profile as well as some additional meta data for it.

Starting on a Monday

According to ISO 8601, the international standard week starts on a Monday and finishes on a Sunday. Whilst there are cultural variations, ISO 8601 is an agreed standard that provides an unambiguous and well-defined method of representing dates and times across all countries, even those with completely different representational conventions.

In relation to building performance analysis, using this standard corresponds well with the typical international working week, in which there are likely to be differences in activity levels on weekdays (Mon to Fri) and weekends (Sat, Sun). In terms of laying out the week/day grid, it means that weekdays and weekends are naturally grouped together for purposes of both interactive selection and direct visual comparison, instead of weekends being split apart at either end of the chart if it started on a Sunday.

Interesting Features

I needed this app so that I could more easily generate operational and occupancy schedules for use with some of the energy and solar analysis tools I am developing. Plus, I had promised Christoph Reinhart I’d look at something to help generate DIVA/DaySim occupancy schedules, so I had to get to it at some point.

Profile Editor

The profile editor allows you to adjust the hourly values for any profile in the list immediately to its right. To edit a profile, simply click/tap its thumbnail image.

You can select a node within the editor with a simple click/tap, or by using the forward/backwards buttons in the editor sub-toolbar. You can select multiple nodes by first pressing and holding in an empty area and then dragging a box around the required nodes. Sometimes space can be tight near the bottom or top of the chart and your initial press may select a node, but you can still drag horizontally and it will switch to box selection mode. If you press on a node and then drag vertically, you can change the node’s value - or the entire current selection set’s value if the node is already selected.

Profile editor component with node manipulator popup.
Figure 2: Some of the functions and manipulations that can be applied to selected profile nodes.

When you have one or more nodes selected, there are a range of manipulations you can apply to them using the node manipulator popup, as shown in Figure 2. These include being able to apply a range of easing functions between the first and last selected values, mirroring the selection in both axis, as well as time-shifting the selection and its value forwards or backwards.

Profile Database

The application comes with a range of example daily profiles that you can browse and add to your schedule using the Profile Database dialog box. You can also use this dialog to browse much larger repositories of daily profiles available on the web, however these can be quite large so you will need to download them to your local machine first.

Screenshot of Profile Library dialog.
Figure 3: The Profile Library allows you to browse through and preview large numbers of example profiles.

The most comprehensive repository I have found is available from the NREL OpenStudio Standards project on GitHub. It contains a file called OpenStudio_Standards_schedules.json in the standards subdirectory. Simply download this file and then drag/drop it anywhere within the schedule editor application window to open and browse it.

Another useful repository of profiles that you can open as a database is within your own OpenStudio installation. This is located inside the main installation folder at Examples/compact_osw/files/seb.osm. Again, simply drag/drop it anywhere within the application window to open it.

Import and Export Formats

When you open any of the file formats that may contain multiple schedules, the contents of the file will appear in the Import Schedule Data dialog and the application will try to parse out all components of the schedule information and display them in a selector at the bottom. You can use this selector to import just a single daily profile or an entire year schedule. If multiple daily profiles are present, the database button will appear next to the selector allowing you to visually preview them in the Profile Database dialog instead.

Screenshot of Import dialog.
Figure 4a: The Import Schedule Data dialog.
Screenshot of Export dialog.
Figure 4b: The Export Schedule Data dialog.

As mentioned previously, you can export schedules in a range of different formats using the Export Schedule Data dialog. The controls at the bottom of the dialog allow you to choose the output format and some format-specific options are displayed immediately after it. The one that needs some explanation is the name prefix that appears in EnergyPlus/OpenStudio formats. This allows you to use a different prefix for schedule components when you are generating more than one schedule to be amalgamated into an existing file.

The Show Units checkbox allows you to switch between the default fractional values and the currently set units type in the SCHEDULE SETTINGS popup.

Selecting Date Ranges

You can select any range of dates by simply pressing and holding the pointer in the week/day grid and then dragging a box over the days and weeks required. You can add to or remove from the selection set by holding down the SHIFT key before and during the select action, or by changing the selection mode using the three linked icon buttons in the middle of the top toolbar. To clear the selection set entirely, either click/tap in an empty area of the week/day grid or double-click/tap any square.

The selection mode buttons shown in yellow.
Figure 5a: Select groups of days interactively...
Using the Select Date Range popup.
Figure 5b: ...or use the Select Date Range popup.

You can also use the SELECT DATE RANGE popup to select by season, month or your own specific start/end dates. The buttons at the bottom of the dialog allow you to add to, remove from or change the current selection set.

Week/Day Grid Displays

The week/day grid shows which profiles are assigned to which date ranges based on colour coding. Each profile has a specific colour which you can change at any time using the colour button immediately beneath its thumbnail preview. You can also choose to show the actual profile index assigned to each day as a number at its centre using the Overlay Text item in the WEEK/DAY GRID SETTINGS popup. The other options of showing the day of the month or the Julian day of the year can also be useful.

Choosing what data to display in the week/day grid.
Figure 6a: Customise the information displayed...
Customising the week/day grid layout.
Figure 6b: ...and the layout of the week/day grid.

Whilst the layout of the week/day grid attempts to adapt appropriately to different screen sizes and orientations, you can also customise this using the Layout tab in this popup. These controls allow you to set the size of the grid and how to split it at different months. If you set the grid to being larger than its canvas, you will need to use the middle or right mouse button or two fingers to scroll around.

Schedule Units and Value Range

In some cases, you may need to use specific units and an absolute value range instead of relative modifiers. To do this, use the SCHEDULE SETTINGS popup and choose one the various recognised unit types. Whilst gbXML and CSV data files can be quite flexible in the type of units used, EnergyPlus and OpenStudio are much more specific and require only certain quantity types and units. To promote consistency and elucidate these constraints, this version of the app only allows you to select from this restricted set of units rather than entering your own.

Setting the units and value range.
Figure 7a: Setting the type of units and value range.
Figure 7b: Stepped profiles clarify time assumptions.

Design Considerations

The aim of this tool is to be both functional and educational. To make its interface and operation as simple and intuitive as possible, some design decisions have been made which may appears to limit its applicability to all situations. However, this is my first take at the problem so I am more than happy to hear criticisms and/or suggestions as to how to overcome this.

There are two primary decisions that I probably have to justify:

1. Hourly Time Steps

Whilst I have made sure that the underlying data structures and profile editors are capable of handling time steps of any size, this initial version of the app is currently limited to hourly profiles. I will look at adding the ability to specifically set the time step in a later version, but I need to research how to properly interpolate between profiles with significantly different time steps as I have yet to find any repositories of example daily profiles that are not hourly.

2. Removing the Week Layer

Some advanced users will notice that this app uses a two layer approach to schedules rather than the three layer approach used in EnergyPlus/OpenStudio. As the Schedule:Week data can be easily determined and generated automatically from a day/year schedule, requiring users to first assign days to week types and then assign those across the year seemed an unnecessary and unintuitive abstraction.

In this app, users assign daily profiles directly to each day of the year as well as to all the virtual/flexible days required by some tools, and those virtual/flexible days then apply to the week in which they occur. This means that the date ranges output in a generated Schedule:Year will always start on a Monday and end on a Sunday (except the very first and last ones, which will always be 1,1 and 12,31 regardless).

This is only an issue if, for example, the daily profile of a holiday would be different if it occurred on a Monday or Tuesday compared to any other day later in the same week. In any situations where this might be important, it is highly likely that the analyst would be very aware of the relevant date boundaries. Thus, once the export schedule is generated and displayed in the Export Schedule Data dialog, all that is required is a manual edit of two dates in the Schedule:Year before actually exporting it, as shown below. The rest of the generated schedule remains unchanged.

Schedule:Year,
  PD_Schedule,
  PD_Type_Fraction,
  PD_Week_000, 1,1, 4,22,      !- Change from Sunday(4,22) to Tuesday(4,17)
  PD_Week_001, 4,23, 9,2,      !- Change from Monday(4,23) to Wednesday(4,18)
  PD_Week_000, 9,3, 12,31;

Change Log

0.0.1 2018-06-08

  • Initial release.

Click here to comment on this page.