lower and upper bound
This commit is contained in:
@ -41,6 +41,8 @@ typedef struct {
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
t_configHandle *configHandle;
|
t_configHandle *configHandle;
|
||||||
|
uint32_t lowerBound;
|
||||||
|
uint32_t upperBound;
|
||||||
const char *influxUser;
|
const char *influxUser;
|
||||||
const char *influxPass;
|
const char *influxPass;
|
||||||
const char *influxServer;
|
const char *influxServer;
|
||||||
@ -236,6 +238,14 @@ int initForwarder(t_configHandle *configHandle, t_forwarderHandle *handle) {
|
|||||||
}
|
}
|
||||||
logmsg(LOG_INFO, "influxUrl is %s", handle->influxUrl);
|
logmsg(LOG_INFO, "influxUrl is %s", handle->influxUrl);
|
||||||
|
|
||||||
|
uint32_t lowerBound = 45000;
|
||||||
|
config_lookup_int(&(configHandle->cfg), "lowerBound", &lowerBound);
|
||||||
|
handle->lowerBound = lowerBound;
|
||||||
|
uint32_t upperBound = 55000;
|
||||||
|
config_lookup_int(&(configHandle->cfg), "upperBound", &upperBound);
|
||||||
|
handle->upperBound = upperBound;
|
||||||
|
logmsg(LOG_INFO, "lowerBound: %u, upperBound: %u", lowerBound, upperBound);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,30 +290,34 @@ int forwardMinuteBuffer(t_forwarderHandle *handle, t_minuteBuffer *buf) {
|
|||||||
for (uint8_t j = 0; j < SECONDS_PER_MINUTE; j++) {
|
for (uint8_t j = 0; j < SECONDS_PER_MINUTE; j++) {
|
||||||
uint64_t timestamp = buf->s.timestamp + j;
|
uint64_t timestamp = buf->s.timestamp + j;
|
||||||
logmsg(LOG_DEBUG, "Time: %lu, Frequency: %u", timestamp, buf->s.frequency[j]);
|
logmsg(LOG_DEBUG, "Time: %lu, Frequency: %u", timestamp, buf->s.frequency[j]);
|
||||||
|
|
||||||
|
if ((buf->s.frequency[j] >= handle->lowerBound) && (buf->s.frequency[j] <= handle->upperBound)) {
|
||||||
|
int frequency_before_point = buf->s.frequency[j] / 1000;
|
||||||
|
int frequency_behind_point = buf->s.frequency[j] - (frequency_before_point * 1000);
|
||||||
|
|
||||||
int frequency_before_point = buf->s.frequency[j] / 1000;
|
char payload[256];
|
||||||
int frequency_behind_point = buf->s.frequency[j] - (frequency_before_point * 1000);
|
int res = snprintf(payload, sizeof(payload),
|
||||||
|
"%s,valid=1,location=%s,host=%s freq=%d.%03d"
|
||||||
char payload[256];
|
#ifdef OpenBSD
|
||||||
int res = snprintf(payload, sizeof(payload),
|
" %llu"
|
||||||
"%s,valid=1,location=%s,host=%s freq=%d.%03d"
|
#else
|
||||||
#ifdef OpenBSD
|
" %lu"
|
||||||
" %llu"
|
#endif
|
||||||
#else
|
"",
|
||||||
" %lu"
|
handle->influxMeasurement, location, buf->s.deviceId,
|
||||||
#endif
|
frequency_before_point, frequency_behind_point,
|
||||||
"",
|
timestamp);
|
||||||
handle->influxMeasurement, location, buf->s.deviceId,
|
if (res > sizeof(payload)) {
|
||||||
frequency_before_point, frequency_behind_point,
|
logmsg(LOG_ERR, "payload buffer to small");
|
||||||
timestamp);
|
return -1;
|
||||||
if (res > sizeof(payload)) {
|
}
|
||||||
logmsg(LOG_ERR, "payload buffer to small");
|
logmsg(LOG_DEBUG, "Payload: %s", payload);
|
||||||
return -1;
|
res = httpPostRequest(handle->influxUrl, handle->influxUser, handle->influxPass, payload);
|
||||||
}
|
if (res == 0) {
|
||||||
logmsg(LOG_DEBUG, "Payload: %s", payload);
|
logmsg(LOG_DEBUG, "Successfully sent to InfluxDB");
|
||||||
res = httpPostRequest(handle->influxUrl, handle->influxUser, handle->influxPass, payload);
|
}
|
||||||
if (res == 0) {
|
} else {
|
||||||
logmsg(LOG_DEBUG, "Successfully sent to InfluxDB");
|
logmsg(LOG_ERR, "%u out of bound", buf->s.frequency[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,9 @@ influxPort = 8086;
|
|||||||
influxDatabase = "smarthome2";
|
influxDatabase = "smarthome2";
|
||||||
influxMeasurement = "mainsfrequency";
|
influxMeasurement = "mainsfrequency";
|
||||||
|
|
||||||
|
lowerBound = 45000;
|
||||||
|
upperBound = 55000;
|
||||||
|
|
||||||
receivePort = 20169;
|
receivePort = 20169;
|
||||||
|
|
||||||
devices = (
|
devices = (
|
||||||
|
@ -3,11 +3,10 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <sha256.h>
|
#include <sha256.h>
|
||||||
#include <config.h>
|
|
||||||
|
|
||||||
#define SECONDS_PER_MINUTE 60
|
#define SECONDS_PER_MINUTE 60
|
||||||
typedef struct __attribute__((__packed__)) {
|
typedef struct __attribute__((__packed__)) {
|
||||||
char deviceId[sizeof(((t_configBlock*)0)->deviceId)];
|
char deviceId[16];
|
||||||
uint8_t hash[SHA256_BLOCK_SIZE];
|
uint8_t hash[SHA256_BLOCK_SIZE];
|
||||||
uint32_t totalRunningHours;
|
uint32_t totalRunningHours;
|
||||||
uint32_t totalPowercycles;
|
uint32_t totalPowercycles;
|
||||||
@ -22,4 +21,4 @@ typedef union {
|
|||||||
uint8_t b[sizeof(t_minuteStruct)];
|
uint8_t b[sizeof(t_minuteStruct)];
|
||||||
} t_minuteBuffer;
|
} t_minuteBuffer;
|
||||||
|
|
||||||
#endif // _SINKSTRUCT_H_
|
#endif // _SINKSTRUCT_H_
|
||||||
|
Reference in New Issue
Block a user