Events caused by changes in values over time
-
It seems like what I am about to ask should be possible, but after a bit of experimenting so far I have been unable to figure out how:
I would like to be able to track changes in values over time. Detecting any change to a point is trivial, but I would like to be able to do something along the lines of "if a value changes 50% in 2 minutes, raise an event."
The event detector CUSUM is what I have been experimenting with so far, but unsucessfully. It is difficult to determine what parameters I should be using as there is no way to outputting the CUSUM from mango. My values are let's say 500 on average, I put the weight to 500 so the CUSUM doesn't constantly increment, and a positive limit of 700. But the CUSUM if I understand correctly always increases because it is cumulative, I only want the previous 20 or so values.
If there is way using a meta datasource to look at the 20 previous values, then I could write a script to do this, but I'm not sure if this is possible.
Anyone out there have some experience with this kinda stuff? Any insight would be appreciated!
-
It is possible that this could be done with a meta point. But i'm interested in having a look at the point history and what specific events you are trying to detect. Could you send me a CSV of the point history?
-
I am still in the testing phase so I'm not sure exactly what the exact events would be, but I can explain my project. I have a few sensors connected to an arduino board, with a wireless connection that I have set up to be accessed by mango. Many of these sensors are analog, meaning that I am not interested in their value, but only in a change in their value.
For example, I have a temperature sensor which outputs in degrees celcius. A little variation is expected but if the temperature were to rise something like 5 degrees in 2 minutes this would be cause for an event to be raised.
I don't have much experience with statistics, but I think CUSUM would be overkill/not what I'm looking for. Pretty much all I need to be able to do is calculate the difference between a current reading, and some number of readings ago. In pseudocode:
if (currentReading - oldReading > 5)
raiseEvent();I have thought about having a meta data source that updates every minute and another meta data source that also updates every minute with an execution delay of like 30 seconds then comparing the two, but if the point history is already stored in mango then an ideal solution would just be to look back a few readings. This also seems like a feature that would benefit other users as well.
Thanks for your help.
-
Check out the meta point documentation. You should be able to use the ago() function to retrieve a past value for comparison.
Still, if you can provide the data (i.e. using a report that includes history) that would be great.
-
Thanks, I was in the middle of editing my post when you responded (I realized I could use the execution delay but will try your suggestion as well). When I finish configuring my system I will try and post some data in this thread.