From a622a8159ac7e093ed0239d4de4502e393d332cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Sat, 15 Oct 2022 19:15:27 +0200 Subject: dodan gnuplot --- srv/c.c | 30 +++++++++++++++++++++++++----- srv/rast.gnuplot | 17 +++++++++++++++++ srv/rast.sh | 4 ++++ "srv/se\305\241tevek.gnuplot" | 17 +++++++++++++++++ "srv/se\305\241tevek.sh" | 4 ++++ 5 files changed, 67 insertions(+), 5 deletions(-) create mode 100755 srv/rast.gnuplot create mode 100755 srv/rast.sh create mode 100755 "srv/se\305\241tevek.gnuplot" create mode 100755 "srv/se\305\241tevek.sh" (limited to 'srv') diff --git a/srv/c.c b/srv/c.c index 7bda585..f402a28 100644 --- a/srv/c.c +++ b/srv/c.c @@ -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 : najgosteje na [natančnost=0] ms\n\t" -"seštevek: TSV s podatki :", S0(argv[0])); +"seštevek: TSV s podatki :\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\305\241tevek.gnuplot" "b/srv/se\305\241tevek.gnuplot" new file mode 100755 index 0000000..21b92bc --- /dev/null +++ "b/srv/se\305\241tevek.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\305\241tevek.sh" "b/srv/se\305\241tevek.sh" new file mode 100755 index 0000000..0205fb3 --- /dev/null +++ "b/srv/se\305\241tevek.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 -- cgit v1.2.3