• 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

    reseting a live count at a certain time

    Scripting general Discussion
    2
    4
    2.2k
    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.
    • S
      StephenVDK
      last edited by

      Hello all,
      I'm trying to have a live updating total of a difference between 2 points. The tough part is resetting the total at a certain time, say midnight.
      So, for example, the count will increase all day and at midnight, reset to 0 so it can count up again for the next day.
      I know there's ways to sum past values and display it after the fact, but I need a live count.
      This code doesn't work but the logic is what I want:

      if (delta.HOUR == 6) {delta = 0;
      }
      else{ delta += p3118.value + p3117.value;
      }
      return delta;

      Thank you,
      Stephen

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

        Hi Stephen,

        The pseudocode you supplied and your description do not seem to match, to me. Specifically, it sounds like you wanted "delta += (p3118.value - p3117.value);" from your description, but the code sums them.

        Regardless, I would potentially write this as....

        var now = new Date();
        var minutesToday = now.getMinutes() + now.getHours()*60;
        return p3118.past(MINUTE, minutesToday).sum - p3117.past(MINUTE, minutesToday).sum;
        

        It should work since addition is commutative, we do not need to necessarily sum it up as we go. I am assuming there's an equal number of data points in each, but I feel as though you were as well, so they probably come from the same data source. Also, because this is only one day, we can let it slide a little on the efficiency by querying the whole range (but if you have very dense data (subsecond or second) this could be a consideration). I would run it on a cron like....

        0 * * * * ?         <-- Every minute
        0 0/5 * * * ?    <--Every five minutes

        Do you think this will work, or should we get a more efficient strategy and sum as we go?

        1 Reply Last reply Reply Quote 0
        • S
          StephenVDK
          last edited by

          One of the data points is always negative, so the + is what I wanted.

          I don't see where the restart of the day comes in, but I think this might work. I'll have to check the data for a while first.
          Thank you,
          Stephen

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

            Ah, gotcha. You'll probably want to switch the sign in my return statement, then.

            The reset is that now.getMinutes() and now.getHours() will return 0 at midnight, and any past(PERIOD, 0) call will have an empty data set (I should confirm this, it could have a single data point if there's a value at that millisecond), and the sum of an empty data set is 0, so it'll be 0 - 0 = 0

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