Controlled storage consumption when logging data values
Dynamic data binning in smart circuit breakers or energy monitoring devices addresses the storage capacity issue by grouping data into bins with counts, enabling efficient logging and analysis of electrical parameters, thereby optimizing storage usage and maintaining data integrity.
Patent Information
- Application Number
- PCT/US2024/030918
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-05-24
- Publication Date
- 2025-11-27
AI Technical Summary
Existing systems lack sufficient storage capacity to maintain sampled data values for a desired duration, particularly in devices like smart circuit breakers or energy monitoring devices, limiting their ability to analyze electrical parameters effectively.
Implement a method of dynamic data binning where data points are grouped into bins defined by numerical subranges, with each bin maintaining a count of samples, allowing for efficient storage and analysis of electrical parameters without extensive storage requirements.
This approach enables efficient logging and analysis of electrical parameters, identifying anomalies in circuit behavior while minimizing storage needs, thus optimizing storage usage and maintaining data integrity.
Smart Images

Figure US2024030918_27112025_PF_FP_ABST
Abstract
Description
CONTROLLED STORAGE CONSUMPTION WHEN LOGGING DATA VALUESBACKGROUND
[0001] This disclosure relates generally to controlling consumption of a storage device in a system, and more particularly to controlling consumption of storage when logging data values.
[0002] It is desired in various scenarios to obtain and log data values. In a particular example, it is desired to analyze electrical parameters of electrical loads connected to circuit breakers in order to perform analytics for an end user and characterize those loads. One goal may be to quickly identify and inform a user of an unexpected change in load performance to help them identify possible issues. By learning about the consumption of a circuit breaker in a load center, this enables alerting a user when the load begins to perform in an unexpected way. In an ideal situation, the devices / systems involved in the capture and maintenance of data values representative of electrical properties of a circuit or other load would provide sufficient storage space to save large amounts of raw data for processing. However, the storage capabilities, e.g., amount of storage space available, of such devices are often significantly limited. A smart circuit breaker or physical energy monitoring and control device, for instance, may not provide the storage capacity needed to maintain sampled data values for a desired length of time.SUMMARY
[0003] Shortcomings of the prior art are overcome and additional advantages are provided through the provision of a method. The method includes various steps. One step is sampling a parameter of an electrical load at various points in time across a timeframe. The sampling provides a plurality of parameter values, each of the plurality of parameter values corresponding to a respective point in time in the timeframe. Another step is maintaining a plurality of data value groups. Each data value group of the plurality of data value groups is defined by a respective numerical subrange of an overall numerical range. The maintaining maintains, for each data value group of the plurality of data value groups, a count indicating a number of sampled parameter values falling in the numerical subrange defining the data value group. Another step is controlling consumption of the storage device in logging theplurality of parameter values. The controlling includes, for each parameter value of the plurality of parameter values provided by the sampling, and based on obtaining the parameter value, logging the parameter value. Logging the parameter value includes identifying a data value group, of the plurality of data value groups, defined by a numerical subrange into which the parameter value falls, and incrementing the count maintained for the identified data value group.
[0004] Additional aspects of the present disclosure are directed to devices and computer program products configured to perform the methods described above and herein. The present summary is not intended to illustrate each aspect of, every implementation of, and / or every embodiment of the present disclosure. Additional features and advantages are realized through the concepts described herein.BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Aspects described herein are particularly pointed out and distinctly claimed as examples in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the disclosure are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
[0006] FIG. 1 depicts an example histogram of power consumption of a bimodal load based on dynamic data binning, in accordance with aspects described herein;
[0007] FIG. 2 depicts an example representation of power consumption of a load over a duration of time;
[0008] FIGS. 3A-3C depict an example progression in bin states after logging a number of samples in accordance with aspects described herein;
[0009] FIG. 4 depicts an example bin state and segmentation of data value groups, in accordance with aspects described herein;
[0010] FIGS. 5A-5B depict an example of bin decimation, in accordance with aspects described herein;
[0011] FIGS. 6A-6B depict an example progression in bin states in a fixed bin scenario after logging a number of samples, in accordance with aspects described herein;
[0012] FIG. 7 depicts an example bin state and segmentation in a fixed binning scenario, in accordance with aspects described herein;
[0013] FIG. 8 depicts an example representation of power consumption of another load over a duration of time;
[0014] FIGS. 9A-9B depict an example progression in bin states after logging a number of samples, in accordance with aspects described herein;
[0015] FIG. 10 depicts an example of pre-consolidation, binned idle mode data and associated bin consolidation metrics, in accordance with aspects described herein;
[0016] FIGS. 11 A-l IB depict post-consolidation bin states after a consolidation action, in accordance with aspects described herein;
[0017] FIG. 12 depicts an example bin state after a decimation action, in accordance with aspects described herein;
[0018] FIG. 13 depicts an example bin state after a splitting action, in accordance with aspects described herein;
[0019] FIG. 14 depicts another example of post-consolidation bin states after a consolidation action, in accordance with aspects described herein;
[0020] FIGS. 15-22 depict example processes for controlling consumption of a storage device in a system when logging data values, in accordance with aspects described herein; and
[0021] FIG. 23 depicts an example system to incorporate and / or use aspects described herein.DETAILED DESCRIPTION
[0022] Described herein are approaches for controlling consumption of a storage device in a system that logs data values. Example data values are parameter valuessampled at various points in time across a timeframe. The sampling can provide data values sampled periodically and / or aperiodically, with each data value corresponding to a respective point in time in the timeframe. The data values could be, in examples, parameter values of a load, for instance electrical parameters of an electrical load. Example parameters could be, for instance, a current, a power, a voltage, or a frequency reading of the electrical load. An electrical load may be the electrical load of a circuit, for instance. Examples presented herein involve sampled electrical parameters, though aspects described herein may be applied to logging and analysis of any type of data value desired.
[0023] In the electrical context, aspects enable efficient logging of sampled electrical parameters to learn about the consumption of a circuit breaker in a load center panel, for instance to detect anomalies on a circuit by looking at energy usage of the circuit, without the need for extensive amounts of nonvolatile storage. Aspects described herein could be implemented on any of various types of devices. By way of specific example, the device might be one that mounts within or proximate a circuit breaker panel, and connects and receives sampled values via a wired or wireless connection to current transformers, communication-enabled circuit breakers, or other device(s) capable of sampling electrical parameters and providing the parameter values to the device for logging thereof. The device could collect energy usage information, for instance direct voltage and / or current measurements, to log and optionally perform analysis or other calculations on the sampled data. In some examples, the device is in wired or wireless communication to a remote or cloud server that performs analysis on the logged values.
[0024] As explained in further detail herein, sampled data points (in the form of data / parameter values) forming a device history are not retained directly beyond an amount of time needed to increment one or more counts. That is, counts are maintained for data value groups, the counts indicating the number of sampled data points within data ranges defining the different groups. Thus, instead of storing each data point individually, aspects herein present the concept of data value groups (also interchangeably referred to herein as ‘bins’ for convenience) in which a sampled data point is logged by increasing a count of a corresponding bin. In this manner, the accumulation of data points in the bins is reflected by the count maintained for the bin.
[0025] Thus, aspects maintain a plurality of bins. Each bin is defined by a respective range, for instance a numerical range, and each of the ranges defining the different bins could be subranges of an overall numerical range. A range (including a subrange of a larger range) may be a continuous range, and thus each bin can be defined by a respective numerical subrange that is a continuous numerical subrange of the overall numerical range. The continuous subrange defining any given bin can be mutually exclusive of (i.e., does not overlap) the continuous subrange(s) that define the other bins. Thus, if the subrange defining one bin covers the data values 0 through 3 (inclusive), no other subrange defining any other of the bin(s) of the plurality would cover any value from 0 through 3. Though the subranges defining bins are continuous numerical subranges in examples discussed herein, subranges need not necessarily be continuous. They could, for instance, cover a finite set of values (for instance a range 0 through 10 when sample values must be a whole number).
[0026] The maintenance of bins maintains, for each bin, a count indicating a number of sampled parameter values falling in the subrange defining the bin. As described in further detail below, bin maintenance can also include activities to add, remove, consolidate, split, resize, and decimate bins, as examples. Aspects herein are described with respect to a plurality of bins that are maintained for a given scope (load, circuit, or other entity to be monitored). However, if multiple different scopes, for instance loads, individual branch circuits, etc., are to be monitored and analyzed separately, then a respective plurality of bins many be maintained for each such scope, and bin maintenance actions described herein may apply to the respective plurality of bins being maintained for a respective scope. In other words, bin maintenance performed for one plurality of bins may be performed without regard to the maintenance actions being performed for another plurality of bins.
[0027] The consumption of a storage device can be controlled in logging parameter values by way of the bin counts maintained for the bins. For each parameter value provided by sampling, and based on obtaining the parameter value, a process can log the parameter value by identifying a bin defined by a continuous numerical range into which the parameter value falls and incrementing the count maintained for the identified bin. In this manner, when a new sample arrives, an attempt is made to ‘place’ it into an existing bin; if a bin defined by a range into which the sample falls is found, the count of samples of that bin is incremented. If thesample does not fit into an existing bin - meaning no bin of the plurality is found that is defined by a range into which the sample falls - then a new bin defined by a range into which the sample falls can be created. A histogram of the data can be produced from the maintained counts across the plurality of bins. In the case of electrical parameters values, this histogram can describe the associated load. Although some information, for instance the order in which data points arrive, is lost in this logging approach, useful information can be extracted from the binned data.
[0028] As noted, details and examples are described herein with reference to electrical parameters and power for a circuit / load though it should be understood that aspects could be applied and used for logging and analysis of other properties, including other numerical properties.
[0029] Aspects can be incorporated into and / or used with existing systems that process power consumption of devices, for instance circuit breakers of a load center. Processes described herein could be implemented by smart circuit breakers and / or energy monitoring devices, for instance the Whole Home Energy Monitor line of devices offered by Leviton Manufacturing Co., Inc. of Melville, New York, USA. Implementing devices could interface with circuit breaker devices to sample and log electrical parameters of the monitored circuits. By way of specific example, the power consumption of each breaker may be sampled periodically, for instance every 60 seconds. The sampled parameter values can be added to bins maintained for each breaker. In this regard, the samples for each circuit could be binned in a way that distinguishes them from the samples of other circuits, for instance by maintaining different sets of bins for each circuit or by maintaining a respective count for each circuit for each bin, as examples. In some examples, the smart breakers themselves perform the binning and bin maintenance described herein, while in other examples the process is performed by an energy monitoring device in communication with the smart breakers.
[0030] The counts of the bins can be used for analysis, including, for example, building and outputting a histogram of the parameter values provided by the sampling. In a scenario where the parameter values are measured values of power consumption by a circuit of a load panel, the circuit providing power to a load, the histogram describes a history of the power consumption of a load across thetimeframe during which the samples were obtained. Assumptions can be made about load modes when the load functions properly, for instance that the load is bimodal in which it is in either an ‘off / idle’ state or an ‘on / active’ state. A segmentation or other group analysis algorithm may be run on the binned data to determine separations between the idle and active states. Other analyses could determine average idle and active power levels, for example. With this information, processing can further attempt to identify, on a historical and / or ongoing basis, any significant deviations from these levels and raise alerts to users about anomalous load behavior when appropriate.
[0031] FIG. 1 depicts an example histogram of power consumption of a bimodal load based on dynamic data binning, in accordance with aspects described herein. The x-axis indicates power readings in Watts (W) which describe the bins, and the y-axis provides the sample counts for each of the bins at this point in time. The histogram is therefore represented by respective vertical bars for each bin, and the height of each bar represents a point-in-time snapshot of the sample count of that bin. The histogram in FIG. 1 approximates two distinct distributions: a first distribution 102 around approximately 600 W and a second distribution 104 around approximately 1450 W.
[0032] Each bin has a respective ‘width’ corresponding to the continuous range of data values (in Watts in this example) that define the bin. The ranges are continuous and mutually exclusive (non-overlapping) of each other in this example. Further, the ranges are all subranges of an overall numerical range, for instance a range of 400 to 1600 Watts. It is seen that bin widths vary across the bins, tending to be smaller toward the center of the distributions and wider towards the outside of the distributions. Setting and changing bid width is described in further detail below and can be useful for maintaining precision.
[0033] With respect to bin setup, each bin can be described by a minimum and a maximum value - in the example of FIG. 1 the value indicates power in Watts. In situations where two bins may be ‘touching’, for instance where one bin’s maximum power may be specified by the same as another bin’s minimum power, then for these purposes the power may be taken as being inclusive in the lower range, as its maximum, or the higher range, as its minimum. Using common interval notation, bin 1 could be defined as the range [0,1) and bin 2 could be defined as the range [1,2], orbin 1 could be defined as the range [0,1] and bin 2 could be defined as the range (1,2]. Alternatively, this could be avoided entirely by setting the system up in such a way that bins are not defined using same-value endpoints.
[0034] As yet another example, bins could be described by a center point and a width, which is semantically different than the above but which provides an identical result in terms of defining a value range that, in this case, is continuous. It is noted that ‘continuous’ in the context of defining a range for a data value group need not imply that the system might theoretically receive samples of any value falling within that range. In many situations values are sampled to only some finite precision, for instance tenths of a decimal place. In this case, the only practical sample values that would be binned into a bin defined by the continuous range [0, 0.5) would be 0.0, 0.1, 0.2, 0.3, and 0.4, even though the range [0,0.5) encompasses values between these practical values.
[0035] Each bin has a corresponding count of the number of samples that have been received within some bounded timeframe and that have a respective value falling within the range that defines that bin. The construction or implementation of a data value group (bin) within / on a device could be done in any desired manner. One example is to maintain the bin as part of a table or other data structure indicating the value range for the bin, the count described above, and any other data to be maintained as part of or with the data value group. In a particular example, bins are implemented and their associated data stored in a sorted doubly-linked list. Depending on a threshold set for the maximum count of a bin, the count could be maintained using just a relatively small portion of memory, perhaps just one byte (or less) of storage regardless whether each value consumes one or several bytes of data. In this way, a hundred sampled values that fall within a bin range and that might, if stored and maintained, consume hundreds or thousands of bytes can be logged in just one byte of storage as the count maintained for the bin.
[0036] In addition to a sample count, maintenance of a data value group could also include saving a count indicating a number of samples since a last decimation action (may also be referred to as ‘group scaling’ herein) was performed for the bin. This count could be reset when a decimation action occurs. The decimation action is described elsewhere herein.
[0037] In logging an incoming sample upon arrival of a new sample, a process can search for an existing bin into which the incoming sample fits. Thus, there may be an initial determination whether any of the zero of more bins then being maintained for logging values of the given scope is defined by a numerical range into which the sample falls. If a bin is found, its count is incremented. If using a ‘samples since last decimation’ count, this count is also incremented.
[0038] If the sampled value falls into a range for which there is currently no existing bin, there are various options for how to proceed, as explained below. One option is to add a new bin to the group of bin(s) being maintained, with the new bin being defined by a range that encompasses the sampled parameter. The new bin can be defined by a continuous range that is mutually exclusive of the continuous ranges defining each other maintained bin. Another option is to expand the range defining an existing bin such that the expanded range encompasses the sampled value. In either case, what results is a bin that is identified for the value and for which its count is incremented to log the value. If using a ‘samples since last decimation’ count, this count is also incremented.
[0039] In a specific example of processing to log a new sample for which initially no bin exists, the processing first attempts to create a new bin for the sample. The new bin is created with a width, and can be either centered on the new sample value, or can be forced into a fixed alignment (for instance between two existing bins). The benefit of alignment is that it can be used to avoid an issue of bin overlap. In any case, the initial width selected should encompass the new sampled value.
[0040] The initial bin width could be selected as a predefined, default size or as a function of some variable. For instance, the width could be a fixed default.Alternatively, the initial width could be determined as a function of the sample value itself, e.g., in the example of power consumption sample values, the initial bin width could be made to scale linearly with the sample value.
[0041] To avoid an overlap situation, the process could determine whether, using the initial width, the covered range overlaps the range of any other existing bin being maintained for this scope. If there is no overlap, the bin is added to the collection of bins being maintained and the sample is ‘added’ to the newly added bin by incrementing the count of samples for that bin. Specifically, the count may beincremented to 1 since at this point it is the first and only sample binned into this new bin. If using a ‘samples since last decimation’ count, this count is also incremented.
[0042] If instead the proposed new bin overlaps on one end (but not both) with an already-existing bin, the range defining the proposed new bin can be shifted to eliminate the overlap. The case of an overlap at one end of the initial range occurs if the low end of the initial range or the high end of the initial range overlaps any range covered by another bin. In this case, the range of the proposed new bin cab be shrunk by shifting the low end to a higher value or the high end to a lower value, as the case may be, to remove the overlap. At this point the bin may be added to the collection and the sample added to the new bin by incrementing the count. If using a ‘samples since last decimation’ count, this count is also incremented.
[0043] If instead the proposed new bin overlaps at both ends (low and high) with two already -existing bins, meaning it overlaps, at its low end, a first range of a first existing bin and, at its high end, a second range of a second existing bin, there is not enough room for the new bin between to first and second existing bins. In this case, the process expands the first range of the first exiting bin or the second range of the second existing bin to redefine the first bin or second bin, respectively, with an expanded range. More specifically, either the high end of the first bin will be increased to encompass the sample value and possible even higher values, or the low end of the second bin will be decreased to encompass the sample value and possibly even lower values. Any strategy for selecting which bin to expand can be employed. One example strategy selects the bin that is nearest the sample value. The count of the expanded existing bin is then incremented. If using a ‘samples since last decimation’ count, this count is also incremented.
[0044] Bin consolidation, also referred to herein as data value group consolidation, may be undertaken as part of bin maintenance. There are various triggers that might cause the system to consolidate a set of (i.e. two or more) bins. One trigger could be when the addition of a new bin brings the total number of bins for the given scope above a threshold, such as a desired maximum number of bins. Since storage space may be limited, a maximum desired number of bins may be specified to reduce the storage demand associated with bin maintenance for a given scope. Bin consolidation could be triggered by other occurrences, for instance achange to the maximum bin threshold or based on determining that available storage space has decreased to some threshold amount, as examples.
[0045] In bin consolidation, a set of bins is consolidated into a single bin that replaces the set of bins. In examples described in further detail herein, the set of bins is a pair of (i.e., two) bins, though the set could include three, four, or more bins. In any case, the single bin that replaces the set of bins will be defined by a larger continuous range than those of the bins that were consolidated. More specifically, the bins being consolidated will necessarily cover at least two ranges, for instance two mutually exclusive ranges - one being less than each of the other(s) and one being greater than each of the other(s) - and the range for the consolidated, single bin will span from the low end of the lowest numerical range to the high end of the highest numerical range. In other words, the lower bound of the new bin (the consolidation of the bins) will be the lower bound of the lowest bin in terms of its defining range, and the upper bound of the new bin will be the upper bound of the highest bin in terms of its defining range. The then-current sample counts of the bins being consolidated can also be consolidated. That is, the count of samples maintained for the new bin group can be initialized as the sum of the counts indicating the number of sampled values of the bins being consolidated.
[0046] To determine which set of bins to combine, a process can evaluate bins in sets for potential contribution. Each set of bins evaluated can necessarily be adjacent bins. Adjacent bins are consecutive bins, meaning a set between which no other bin exists. In the case where it is a pair of bins being consolidated, no other bin is defined by any range existing between the two ranges defining the pair of bins. Bins that are touching are clearly adjacent because no value, let alone a range of values and therefore a bin, exists between them. Nevertheless, bins need not necessarily be touching to be adjacent; they could be separated by a value or value range as long as such value(s) are not covered by any other bin.
[0047] In an example of identifying the set of bins to combine, a respective metric may be calculated for each bin set (candidate set of adjacent bins), and the set with the best metric may be selected for consolidation. Various algorithms could be used to determine this consolidation metric. In general, the goal when selecting a metric may be to limit the impact of combining bins.
[0048] The metric can be determined as a function of various factors. One example factor is the total width of the new bin. The total width may be taken as the consolidated size of the continuous ranges of the bins proposed for consolidating, which could also encompass any range of values between the ranges defining the bins. For instance, if a pair of bins defined by ranges [0,1] and [2,3] are a candidate pair proposed for consolidation, then the total width of this consolidation - the size of the bin after consolidation - would be [0,3], which includes the ranges defining the bins being consolidated as well as the range (1,2) between these two ranges.
[0049] Another example factor may be the total sample count for the new bin, meaning a sum of the counts maintained for the bins of the candidate set. Yet another example factor is an effect of consolidating the bins of the candidate set on a group analysis algorithm to analyze the bins. An example group analysis algorithm is a segmentation that may be performed as described elsewhere herein. If consolidating a set of bins would, or could with some level of predictability, change the results of a segmentation performed against the bins, this may weigh against consolidating the set of bins, as an example.
[0050] In a specific embodiment, the consolidation metric for a set of candidate bins is determined as (Total Bin Count) * (Total Bin Width)2, where Total Bin Count is the count of the proposed consolidated bin, which is the sum of the sample counts of the bins proposed for consolidation, and Total Bin Width is the width of the proposed consolidated bin, which is the width of the range spanning from (i) the low end of the lowest range of the bins proposed for consolidating to (ii) the high end of the highest range of the bins proposed for consolidating. Thus, if considering bins in pairs for consolidation, the consolidation metric for a set of candidate bins is determined as (T otal Bin Count) * (T otal Bin Width)2, where Total Bin Count is the sum of the sample counts of the two bins proposed for consolidation, and Total Bin Width is the width of the range spanning from (i) the low end of the lower range of the two bins to (ii) the high end of the higher range of the two bins. In this case, the smaller the consolidation metric value the better, and the ‘best’ is the combination with the smallest consolidation metric.
[0051] Bin maintenance can also include decimating of bins, in which the count maintained for each bin of one or more bins is reduced. Due to storage space or otherlimitations, it might be desired to implement a maximum count of samples in each bin. If this maximum is reached for any given bin, this could be a trigger for decimating that bin. Other triggers for decimating are possible.
[0052] By way of example, a maximum sample count is set at 8500, where the count(s) of a selected one or more bins is / are reduced if the sample count of a bin reaches this maximum sample count. As one example, this subtracts the count maintained for each bin of the selected one or more bins by a same number. As another example, this divides the count maintained for each bin of the selected one or more bins by a same number, for instance it divides the sample count maintained for each bin by a positive real number, such as 2. Decimating in this way can keep the shape of a histogram of the data constant.
[0053] If using the ‘samples since last decimation’ count, then once decimation has occurred, this count can be reset to 0. Additionally, the decimation factor (2 in the above example) can be specific to each bin being decimated depending on how many samples were received since the decimation action was last performed. In other words, the amount by which a bin is decimated may be based on the count since last decimation maintained for that bin. In the most likely case, values in bins can be decimated more quickly when fewer samples are received over time, in order to cycle out inactive bins more quickly (by removing bins with relatively small counts). This can either be a fixed decimation factor based on the value being below some threshold, or it can be determined based on some function of the sample count since last decimation. A process might choose to remove the smallest bin (fewest in sample count) after decimation occurs. This can be used to force out less relevant data. It should be noted that while this could occur explicitly after decimation, it could alternatively be performed at any desired time.
[0054] The one or more bins against which the decimating action could be invoked could be selected as the collection of all of the bins being maintained for the given scope, or could be some proper subset of that collection. The subset could be a group of bins identified by any desired approach, for instance segmentation or other group analysis algorithm. For example, the bins to be decimated could be selected as only those that are within an identified one or more groups of bins, where bins of other group(s) are not decimated. This can have a benefit when one load mode onlyoccurs relatively infrequently, and is illustrated by way of an example below when discussing data segmentation. In this manner, the bin(s) to be decimated may be selected based on segmenting the plurality of maintained bins into a plurality of segments where each includes at least one bin, and the selected bins(s) for decimation are selected as the bin(s) of a selected one or more segments of the plurality of segments.
[0055] Bin maintenance could also include bin del etion / rem oval. As one example, a bin may be deleted after decimation if the count of samples falls below a certain threshold, though this is not the only example of when deletion could occur.
[0056] Bin deletion can occur for a selected one or more bins, for instance one or more bins that were part of a decimation action, or each of the plurality of bins being maintained for a given scope. When considering a group of bins(s) for deletion, bin counts can be considered. In one example, a specified number of smallest bin(s) of the group are deleted, in which the smallest n number of bins are deleted, where n is a positive integer. If n is 3, for instance, then the 3 smallest bins by sample count of that group may be deleted. Alternatively, all bins of the group with a sample count less than a threshold number, say 10, could be deleted. In yet another example, a bin is deleted upon consideration if the sample count for the bin is 0.
[0057] Bin maintenance can also include splitting a bin into two (or more) bins. By way of example, a process could determine to split the ‘largest’ bin that remains after a decimation action, though splitting need not necessarily be tied to decimating. ‘Largest’ in this context could be calculated using the same metric discussed above, i.e., (Total Bin Count) * (Total Bin Width)2.
[0058] In one example of bin splitting, a bin is split in half into two resulting bins, with each resulting bin getting half of the total sample count of the initial bin and each being half the range width of the initial bin. By way of example, if the initial bin is defined by the range [10,12] and has a sample count of 25, then this could be split into resulting bins defined by ranges [10,11) and [11,12], and sample counts of 12 and 13, respectively.
[0059] Bin splitting can be used to recover precision and prevent logged data value from ending up in just a few very large bins, it is also noted that a split couldimmediately trigger a bin consolidation action, for instance in the case that the split renders the number of total bins over a threshold maximum number of bins allowed for the scope.
[0060] In this manner, and based on a respective splitting metric for each bin of a set of candidate bins that are evaluated (with the candidate bins being all or just some of the plurality of maintained bins), a bin of the set of candidate bins is selected for splitting and then split, which includes defining two smaller bins from the selected larger one. The process defines a pair of new bins to replace the selected bin, where the pair of new bins are defined by adjacent continuous numerical ranges, and the pair of new bins include (i) one new bin defined by a continuous range having a low end set as the low end of the continuous range of the selected bin, and (ii) another new bin defined by a continuous range having a high end set as the high end of the continuous range of the selected bin. The two new bins may be non-overlapping with both each other and all other existing bins of the plurality maintained for the scope. Additionally, a first count for the one new bin and a second count for the other new bin are initialized such that a sum of the first count and the second count totals the count maintained for the selected bin.
[0061] Bin maintenance can also include reducing the width of a bin by reducing the size of the range defining the bin. This bin shrinking can serve to recover precision in the system. Bin shrinking can be triggered at any of various times. One example is after a decimation action that reduces the count(s) maintained for bin(s) as described above. Another example is after a group consolidation action that combines a set of bins. Yet another example is every n number of samples, i.e., after receiving a threshold number of samples since a latest bin width reduction. Yet another example is after a bin width grows to a certain threshold, i.e., the range defining the data value group reaches a threshold size, for instance based on a bin consolidation.
[0062] Various options exist for selecting which bin(s) to shrink and how to shrink them. Options can include one or more of the following: (1) shrinking all bins, or just the largest bins (based on some threshold), evenly, for instance by some factor or specific number; (2) shrinking all bins that were part of a decimation action; or (3) shrinking just the largest bin(s) as determined by some size metric that may or may not be based on bin width.
[0063] A process can perform bin analysis at any desired time. An example of this analysis is data segmentation, in which the data of the bins is processed using a segmentation algorithm to segment the bins into a number of groups, for instance two or more groups. Various options exist for performing this segmentation. In the context of power consumption by an electrical load with generally non-variable consumption other than between on and off states, it can be expected that the segmentation will identify two distinct power consumption groups as in the example depicted in FIG. 1. Other loads might exhibit more than two distinct power consumption groups.
[0064] In a particular example of segmentation, a process uses a 1 -dimensional variant of the Jenks optimization method for data clustering. The algorithm assumes that there are n number of groups of data in the set (where n is taken as the presumed number of power consumption modes, for instance) and makes an initial guess as to the segmentation point(s). In a bimodal load example, the initial guess may be in the middle (calculated by the means of the highest and lowest bin levels). For each resulting group, the average and variance of the group are calculated and the guess is moved toward the group with the higher variance. This may be repeated until the total variance no longer decreases.
[0065] An alternative algorithm may be a brute-force version of the above algorithm, and more specifically one that calculates the total variance for every possible split and then selects the split that results in the lowest.
[0066] Thus, in a particular example, a sampled parameter is an electrical parameter, a process segments a plurality of bins into a plurality of segments, and each such segment includes at least one bin of the plurality of bins and correlates to a respective electrical parameter state, for instance a power consumption state. The segmenting in this manner identifies a first segment indicative of, for example, an idle electrical parameter state and a second segment indicative of, for example, an active electrical parameter state. As noted, there may instead be three or more states, for example one being an idle state and two or more being active states at different consumption levels. This might be exhibited in the case of a load such as a fan having Off, Low, and High-speed settings.
[0067] Example outputs of a segmentation are the mean (average) value of each group, variance / standard deviation of each group, and / or a midpoint of the spacebetween adjacent groups, the latter of which could be used to decide a current state of a load, for instance whether / when the load is currently “idle” or “active”. In an example, it is assumed the / / -modal load is a 2-modal (bimodal) load, meaning it is either idle or active in terms of power consumption. Idle in this context does not necessarily mean that no power is consumed.
[0068] Since some loads may be / / -modal where n > 2, the segmentation algorithm can be configured to calculate how many modes exist within the data and to generate average levels for each. It is noted that a given load might have only a single operating mode (n = 1), without discrete states of active power draw (like idle and active) other than ‘ON’.
[0069] With modes identified, a process could compare electrical parameter states reflected by the segments to expected electrical parameter states of the load and / or to a current state of the load and identify unexpected electrical parameter state(s) reflected by the plurality of segments or the current state. For instance, if it is determined that what is supposed to be a bimodal load when functioning properly exhibits power consumption that clearly falls outside of the two expected modes, this can represent an anomalous electrical parameter condition with respect to the load. Anomalous conditions can indicate device failure or other issues with respect to the load, indicating potentially unsafe conditions that may be of concern to users. An appropriate alert or other notification can therefore be initiated and provided by a system identifying the anomalous condition.
[0070] When a parameter is taken / sampled, this produces a sample value. The value may be maintained in some medium, for instance a storage medium like volatile or non-volatile storage, as an example. In accordance with aspects described herein, this value is logged by incrementing the count maintained for an identified bin. Based on this incrementing, the storage maintaining the value can be freed. This may be particularly important when the logging occurs on devices with relatively little storage space and / or when the logging is performed for multiple different scopes (e.g., individual breakers). In a particular example, the device provides a buffer or other relatively small storage space for storing latest sample value(s). This storage space might be able to store only a single value, for instance. As new sample(s) are received, the older sample(s) may be overwritten (in the way of a circular buffer, forexample). Logging the values as described herein means that the samples values need not be maintained longer than it takes to increment the count of the appropriate bin. A bin count can be maintained in very little storage, for instance just one byte or smaller, whereas sampled values may each consume one or more bytes. By logging by way of a counter, this saves a significant amount of storage space while still providing data on which analyses can be performed. As for bin data retention (e.g. the counts and any other desired data / properties of them), these can be stored in allocated memory, and get saved to separate storage regularly, if desired.
[0071] Bin maintenance as described herein can include actions to dynamically create, resize, decimate, consolidate, and split bins. In some alternative embodiments, dynamic bin creation and other maintenance is avoided by using fixed bins predefined by ranges of equal spans / sizes to cover an overall input range of values (i.e., values into which the sampled parameter values must, or are expected to, fall). In this case, bin sizes are fixed and bins are not removed when there are no samples in them. This represents a simplification of the general case which avoids all or some bin management concerns (bin decimation may still be desired even in this case). The cost of such simplification is that precision of the system is lost, but this may be tolerable depending on the specific application.
[0072] Various examples of aspects described herein are presented with reference to additional figures as follows.
[0073] The following presents an example of power consumption of a small refrigerator as the load being monitored. FIG. 2 depicts an example representation of actual power consumption (y-axis, in Watts) of the refrigerator over a duration of 60 minutes (x-axis, in minutes). The refrigerator has two distinct power levels. When ‘idle’, it draws roughly 4 W of power, and while ‘active’ it draws between about 140 and 160 W of power. The active power level corresponds to the time when the refrigerator’s cooling cycle is active. By learning these two power levels, a process can alert a user if power consumption is outside of these ranges, as it may indicate that there is an issue with the device.
[0074] An example dynamic binning approach may be taken for logging power consumption of the refrigerator. In this example, the bins are defined by continuous numerical ranges that are non-overlapping, and consolidation actions evaluatepotential consolidation of bins sets of 2 bins (i.e., pairs). Initially, some parameters are set for the logging as follows:-Maximum bin count = 32 - this sets the maximum number of bins that may be maintained at any given time-Minimum bin width = 2 W - this sets the minimum width (continuous numerical value range) to define a bin. At 2 Watts, each bin must be defined by a range that spans at least 2 Watts-Bucket alignment = TRUE - Bucket alignment forces bins to fixed start and endpoints such that they do not overlap. These fixed points may be expressed as an algorithmic series, for instance, [0, 2, 4, 6, ... ), though any express! on / series that does not overlap could be utilized. Under this example series, when creating a new bin for the range [0,2), any reading in the range of [0,2) will trigger creation of this bin. Under this example, some precision may be lost, as the centerpoint of the bin would be identical regardless whether the received reading was 0.1 or 1.9, and the width is 2. However, this approach can simplify bin processing as the bins do not overlap each other.■Bucket consolidation metric = Lowest SSF - this specifies the approach for determining which pair(s) of adjacent bins to combine. SSF refers to ‘Small- Small-Few’, specifying (i) Small (S) width multiplied together (squared) and (ii) Few (F) meaning the total count of samples in fewest. The result is (T otal Bin Count) * (T otal Bin Width2, and the consolidation with the lowest result is selected, which attempts to minimize the effect of consolidating bins-Maximum bin size = 8500 samples - this sets the maximum number of samples in any given bin to be 8500-Decimation Value = .5 - this sets the factor by which a bin is decimated. At .5, the count will be halved-Bin split setting = On decimation, split highest SSF - this specifies the approach for determining which bin(s) to split. Here, it is the one(s) with the highest SSF ((Total Bin Count) * (Total Bin Width)2)
[0075] FIGS. 3A-3C depict an example progression in bin states after logging a number of samples, in accordance with aspects described herein. The bin states are presented in the form of a histogram with power consumption in Watts on the x-axes and bin sample count on the y-axes.
[0076] Referring initially to FIG. 3 A, no bins yet exist when the first sample arrives. Arriva of the first sample to log results in creation of a first bin. In this example, the first reading is in the [4,6) W range, which is taken when the load is in an idle state though it may not be known at that point in time that this corresponds to an idle state. In this example, the first reading is 5 W and, based on parameters for bin creation, a bin is created and defined by the range [4,6). FIG. 3 A shows the state of the bins (one bin in this example) after this first sample is logged. The count (1) for this bin is shown within the bar corresponding to this new bin.
[0077] Assume that the next several samples, specifically 14 of them, arrive and are also in the [4,6) W range. These are logged by adding them to the existing bin, i.e., increasing its count with each added sample. Eventually a sample arrives in the [2,4) W range. This falls outside of all other bins, meaning it does not fall within the continuous numerical range of any existing bin (of which there is just one at that point). Therefore, a new bin is created and added. FIG. 3B depicts the state of the bins at this point.
[0078] Eventually, the refrigerator cycles on and the first reading in the active range is processed. This reading is in the range of [166,168) W, so a new bin is created and added for it. The resulting bin state is shown in FIG. 3C.
[0079] At this point data from both modes of the system exist, though it may not be immediately possible to make that determination until further samples are obtained and logged. FIG. 4 depicts an example bin state and segmentation after additional samples are processed, in accordance with aspects described herein.
[0080] Variance curve 408 is used to demonstrate the segmentation between the two distinct modes 402 (idle) and 404 (active). Because of the limited range of the input in this example, bin consolidation was not necessary, and all bins remain at their original width of 2 W. A segmentation algorithm can comfortably determine the splitbetween the two groups corresponding to idle and active sections, find the mean of each group, and return the midpoint of the gap in between the two groups.
[0081] The variance curve 408 shows the parameter used for segmenting the two groups of bins, which is the total variance (added together) of the two groups if split at that point of the curve. A goal is to minimize the variance given that there are to be two separate groups of bins on the assumption or knowledge that this is a bi-modal load. If the bins were split such that only the first bin from the left is in one group and all of the rest of the bins were in the other group, this would result in a relatively high variance.
[0082] Here, a minimum in this variance curve exists in the second bin from the left, which indicates that the best split (lowest variance) between the two groups exists after this second bin from the left, i.e., after approximately 6 W. That results in a first group of bins that includes the two bins on the left (402), and a second group of bins that includes the several bins on the right (404).
[0083] FIGS. 5A-5B depict an example of decimation, in accordance with aspects described herein. FIG. 5 A depicts a bin state just before decimating takes place. Assume there are 8499 samples in the [4,6) W bin 502, and that the next sample also falls within this bin. When the sample value arrives, the sample count of bin 502 is incremented to 8500, the maximum bin size. Assume that the decimation trigger operates to trigger decimation when this maximum is reached (rather than on the next, 8501thsample being received). This will trigger a decimation action which, based on the parameter above, will halve the count maintained for each of the bins being maintained. The resulting bin state is depicted in FIG. 5B, where it is seen that the sample counts have been halved (the scale on the y-axis has been halved). Here, the decimation was applied evenly across all bins and so the shape of the histogram is preserved.
[0084] In contrast to the dynamic binning example above, a fix binning approach may instead be taken for logging power consumption of the refrigerator. In this example too, the bins are defined by continuous numerical ranges that are nonoverlapping. Initially, some parameters may be set for the logging as follows:-Fixed bin count = 128 - this fixes the number of bins at 128-Fixed bin width = 14 W - this may be determined as a function of (i) the amperage / amperes (A) and volts (V) of the breaker feeding the load and (ii) fixed bin count, i.e., as 15 A breaker * 120 V / 128 bins = 14 W (approximately)-Bucket alignment = TRUE-Bucket Consolidation Metric = Not Applicable - this is because bins are fixed and will not be consolidated-Maximum bin size = 8500 samples - this sets the maximum number of samples in any given bin to be 8500-Decimation Value = .5 - this sets the factor by which a bin is decimated. At .5, the count will be halved-Bin split setting = Not applicable - this is because bins are fixed and will not be split
[0085] Based on the above, bin sizes scale with the size of the breaker. This example is for a relatively small circuit breaker in terms of amperage, at 15 A, which results in a predetermined bin size of 14 W. Other devices might be able to read 125 A or higher amp breakers. At 125 A, 120 V and 128 bins, bin size reaches 117 W (approximately).
[0086] FIGS. 6A-6B depict an example progression in bin states in a fixed bin scenario after logging a number of samples, in accordance with aspects described herein. Adding samples in the fixed binning option increments the count of the appropriate bin as is the case of the dynamic binning option. Because the bins themselves are much wider (in this example), all of the samples when in the idle power state fall within a single bin. Referring initially to FIG. 6A, initially no bins exist though their size and position may be predetermined. When the first sample arrives, this is logged in a first bin 602 and the count maintained for that bin is incremented to 1.
[0087] Eventually, the refrigerator cycles on and the first reading in the active range is processed. This reading is in the range of [154,168) W, so bin 604 is added and its count incremented to 1 as shown in FIG. 6B.
[0088] At the end of a learning period, the state of the fixed bins looks like the example of FIG. 7, depicting the example bin state and segmentation thereof to reflect two power groups 702, 704 and variance curve 706. A segmentation algorithm may be used to split the bins. However, the significantly reduced precision means that the averages of the groups may not be reliable for direct use. For this example, the average of the idle power would be 7 W (midpoint between 0 and 14 W, as all idle power samples were within that one bin), despite the actual readings never going much higher than 4 W.
[0089] To demonstrate features described herein, another example is presented that describes a simulated load with a relatively high-power consumption and relatively extensive noise in terms of sampled values. In this example, the bins are defined by continuous numerical ranges that are non-overlapping, and consolidation actions evaluate potential consolidation of bins sets of 2 bins (i.e., pairs). FIG. 8 depicts an example representation of power consumption of such a load over a duration of time (200 minutes in this example). Again, the y-axis represents power consumption in Watts and the x-axis represents the timing of the samples across 200 minutes. This simulated load has an idle level of about 200 W and an active level of about 1 kilowatt (kW). Noise is added on top of that to simulate variability in the consumption.
[0090] A dynamic binning approach is taken with the following parameter settings, which mirror those of the example dynamic binning above:-Maximum bin count = 32-Minimum bin width = 2 W-Bucket alignment = TRUE-Bucket consolidation metric = Lowest SSF-Maximum bin size = 8500 samples-Decimation Value = .5-Bin split setting = On decimation, split highest SSF
[0091] Samples may be added to this system in the same way as they were in the refrigerator example above. FIGS. 9A-9B depict an example progression in bin states after logging a number of samples in this example. The bin states are again presented in the form of a histogram with power consumption in W on the x-axes and bin sample count on the y-axes. FIG. 9A shows the state after logging some initial samples, which are relatively low wattages; for a heavy load, these samples were taken when the load is in the ‘idle’ state, though this is not necessarily known at the time of the sampling. As seen in FIG. 9B, samples have started to arrive for the ‘active’ state. The relative width of the bins, which is very small in this example, becomes apparent. In this system, it may be difficult to process all samples without consolidating some bins, as the maximum bin count is likely be reached very quickly for loads with wide variation and small bin widths.
[0092] If a sample arrives that would prompt the attempted creation of a 33rdbin, processing can first identify two (in this example) existing bins to combine. The SSF metric discussed above can therefore be checked for all pairs of adjacent bins. FIG. 10 depicts the pre-consolidation, binned idle mode data and associated bin consolidation metrics. The bin consolidation metrics are shown by X’s (two examples of which are labeled 1008 and 1010). These marks represent the value of the consolidation metric of two bins: the bin on / over which the X sits (first bin) and the bin (second bin) adjacent to the right of the first bin.
[0093] The focus of this FIG. 10 is on the idle segment for illustration because this segment contains the bin pair that will be consolidated based on the consolidation metrics. As seen in FIG. 10, the metric is lowest (indicated by mark 1010) for the adjacent bins labeled 1002 and 1004 corresponding to the ranges [180,182) and [182,184), respectively. This is the bin pair that is consolidated as described above to result in a single bin for this range [180,184). FIGS. 11A-1 IB depict subsequent bin states after this consolidation. A mechanism may be employed in case of ties for the bin consolidation metric. As one example, the pair with the lowest value ranges is selected. In examples where sets of three or more bins are evaluated for potential consolidation, the selected set can be consolidated so produce one bin that spans thebins of the set. There will necessarily be a first bin that is defined by a range extending to a lowest value of all ranges defining the bins of the set, and similarly there will necessarily be a second bin that is defined by a range extending to a highest value of all ranges defining the bins of the set. The new consolidated bin can span from the lowest value to the highest value to thereby encompass the ranges of all bins of the set.
[0094] Returning to the present example, FIG. 11 A depicts the bin states for the idle segment immediately after the consolidation of bins 1002 and 1004 of FIG. 10. Bin 1102 is now defined by the range [180,184) and has two samples, which is the sum of the counts of bins 1002 and 1004 that were consolidated.
[0095] It may be expected that after additional samples have been processed, most of the bin widths will be greater than the default / initial 2 W width. An example of this is shown in FIG. 1 IB, depicting bins of varying widths, with the bins in the active mode (between approximately 800 W and 1200 W) tending to be wider than the bins of the idle mode.
[0096] Based on a decimation action, it is possible to execute the bin splitting extension. To illustrate, consider FIG. 11 A showing the bin state prior to a decimation action, and FIG. 12 showing a bin state after decimation (notably, the effect is to reduce the magnitude of the sample values reflected on the y-axis). FIG. 12 also depicts by X marks the values of the SSF function as applied to each individual bin. The largest value is indicated by 1204 for the bin 1202 defined by the range [1132,1178). A mechanism may be employed in case of ties for the bin splitting metric. As one example, the bin corresponding to the lowest power range is selected as the bin to split.
[0097] Bin 1202 (FIG. 12) is split into two new bins, with each new bin being of half the width of bin 1202 and having its count initialized to half of the count of bin 1202. In the event that width and / or sample count of bin 1202 is / are not evenly divisible by two, one of the new bins will be larger (wider and / or higher count) than the other. FIG. 13 shows the bin state after splitting bin 1202 (FIG. 12). Bins 1302 and 1304 have been created accordingly.
[0098] After this split, it may be the case that the plurality of bins maintained for this scope now exceeds the maximum number of bins (for instance it now has 33 bins after the split), forcing a consolidation to take place. FIG. 13 also shows the bin consolidation metrics by X’s (two examples of which are labeled 1308 and 1310) representing the value of the consolidation metric of two bins: the bin on / over which the X sits (first bin) and the bin (second bin) adjacent to the right of the first bin. The bin combinations (pairs) are evaluated and the lowest resulting SSF is selected. Though not shown by FIG. 13, the bins defined by ranges [206,212) and [212,216) have the lowest bin consolidation metric and are therefore selected for consolidation into a single new bin.
[0099] The bins identified for consolidation fall into the idle group. FIG. 14 depicts the bin state of this idle group after consolidating the identified bins. Bin 1402 is the new bin formed by the consolidation and its sample count is equal to the sum of the sample counts of the two consolidated bins.
[0100] Accordingly, processes are provided for controlling consumption of a storage device in a system when logging data values. FIGS. 15-22 depict example such processes. The processes or aspects thereof may be executed, in one or more examples, by a processor or processing circuitry of one or more devices, systems, or the like, such as those described herein. In some examples, instructions such as program code or other logic to implement the processes are part of one or more modules and / or one or more sub-modules of the one or more modules. Program code or other logic can be provided in computer readable media, for instance storage or other memory, as examples. Various options are available.
[0101] Referring initially to FIG. 15, the process includes sampling (1502) a parameter of an electrical load at various points in time across a timeframe. The sampling provides a plurality of parameter values, each of the plurality of parameter values corresponding to a respective point in time in the timeframe. In examples, the parameter is one selected from a group consisting of a current, a power, a voltage, or a frequency reading of the electrical load. The sampling could be done periodically, to provide parameter values that are periodically-sampled values, or aperiodically.
[0102] The process of FIG. 15 also includes maintaining (1504) a plurality of data value groups (also referred to herein as ‘bins’). Each data value group of the pluralityof data value groups is defined by a subrange of an overall numerical range. For instance, each is defined by a continuous numerical subrange. In this manner, for each data value group of the plurality of data value groups, the numerical subrange defining the data value group may be a continuous numerical subrange of the overall numerical range. Further, the continuous numerical subrange defining a group may be mutually exclusive of the continuous numerical subranges defining each of the other data value group of the plurality of data value groups. Thus, in examples, there is no overlap between the continuous range defining any data value group of the plurality of data value groups and any other data value group of the plurality of data value groups, i.e., for each data value group of the plurality of data value groups, the continuous numerical subrange defining the data value group is mutually exclusive of the continuous numerical subrange defining each other data value group of the plurality of data value groups.
[0103] The maintaining maintains, for each data value group of the plurality of data value groups, a count indicating a number of sampled parameter values falling in the numerical subrange defining the data value group.
[0104] In some situations, data value groups are of predefined and equal sizes across a possible sample space. For instance, the data value groups of the plurality of data value groups are predefined by numerical subranges of equal spans to cover the overall numerical range as a range of numerical values into which the plurality of parameter values must fall.
[0105] Additionally by FIG. 15, the process includes controlling (1506) consumption of the storage device in logging the plurality of parameter values. The controlling includes, for each parameter value of the plurality of parameter values provided by the sampling, and based on obtaining the parameter value, logging the parameter value as described herein and below with reference to FIG. 16, where a data value group defined by a numerical subrange into which the parameter value falls is identified, and the count maintained for the identified data value group is incremented. Based on incrementing, the storage space of the storage device temporarily storing the parameter value for processing can be freed. By way of example, a fixed place in memory (e.g., Random Access Memory - RAM) may be maintained in which the latest one (or more) sample values are temporarily stored. Asnew reading(s) come in, the old one or more may be overwritten. It may be the case that the fixed place in memory is large enough to temporarily hold the sample value of just a single point in time, for example. In any case, the memory consumed b- holding the sample value may be freed at any time after the count of the identified data value group is incremented. The memory may be freed by, instance, marking / identifying it as free space with an operating system or allowing the value to be overwritten without regard to retaining the sample value, as examples. In terms of the data value groups, these may be retained / stored in allocated memory (e.g., RAM) and, optionally, be regularly saved to other storage, for instance flash or other solid- state memory, if desired.
[0106] FIG. 16 depicts a process for logging a parameter value. Since there may be situations where a parameter value for logging does not fit within any existing data value group, an existing data value group may need to be expanded or a new one created, in which case the identified data value group to log the value may be the expanded or new group. Alternatively, if the value fits within an existing data value group, then that data value group is the one identified for logging the value.
[0107] Therefore, referring to FIG. 16, the process initially determines (1602) whether any data value group of the plurality of data value groups is defined by a numerical subrange into which the parameter value falls.
[0108] Based on determining that no data value group of the plurality of data value groups is defined by a numerical subrange into which the parameter value falls (1602, N), then the process invokes (1604) bin maintenance to (i) expand the numerical subrange defining an existing data value group of the plurality of data value groups such that the expanded numerical subrange encompasses the parameter value, or (ii) add a new data value group to the plurality of data value groups, the new data value group defined by a numerical subrange that encompasses the parameter value. In examples where the data value groups are defined by mutually exclusive subranges, then the numerical subrange defining the new data value group is mutually exclusive of the numerical subranges defining each other data value group of the plurality of data value groups. An example of this processing is described with reference to FIG. 17 below.
[0109] After invoking the bin maintenance at 1604 to expand or add a data value group, or if instead it was determined at 1602 that a data value group of the plurality of data value groups is defined by a numerical subrange into which the parameter value falls (1602, Y), the process continues by identifying (1606) that expanded, new, or existing data value group as the case may be, and increments (1608) the count maintained for that identified data value group.
[0110] Logging the parameter values in this manner enables further processing, for instance building and outputting, based on the counts maintained for the plurality of data value groups, a histogram of the parameter values provided by the sampling. In examples, the parameter values provided by the sampling are measured values of power consumption by a circuit of a load panel, the circuit providing power to the electrical load, and the histogram describes a history of the power consumption of the electrical load across the timeframe. When the parameter is an electrical parameter, and the process can segment the plurality of data value groups into a plurality of segments, each segment including at least one data value group of the plurality of data value groups and correlating to a respective electrical parameter state, such as a consumption state. The segmenting can identify a first segment indicative of an idle electrical parameter state and a second segment indicative of an active electrical parameter state (the segmenting could optionally identify one or more additional segments and associated power states). In any case, the processing could compare electrical parameter states reflected by the plurality of segments to expected electrical parameter states, and identify unexpected electrical parameter state(s) reflected by the plurality of segments. An unexpected electrical parameter state could represent an anomalous electrical parameter condition, for example. Processing could automatically raise appropriate alerts and / or trigger actions, for instance automatically opening a switch for safety or other reasons in response to detecting such a condition.
[0111] FIG. 17 depicts an example process for expanding an existing data value group or adding a new data value group, and may be invoked based on determining that no data value group of the plurality of data value groups is defined by a numerical subrange into which an incoming parameter value for logging falls. Whether to add a new data value group or expand an existing data value group is evaluated in this example by checking whether a proposed new data value group overlaps with anyexisting data value group, and then creating the new data value group or expanding an existing data value group based on the results of this checking.
[0112] The process of FIG. 17 selects (1702), for a proposed new data value group, an initial numerical subrange that encompasses the parameter value. The initial numerical subrange could be selected using any desired approach. As an example, the initial range is selected as a predefined, default size. As an alternative, it is selected based on, for instance as a function of, the parameter value itself. The process continues by determining (1704) whether the initial numerical subrange overlaps the numerical subrange defining any other data value group of the plurality of data value groups. There are three possible outcomes to inquiry 1704: (i) there is no overlap, (ii) there is overlap on both the high end and the low end of the range, or (iii) there is overlap on just the high end or just the low end of the range.
[0113] Based on determining that the initial numerical subrange does not overlap the numerical subrange defining any other data value group of the plurality of data value groups - case (i) above - the maintaining adds (1706) the new data value group to the plurality of data value groups. The new data value group is defined by the initial numerical subrange, and the identifying (FIG. 16, 1606) identifies the added new data value group as the identified data value group. The incrementing (FIG. 16, 1608) therefore increments a count maintained for the added new data value group.
[0114] Alternatively, case (ii) above, based on determining that the initial numerical subrange overlaps both (i) a first numerical subrange, which defines a first data value group of the plurality of data groups, at a low end of the initial numerical subrange and (ii) a second numerical subrange, which defines a second data value group of the plurality of data groups, at a high end of the initial numerical subrange, the maintaining expands (1708) the first numerical subrange or the second numerical subrange to redefine the first data value group or the second data value group, respectively, with the expanded numerical subrange. The identifying (FIG. 16, 1606) identifies the redefined first data value group or second data value group as the identified data value group, and the incrementing (FIG. 16, 1608) increments the count maintained for the redefined first data value group or second data value group.
[0115] As the third alternative, case (iii) above, based on determining that the initial numerical subrange overlaps just one of (i) a first numerical subrange, whichdefines a first data value group of the plurality of data groups, at a low end of the initial numerical subrange and (ii) a second numerical subrange, which defines a second data value group of the plurality of data groups, at a high end of the initial numerical subrange, the maintaining shifts (1710) the initial numerical subrange to remove the overlap and adds the new data value group to the plurality of data value groups, the new data value group defined by the shifted initial numerical subrange. The identifying (FIG. 16, 1606) identifies this added new data value group as the identified data value group, and the incrementing (FIG. 16, 1608) increments a count maintained for the added new data value group.
[0116] Another example of data group maintenance is data value group consolidation, an example process for which is depicted by FIG. 18. Data value group consolidation could be initiated at any time desired. An example such time is when it is determined that the number of data value groups exceeds a threshold number of data value groups, for instance after adding a new data value group. It is noted the specification of a threshold discussed herein could be by way of identifying a number, / / , which (i) when reached, triggers an action (such as group consolidation action once that number of groups is reached), in which case the threshold being exceeded is n-1, or (ii) when exceeded, triggers the action, in which case the threshold exceeded is n itself.
[0117] Referring to FIG. 18, the process identifies (1802) a set of data value groups, of the plurality of data value groups, to combine. The set of data value groups consists of at least two data value groups defined by a respective adjacent numerical subranges, which adjacent numerical subranges include a lowest numerical subrange and a highest numerical subrange of the data value groups of the set. These subranges may be mutually exclusive of each other and may or may be touching.
[0118] The process then consolidates (1804) the set of data value groups into a single data value group, which becomes part of the plurality of data value groups and which replaces the set of data value groups in the plurality of data value groups. The consolidating defines the single data value group by a numerical subrange that spans from a low end of the lowest numerical subrange to a high end of the highest numerical subrange, and initializes a count for the single data value group. The count for the single data group is initialized to a sum of the respective counts indicating thenumber of sampled parameter values falling in the numerical subranges defining the data value groups of the set of data value groups. In this manner, the continuous numerical range of the new group spans from the low end of the lowest subrange represented in the set to the high end of the highest subrange represented in the set, and is initialized with a count equal to the sum of the counts of the groups being consolidated.
[0119] The approach for determining which pair to consolidate can vary. In an embodiment, the process determines a respective consolidation metric for each set of data value groups of a plurality of candidate sets of data value groups, each candidate set of data value groups consisting of at least two data value groups that are defined by adjacent numerical subranges. In examples where data value groups are considered in pairs for potential consolidation, candidate pairs can be identified as all adjacent pairs of the plurality of groups being maintained, or just a subset of the adjacent pairs. In any case, the process then selects the identified set of data value groups, from the plurality of candidate sets of data value groups, based on the determined consolidation metrics for the candidate sets of data value groups, for instance as the candidate set having a best consolidation metric. In examples, the consolidation metric for a candidate set of data value groups is determined as a function of one or more of: (i) a consolidated size of the respective numerical subranges defining the data value groups of the candidate set of data value groups, which is to mean the size (as numerical range) of the consolidated data value group, (ii) a sum of the counts maintained for the data value groups of the candidate set of data value groups, or (iii) an effect of consolidating the data value groups of the candidate set of data value groups on a data value group analysis algorithm to analyze the plurality of data value groups. In an example of this latter option, a candidate consolidation that would minimize an effect on, e.g., a segmentation result, if performed after consolidation may be preferred over a candidate consolidation that would result in a drastically difference segmentation result is performed after consolidation.
[0120] Another example of data group maintenance is data value decimation, an example process for which is depicted by FIG. 19. Decimation scales-down data value group(s) by reducing the count(s) thereof. Referring to FIG. 19, the process selects (1902) one or more data value groups for decimating. It might be desired to decimate all data value groups of the plurality being maintained, or just some of the data valuegroups, for instance just those in a specific group or groups identified from a data value group analysis algorithm. In the case of segmenting, the one or more data value groups for decimating may be selected based on segmenting the plurality of data groups being maintained into a plurality of segments, each having at least one data value group of the plurality of data value groups, and the one or more data value groups selected for decimating may be the at least one data value group of a selected segment of the plurality of segments.
[0121] In any case, for the selected one or more data value groups to decimate, the process reduces (1804) the count maintained for each such data value group of the one or more data value groups. The reducing reduces the count maintained for each data value group of the one or more data value groups by a same number or divides the count maintained for each group of the one or more data value groups by a same number, as examples.
[0122] Decimating can be initiated whenever desired, for example based on determining that a count maintained for at least one data value group of the one or more data value groups exceeds a threshold count. As an alternative, maintaining the plurality of data value groups can include, in addition to maintaining a count of the total number of samples in the group, maintaining, for each data value group of the plurality of data value groups, a second count that indicates a number of samples since a latest decimation of the data value group. In this case, the first count maintained for each data value group of the one or more data value groups is reduced based on the second count maintained for that data value group. In other words, the amount by which to decimate a data value group is based on a count since last decimating the group. It may be desired to decimate more quickly when fewer samples are received, for instance. If a count since last decimation is being maintained for a group, then that count can be reset (e.g., to zero) when decimation is performed against that group.
[0123] Yet another example of data group maintenance is group resizing, an example process for which is depicted by FIG. 20 in which the subrange defining a data value group is shrunk. Referring to FIG. 20, the process selects (2002) data value group(s), of the plurality of data value groups, for size reduction, and then reduces (2004) the respective size of the numerical subrange defining each data value group ofthe selected data value group(s). One or more data value groups may be selected. For instance, it may be desired to shrink all data value groups evenly, in which the respective size defining the numerical subrange of each data value group of the plurality of data value groups is evenly reduced, for example by a fixed number, percentage, or the like. Alternatively, the resizing could be performed on each of the data value groups that were part of a decimation action, for instance the groups in a segment that was identified and decimated. As yet another example, the largest one or more data value group(s) based on as determined by a size metric may be selected for resizing.
[0124] The size reduction could be triggered based on any of various triggers, for instance one or more of (i) a decimation action on one or more data value groups, of the plurality of data value groups, to reduce the count maintained for each data value group of the one or more data value groups, (ii) a group consolidation action to consolidate a set of data value groups of the plurality of data value groups, (iii) receiving a threshold number of samples since a latest data value group size reduction, or (iv) the numerical subrange defining the data value group reaching a threshold size (i.e., the range becoming undesirably large through group consolidation, for instance). In any instance, the group(s) selected for size reduction could be any group(s) being maintained; they need not necessarily be group(s) that prompted the trigger(s) for the group resizing.
[0125] Another example of data value group maintenance is data value group deletion, an example process for which is depicted by FIG. 21. Deletion will remove one or more data value groups, and could be triggered at any time and by any desired trigger(s). In some examples, this is triggered a decimation action. The data value group(s) to be deleted can be any selected set of the plurality of data value groups. For instance, the set from which groups are selected for deletion could be the entire set of maintained data value groups or a proper subset thereof.
[0126] Referring to FIG. 21, the process selects (2102) data value group(s) for deletion, then deletes the selected group(s) (2104). Any desired approach can be taken for selecting which one or more groups to delete, and the group(s) to delete can be selected from a set of groups, which could be the entire plurality of groups being maintained or a subset thereof. In one example, the smallest n number of data valuegroups (where n is selected to be a positive integer) for which the maintained counts are smallest are selected from the set and removed. In another example, all data value groups, from the set, for which the maintained counts are smaller than a threshold number are selected and removed. In one example embodiment, a data value group is necessarily removed when its sample count reaches 0, which, in some examples, could happen as a result of a decimation action.
[0127] An additional example of data value group maintenance is data value group splitting, an example process for which is depicted by FIG. 22. Splitting a data value group splits the data value group into two (or more) new data value groups by partitioning the numerical subrange defining the data value group into a corresponding two (or more) ranges and apportioning the count of the data value group among the two (or more) new data value groups. As with data value group shrinking, data value group splitting need not be inherently tied to a decimation action, though a decimation action could be one trigger for group splitting. Additionally, group splitting could select one or more group(s) from a set of candidate groups, which set of candidate groups could be the entire set of groups being maintained or a proper subset of the groups being maintained.
[0128] Referring to FIG. 22, the process selects (2202), based on a respective splitting metric for each data value group of a set of candidate data value groups of the plurality of data value groups, a data value group of the set of candidate data value groups for splitting, and splits (2204) the selected data value group. The splitting includes, defining a set of new data value groups to replace the selected data value group, the set of new data value groups defined by adjacent numerical subranges, and the set of new data value groups including (at least) (i) one new data value group defined by a numerical subrange, of the overall numerical range, having a low end set as the low end of the numerical subrange of the selected data value group and (ii) another new data value group defined by a numerical subrange, of the overall numerical range, having a high end set as the high end of the numerical subrange defining the selected data value group. The splitting also includes initializing a respective count for each data value group of the set of new data value groups such that a sum of the respective counts (of these new data value groups) totals the count maintained for the selected data value group. In the case of splitting one bin with acount of n into two new bins - a first bin and a second bin - the counts of the first bin and second bin would sum to n.
[0129] If a group were to be split into three or more data value groups, the three or more groups would be defined by non-overlapping continuous ranges spanning the range defining the group being spit, and their counts would be initialized such that they total the count of the group being split.
[0130] Processes described herein may be performed singly or collectively by one or more devices, for instance one or more circuit breakers, wall switches, dimmers, dedicated energy monitoring devices, computer systems, or a combination of the foregoing. Other examples are possible. FIG. 23 depicts one example of such a device to incorporate and / or use aspects described herein. The device may also be referred to herein as a data processing device / system, computing device / system / node, or simply a computer. Device 2300 includes a processing circuit 2302, for instance one or more processor(s), microprocessors, microcontrollers, or the like. A processing circuit can include functional components used in the execution of program code / logic, such as functional components to fetch program code, such as instructions, from locations such as cache or main memory, decode program instructions, and execute program instructions, access memory for instruction execution, and write results of the executed instructions, as examples. A processing circuit 2302 can also include register(s) to be used by one or more of the functional components. Device 2300 also includes memory 2304, input / output (I / O) devices 2308, and I / O interfaces 2310, which may be coupled to processing circuit 2302 and each other via one or more buses and / or other connections. Bus connections could represent one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
[0131] Memory 2304 can be or include main memory, system memory, or other volatile memory (e.g., Random Access Memory) used in the execution of program code, or other storage device(s) such as hard drive(s), flash media, optical media, or cache memory, as examples. It may include and / or be coupled to a non-removable, non-volatile magnetic media (typically called a “hard drive”), a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a"floppy disk"), and / or an optical disk drive for reading from or writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM or other optical media.
[0132] Memory 2304 could include, for instance, a cache, such as a shared cache, which may be coupled to local caches (examples include LI cache, L2 cache, etc.) of processing circuit 2302. Additionally, memory 2304 may be or include at least one computer program product having a set (e.g., at least one) of program modules, instructions, or other program code that is / are configured to carry out functions of embodiments described herein when executed by processing circuits. For instance, memory 2304 can store program code / logic 2306 such as software for execution or interpretation by processing circuit 2303. Example program code includes an operating system and / or other type of computer programs / applications that execute to perform aspects described herein. Specifically, programs code 2306 can include computer readable program code configured to carry out functions of embodiments of aspects described herein when performed.
[0133] I / O devices 2308 are any devices for input to and / or output from the device 2300. Example I / O devices 2308 include, but are not limited to, sensor devices configured to sense light, proximity, ambient temperature, or electrical properties such as current, microphones, speakers, lights, and user interface inputs such as buttons, toggles, switches, etc. An EO device may be incorporated into the device 2300 as shown, though in some embodiments an EO device may be regarded as an external device (2312) coupled to the device 2300 through one or more EO interfaces 2310.
[0134] Device 2300 may communicate with one or more external devices 2312 via one or more EO interfaces 2310. Example external devices circuit breakers or sensors. A network interface / adapter is an example EO interface 2310 that enables device 2300 to communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN), and / or a public network (e.g., the Internet), providing communication with other devices or systems, storage devices, or the like. Ethernet-based (such as Wi-Fi) interfaces and Bluetooth® adapters are just examples of the currently available types of network adapters used in computersystems (BLUETOOTH is a registered trademark of Bluetooth SIG, Inc., Kirkland, Washington, U.S.A.).
[0135] The communication between I / O interfaces 2310 and external devices 2312 can occur across wired and / or wireless communications link(s) 2311, such as Ethernet-based wired or wireless connections. Example wireless connections include cellular, Wi-Fi, Bluetooth®, proximity -based, near-field, or other types of wireless connections. More generally, communications link(s) 2311 may be any appropriate wireless and / or wired communication link(s) for communicating data.
[0136] Aspects of the present invention may be a system, a method, and / or a computer program product, any of which may be configured to perform or facilitate aspects described herein.
[0137] In some embodiments, aspects of the present invention may take the form of a computer program product, which may be embodied as computer readable medium(s). A computer readable medium may be a tangible storage device / medium having computer readable program code / instructions stored thereon. Example computer readable medium(s) include, but are not limited to, electronic, magnetic, optical, or semiconductor storage devices or systems, or any combination of the foregoing. Example embodiments of a computer readable medium include a hard drive or other mass-storage device, an electrical connection having wires, random access memory (RAM), read-only memory (ROM), erasable-programmable read-only memory such as EPROM or flash memory, an optical fiber, a portable computer disk / diskette, such as a compact disc read-only memory (CD-ROM) or Digital Versatile Disc (DVD), an optical storage device, a magnetic storage device, or any combination of the foregoing. The computer readable medium may be readable by a processor, processing circuit, or the like, to obtain data (e.g., program code, such as instructions) from the medium for execution. In a particular example, a computer program product is or includes one or more computer readable media that includes / stores computer readable program code to provide and facilitate one or more aspects described herein.
[0138] As noted, program instruction contained or stored in / on a computer readable medium can be obtained and executed by any of various suitable components such as a processor of a computer system to cause the computer system to behave andfunction in a particular manner. Such program instructions for carrying out operations to perform, achieve, or facilitate aspects described herein may be written in, or compiled from code written in, any desired programming language. In some embodiments, such programming language includes object-oriented and / or procedural programming languages such as C, C++, C#, Java, etc.
[0139] Program code can include one or more program instructions obtained for execution by one or more processors / a processing circuit. Computer program instructions may be provided to one or more processors of, e.g., one or more systems, to produce a machine, such that the program instructions, when executed by the one or more processors, perform, achieve, or facilitate aspects of the present invention, such as actions or functions described in flowcharts and / or block diagrams described herein. Thus, each block, or combinations of blocks, of the flowchart illustrations and / or block diagrams depicted and described herein can be implemented, in some embodiments, by computer program instructions.
[0140] Although various embodiments are described above, these are only examples.
[0141] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and / or “comprising”, when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components and / or groups thereof.
[0142] The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below, if any, are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of one or more embodiments has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain various aspects and the practicalapplication, and to enable others of ordinary skill in the art to understand various embodiments with various modifications as are suited to the particular use contemplated.
Claims
CLAIMSWhat is claimed is:
1. A method comprising the steps of: sampling a parameter of an electrical load at various points in time across a timeframe, wherein the sampling provides a plurality of parameter values, each of the plurality of parameter values corresponding to a respective point in time in the timeframe; maintaining a plurality of data value groups, each data value group of the plurality of data value groups defined by a respective numerical subrange of an overall numerical range, and wherein the maintaining maintains, for each data value group of the plurality of data value groups, a count indicating a number of sampled parameter values falling in the numerical subrange defining the data value group; and controlling consumption of the storage device in logging the plurality of parameter values, wherein the controlling comprises, for each parameter value of the plurality of parameter values provided by the sampling, and based on obtaining the parameter value, logging the parameter value by: identifying a data value group, of the plurality of data value groups, defined by a numerical subrange into which the parameter value falls; and incrementing the count maintained for the identified data value group.
2. The method of claim 1, wherein, for each data value group of the plurality of data value groups, the numerical subrange defining the data value group is a continuous numerical subrange of the overall numerical range.
3. The method of claim 2, wherein, for each data value group of the plurality of data value groups, the continuous numerical subrange defining the data value group is mutually exclusive of the continuous numerical subrange defining each other data value group of the plurality of data value groups.
4. The method of claim 1, wherein the data value groups of the plurality of data value groups are predefined by numerical subranges of equal spans to cover the overall numerical range as a range of numerical values into which the plurality of parameter values must fall.
5. The method of claim 1, wherein: the logging the parameter value further comprises initially determining whether any data value group of the plurality of data value groups is defined by a numerical subrange into which the parameter value falls; the maintaining comprises, based on determining that no data value group of the plurality of data value groups is defined by a numerical subrange into which the parameter value falls:(i) expanding the numerical subrange defining an existing data value group of the plurality of data value groups such that the expanded numerical subrange encompasses the parameter value; or(ii) adding a new data value group to the plurality of data value groups, the new data value group defined by a numerical subrange that encompasses the parameter value; and the identifying identifies the expanded data value group or the added new data value group as the identified data value group for which to increment the maintained count.
6. The method of claim 5, wherein the maintaining further comprises, based on determining that no data value group of the plurality of data value groups is defined by a numerical subrange into which the parameter value falls: selecting, for a proposed new data value group, an initial numerical subrange that encompasses the parameter value; and determining whether the initial numerical subrange overlaps the numerical subrange defining any other data value group of the plurality of data value groups.
7. The method of claim 6, wherein based on determining that the initial numerical subrange does not overlap the numerical subrange defining any other data value group of the plurality of data value groups: the maintaining adds the new data value group to the plurality of data value groups, the new data value group defined by the initial numerical subrange; and wherein the identifying identifies the added new data value group as the identified data value group, and the incrementing increments a count maintained for the added new data value group.
8. The method of claim 6, wherein based on determining that the initial numerical subrange overlaps both:(i) a first numerical subrange, which defines a first data value group of the plurality of data groups, at a low end of the initial numerical subrange; and(ii) a second numerical subrange, which defines a second data value group of the plurality of data groups, at a high end of the initial numerical subrange; the maintaining expands the first numerical subrange or the second numerical subrange to redefine the first data value group or the second data value group, respectively, with the expanded numerical subrange; wherein the identifying identifies the redefined first data value group or second data value group as the identified data value group; and the incrementing increments the count maintained for the redefined first data value group or second data value group.
9. The method of claim 6, wherein based on determining that the initial numerical subrange overlaps just one of:(i) a first numerical subrange, which defines a first data value group of the plurality of data groups, at a low end of the initial numerical subrange; and(ii) a second numerical subrange, which defines a second data value group of the plurality of data groups, at a high end of the initial numerical subrange; the maintaining shifts the initial numerical subrange to remove the overlap and adds the new data value group to the plurality of data value groups, the new data value group defined by the shifted initial numerical subrange; wherein the identifying identifies the added new data value group as the identified data value group; and the incrementing increments a count maintained for the added new data value group.
10. The method of claim 6, wherein the selected initial numerical subrange has a size selected (i) as a predefined, default size, or (ii) based on the parameter value.
11. The method of claim 1, wherein the maintaining further comprises performing a data value group consolidation, the data value group consolidation comprising: identifying a set of data value groups of the plurality of data value groups, the set of data value groups consisting of at least two data value groups defined by adjacent numerical subranges, wherein: the adjacent numerical subranges comprise at least a lowest numerical subrange of the data value groups of the set, and a highest numerical subrange of the data value groups of the set; and consolidating the set of data value groups into a single data value group of the plurality of data value groups, to replace the set of data value groups in the plurality of data value groups, wherein: the consolidating defines the single data value group by a numerical subrange that spans from a low end of the lowest numerical subrange to a high end of the highest numerical subrange, andinitializes a count for the single data value group, the count for the single data group initialized to a sum of the respective counts indicating the number of sampled parameter values falling in the numerical subranges defining the data value groups of the set of data value groups.
12. The method of claim 11, wherein the data value group consolidation is initiated based on determining that the plurality of data value groups exceeds a threshold number of data value groups.
13. The method of claim 11, wherein the identifying the set of data value groups comprises: determining a respective consolidation metric for each set of data value groups of a plurality of candidate sets of data value groups, each candidate set of data value groups defined by adjacent numerical subranges; and selecting the identified set of data value groups based on the determined consolidation metrics for the candidate sets of data value groups.
14. The method of claim 13, wherein the consolidation metric for a candidate set of data value groups is determined as a function of one or more of: a consolidated size of the numerical subranges defining the data value groups of the candidate set of data value groups; a sum of the counts maintained for the data value groups of the candidate set of data value groups; or an effect of consolidating the data value groups of the candidate set of data value groups on a data value group analysis algorithm to analyze the plurality of data value groups.
15. The method of claim 1, wherein the maintaining further comprises initiating decimating one or more data value groups of the plurality of data value groups, the decimating comprising reducing the count maintained for each data value group of the one or more data value groups.
16. The method of claim 15, wherein the reducing (i) reduces the count maintained for each data value group of the one or more data value groups by a same number or (ii) divides the count maintained for each group of the one or more data value groups by a same number.
17. The method of claim 15, wherein the one or more data value groups are selected based on segmenting the plurality of data groups into a plurality of segments, each comprising at least one data value group of the plurality of data value groups, wherein the selected one or more data value groups are selected as the at least one data value group of a selected segment of the plurality of segments.
18. The method of claim 15, wherein the decimating is initiated based on determining that a count maintained for at least one data value group of the one or more data value groups exceeds a threshold count.
19. The method of claim 15, wherein: the maintaining the plurality of data value groups further comprises maintaining, for each data value group of the plurality of data value groups, a second count indicating a number of samples since a latest decimation of the data value group; the reducing reduces the count maintained for each data value group of the one or more data value groups based on the second count maintained for that data value group; and the decimating further comprises, for each data value group of the one or more data value groups, resetting the second count maintained for the data value group.
20. The method of claim 1, wherein the maintaining further comprises reducing the size of the numerical subrange defining a data value group of the plurality of data value groups.
21. The method of claim 20, wherein the data value group is selected for reducing the size of its numerical subrange based on at least one of:(i) determining to evenly reduce the size of the respective numerical subrange defining each data value group of the plurality of data value groups;(ii) performing a decimating action on one or more data value groups, of the plurality of data value groups, of which the data value group is a part, the decimating action to reduce the count maintained for each data value group of the one or more data value groups; or(iii) determining that the data value group is a largest data value group as determined by a size metric.
22. The method of claim 20, wherein the reducing is triggered based on at least one of:(i) a decimating action on one or more data value groups, of the plurality of data value groups, to reduce the count maintained for each data value group of the one or more data value groups;(ii) a group consolidation action to consolidate a set of data value groups of the plurality of data value groups;(iii) receiving a threshold number of samples since a latest data value group size reduction; or(iv) the numerical subrange defining the data value group reaching a threshold size.
23. The method of claim 1, wherein the maintaining further comprises removing one or more data value groups from a selected set of the plurality of data value groups, the removing comprising: removing n number of data value groups, of the set of data value groups, for which the maintained counts are smallest, where n is selected to be a positive integer; or removing all data value groups, of the set of data value groups, for which the maintained counts are smaller than a threshold number.
24. The method of claim 1, wherein the maintaining further comprises:selecting, based on a respective splitting metric for each data value group of a set of candidate data value groups of the plurality of data value groups, a data value group of the set of candidate data value groups for splitting; and splitting the selected data value group, the splitting comprising: defining a set of new data value groups to replace the selected data value group, the set of new data value groups defined by adjacent numerical subranges, and the set of new data value groups comprising:(i) one new data value group defined by a numerical subrange, of the overall numerical range, having a low end set as the low end of the numerical subrange of the selected data value group; and(ii) another new data value group defined by a numerical subrange, of the overall numerical range, having a high end set as the high end of the numerical subrange of the selected data value group; and initializing a respective count for each data value group of the set of new data value groups such that a sum of the respective counts totals the count maintained for the selected data value group.
25. The method of claim 1, further comprising: building and outputting, based on the counts maintained for the plurality of data value groups, a histogram of the parameter values provided by the sampling; wherein the parameter values provided by the sampling are measured values of power consumption by a circuit of a load panel, the circuit providing power to the electrical load; and wherein the histogram describes a history of the power consumption of the electrical load across the timeframe.
26. The method of claim 1, wherein the parameter values provided by the sampling are periodically-sampled values.
27. The method of claim 1, wherein the parameter is an electrical parameter, and wherein the method further comprises: segmenting the plurality of data value groups into a plurality of segments, each segment comprising at least one data value group of the plurality of data value groups and correlating to a respective electrical parameter state; and wherein the segmenting identifies a first segment indicative of an idle electrical parameter state and a second segment indicative of an active electrical parameter state.
28. The method of claim 27, further comprising comparing electrical parameter states reflected by the plurality of segments to expected electrical parameter states, and identifying at least one unexpected electrical parameter state reflected by the plurality of segments.
29. The method of claim 28, wherein the unexpected electrical parameter state represents an anomalous electrical parameter condition.
30. The method of claim 1, further comprising, based on incrementing the count maintained for the identified data value group, freeing storage space of the storage device storing the parameter value.
31. The method of claim 1, wherein the parameter is one selected from a group consisting of: a current, a power, a voltage, or a frequency reading of the electrical load.
32. A device comprising: a memory; and a processing circuit in communication with the memory, wherein the device is configured to perform the steps of:sampling a parameter of an electrical load at various points in time across a timeframe, wherein the sampling provides a plurality of parameter values, each of the plurality of parameter values corresponding to a respective point in time in the timeframe; maintaining a plurality of data value groups, each data value group of the plurality of data value groups defined by a respective numerical subrange of an overall numerical range, and wherein the maintaining maintains, for each data value group of the plurality of data value groups, a count indicating a number of sampled parameter values falling in the numerical subrange defining the data value group; and controlling consumption of the storage device in logging the plurality of parameter values, wherein the controlling comprises, for each parameter value of the plurality of parameter values provided by the sampling, and based on obtaining the parameter value, logging the parameter value by: identifying a data value group, of the plurality of data value groups, defined by a numerical subrange into which the parameter value falls; and incrementing the count maintained for the identified data value group.
33. A computer program product compri sing : a computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit to perform the steps of: sampling a parameter of an electrical load at various points in time across a timeframe, wherein the sampling provides a plurality of parameter values, each of the plurality of parameter values corresponding to a respective point in time in the timeframe;maintaining a plurality of data value groups, each data value group of the plurality of data value groups defined by a numerical subrange of an overall numerical range, and wherein the maintaining maintains, for each data value group of the plurality of data value groups, a count indicating a number of sampled parameter values falling in the numerical sub range defining the data value group; and controlling consumption of the storage device in logging the plurality of parameter values, wherein the controlling comprises, for each parameter value of the plurality of parameter values provided by the sampling, and based on obtaining the parameter value, logging the parameter value by: identifying a data value group, of the plurality of data value groups, defined by a numerical subrange into which the parameter value falls; and incrementing the count maintained for the identified data value group.
Citation Information
Patent Citations
Controlling device and method for controlling power consumption in a system of power consuming devices
US20140025216A1
Power Management System
US20170256949A1
Central plant control system with building energy load estimation
US20190312429A1