batch database access
This commit is contained in:
parent
3d246ba6c4
commit
efd80926e1
@ -34,18 +34,24 @@ void init() {
|
|||||||
digitalWrite(CTRL_OUT, 0);
|
digitalWrite(CTRL_OUT, 0);
|
||||||
|
|
||||||
pinMode(INTR_IN, INPUT);
|
pinMode(INTR_IN, INPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void start() {
|
||||||
wiringPiISR(INTR_IN, INT_EDGE_RISING, isr);
|
wiringPiISR(INTR_IN, INT_EDGE_RISING, isr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main (void) {
|
int main (void) {
|
||||||
init();
|
init();
|
||||||
ls7366rInit(SPI_CHAN);
|
ls7366rInit(SPI_CHAN);
|
||||||
|
influxInit();
|
||||||
|
start();
|
||||||
|
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
uint32_t diff = ringbufferGet();
|
uint32_t diff = ringbufferGet();
|
||||||
|
|
||||||
double f = 1.0 / (((double) diff) / 1000000.0);
|
double f = 1.0 / (((double) diff) / 1000000.0);
|
||||||
printf("%f\n", f);
|
printf("%f\n", f);
|
||||||
influxSendFrequency(f);
|
influxAddFrequency(f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
39
src/influx.c
39
src/influx.c
@ -1,15 +1,22 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
const char INFLUXURL[] = "http://172.16.3.15:8086/write?db=smarthome2&precision=ms";
|
const char INFLUXURL[] = "http://172.16.3.15:8086/write?db=smarthome2&precision=ms";
|
||||||
|
|
||||||
|
#define BUFSIZE 4096
|
||||||
|
char buffer[BUFSIZE];
|
||||||
|
char *bufferNextEntry = buffer;
|
||||||
|
|
||||||
void influxSendFrequency(double f) {
|
void influxInit() {
|
||||||
char buffer[256];
|
memset(buffer, 0, BUFSIZE);
|
||||||
|
bufferNextEntry = buffer;
|
||||||
sprintf(buffer, "mainsfrequency freq=%f", f);
|
}
|
||||||
|
|
||||||
|
static void influxSendRequest() {
|
||||||
CURL *curl = curl_easy_init();
|
CURL *curl = curl_easy_init();
|
||||||
if(curl) {
|
if(curl) {
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, INFLUXURL);
|
curl_easy_setopt(curl, CURLOPT_URL, INFLUXURL);
|
||||||
@ -21,3 +28,27 @@ void influxSendFrequency(double f) {
|
|||||||
curl_easy_cleanup(curl);
|
curl_easy_cleanup(curl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void influxAddFrequency(double f) {
|
||||||
|
static uint32_t entries = 0;
|
||||||
|
char tmpBuf[128]
|
||||||
|
struct timespec t;
|
||||||
|
|
||||||
|
clock_gettime(CLOCK_REALTIME, &t);
|
||||||
|
uint64_t tt = t.tv_sec * 1000 + t.tv_nsec / 1000000;
|
||||||
|
int c = sprintf(tmpBuf, "mainsfrequency freq=%f %l\n", f, tt);
|
||||||
|
entries++;
|
||||||
|
|
||||||
|
|
||||||
|
if ((bufferNextEntry + c + 10) > (buffer + BUFSIZE)) {
|
||||||
|
influxSendRequest()
|
||||||
|
influxInit();
|
||||||
|
printf("%u entries sent to database\n", entries);
|
||||||
|
entries = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(bufferNextEntry, tmpBuf, c);
|
||||||
|
bufferNextEntry += c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef _INFLUX_H_
|
#ifndef _INFLUX_H_
|
||||||
#define _INFLUX_H_
|
#define _INFLUX_H_
|
||||||
|
|
||||||
void influxSendFrequency(double f);
|
void influxAddFrequency(double f);
|
||||||
|
void influxInit();
|
||||||
|
|
||||||
#endif // _INFLUX_H_
|
#endif // _INFLUX_H_
|
Loading…
x
Reference in New Issue
Block a user