diff --git a/sink/readme.md b/sink/readme.md new file mode 100644 index 0000000..b711bdd --- /dev/null +++ b/sink/readme.md @@ -0,0 +1,3 @@ +Make sure libconfig and libcurl are available. +On Linux (Debian) install libconfig-dev and libcurl4-openssl-dev, +on OpenBSD install libconfig and curl. diff --git a/sink/sink20169.c b/sink/sink20169.c index e1ee2a7..6e823db 100644 --- a/sink/sink20169.c +++ b/sink/sink20169.c @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -21,7 +22,7 @@ typedef struct { int receiveSockFd; } t_receiverHandle; -t_receiverHandle receiveHandle; +t_receiverHandle receiverHandle; typedef struct { const char *influxUser; @@ -30,6 +31,7 @@ typedef struct { uint16_t influxPort; const char *influxDatabase; const char *influxMeasurement; + char influxUrl[1024]; } t_forwarderHandle; t_forwarderHandle forwarderHandle = { @@ -88,10 +90,6 @@ void deinitReceiver(t_receiverHandle *handle) { close(handle->receiveSockFd); } -void deinitForwarder(t_forwarderHandle *handle) { - -} - int receiveAndVerifyMinuteBuffer(t_receiverHandle *handle, t_minuteBuffer *buf) { struct sockaddr_in cliaddr; socklen_t cliaddrlen = sizeof(cliaddr); @@ -174,9 +172,22 @@ int initForwarder(config_t *cfg, t_forwarderHandle *handle) { return -3; } + int res = snprintf(handle->influxUrl, sizeof(handle->influxUrl, + "http://%s:%d/write?db=%s&precision=s", + handle->influxServer, handle->influxPort, handle->influxDatabase); + if (res > sizeof(handle->influxUrl)) { + logmsg(LOG_ERR, "influxUrl has not enough space"); + return -4; + } + logmsg(LOG_INFO, "influxUrl is %s", handle->influxUrl); + return 0; } +void deinitForwarder(t_forwarderHandle *handle) { + +} + int forwardMinuteBuffer(t_forwarderHandle *handle, t_minuteBuffer *buf) { logmsg(LOG_INFO, "DeviceId: %s", buf->s.deviceId); logmsg(LOG_INFO, "Location: %s", buf->s.location); @@ -186,13 +197,14 @@ int forwardMinuteBuffer(t_forwarderHandle *handle, t_minuteBuffer *buf) { return 0; } + int main() { if (0 != readConfig(&cfg)) { logmsg(LOG_ERR, "error when reading configuration"); exit(-1); } - if (0 != initReceiver(&cfg, &receiveHandle)) { + if (0 != initReceiver(&cfg, &receiverHandle)) { logmsg(LOG_ERR, "error when initializing receiver"); exit(-2); } @@ -202,10 +214,11 @@ int main() { exit(-2); } + while (1) { t_minuteBuffer buf; - if (receiveAndVerifyMinuteBuffer(&receiveHandle, &buf) < 0) { + if (receiveAndVerifyMinuteBuffer(&receiverHandle, &buf) < 0) { logmsg(LOG_ERR, "error in receiveAndVerify"); continue; } @@ -217,6 +230,6 @@ int main() { deinitForwarder(&forwarderHandle); - deinitReceiver(&receiveHandle); + deinitReceiver(&receiverHandle); config_destroy(&cfg); }