Simulating a Neighborhood of Homes to Test the Performance of Load Management Software

The Scalable Load Management Quality Assurance deployment architecture, currently deployed on Amazon Web Services. Research Software Engineering ORNL
The Scalable Load Management Quality Assurance deployment architecture, currently deployed on Amazon Web Services. In the upper left is the Virtual Machine (VM) responsible for gathering neighborhood wide information and displaying the UI. In the bottom left is the DynamoDB database that contains all information gathered and created. In the middle are the three VMs meant to manage 15 homes each, collecting their information and using machine learning to make decisions about how to configure their devices. On the right are the three VMs containing the simulated neighbor, each responsible for simulating 15 of the homes.


Created and deployed simulators for 45 homes and used them to establish the performance, speed, and reliability of load management software over a period of weeks.

Significance and Impact

This work provides a solution for the testing of software meant to interact with IoT devices through creating mockups of their APIs backed by the real time simulation of diversely configured homes

Research Details

  • ​​​​​​Created a Java API simulator for several kinds of devices
  • Fed information to the mock devices from a simulated home, itself controlled by the device instructions sent to the mock API.
  • Deployed 45 simulated homes onto AWS with the Scalable Load Management project’s code using them to test its performance


A problem often faced in the management of home by software is testing. Having only a small number of homes with installed devices but not inhabited by real users, only one or a few versions of the software can be tested for defects and performance, making the deployment of new versions risky. A simulated neighborhood of homes allows this kind of software to be tested for defects and reliability issues and its performance measured. The simulator for an individual home consists of a Java web server using Spring-Boot. This server mimics the Application Programming Interface (API) of several devices, currently a CR3000 data logger, Ecobee thermostat, and Skycentrics water heater. The data for the homes provided by the API is created by a Python simulated home, which simulates conditions in the home over time given inputs such as the current outdoor temperature and heat set points for the thermostats. These inputs can in turn be provided by calls to the API, such as when the system decides to make a change to the thermostat’s temperature. Multiple homes can be run from each simulator by running multiple simulations, which can be given different starting conditions and configurations to simulate for the diversity of homes across a neighborhood. Since the API is identical between the simulator and the APIs of the real company, all that needs to be done to move a system to using the simulator is to configure it to connect to the simulator’s address instead of the manufacturer provided one, and to ensure that both the simulator and system have the same identifying information for devices, such as ID numbers of names. The Scalable Load Management system has been deployed to Amazon Web Services along with a simulated neighborhood of 45 homes and run for periods of weeks to help in the identification of potential issues with performance as the system scales upward from managing a single physical home.

Last Updated: January 14, 2021 - 8:21 pm