Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

EMS People Actuator not working

asked 2021-08-18 21:04:55 -0600

mechyai gravatar image

updated 2021-08-19 20:41:38 -0600

I have tried various methods to control the people count in a zone with Python EMS API 0.2 and have not had any success. There are no E+ errors, but no control is exhibited. It still follows the 'Number of People Schedule Name' schedule field of the People object. (People object documentation in 1.14.1 Input Output Reference)

I am using the Small Office DOE Prototype building which was 5 zones total; 4 perimeter zone and 1 central core zone. I will quickly walk through the documentation and my process to explain.

Using the .edd file, I am able to look up the 'EnergyPlusSystem:Actuator' elements available for my model, as seen below. These were generated from the single default 'People' object in my IDF that includes all zones via the WHOLEBUILDING 'ZoneList' field that includes all zones.

image description

From the available people actuators above: "People" is the actuator name, "Number of People" is the control type, units are in people, and the unique identifier (ex: CORE_ZN ZN OFFICE WHOLEBUILDING - SM OFFICE PEOPLE) is the name of the people input object (People actuation documentation in 5.4.1 Application Guide for EMS).

Except, these people objects do not exist in my model, only the default whole building people object that generated these elements in the .edd does.

So, I went about creating another People object only for the CORE_ZN, just for testing. Thus, I removed the CORE_ZN from the WHOLEBUILDING People Object's 'ZoneList' and created a new People object just for the CORE_ZN, named the unique identifier given in the .edd - CORE_ZN ZN OFFICE WHOLEBUILDING - SM OFFICE PEOPLE.

image description

At this point, all required objects are created and linked together without any errors. However, EMS does NOT give me control and still follows the schedules in the 'People' object. I cannot get rid of any of these fields as they are all required.

Any ideas? Thanks

edit retag flag offensive close merge delete


A workaround for this is to control the "Number of People Schedule" schedule attached to the "People" object, instead. I did this by creating a new "Schedule:Constant" schedule just for EMS control and replaced the original "Number of People Schedule". This gave me full control of people in the zone, however, this is a workaround and less desirable

mechyai gravatar image mechyai  ( 2021-08-19 11:16:43 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2021-08-22 17:39:01 -0600

mechyai gravatar image

From @bonnema, the solution is to change the "Number of People Schedule" to a constant value of 1. That way the only thing will be influencing the multiplicative equation of the number of people in the zone is the "Number of People Calculation Method" and the "People Actuator".

Note: # of people in the zone = "Number of People Schedule" x "Number of People Calculation Method" x "People Actuator value"

For instance, below I have set the calculation method to "People", and set that max # of people in a zone to 5. Then my linked "Number of People Schedule" is a discrete constant schedule set to 1. Now, using the people actuator, I can use values [0,1] to change the number of people from [0,5]. (Note: Actuator values must be [0,1], and use the people calculation method as the MAX # of people in the zone)

image description

edit flag offensive delete link more


A more universal solution may be to "sense" the value of the number of people schedule name, then actuate the number of people as the desired value divided by that "sensed" value.

bonnema gravatar image bonnema  ( 2021-08-22 17:54:30 -0600 )edit

@bonnema based on some quick tests, I saw that the valid actuation range is [0,1], everything greater defaults to 1. Also, I don't think this will work when the number of people schedule is 0, since multiplying by 0.

mechyai gravatar image mechyai  ( 2021-08-22 22:55:45 -0600 )edit

I agree that schedule values of zero would always result in zero people. Based on the documentation any value is allowed. I would bet your schedule has type limits of zero to one. Regardless, I think you have a solution or two.

bonnema gravatar image bonnema  ( 2021-08-23 09:09:25 -0600 )edit

answered 2021-08-21 14:00:46 -0600

I have a feeling the value of number of people schedule name is still multiplied by the number of people after it is actuated, and that is why you're not seeing the desired result. Have you tried changing the number of people schedule to always have a value of 1? That might solve the issue.

edit flag offensive delete link more


Yes, that is the solution! Thank you, I will post the answer.

mechyai gravatar image mechyai  ( 2021-08-22 17:33:20 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Training Workshops

Question Tools

1 follower


Asked: 2021-08-18 21:04:55 -0600

Seen: 154 times

Last updated: Aug 22 '21