code beautifying, extended filtering discarded, better adjust epsilon
This commit is contained in:
parent
2dd586d7e4
commit
5ef114b634
@ -1 +1 @@
|
|||||||
0.95
|
0.97
|
||||||
|
@ -88,24 +88,26 @@ int main (void) {
|
|||||||
double lastF = 0;
|
double lastF = 0;
|
||||||
bool settled = false;
|
bool settled = false;
|
||||||
uint8_t ledTick = 0;
|
uint8_t ledTick = 0;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
uint32_t diff = ringbufferGet();
|
uint32_t period = ringbufferGet();
|
||||||
|
|
||||||
double f = 1.0 / (((double) diff) / 1000000.0);
|
double fRaw = 1.0 / (((double) period) / 1000000.0);
|
||||||
double fRaw = f;
|
|
||||||
int valid = settled ? 1 : 0;
|
int valid = settled ? 1 : 0;
|
||||||
|
|
||||||
double gradient = f - lastF;
|
double gradient = fRaw - lastF;
|
||||||
|
double fSmoothed = fRaw;
|
||||||
if (settled && (fabs(gradient) > epsilon)) {
|
if (settled && (fabs(gradient) > epsilon)) {
|
||||||
logmsg(LOG_INFO, "Current f=%f, last f=%f, gradient %f too large, invalid\n", f, lastF, gradient);
|
logmsg(LOG_INFO, "Current f=%f, last f=%f, gradient %f too large, invalid\n", fRaw, lastF, gradient);
|
||||||
skipped++;
|
skipped++;
|
||||||
f = lastF;
|
fSmoothed = lastF;
|
||||||
valid = 0;
|
valid = 0;
|
||||||
|
} else {
|
||||||
|
lastF = fRaw;
|
||||||
}
|
}
|
||||||
lastF = f;
|
|
||||||
// printf("%f, %d\n", f, valid);
|
|
||||||
if (settled) {
|
if (settled) {
|
||||||
influxAddFrequency(fRaw, f, gradient, valid);
|
influxAddFrequency(period, fRaw, fSmoothed, gradient, valid);
|
||||||
}
|
}
|
||||||
|
|
||||||
ledTick++;
|
ledTick++;
|
||||||
|
@ -91,7 +91,7 @@ static void influxSendRequest() {
|
|||||||
led(E_BLUE, false);
|
led(E_BLUE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void influxAddFrequency(double fRaw, double fSmoothed, double gradient,
|
void influxAddFrequency(uint32_t period, double fRaw, double fSmoothed, double gradient,
|
||||||
int valid) {
|
int valid) {
|
||||||
static uint32_t entries = 0;
|
static uint32_t entries = 0;
|
||||||
static uint32_t totalEntries = 0;
|
static uint32_t totalEntries = 0;
|
||||||
@ -100,7 +100,12 @@ void influxAddFrequency(double fRaw, double fSmoothed, double gradient,
|
|||||||
|
|
||||||
clock_gettime(CLOCK_REALTIME, &t);
|
clock_gettime(CLOCK_REALTIME, &t);
|
||||||
uint64_t tt = (((uint64_t)t.tv_sec) * 1000) + (((uint64_t)t.tv_nsec) / 1000000);
|
uint64_t tt = (((uint64_t)t.tv_sec) * 1000) + (((uint64_t)t.tv_nsec) / 1000000);
|
||||||
int c = sprintf(tmpBuf, "mainsfrequency,host=%s,valid=%d,location=%s freq=%f,gradient=%f,freqRaw=%f %llu\n", influxTag, valid, location, fSmoothed, gradient, fRaw, tt);
|
int c = sprintf(tmpBuf, "mainsfrequency,host=%s,valid=%d,location=%s "
|
||||||
|
"period=%u,freq=%f,freqSmoothed=%f,gradient=%f,freqRaw=%f "
|
||||||
|
"%llu\n",
|
||||||
|
influxTag, valid, location,
|
||||||
|
period, fSmoothed, fSmoothed, gradient, fRaw,
|
||||||
|
tt);
|
||||||
|
|
||||||
if ((bufferNextEntry + c + 10) > (influxBuffer + BUFSIZE)) {
|
if ((bufferNextEntry + c + 10) > (influxBuffer + BUFSIZE)) {
|
||||||
influxSendRequest();
|
influxSendRequest();
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include <libconfig.h>
|
#include <libconfig.h>
|
||||||
|
|
||||||
void influxAddFrequency(double fRaw, double fSmoothed, double gradient, int valid);
|
void influxAddFrequency(uint32_t period, double fRaw, double fSmoothed, double gradient, int valid);
|
||||||
void influxInit(config_t *pCfg);
|
void influxInit(config_t *pCfg);
|
||||||
|
|
||||||
#endif // _INFLUX_H_
|
#endif // _INFLUX_H_
|
||||||
|
Loading…
x
Reference in New Issue
Block a user