Because, at least for me, it's just those momentary, apparently anomalous readings that are the issue.. Today, these values in the circles would trigger a raising mechanism when they really, in this example and in my opinion, should not.
What kind of pH circuit are you using ? Seems like a
common problem with those. Have you tried to get rid of those on the hardware side ? Like
@robsworld78 mentioned, a grounding probe might be useful. Although you should be careful and probably use a GFCI switch, since a grounding probe can endanger the user as well.
Regarding the complexity:
ReefPI already has a comparatively high entrance barrier, that's exactly why Robo-Tank exists and seems to be thriving. You and I might not think of this as complex, but that doesn't mean that's true for every user.
Apex offering this feature doesn't mean it's easy, that's maybe why they don't offer this as a GUI, but a scripting feature. Scripting doesn't sound like it's for the casual user.
You can crash the tank today by setting the wrong values in the control values of a sub-system and I don't see introducing a simple delay any more complex. e.g., this example below w/ pH.. this range avoids adjustment altogether till the tank has crashed and yet it's there today and my guess is not that many tanks are crashing because of this feature...
Difference there is, that you can directly see why your tank is crashing. A pH of either 10 or 3 is deadly, even the most casual user can likely see that the tank is not in a good shape when the pH starts falling way below target.
However, when a delay feature constantly triggers and disregards values, the user can't see anything, since the old normal value is the only that remains in display until the tank is dead.
Disagree here as well. A time delay would filter out momentary erroneous values and would also put more power in the hands of the user rather than being locked into an average or a median. I could filter in an erroneous value today using the same sub-system control function, in this case pH, so why would a time delay introduce unacceptable risk? See below, upper/lower thresholds...
Not quite sure what you mean there. A time delay would filter out everything that's too quick, even if it is permanent and not just momentary.
I also don't quite see how these settings would filter out erroneous values. Looks more like the opposite: you increase their influence. If you get an erroneous value from 9.0 to below 9, the Raising mechanism turns on until it increased pH to 9.5, same the other way around: if pH is erroneously from 9.9 to above 10, pH will be lowered until it reaches 9.5. That sounds like way too much swing, as I typically read that fish don't like pH swings that are above a few 0.1 pH per day.
Now, I don't disagree that average and median values would avoid momentary anomalies.. But what about when you your average is actually an average based on a dataset that is low to begin with and you're actually trying to violate the average on the up side (e.g.., ph is running low and you're trying to raise it)... Seems to me with the average you'd still have to define some bound outside of the average that is still valid... Now the average is starting to sound more complex...
That's exactly the same problem one gets with a delay function. Both introduce delay by design, but the average can't erroneously disregard values. If one needs earlier shutoff, one can simply decrease hysteresis.
Of course this won't help charts and averaging would be useful but isn't so easy to program. Personally I wouldn't use an averaged number to control equipment as the average is never correct.
I think it's actually pretty easy, the historical data view in the dashboard already uses a moving average if I'm not mistaken. About the correctness: the same can be said about the delay ^^
If you wait for the value to be over 78.3 for 60 seconds, the value rises for those 60 seconds, so the temperature on shutoff is also never correctly 78.3, but above that
Moving on, I also think adding more power to the macro functions with conditionals would provide a ton more flexibility for users.. We already have the 'wait' function, so that could be used to avoid erroneous readings... And, other than time and resources, why not an average/median option as well...
And, no, I'm not suggesting we just replicate what's in Apex... These logical concepts are pretty much universal.
Not trying to be contentious here, just disagreeing with your suggested approach and offering up some arguments for an alternative.
jb
I absolutely agree, the macros are an absolutely necessary feature for a lot of useful things. Although I'm afraid there are more pressing matters than introducing conditionals, since right now they can't even turn things on and off properly without risking to
freeze ReefPi sometimes
I don't mind a good discussion, as you might have noticed. Especially since I do kind of need to learn how to approach them calmly and make a coherent point without derailing the conversation
In the end its likely
@Ranjib's job to decide which way to go, so it's definietly a good idea if different people lay out their visions, ideas and arguments !