diff options
author | Anton Luka Šijanec <anton@sijanec.eu> | 2022-10-15 19:15:27 +0200 |
---|---|---|
committer | Anton Luka Šijanec <anton@sijanec.eu> | 2022-10-15 19:15:27 +0200 |
commit | a622a8159ac7e093ed0239d4de4502e393d332cc (patch) | |
tree | 4f2087567fcbbb6e80b51d4173579173b2765f31 | |
parent | reports us (diff) | |
download | števec-a622a8159ac7e093ed0239d4de4502e393d332cc.tar števec-a622a8159ac7e093ed0239d4de4502e393d332cc.tar.gz števec-a622a8159ac7e093ed0239d4de4502e393d332cc.tar.bz2 števec-a622a8159ac7e093ed0239d4de4502e393d332cc.tar.lz števec-a622a8159ac7e093ed0239d4de4502e393d332cc.tar.xz števec-a622a8159ac7e093ed0239d4de4502e393d332cc.tar.zst števec-a622a8159ac7e093ed0239d4de4502e393d332cc.zip |
-rw-r--r-- | srv/c.c | 30 | ||||
-rwxr-xr-x | srv/rast.gnuplot | 17 | ||||
-rwxr-xr-x | srv/rast.sh | 4 | ||||
-rwxr-xr-x | srv/seštevek.gnuplot | 17 | ||||
-rwxr-xr-x | srv/seštevek.sh | 4 |
5 files changed, 67 insertions, 5 deletions
@@ -29,11 +29,14 @@ int najdi (struct entry * db, int first, int last, long long int čas) { int main (int argc, char ** argv) { int r = 0; if (argc < 1+2) - error_at_line(1, 0, __FILE__, __LINE__, "uporaba: %s db informacije/preveri/rast/seštevek [natančnost=0] [začetek UNIXsek] [konec UNIXsek]\n\t" + error_at_line(1, 0, __FILE__, __LINE__, +"uporaba: %s db infor/preveri/rast/seštevek [natančnost] [začetek UNIX] [konec UNIX]\n\t" "informacije: pove UNIXus prvega in UNIXus zadnjega zapisa\n\t" "preveri: pove, če čas ni naraščajoč in kdaj se je števec resetiral\n\t" "rast: TSV s podatki <UNIXus>:<Wh skupno> najgosteje na [natančnost=0] ms\n\t" -"seštevek: TSV s podatki <UNIXus>:<vatnih ur v [natančnost=10e3] ms>", S0(argv[0])); +"seštevek: TSV s podatki <UNIXus>:<vatnih ur v [natančnost=10e3] ms>\n\t" +"če je nastavljena okoljska spremenljivka SEK, bodo izhodni časi v UNIX sekundah", + S0(argv[0])); int fd = -1; struct entry * db = NULL; if ((fd = open(argv[1], O_RDONLY | O_CLOEXEC)) == -1) @@ -51,7 +54,15 @@ int main (int argc, char ** argv) { goto r; } if (argv[2][0] == 'i') { - printf("začetek\t%" PRIu64 " UNIXus\t%" PRIu64 " Wh\nkonec\t%" PRIu64 " UNIXus\t%" PRIu64 " Wh\nzapisov: %u\n", be64toh(db[0].time), be64toh(db[0].value), be64toh(db[entries-1].time), be64toh(db[entries-1].value), entries); + uint64_t začetek = be64toh(db[0].time); + uint64_t konec = be64toh(db[entries-1].time); + char * enota = "us"; + if (getenv("SEK")) { + začetek /= 1e6; + konec /= 1e6; + enota = ""; + } + printf("začetek\t%" PRIu64 " UNIX%s\t%" PRIu64 " Wh\nkonec\t%" PRIu64 " UNIX%s\t%" PRIu64 " Wh\nzapisov: %u\n", začetek, enota, be64toh(db[0].value), konec, enota, be64toh(db[entries-1].value), entries); goto r; } if (argv[2][0] == 'p') { @@ -85,7 +96,13 @@ int main (int argc, char ** argv) { unsigned long long prev_value = be64toh(db[začetek].value); for (unsigned i = začetek; i <= konec; i++) { if (us + (be64toh(db[i].time)-prev_time) >= natančnost*1000) { - printf("%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 "\n", be64toh(db[i].time)-us, Wh, be64toh(db[i].time), us); + uint64_t čas_začetek = be64toh(db[i].time)-us; + uint64_t čas_konec = be64toh(db[i].time); + if (getenv("SEK")) { + čas_začetek /= 1e6; + čas_konec /= 1e6; + } + printf("%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 "\t%" PRIu64 "\n", čas_začetek, Wh, čas_konec, us); us = 0; Wh = 0; } @@ -98,7 +115,10 @@ int main (int argc, char ** argv) { unsigned long long prev_print = 0; for (unsigned i = začetek; i <= konec; i++) { if (be64toh(db[i].time)-prev_print > natančnost*1000) { - printf("%" PRIu64 "\t%" PRIu64 "\n", be64toh(db[i].time), be64toh(db[i].value)); + uint64_t čas = be64toh(db[i].time); + if (getenv("SEK")) + čas /= 1e6; + printf("%" PRIu64 "\t%" PRIu64 "\n", čas, be64toh(db[i].value)); prev_print = be64toh(db[i].time); } } diff --git a/srv/rast.gnuplot b/srv/rast.gnuplot new file mode 100755 index 0000000..5cc0277 --- /dev/null +++ b/srv/rast.gnuplot @@ -0,0 +1,17 @@ +#!/usr/bin/gnuplot +set term pngcairo +set output 'rast.png' +f = '%H:%M %d. %m.' +set xlabel 'Čas v UTC ['.f.']' +set ylabel 'Wh' +set xdata time +set timefmt '%s' +set format x f +set grid +set mxtics +set mytics +set terminal png size 1337,420 +set tmargin 3 +set rmargin 5 +set title 'enosmerni števec porabe elektrike landis+gyr' +plot "rast.tsv" using 1:2 title 'Wh' with linespoints pointtype 7; diff --git a/srv/rast.sh b/srv/rast.sh new file mode 100755 index 0000000..2749f26 --- /dev/null +++ b/srv/rast.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -xe +SEK=1 ./c db rast > rast.tsv +./rast.gnuplot diff --git a/srv/seštevek.gnuplot b/srv/seštevek.gnuplot new file mode 100755 index 0000000..21b92bc --- /dev/null +++ b/srv/seštevek.gnuplot @@ -0,0 +1,17 @@ +#!/usr/bin/gnuplot +set term pngcairo +set output 'seštevek.png' +f = '%H:%M %d. %m.' +set xlabel 'Čas v UTC ['.f.']' +set ylabel sprintf('Wh/%ss', ARG1) +set xdata time +set timefmt '%s' +set format x f +set grid +set mxtics +set mytics +set terminal png size 1337,420 +set tmargin 3 +set rmargin 5 +set title sprintf('enosmerni števec porabe elektrike landis+gyr :: odvod (moč) - poraba Wh v %s sekundah', ARG1) +plot "seštevek.tsv" using 1:2 title sprintf('Wh/%ss', ARG1) with linespoints pointtype 7; diff --git a/srv/seštevek.sh b/srv/seštevek.sh new file mode 100755 index 0000000..0205fb3 --- /dev/null +++ b/srv/seštevek.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -xe +SEK=1 ./c db seštevek $(($1*1000)) > seštevek.tsv +gnuplot -c seštevek.gnuplot $1 |