lower and upper bound

This commit is contained in:
Wolfgang Hottgenroth
2021-03-15 17:16:19 +01:00
parent 1626bd7030
commit cface0d4b2
3 changed files with 42 additions and 26 deletions

View File

@ -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]);
} }
} }

View File

@ -5,6 +5,9 @@ influxPort = 8086;
influxDatabase = "smarthome2"; influxDatabase = "smarthome2";
influxMeasurement = "mainsfrequency"; influxMeasurement = "mainsfrequency";
lowerBound = 45000;
upperBound = 55000;
receivePort = 20169; receivePort = 20169;
devices = ( devices = (

View File

@ -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_