Sequential storage of collected data from heterogeneous sections

The method of using a single buffer to store regular and placeholder records in utility meters addresses the issue of network time loss, ensuring accurate and efficient data storage by aligning records without padding, thus preventing corruption and optimizing space usage.

JP7612667B2Active Publication Date: 2025-01-14LANDIS GYR TECH INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2022510935
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-08-19
Filing Date
2020-08-12
Publication Date
2025-01-14
Estimated Expiration
2040-08-12

AI Technical Summary

Technical Problem

Utility meters, especially battery-powered ones, often lose synchronization with network time due to power loss or disconnection, leading to inaccurate timekeeping and inefficient data storage methods that waste space and risk data corruption.

Method used

A method using a single buffer to store both regular and placeholder records, where regular records have known start times and placeholder records indicate incomplete periods, allowing for accurate alignment and efficient storage without padding.

Benefits of technology

This approach saves storage space, prevents data corruption, and ensures accurate time alignment of records, even during network unavailability, by using placeholder records to represent incomplete periods.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007612667000001
    Figure 0007612667000001
  • Figure 0007612667000002
    Figure 0007612667000002
  • Figure 0007612667000003
    Figure 0007612667000003
Patent Text Reader

Abstract

A method performed by a node includes writing normal records to a buffer. Each normal record is associated with a time interval having a start time and an end time according to network time, and each normal record includes collected data describing activity. The method includes detecting when access to network time becomes unavailable and detecting when access to network time becomes available after becoming unavailable. The method includes determining information describing an incomplete period during which network time was unavailable, the incomplete period including at least one of a skip interval and a wait interval. During each skip interval, collected data describing activity is not collected. Each wait interval is associated with collected data describing activity during the incomplete period. The method includes writing a placeholder record including information describing the incomplete period to the buffer.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] Various embodiments of the present invention relate to data storage devices and, more particularly, to sequential storage of collected data from heterogeneous domains. [Background technology]

[0002] A utility meter measures the consumption of a resource. The resulting consumption data describes the consumption of the resource and is at least temporarily stored in the utility meter. From time to time, the utility meter transmits data packets containing the consumption data directly or indirectly to a head-end system of a service provider. The service provider uses the consumption data, for example, to bill customers based on the actual consumption of the resource.

[0003] Typically, consumption data is collected in time intervals of fixed length (e.g., 15-minute intervals) such that consumption data collected by a utility meter during a particular time interval (e.g., 9:00 AM to 9:15 AM on a given day) is stored in the utility meter in a record associated with that particular time interval. Thus, a utility meter holds a set of records, each representing a time interval of established length and ideally each associated with a respective start time. Typically, there is a pre-established protocol for the transmission of consumption data, such that the data packets containing the consumption data follow a particular format. For example, a data packet contains consumption data over a set of time intervals, each such time interval being associated respectively with collected data. The data packet indicates the start time of the set of time intervals, and thus, if multiple time intervals are consecutive with each other, the start time of each time interval in the data packet can be estimated based on the start time of the entire set of time intervals. Summary of the Invention [Problem to be solved by the invention]

[0004] Utility meters do not always keep accurate time internally, and this is especially true for utility meters that are battery powered. For example, a utility meter may keep an internal time, but that internal time may drift away from the network time when the utility meter goes to sleep to conserve battery power or for other purposes. As another example, if a utility meter temporarily loses its network connection, the utility meter's internal time may drift away from the network time. However, a utility meter is typically part of a network, and thus the utility meter can utilize the network time kept by the network to ensure that each record of consumption data represents a time interval that is properly aligned (i.e., aligned in time) with respect to the start of an established time interval. However, sometimes a utility meter may lose its network connection and therefore lose the network time. Although the utility meter can still collect consumption data and still count up the length of the time interval via an internal counter, the utility meter cannot associate an accurate start time with the consumption data. In part, this is because if a utility meter loses power, it does not know how much time has passed while it did not have power, which would result in a loss of time and it cannot assume that its internal clock is aligned with network time.

[0005] To handle this case, two buffers are typically used: records associated with each start time, referred to herein as normal records, are written to the main buffer, and records representing the waiting intervals, referred to herein as waiting records, are written to the temporary buffer. Records of consumption data associated with waiting intervals are typically not written directly to the main buffer, since a specific start time is unknown for the waiting intervals. However, after network time is available, a start time can be established for each waiting interval. When network time is received, the main buffer of the utility meter is padded with zeros to form free records, representing skipped time intervals, i.e. time intervals for which no consumption data was collected. Each waiting record is copied from the temporary buffer to the main buffer at the position representing the established start time of the waiting record. As a result, the main buffer eventually contains normal records, waiting records, and free records, with each such record eventually associated with a respective start time.

[0006] The present disclosure provides for sequential storage of collected data from heterogeneous sections. [Means for solving the problem]

[0007] In one embodiment, a method performed by a node includes writing one or more normal records to a buffer. Each normal record is associated with a time interval having a respective start time and a respective end time according to a network time, and each normal record includes respective collected data describing activity during the respective time interval. The network time is provided via a network to which the node subscribes. The method includes detecting when access to the network time becomes unavailable and further includes detecting when access to the network time becomes available after becoming unavailable. The method further includes determining information describing an incomplete period during which the network time was unavailable, the incomplete period including at least one of a skip interval and a wait interval. During each skip interval, no collected data describing activity is collected. Each wait interval is associated with respective collected data describing activity during the incomplete period. Additionally, the method includes writing a placeholder record to the buffer including information describing the incomplete period.

[0008] In another embodiment, a utility meter includes a memory having computer readable instructions and one or more processors for executing the computer readable instructions. The computer readable instructions include writing one or more regular records to a buffer. Each regular record is associated with a time interval having a respective start time and a respective end time according to a network time, and each regular record includes collected data describing activity during the respective time interval. The network time is provided through a network to which the node subscribes. The computer readable instructions include detecting when access to the network time becomes unavailable and further including detecting when access to the network time becomes available after becoming unavailable. The computer readable instructions further include determining information describing an incomplete period during which the network time was unavailable, the incomplete period including at least one of a skip interval and a wait interval. During each skip interval, no data describing activity is collected. Each wait interval is associated with collected data describing activity during the incomplete period. The computer readable instructions further include writing a placeholder record to the buffer including information describing the incomplete period.

[0009] In yet another embodiment, a computer program product for writing heterogeneous records to a buffer includes a computer readable storage medium having program instructions embodied thereon. The program instructions are executable by the processor to cause a processor of a node to perform a method including writing one or more regular records to a buffer. Each regular record is associated with a time interval having a respective start time and a respective end time according to a network time, and each regular record includes respective collected data describing activity during the respective time interval. The network time is provided through a network to which the node subscribes. The method includes detecting when access to the network time becomes unavailable and further includes detecting when access to the network time becomes available after becoming unavailable. The method further includes determining information describing an incomplete period during which the network time was unavailable, the incomplete period including at least one of a skip interval and a wait interval. During each skip interval, no collected data describing activity is collected. Each wait interval is associated with respective collected data describing activity during the incomplete period. The method executed by the processor further includes writing a placeholder record to the buffer including information describing the incomplete period.

[0010] These exemplary aspects and features are mentioned not to limit or define the subject matter described herein, but to provide examples to aid in understanding the concepts described herein. Other aspects, advantages, and features of the subject matter described herein will become apparent upon reading the entirety of the application.

[0011] These and other features, aspects, and advantages of the present disclosure will be better understood when the following detailed description is read in conjunction with the accompanying drawings. [Brief description of the drawings]

[0012] [Figure 1]FIG. 2 is a conceptual diagram of a recording system for recording data collected during various time intervals according to some embodiments of the present invention. [Diagram 2] FIG. 2 is an architecture diagram of a utility meter with an integrated recording system according to some embodiments of the present invention. [Diagram 3] 2 is a flow diagram of a method for recording collected data occurring during a time interval according to some embodiments of the present invention. [Figure 4] 4 is a flow diagram of a method for generating a placeholder record according to some embodiments of the present invention. [Diagram 5] FIG. 2 is a block diagram of a buffer containing placeholder records according to some embodiments of the present invention. [Figure 6] FIG. 2 is a flow diagram of a method for generating a data packet by outputting various records using placeholder records according to some embodiments of the invention. [Figure 7] 2 is a block diagram of a data packet containing various records according to some embodiments of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0013] There are several drawbacks to the current method of recording consumption data or its absence during intervals when network time is unavailable. First, maintaining two separate buffers can result in an inefficient use of space given the relatively small amount of storage available in most utility meters. Using free records to separate waiting records from previous records and align the waiting records to the appropriate start time wastes internal storage space since the padding in the free records provides no substantial information. If the task of copying data from the temporary buffer to the main buffer, thereby modifying the main buffer, is interrupted, for example due to a loss of power or a reset, the data in the main buffer can become corrupted. Furthermore, because the main buffer is modified, the true record of events that occurred at the meter is lost and cannot be used for diagnostic purposes.

[0014] Various embodiments of the invention described herein overcome these shortcomings. For example, network time may become unavailable to a node when the node goes to sleep or becomes disconnected from the network, such that the node can no longer detect synchronization packets transmitted over the network. In some embodiments, while network time is unavailable, a standby record is written to the buffer in the same manner as a record associated with a start time is written, despite the fact that network time is unknown for the standby record. Upon receiving network time again, the utility meter may write a placeholder record after the standby record in the buffer. Based on the analysis of the previously written records, and based on the current network time, the utility meter may determine whether any intervals were skipped (e.g., due to the utility meter losing power). The placeholder record contains the data necessary to generate data packets in a format expected by the head-end system. For example, the placeholder record indicates the start time of the period during which network time was unavailable, and the placeholder record also indicates the number of standby intervals or the number of skipped intervals, or both, that occurred during that period. When later transmitting a data packet, the utility meter reads the records in the buffer until it reaches a wait record. In some embodiments, the utility meter then scans forward for a placeholder record that describes a period during which network time was unavailable. Based on the placeholder record, the utility meter transmits a series of empty records, each representing a corresponding skip interval, along with the wait records appropriately aligned in time.

[0015] As previously mentioned, some embodiments described herein utilize a single buffer to store both normal records, whose start times are known, and pending records, whose start times are unknown at the time of recording. By using a single buffer and avoiding the use of padding in that buffer, storage space is saved. Furthermore, the task of copying data from a temporary buffer is avoided, thereby preserving an original record of what happened and avoiding the risk of corruption if the copying of data is interrupted. Thus, the embodiments described herein have a number of technical advantages over existing methods.

[0016] Fig. 1 is a conceptual diagram of a recording system 100 for recording data collected during various time intervals according to some embodiments of the present invention. As shown in Fig. 1, the recording system 100 may be integrated into a node 105 and include a sensor 110, a recorder 120, a translator 130, and a communication device 140. In some embodiments, the sensor 110 collects data such as consumption data associated with one or more time intervals, the recorder 120 writes the collected data together with one or more placeholder records to a record storage device 150, the translator translates each placeholder record while transmitting or preparing to transmit a data packet, and the communication device transmits the data packet.

[0017] Each of the sensor 110, the recorder 120, the translator 130, and the communication device 140 may be implemented as hardware, software, or a combination of both. For example, and not by way of limitation, the sensor 110 may be specialized hardware configured to detect signals indicative of resource consumption, the recorder 120 and the translator 130 may each be implemented as software functions, and the communication device 140 may be a radio or network card with firmware, if desired. Although the sensor 110, the recorder 120, the translator 130, and the communication device 140 are shown and described as distinct from one another, it will be understood that this distinction is for illustrative purposes only, and that these components may be integrated with one another or further separated. For example, and not by way of limitation, the recorder 120 and the translator 130 may be integrated into a single component, such that the recorder 120 and the translator 130 are implemented as a single piece of code or a single specialized hardware device. As another example, the sensor 110 is integrated into the communication device 140 such that data is collected by the sensor 110 for reception by the communication device 140. It will be appreciated that various embodiments are possible in accordance with the present disclosure.

[0018] Record Store 150 may be a buffer, and more particularly, may be a sequential or linear buffer, such that data is written to record store 150 in a linear fashion, and in some embodiments, accessed from record store 150 in a linear fashion. For example, and not by way of limitation, record store 150 may have the form of one or more memory pages, where each page is readable from a starting index in that page, and where data located after the starting index is reached by scanning forward from the starting index. In other words, in some embodiments, multiple storage locations in record store 150 are accessed sequentially.

[0019] 2 is an architecture diagram of a node 105, specifically a utility meter 200, with an integrated recording system 100, according to some embodiments of the present invention. For example, and not by way of limitation, the utility meter 200 may be a water meter, a gas meter, or any other type of meter that measures the consumption of a resource 210. Certain embodiments of the present invention described herein are suitable for integration into low-powered endpoints, such as battery-powered utility meters 200, such as water or gas meters, such that the utility meter 200 may benefit from improved mechanisms for recording wait and skip intervals.

[0020] As shown in FIG. 2 , utility meter 200 measures the consumption of resource 210 occurring in premises 220. Utility meter 200 may include a processing unit 230, a memory 240, and a storage unit 250, which may communicate with each other via a bus 260. For example, and without limitation, memory may be random access memory (RAM) and storage unit 250 may be flash storage or read only memory (ROM). Although processing unit 230, memory 240, and storage unit 250 are shown and described herein as separate components, it will be understood that this distinction is for illustrative purposes only. For example, processing unit 230, memory 240, and storage unit 250 may be integrated together into a single chip, such as a microcontroller unit.

[0021] As described in more detail herein, in some embodiments, recorder 120 generates placeholder records and translator 130 translates the placeholder records when generating data packets for transmission. In some embodiments, the operations of recorder 120 and translator 130 are embodied as program instructions stored in a computer-readable medium, such as storage device 250 or memory 240. In some embodiments, the computer-readable medium is a non-transitory computer-readable medium. Additionally or alternatively, record storage device 150 as described herein may be implemented as at least a portion of memory 240 or storage device 250. Processing device 230 may execute program instructions implementing recorder 120 and translator 130 with reference to record storage device 150 as described herein.

[0022] As described above with reference to Fig. 1, the recording system 100 may include a sensor 110 and a communication device 140. As shown in Fig. 2, a utility meter 200 may include such a sensor 110 and a communication device 140 for use as described herein. In some embodiments, the sensor 110 of the utility meter 200 is configured to detect consumption of a resource 210, thereby enabling the utility meter 200 to collect consumption data. The communication device 140 of the utility meter 200 may be, for example, a radio or Wireless Fidelity (WiFi) card, which may be used to transmit data packets including a set of records of consumption data or other collected data, as described herein.

[0023] Although this disclosure repeatedly refers to an embodiment of the invention embodied as a utility meter 200, it will be understood by those skilled in the art that the embodiments described herein are not limited to a utility meter 200. Rather, embodiments of the invention may be used to record data on behalf of various types of nodes 105 that collect data for later transmission.

[0024] 3 is a flow diagram of a method 300 for recording collected data during a time interval according to some embodiments of the present invention. Generally, a node 105 collects data using its sensors 110, where each portion of the collected data is associated with the time interval during which the collected data was collected. For example, in the case of a utility meter 200, consumption data is collected and stored as a number of records, where each record corresponds to consumption data describing the consumption of a resource 210 during a particular time interval. It will be understood that the method 300 is illustrative and not limiting of various embodiments of the present invention.

[0025] As shown in FIG. 3, in block 305, the node 105 collects data describing activities occurring during a particular time interval, which is referred to herein as collected data. Specifically, for example, the sensor 110 collects data by detecting a signal or by receiving data from an external source. The collected data may be associated with a particular time interval, for example, by being detected by the sensor 110 during the particular time interval or by being detected by an external source during the particular time interval and then transmitted to the node 105 for collection. In this embodiment, the particular time interval has a known start time that is aligned with respect to the established interval for data collection. Aligned with respect to an interval is also referred to herein as aligned with respect to time. For example, if it is established that data is collected in 15-minute intervals aligned with respect to every 15 minutes from the hour, the particular intervals aligned with respect to an interval may include intervals that start at 9:00 a.m., 9:15 a.m., 9:30 a.m., etc. on a given day.

[0026] The collected data may describe activities occurring during a time interval. For example, and not by way of limitation, the collected data may be consumption data describing consumption of a resource 210, such as water or gas. In some embodiments, the activities that are the subject of the data collection are consistent and therefore do not need to be specifically identified in each record.

[0027] In block 310, the node 105 generates a normal record including the collected data. Specifically, for example, the recorder 120 writes the normal record to the record storage device 150, where the normal record includes the collected data associated with the particular time interval corresponding to the normal record. The normal record may include at least information indicative of the collected data. The normal record may include, but may not include, a start time of the particular time interval or a length of the particular time interval. In some embodiments, the normal record need not include information indicative of a start time or length of the time interval, since this information may be implied. For example, if the time interval has a fixed length of 15 minutes, it may be estimated that each normal record has a start time 15 minutes later than the start time of the immediately preceding normal record. In some embodiments, the start time associated with the normal record is stored in each normal record for the set of selected normal records. For example, each normal record that the node 105 plans to use as the first in a series of records in the data packet may be associated with a respective start time stored in or associated with each normal record. As a result, such a regular record may serve as the basis for determining the start time of other records.

[0028] In decision block 315, the node 105 determines whether network time is still available. For example, the communication device 140 may report a loss of connection, which results in a loss of network time, and the loss of connection may cause the node 105 to notice that network time has been lost. In another embodiment, network time may be unavailable when the node 105 is first powered on or has just been rebooted, such as after a firmware update or after a tool connection. If network time is still available, the method 300 returns to block 305. In some embodiments, blocks 305 and 310 of the method 300 are repeated while network time is available. Furthermore, if network time is lost during the current time interval, the current time interval may still be represented as a normal record, since the start time for the current time interval is known. In contrast, as described below, a standby record represents a time interval whose start time is unknown at the time of writing the standby record. Thus, if it is determined that network time is unavailable, the method 300 proceeds to block 320.

[0029] In block 320, the node 105 collects data describing activity occurring over a time interval. Specifically, the sensor 110 collects the data by detecting a signal or by receiving data from an external source, for example. In some embodiments, the collected data is not associated with a particular time interval with a known start time because network time is not available. However, the node 105 may include an internal counter that may ensure that each waiting record is associated with collected data for a period of time equal to the length of the time interval.

[0030] In block 325, the node 105 generates a standby record that includes collected data over a time interval without a known start time. Specifically, for example, the recorder 120 writes the standby record to the record storage device 150. The standby record may include at least information indicative of collected data associated with a time interval having an unknown start time.

[0031] In some embodiments, it cannot be assumed that a standby record written immediately after a normal record is associated with an interval length, start time, after the start time of the normal record. For example, if the internal counter of the node 105 stops for any reason, there is no guarantee that the internal counter will still be aligned with the actual network time. As a further example, the internal counter may stop if the node 105 loses power or if a service tool is connected to the node 105. Thus, in some embodiments, a standby record may be located immediately after a normal record in the record storage device 150, but there is no guarantee that the time interval represented by the standby record will be located immediately after the time interval of the normal record. Thus, as described herein, some embodiments do not assume that the start time of the standby record is known.

[0032] At decision block 330, it may be determined whether network time is once again available. If network time remains unavailable, method 300 may return to block 320 and continue to collect data over multiple time intervals without a known start time. However, if network time is available, method 300 proceeds to block 335.

[0033] Although this decision block 330 is shown in FIG. 3 as occurring after blocks 320 and 325, node 105 may detect the availability of network time at any point during a time interval. When network time is received, the interval aligned start time of the current time interval can be determined based on the current network time and the established alignment of the time interval. In some embodiments, the latest interval aligned start time may be used as the start time of the current time interval. For example, if network time becomes available at 9:35 a.m. and properly aligned time intervals start every quarter hour on the hour, the interval aligned start time of the current time interval is the latest interval aligned start time, i.e., 9:30 a.m. Thus, when network time is received again, now that the current time interval has a known start time, node 105 may continue to collect data during the current time interval, eventually representing the current time period as a regular record. However, in some embodiments, before writing the regular record for the time interval that is not yet complete, a placeholder record may be written to describe the period during which network time was unavailable. In this application, such periods are referred to as incomplete periods.

[0034] In block 335, node 105 creates a placeholder record. More specifically, for example, recorder 120 determines the information needed for the placeholder record by analyzing record store 150, and the recorder writes the placeholder record to record store 150, as described in more detail below.

[0035] 4 is a flow diagram of a method 400 for generating a place new holder record in accordance with some embodiments of the present invention. More specifically, the method 400 of FIG. 4 may be performed at block 335 of the method 300 described above, and further, the method 300 may be performed by the recorder 120 of the node 105.

[0036] Generally, when generating a new placeholder record, the recorder 120 may determine information about the incomplete period. Specifically, the determined information includes the start time of the incomplete period, the amount of waiting records representing wait intervals (i.e., time intervals without a known start time), and the amount of skip intervals (i.e., time intervals during which no data was collected). The new placeholder record may describe the incomplete period, which allows the translator 130 to generate a set of records including a combination of waiting records representing wait intervals and empty records representing skip intervals on the fly as the data packet is being transmitted. Thus, rather than storing padding to represent skip intervals as is conventionally done, the embodiments described herein may save on storage by utilizing placeholder records and may generate padding in the form of empty records during transmission as necessary to conform to an established format for data packets.

[0037] As shown in FIG. 4, in block 405, the recorder 120 determines the end time of the incomplete period. This end time may be equivalent to the start time of the current time interval aligned in time that is in progress when network time becomes available again. For example, if network time becomes available during a time interval, the time-aligned start of the time interval is determined. For example, if a time interval is scheduled to start every 15 minutes after the hour, the latest of the 15 minutes after the hour is taken as the start of the current time interval. As mentioned above, in some embodiments, the incomplete period spans between the end of the last time interval with a known start time (i.e., the end time of the previous normal record) and the start time of the current time interval that is in progress when network time becomes available again. Thus, the start time of the current time interval may mark the end time of the incomplete period.

[0038] In block 410, the recorder 120 determines the start time of the incomplete period. In some embodiments, the start time of an incomplete period may be the end time of the last normal record before the beginning of the incomplete period, which is equal to the start time of that last normal record plus the length of the time interval. In some embodiments, the start time is implicit based on a fixed-length time interval, so a start time is not stored for every normal record. However, various mechanisms may be used to determine the start time of an incomplete period. For example, and not by way of limitation, recorder 120 may scan backwards in record storage 150 to a normal record associated with the start time (e.g., a normal record intended to be the first in the data packet), or recorder 120 may scan to a placeholder record, each of which, in some embodiments, is associated with a start time. If using a normal record associated with a start time, recorder 120 may initialize a count variable to that start time and increment the count variable by the length of the time interval for that normal record and each record other than the placeholder record during the incomplete period (e.g., between the normal record and the first waiting record that was already written as part of the incomplete period). When using the most recent placeholder record with a start time, recorder 120 may initialize a count variable to that start time, increment the count variable by the length of the time interval multiplied by the total number of intervals represented by the placeholder record, and further increment the count variable for that placeholder record and each record between the incomplete periods.

[0039] For example, assume that the previous placeholder record represents a previous incomplete period consisting of two skip intervals and three wait intervals, further assume that the previous placeholder record is associated with a start time of 2:15 PM, and further assume that there are eight regular records between the previous placeholder record and the wait record representing the beginning of the incomplete period in question. In this example, the count variable may be initially set to 2:15 PM, which is the start time of the previous incomplete period. The total number of time intervals between the beginning of the previous incomplete period represented by the previous placeholder record and the incomplete period in question is 13, including the two skip intervals, the three wait intervals, and the eight regular intervals represented by each regular record. Thus, the count interval is incremented by 15 minutes per interval for a total of 13 intervals, or 195 minutes, resulting in a count variable indicating 5:30 PM, which is 195 minutes after 2:15 PM. However, it will be appreciated that there are various mechanisms for determining the start time of an incomplete period.

[0040] In block 415, recorder 120 determines a length of the incomplete period. More specifically, in some embodiments, the length is the length of time between the start time of the incomplete period and the end time of the incomplete period. Thus, to determine the length, recorder 120 may determine the difference between the end time of the incomplete period and the start time of the incomplete period. In some embodiments, because the incomplete period spans from a time-aligned start time to a time-aligned end time, the length of the incomplete period is an integer multiple of the length of the time interval.

[0041] In block 420, one or more variables required to generate a placeholder record may be initialized. For example, a count of pending records may be initialized to zero. In some embodiments, recorder 120 maintains a parsing pointer that references a storage location used to generate a placeholder record. The value of the parsing pointer (i.e., the location that the parsing pointer references) may be maintained rather than reset for each placeholder record determination. In some embodiments, when node 105 first begins recording records in record storage 150, the parsing pointer may be set to reference a storage location that marks the beginning of the first record written. As described herein, the parsing pointer is adjusted when searching for information to generate a placeholder record. After such an adjustment, the parsing pointer may remain at its updated location (i.e., retain its value) until the next time the parsing pointer is used or adjusted. The parse pointer may be in an initialized variable, which may include determining whether the parse currently points to a placeholder record, and if so, incrementing the parse pointer past the existing placeholder record.

[0042] At block 425, Recorder 120 begins scanning Record Store 150 at the Parse Pointer (i.e., at the location in Record Store 150 referenced by the Parse Pointer). At decision block 430, Recorder 120 determines what type of data is referenced by the Parse Pointer at its current location.

[0043] If the parse pointer points to a normal record, then in block 435 the parse pointer is incremented by one record and method 400 returns to decision block 430. If the parse pointer points to a waiting record, then in block 440 the waiting counter is incremented by one, the parse pointer is incremented by one record and method 400 returns to decision block 430. This identification of the type of record referenced by the parse pointer may continue until it is determined in decision block 430 that the parse pointer references null data. For example, and not by way of limitation, the null data may be null, invalid, or may have been previously erased. In some embodiments, the null data does not represent a valid record that follows the previous record referenced by the parse pointer. In other words, the parse pointer has reached the current time and the next record to be written may be written to the location of the parse pointer. If the parse pointer references null data, method 400 proceeds to block 445.

[0044] In block 445, the recorder 120 determines the amount of skipped intervals in the incomplete period, i.e., the amount of time intervals for which data was not collected. In some embodiments, the number of skipped intervals is equal to the total number of intervals in the incomplete period, which is less than the number of wait intervals. In some embodiments, the total number of intervals in the incomplete period is the length of the incomplete period divided by the length of each time interval, which may be a fixed length as described above. Since in some embodiments one wait record was written for each wait interval, the number of wait intervals in the complete period was determined above to be equal to the number of wait records in the complete period. Thus, the recorder 120 may determine the number of skipped intervals by calculating the total number of intervals in the incomplete period and then subtracting the number of wait intervals.

[0045] At block 450, recorder 120 writes the new placeholder record to record storage 150. In some embodiments, the new placeholder record may be written in the same or similar manner as other records are written. For example, in some embodiments, recorder 120 writes the new placeholder record as a record following the last written record, which may be, for example, a normal record or a standby record. The new placeholder record may include a record identifier indicating that it is a placeholder record, and one or more of the start time of the incomplete period, the number of standby intervals in the incomplete period, and the number of skip intervals in the incomplete period. In some embodiments, padding may be included in the new placeholder record to fill the amount of space expected in a complete record. For example, but not by way of limitation, zeros may be used as padding.

[0046] FIGURE 5 is a block diagram of a buffer 500 including a placeholder record 510, according to some embodiments of the invention. In the embodiment of FIGURE 5, record store 150 is implemented as a buffer 500 having a linear format, such that each record is written to a location located after the last record written. However, it will be appreciated that various other implementations are possible for record store 150. Specifically, FIGURE 5 illustrates the state of such record store 150 after the writing of placeholder record 510, and after two additional regular records 520g-520h have been accessed and written to network time.

[0047] In some embodiments, the record storage device 150 includes a heterogeneous collection of records including one or more normal records 520a-520h (collectively referred to as normal records 520), one or more waiting records 530, and one or more placeholder records 510. As previously mentioned, in some embodiments, the start time need not be recorded in the normal records 520 themselves, and each normal record 520 includes collected data describing each time interval, but each normal record 520 is associated with a time interval having a known start time. In some embodiments, each waiting record 530 is associated with collected data, but not with a known start time. Each placeholder record 510 may describe an incomplete period of one or more time intervals for which the network time is unknown. To this end, the placeholder record 510 may include a start time of the incomplete period, information indicating the amount of waiting intervals in the incomplete period, and information indicating the amount of skip intervals in the incomplete period. Because the waiting records 530, in some embodiments, represent time intervals that occurred during an incomplete period, an incomplete period represented by a placeholder record 510 may also be represented by one or more waiting records 530 in addition to the placeholder records 510.

[0048] In some embodiments, by keeping records as described herein, record store 150 describes events that have occurred at node 105. In this embodiment, the time intervals have a length of 15 minutes and start every 15 minutes on the hour. Moreover, the illustrated portion of record store 150 begins with a regular record 520a, which has a start time of 9:00 AM.

[0049] As shown in FIG. 5, a series of normal records 520a-520f were recorded with collected data describing the activity that occurred during each time interval. For each of these normal records 520a-520f, network time was available at least at the beginning of each time interval. In this example, these six normal records 520a-520f started at 9:00, 9:15, 9:30, 9:45, 10:00, and 10:15, respectively. After the last of these normal records 520 started (i.e., after 10:15), the network time was lost and three waiting records 530 were recorded with the collected data but without knowledge of the current network time. Then, network time became available again and a placeholder record 510 was written to describe the incomplete period during which the network time was unknown and the waiting records 530 were written. In this example, network time became available again at 12:06, so the incomplete period lasted from 10:15 to 12:00. The time interval starting at 12:00 was subsequently recorded in regular record 520g as a regular interval, because the start time of that time interval became known when network time became available.

[0050] The incomplete period included three wait intervals represented by three wait records 530 that were written before network time was available. When generating placeholder record 510, node 105 determined that the incomplete period included a total of six time intervals, and therefore the three skip intervals must be part of the incomplete period. Although not shown in FIG. 5, placeholder record 510 may include the amount of skip intervals that occurred during the incomplete period. As shown in FIG. 5, the skip intervals, in some embodiments, are not represented by corresponding records in record storage 150, but rather by amounts in placeholder record 510. Two additional regular records 520g-520h, having start times of 12:00 and 12:15, respectively, were then written to represent the collected data after network time was available.

[0051] FIG. 6 is a flow diagram of a method 600 for generating a data packet by outputting various records using a placeholder record, according to some embodiments of the present invention. The method includes converting the placeholder record 510 to transmit one or more empty records and one or more waiting records representing skip and waiting intervals during the incomplete period. In some embodiments, the conversion operation occurs while the data packet is being transmitted through the communication device 140 or in preparation for such transmission. For example, the translator 130 may perform this method 600, thereby writing a signal to the communication device 140 to enable the communication device 140 to transmit the output of the translator 130 in the form of a data packet. In another embodiment, the translator 130 may write its output to an output buffer, which the communication device 140 may transmit in the form of a data packet while reading it. In other words, the method 600 may be part of a process for transmitting records from the record storage device 150 by the communication device 140 to an external entity.

[0052] 6, in block 605, the translator 130 reads the normal record 520 from the record store 150, and in block 610, the translator 130 writes the normal record 520 to the output for transmission to the communication device 140. In decision block 615, it may be determined whether the next record encountered is a normal record 520. If the next record is a normal record 520, then the method 600 again returns to block 605 where the normal record 520 is read and then written to the output. However, if the next record is not a normal record 520, then the method 600 proceeds to block 620.

[0053] In block 620, in response to encountering a record other than a regular record 520 (e.g., a standby record 530 or a placeholder record 510), the translator 130 scans forward in the record store 150 until it reaches the placeholder record 510. If the record encountered is a placeholder record 510, the translator 130 may scan forward through zero records to reach the placeholder record 510. In other words, in some embodiments, it may be necessary not to scan forward in that case.

[0054] In some cases, the encountered record may be a waiting record 530. As previously mentioned, in some embodiments, it is not guaranteed that this waiting record 530 represents a time interval that immediately follows the time interval of the last regular record 520. Thus, there is no requirement that a waiting record 530 that immediately follows a regular record 520 in the record store 150 also immediately follows that regular record 520 in the output. However, it is expected by the external entity receiving the data packet that each record is aligned in time. In some embodiments, because the waiting record 530 represents a time interval during an incomplete period, and because the placeholder record 510 is written in response to an incomplete period, it can be assumed that the placeholder record 510 follows a series of waiting records 530. Thus, in response to encountering a waiting record 530, the translator 130 may scan forward in the record store 150 until it reaches the expected placeholder record 510.

[0055] In block 625, the translator 130 writes to the output one empty record for each skip interval indicated in the placeholder record 510. As previously described, the placeholder record 510 may indicate the amount of the skip interval. An external entity receiving the data packet expects one record per time interval. Thus, each skip interval may be represented by an empty record in the data packet. For example, and not by way of limitation, an empty record may include only padding, such as all zeros, to indicate that no collected data is present for the corresponding time interval.

[0056] In this example, the skip intervals represented in the placeholder records 510 are transmitted as free records before the waiting records 530 represented in the placeholder records 510. Thus, in some examples, if one or more waiting records 530 are located in the record storage device 120 between the normal records 520 and the placeholder records 510, those one or more waiting records 530 are written into the data packet after the free records represented in the corresponding placeholder records 510, thereby shifting the location of such waiting records 530 to a location after the free records. In alternative examples, the waiting records 530 may be transmitted before the free records. However, in some embodiments, transmitting the free records before the waiting records 530 presents a more accurate picture of activity occurring at the node 105 because, for example, when the node 105 is powered off, a skip interval corresponding to the free records occurs, and when powered on, a waiting interval occurs before the node 105 joins the network and acquires network time. This sequence of events is reflected in some embodiments by sending a free record before the wait record 530 for each incomplete period.

[0057] In block 630, assuming that a wait record 530 is encountered before scanning forward to the placeholder record 510, the translator 130 scans backwards until a wait record 530 is encountered. In this exemplary method 600, it is assumed that at least one wait record 530 precedes the placeholder record 510, however, it will be understood that this condition is not required. Rather, the placeholder record 510 may represent an incomplete period consisting of skip intervals and no wait intervals, in which case the wait record 530 would not immediately precede the placeholder record 510 in some embodiments.

[0058] In block 635, the translator 130 reads the standby record 530, and in block 640, the translator 130 writes and outputs the standby record 530 as a normal record 520. In some embodiments, both the standby record 530 and the normal record 520 contain collected data, and thus the difference between the standby record 530 and the normal record 520 is a known start time. However, in the transmitted data packet, the collected data of the standby record 530 is now implicitly associated with a start time, where the start time is based on where the standby record 530 appears in the data packet. For example, if the data packet contains exactly two empty records before including the standby record 530, two time intervals separate the last normal record 520 from the standby record 530. Thus, the standby record 530 is now associated with a start time equal to the start time of that normal record incremented by three time intervals (e.g., for the normal record 520 itself and for the two skip intervals). Thus, in some embodiments, the translator 130 implicitly establishes the start time of each waiting record 530, and in the data packet there is no difference between the normal records 520 and the waiting records 530. In the data packet, a record that was previously a waiting record 530 may appear without being different from a normal record 520.

[0059] At decision block 645, the translator 130 determines whether the next record encountered is a placeholder record 510 that has already been read (i.e., before scanning backward to the waiting record 530). If the encountered record is not a placeholder record 510, the method 600 returns to block 635 to read another waiting record 530. However, if the encountered record is a placeholder record 510, the translator 130 may skip the placeholder record 510 at block 650 since the placeholder record 510 has already been read and used.

[0060] The method 600 may then return to block 605 and read one or more subsequent regular records 520. For purposes of explanation, the illustrated method 600 assumes that the regular record 520 follows the placeholder record 510, although it will be understood that this condition is not required. Rather, for example, the placeholder record 510 may be followed by a waiting record 530, in which case the method 600 may return to block 630 instead of block 605. Alternatively, a second placeholder record 610 may follow, in which case the translator 130 may write one or more free records 710 indicated in the second placeholder record 510, and then return to block 605 at 630, if applicable. The method 600 of FIG. 6 may be repeated until all records contained in the data packet have been read and output.

[0061] Figure 7 is a block diagram of a data packet 700 including various records, according to some embodiments of the present invention. More specifically, the data packet 700 shown in Figure 7 is the result of applying the method 600 described above to the record store 150 of Figure 5. In some embodiments, the data packet 700 is associated with an overall start time equal to the start time of the first record. This overall start time may be transmitted as part of the data packet 700, for example as metadata. In this embodiment, the start time of the first regular record 520a is 9:00 AM, and therefore the data packet 700 is associated with a start time of 9:00 AM.

[0062] 7, in some embodiments, six normal records 520a-520f before the incomplete period are output to be written to the record storage device 150. It is not necessary to output a start time for each normal record 520, but the start time may be implicitly based on the start time of the data packet 700. Thus, the implicit start times of these six normal records 520a-520f as output are 9:00, 9:15, 9:30, 9:45, 10:00, and 10:15, respectively, which are consistent with their actual start times as described with reference to FIG.

[0063] When the wait record 530 is encountered, the translator 130 scans forward to the placeholder record 510 and determines that there were three skipped intervals during the incomplete period. Thus, the translator 130 outputs three empty records 710, each of which may contain padding rather than collected data. The empty records have implicit start times of 10:30, 10:45, and 11:00, respectively. Following the empty record 710, the translator 130 outputs the collected data in the three wait records 530 in the form of three regular records 520 with implicit start times of 11:15, 11:30, and 11:45, respectively. The translator 130 then outputs the final two regular records 520g-520h with implicit start times of 12:00 and 12:15, respectively, which match the actual start times of those regular records 520g-520h.

[0064] Thus, as shown in FIG. 7, in some embodiments, free records 710 are not stored locally in record storage device 150 but still appear in data packet 700 as expected based on the established format of data packet 700, and waiting records 530 are aligned in time and therefore treated as normal records 520.

[0065] Numerous specific details are set forth herein to provide a thorough understanding of the claimed subject matter. However, those skilled in the art will understand that the claimed subject matter may be practiced without these specific details. In other instances, methods, apparatus, or systems that would be known by one of ordinary skill in the art have not been described in detail so as not to obscure the claimed subject matter.

[0066] The features described herein are not limited to any particular hardware architecture or configuration. A computing device, such as a utility meter 200 or other node 105, may include any suitable device of components that provide a result conditional on one or more inputs. Suitable computing devices include general-purpose microprocessor-based computer systems that access stored software (i.e., computer-readable instructions stored on the computer system's memory) that programs or configures the computing system from a general-purpose computing device to a specialized computing device that implements one or more aspects of the subject matter of the present application. The software used to program or configure the computing device may use any suitable programming, scripting, or other type of language, or combination of languages, to implement the disclosure contained herein.

[0067] Aspects of the methods disclosed herein may be implemented in the operation of such a computing device. The order of the blocks presented in the above examples may be changed, e.g., the blocks may be rearranged, combined, or divided into sub-blocks. Certain blocks or operations may be performed in parallel.

[0068] Use of "adapted to" or "configured to" herein is intended to be open and inclusive, not excluding apparatus adapted or configured to perform additional tasks or steps. Furthermore, use of "based on" is intended to be open and inclusive, in that a process, step, calculation, or other action "based on" one or more recited conditions or values ​​may in fact be based on additional conditions or values ​​beyond those recited. Headings, lists, and numbers contained in this application are for ease of description only and are not intended to be limiting.

[0069] While the subject matter of the present application has been described in detail with respect to certain embodiments thereof, it will be recognized that those skilled in the art, upon understanding the foregoing, may readily make modifications, variations, and equivalents of such embodiments. It is therefore to be understood that the present disclosure has been presented for purposes of illustration and not limitation, and is not intended to exclude inclusion of such modifications, variations, or additions to the subject matter of the present application as would be readily apparent to those skilled in the art.

Claims

1. A method performed by a node, the method comprising: writing into a buffer one or more regular records associated with respective time intervals having respective start times and respective end times according to a network time provided via a network to which the node subscribes, the one or more regular records including respective collected data describing activity during each of the respective time intervals; detecting when access to said network time is unavailable; Detecting when access to the network time becomes available after being unavailable; and determining information describing an incomplete period during which the network time was unavailable, the incomplete period including at least one of a skip interval and a wait interval; During each skip interval, no collected data describing the activity is collected; Each waiting interval is associated with a respective collected data describing said activity during said incomplete period; The method includes writing a placeholder record to the buffer that includes information describing the incomplete period; method.

2. writing to said buffer, while said network time is unavailable, one or more wait records associated with each wait interval occurring in said incomplete period, said one or more wait records including said collected data describing said activity during each wait interval. The method of claim 1.

3. Determining the information describing the incomplete period includes: calculating a total amount of time intervals occurring during said incomplete period; and calculating a first amount of skipped intervals occurring during the incomplete period. The method of claim 2.

4. calculating the first amount of skipped intervals includes subtracting a second amount of idle records of the one or more idle records from a total amount of the time intervals in the incomplete period. The method of claim 3.

5. Calculating a total amount of the time interval occurring during the incomplete period comprises: determining an aligned end time for the interval prior to a current time when the network time is available; setting an end time of the incomplete period relative to an aligned end time for the interval; calculating a length of the incomplete period by subtracting an end time of a last regular record of the one or more regular records from an end time of the incomplete period; and calculating a total amount of a time interval in the incomplete period as a quotient of a length of the incomplete period and a length of a time interval. The method of claim 3.

6. The method further includes transmitting a data packet describing a time period that includes the incomplete period; Transmitting the data packet includes: converting said placeholder records into one or more empty records aligned by interval, said empty records corresponding to each skipped interval that occurred during said incomplete period, said empty records not including each collected data describing said activity; shifting a starting position of one or more wait records associated with each wait interval occurring during the incomplete period, the one or more wait records including collected data describing the activity during each wait interval, to a predetermined position relative to the one or more free records. The method of claim 1.

7. transmitting the data packets includes transmitting a total amount of normal records, standby records, and empty records equal to an amount of time intervals in the time period; The method of claim 6.

8. The method includes transmitting a data packet describing a time period that includes the incomplete period; Transmitting the data packet includes: Reading the one or more regular records; outputting the one or more normal records; retrieving one or more wait records associated with each wait interval occurring during the incomplete period, the one or more wait records including the collected data describing the activity during each wait interval; Reading said placeholder record; outputting one or more empty records representing one or more skip intervals occurring during the incomplete period based on the placeholder records; establishing aligned start times for intervals of the one or more wait records based on the placeholder records; and outputting the one or more wait records in association with the aligned start times for the intervals. The method of claim 1.

9. 1. A utility meter comprising: a memory having computer-readable instructions; and one or more processors for executing the computer-readable instructions, The computer readable instructions include: writing to a buffer one or more regular records associated with respective time intervals having respective start times and respective end times, the one or more regular records including respective collected data describing activity during each of the time intervals according to a network time provided via a network to which the utility meter subscribes; detecting when access to said network time is unavailable; Detecting when access to the network time becomes available after being unavailable; and determining information describing an incomplete period during which the network time was unavailable, the incomplete period including at least one of a skip interval and a wait interval; During each skip interval, no collected data describing the activity is collected; Each waiting interval is associated with a respective collected data describing said activity during said incomplete period; the computer readable instructions include writing a placeholder record to the buffer including information describing the incomplete period; Supply and demand meter.

10. writing to the buffer, while the network time is unavailable, one or more wait records associated with each wait interval occurring in the incomplete period, the one or more wait records including the collected data describing the activity during each wait interval.

10. The utility meter of claim 9.

11. Determining the information describing the incomplete period includes: calculating a total amount of time intervals occurring during said incomplete period; and calculating a first amount of skipped intervals occurring during the incomplete period.

11. The utility meter of claim 10.

12. calculating the first amount of skipped intervals includes subtracting a second amount of idle records of the one or more idle records from a total amount of the time intervals in the incomplete period.

12. A utility meter as claimed in claim 11.

13. Calculating a total amount of the time interval occurring during the incomplete period comprises: determining an aligned end time for the interval prior to a current time when the network time is available; setting an end time of the incomplete period relative to an aligned end time for the interval; calculating a length of the incomplete period by subtracting an end time of a last regular record of the one or more regular records from an end time of the incomplete period; and calculating a total amount of a time interval in the incomplete period as a quotient of a length of the incomplete period and a length of a time interval.

12. A utility meter as claimed in claim 11.

14. the utility meter further includes transmitting a data packet describing a time period that includes the incomplete period; Transmitting the data packet includes: Reading the one or more regular records; outputting the one or more normal records; retrieving one or more wait records associated with each wait interval occurring during the incomplete period, the one or more wait records including the collected data describing the activity during each wait interval; Reading said placeholder record; outputting one or more empty records representing one or more skip intervals occurring during the incomplete period based on the placeholder records; establishing aligned start times for intervals of the one or more wait records based on the placeholder records; and outputting the one or more wait records in association with the aligned start times for the intervals.

10. The utility meter of claim 9.

15. A computer-readable storage medium having program instructions embodied thereon, comprising: The program instructions are executable by a processor of a node to cause the processor to perform a method comprising: The above method is writing into a buffer one or more regular records associated with respective time intervals having respective start times and respective end times according to a network time provided via a network to which the node subscribes, the one or more regular records including respective collected data describing activity during each of the respective time intervals; detecting when access to said network time is unavailable; Detecting when access to the network time becomes available after being unavailable; and determining information describing an incomplete period during which the network time was unavailable, the incomplete period including at least one of a skip interval and a wait interval; During each skip interval, no collected data describing the activity is collected; Each waiting interval is associated with a respective collected data describing said activity during said incomplete period; The method includes writing a placeholder record to the buffer that includes information describing the incomplete period; A computer-readable storage medium.

16. writing to the buffer, while the network time is unavailable, one or more wait records associated with each wait interval occurring in the incomplete period, the one or more wait records including the collected data describing the activity during each wait interval.

16. The computer-readable storage medium of claim 15.

17. Determining the information describing the incomplete period includes: calculating a total amount of time intervals occurring during said incomplete period; and calculating a first amount of skipped intervals occurring during the incomplete period.

17. The computer-readable storage medium of claim 16.

18. calculating the first amount of skipped intervals includes subtracting a second amount of idle records of the one or more idle records from a total amount of the time intervals in the incomplete period.

20. The computer-readable storage medium of claim 17.

19. Calculating a total amount of the time interval occurring during the incomplete period comprises: determining an aligned end time for the interval prior to a current time when the network time is available; setting an end time of the incomplete period relative to an aligned end time for the interval; calculating a length of the incomplete period by subtracting an end time of a last regular record of the one or more regular records from an end time of the incomplete period; and calculating a total amount of a time interval in the incomplete period as a quotient of a length of the incomplete period and a length of a time interval.

20. The computer-readable storage medium of claim 17.

20. The computer-readable storage medium further includes transmitting a data packet describing a time period that includes the incomplete period; Transmitting the data packet includes: Reading the one or more regular records; outputting the one or more normal records; retrieving one or more wait records associated with each wait interval occurring during the incomplete period, the one or more wait records including the collected data describing the activity during each wait interval; Reading said placeholder record; outputting one or more empty records representing one or more skip intervals occurring during the incomplete period based on the placeholder records; establishing aligned start times for intervals of the one or more wait records based on the placeholder records; and outputting the one or more wait records in association with the aligned start times for the intervals.

16. The computer-readable storage medium of claim 15.

Citation Information

Patent Citations

  • History recording device and its method

    JP2004199410A

  • Device and method for measuring flow rate

    JP2009075015A

  • Relative timestamp when real time clock is unavailable

    US20120254418A1