A system for controlling a plurality of power consuming devices, comprising: a plurality of nodes, each node comprising: a power monitor configured to measure the power consumption of a power consuming device attached to the node, the power consuming device being supplied with power from the node; and an input-output, I/O, interface configured to produce control signals that are sent to the power consuming device attached to the node; wherein status data of each node comprises sensor data received from a sensor attached to the I/O interface, power consumption data measured by the power monitor and the current value of control signals produced by the I/O interface; a gateway that communicates with the plurality of nodes, wherein the gateway receives status data from said nodes, the gateway buffering status data from the nodes; a controller configured to send command signals to said nodes via said gateway, wherein one of the command signals is a request for node status data, the gateway being configured to respond to the request for node status data command signal using the buffered data; wherein the controller comprises a data store storing region data defining at least one region and data associating each node with a region, each region representing a physical area, the data store further storing target profile data defining a desired operating profile, and data associating each region with a target profile, the controller configured to store node status data received from the gateway in the data store; the controller including a command generator that determines command signals for a node, the command generator comprising a rules engine and a store of command rules, the rules engine being configured to operate on the store of command rules and utilise data in the data store and association data, including that node's status data and the associated target profile data, to generate command signals to send to that node, each node providing control signals to a corresponding power consuming device in response to a command signal received from the controller. a plurality of nodes, each node comprising: a power monitor configured to measure the power consumption of a power consuming device attached to the node, the power consuming device being supplied with power from the node; and an input-output, I/O, interface configured to produce control signals that are sent to the power consuming device attached to the node; wherein status data of each node comprises sensor data received from a sensor attached to the I/O interface, power consumption data measured by the power monitor and the current value of control signals produced by the I/O interface; a gateway that communicates with the plurality of nodes, wherein the gateway receives status data from said nodes, the gateway buffering status data from the nodes; a controller configured to send command signals to said nodes via said gateway, wherein one of the command signals is a request for node status data, the gateway being configured to respond to the request for node status data command signal using the buffered data; wherein the controller comprises a data store storing region data defining at least one region and data associating each node with a region, each region representing a physical area, the data store further storing target profile data defining a desired operating profile, and data associating each region with a target profile, the controller configured to store node status data received from the gateway in the data store; the controller including a command generator that determines command signals for a node, the command generator comprising a rules engine and a store of command rules, the rules engine being configured to operate on the store of command rules and utilise data in the data store and association data, including that node's status data and the associated target profile data, to generate command signals to send to that node, each node providing control signals to a corresponding power consuming device in response to a command signal received from the controller.