• Recent
    • Tags
    • Popular
    • Register
    • Login

    Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

    Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website Mango 5 Documentation Website

    DeadBanding data streams, ideas / thoughts / comments?

    Development general discussion
    2
    3
    975
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mrlucretius
      last edited by mrlucretius

      Hello,

      I am a new Mango user, on a path to semi-expertise hopefully down the road.

      I am working on getting the source up and running in eclipse, so I think I may be able to architect this function myself after I understand Mango better.

      I have had a request to be able to deadband data streams (to minimize storage usage when data is not changing or a system is "dead").

      That is, when a new reading of a data point is made, it is compared to the last data point recorded, and then (according to some band width defined somewhere related to the data point) the new data reading is either ignored (not written to storage) or saved (written to storage) depending on whether the new data was within or outside of the dead band.

      Forgive me if my terminology is not inline with Mango quite yet (data point / stream / source semantics)....

      That is, I only record (store to db) a new voltage reading if it has changed by, say, +- 5%, or +-10 volts of the last recorded voltage.

      However, if anyone has any pointers as to where / how I can implement this your thoughts are appreciated, Would this be easiest with a custom module / modules that wrap standard data sources maybe? Where would the band width / percentage and maybe some static setpoint be stored?

      I hope to be able to answer these questions myself after some work... But if anyone jump start me / can point me in the right direction I would appreciate it.

      Or, will this possibly break other functions within mango in a serious fashion? Ie, will data not on a "grid" (equal time spacing) somehow not play nice with charting / visualization / statistics? Might some major effort to re-grid / interpolate data be needed on some / a lot of current functions?

      Thanks,
      Alex

      1 Reply Last reply Reply Quote 0
      • phildunlapP
        phildunlap
        last edited by phildunlap

        Hi Alex, welcome to the forum! You'll not need eclipse for this, unless you're engineering a new logging type and have reason not to use a meta point.

        You have a lot of options in Mango for how your data is logged, but it sounds like you're looking for a point with an ON_CHANGE loggingType, which gives you the ability to define a "tolerance" that is a numeric deadband, where samples won't be recorded until they change by at least that amount.

        Also, available in the latest versions of Mango, you can have your point record its data ON_CHANGE_INTERVAL which will record a sample, and then use that sample single "tolerance" +/- value to assess change, but if a change has not come within the interval, the latest sampled value (so, it can change within the tolerance).

        Our data API enables you to get data with flatly interpolated values at the requested timestamps (so, the first value at the start time may be the value preceding the period and it is flagged as such, which is to ease some charting tasks. The last value in the period would also be presented at the end time, in that query). So, whatever logging type you've selected for your data, it will appear. A point with no values in the period will have the sample preceding the period, if there is one, at both the start and end times in a bookended query, marked as bookends. Or you can also not include these bookends.

        As far as getting more exotic with logging types than the available options, such as having a percentage tolerance, I would direct you to a meta data point on a meta data source. You can add the origin point into the context and listen to the sample updates (even if you are logging the source point some way, you can choose the update event the meta point will respond to, if any), and then compute from the current value of the meta point and the current value of the context points (or their histories) if the meta point should log the new data. It can return UNCHANGED; if there is no new value. When minimizing storage, you can override the purge settings on the source point if it samples frequently.

        1 Reply Last reply Reply Quote 0
        • phildunlapP
          phildunlap
          last edited by phildunlap

          Some more information: https://help.infiniteautomation.com/data-point-and-logging-settings/ but dated so far as not having the ON_CHANGE_INTERVAL setting at that time.

          1 Reply Last reply Reply Quote 0
          • First post
            Last post