Nonintrusive load monitoring, or nonintrusive appliance load monitoring, is a process for analyzing changes in the voltage and current going into a house and deducing what appliances are used in the house as well as their individual energy consumption. Electric meters with NILM technology are used by utility companies to survey the specific uses of electric power in different homes. NILM is considered a low-cost alternative to attaching individual monitors on each appliance. It does, however, present privacy concerns.
Nonintrusive load monitoring was invented by George W. Hart, Ed Kern and Fred Schweppe of MIT in the early 1980s with funding from the Electric Power Research Institute. The basic process is described in. As shown in figure 1 from the patent, a digital AC monitor is attached to the single-phase power going into a residence. Changes in the voltage and current are measured, normalized and recorded. A cluster analysis is then performed to identify when different appliances are turned on and off. If a 60-watt bulb is turned on, for example, followed by a 100-watt bulb being turned on, followed by the 60-watt bulb being turned off followed by the 100-watt bulb being turned off, the NIALM unit will match the on and off signals from the 60-watt bulb and the on and off signals from the 100-watt bulb to determine how much power was used by each bulb and when. The system is sufficiently sensitive that individual 60-watt bulbs can be discriminated due to the normal variations in actual power draw of bulbs with the same nominal rating. The system can measure both reactive power and real power. Hence two appliances with the same total power draw can be distinguished by differences in their complex impedance. As shown in figure 8 from the patent, for example, a refrigerator electric motor and a pure resistive heater can be distinguished in part because the electric motor has significant changes in reactive power when it turns on and off, whereas the heater has almost none. NILM systems can also identify appliances with a series of individual changes in power draw. These appliances are modeled as finite state machines. A dishwasher, for example, has heaters and motors that turn on and off during a typical dish washing cycle. These will be identified as clusters, and power draw for the entire cluster will be recorded. Hence “dishwasher” power draw can be identified as opposed to “resistor heating unit” and “electric motor”.
Applications
"Extremely cost-effective" load identification
Cheap detection of startup transients, line or equipment faults, etc.
Perform surveys of both residential and commercial energy consumption.
Monitor systems on-board ships for safe systems operation with fewer sensors.
Privacy concerns
NILM can detect what types of appliances people have and their behavioral patterns. Patterns of energy use may indicate behavior patterns, such as routine times that nobody is at home, or embarrassing or illegal behavior of residents. It could, for example, reveal when the occupants of a house are using the shower, or when individual lights are turned on and off. If the NILM is running remotely at a utility or by a third party, the homeowner may not know that their behavior is being monitored and recorded. A stand-alone in-home system, under the control of the user, can provide feedback about energy use, without revealing information to others. Drawing links between their behavior and energy consumption may help reduce energy consumption, improve efficiency, flatten peak loads, save money, or balance appliance use with green energy availability. However the use of a stand-alone system does not protect one from remote monitoring. The accuracy and capability of this technology is still developing and is not 100% reliable in near-real-time, such that complete information is accumulated and analyzed over periods ranging from minutes to hours.
Software
A framework for non-intrusive load monitoring and diagnostics contains code listings for an implementation
Non-Intrusive Load Monitoring Toolkit - An open source project written in Python