From c1ab440a3314f8c5813f12cddc7d01162eec6e2a Mon Sep 17 00:00:00 2001 From: Steffen Pohle Date: Sat, 29 Jan 2022 01:52:03 +0100 Subject: [PATCH] adding option not to draw a chart. --- fbsh-cli.cc | 62 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/fbsh-cli.cc b/fbsh-cli.cc index ab059f5..404dccf 100644 --- a/fbsh-cli.cc +++ b/fbsh-cli.cc @@ -16,12 +16,13 @@ void help() { printf (" Client for accessing the fritzbox smart home devices.\n"); printf (" Most parameters can be set in a seperate config file.\n"); printf ("Commands:\n"); - printf ("\thelp displays this helptext.\n"); - printf ("\tconnect connect to the device, it will save the SID file.\n"); - printf ("\tlist lists all devices, connection will be recovered from SID.\n"); - printf ("\t If silent parameter is set, we will not be asked for credentials\n"); - printf ("\tgethzr AIN reads heating control device\n"); - printf ("\tsaveconfig save configfile.\n"); + printf ("\thelp displays this helptext.\n"); + printf ("\tconnect connect to the device, it will save the SID file.\n"); + printf ("\tlist lists all devices, connection will be recovered from SID.\n"); + printf ("\t If silent parameter is set, we will not be asked for credentials\n"); + printf ("\tgethzr AIN options reads heating control device\n"); + printf ("\t -nochart display no history chart\n"); + printf ("\tsaveconfig save configfile.\n"); printf ("\n"); printf ("Parameters:\n"); printf ("\t-config configfile to use\n"); @@ -68,7 +69,7 @@ void getlist(int argpos, int argc, char **argv) { } #define CHARTSIZE 20 -void gethzr(char *ain) { +void gethzr(int argci, int argc, char **argv) { FBSmartHomeHZR hzr; list::iterator iter; float fmin, fmax; @@ -77,6 +78,13 @@ void gethzr(char *ain) { char t[64]; struct tm *tmp; time_t ctime = time(NULL); + char *ain = argv[++argci]; + bool nochart = false; + + for (argci++; argci < argc; argci++) { + if (strcmp(argv[argci], "-nochart") == 0) + nochart = true; + } if (ain == NULL) return; connect(); @@ -91,29 +99,31 @@ void gethzr(char *ain) { printf (" Offset: %d\n", hzr.offset); printf (" Grid: %d\n", hzr.statsgrid); - for (iter = hzr.stats.begin(); iter != hzr.stats.end(); iter++) { - if (iter == hzr.stats.begin()) fmin = fmax = *iter; - if (fmin > *iter) fmin = *iter; - if (fmax < *iter) fmax = *iter; - } + if (!nochart) { + for (iter = hzr.stats.begin(); iter != hzr.stats.end(); iter++) { + if (iter == hzr.stats.begin()) fmin = fmax = *iter; + if (fmin > *iter) fmin = *iter; + if (fmax < *iter) fmax = *iter; + } - printf (" %-2.1f %-2.1f\n", fmin/10.0, fmax/10.0); + printf (" %-2.1f %-2.1f\n", fmin/10.0, fmax/10.0); - ctime = (ctime / hzr.statsgrid) * hzr.statsgrid; + ctime = (ctime / hzr.statsgrid) * hzr.statsgrid; - for (iter = hzr.stats.begin(); iter != hzr.stats.end(); iter++) { - s = " "; - c = ((float)(CHARTSIZE * (*iter - fmin) / (fmax-fmin))); - for (i = 0; i < c; i++) s += " "; - s += "*"; - for (i = c+1; i <= CHARTSIZE; i++) s += " "; + for (iter = hzr.stats.begin(); iter != hzr.stats.end(); iter++) { + s = " "; + c = ((float)(CHARTSIZE * (*iter - fmin) / (fmax-fmin))); + for (i = 0; i < c; i++) s += " "; + s += "*"; + for (i = c+1; i <= CHARTSIZE; i++) s += " "; - ctime -= hzr.statsgrid; - tmp = localtime(&ctime); - strftime(t, 64, "%H:%M", tmp); - printf (" %s |%s|\n", t, s.c_str()); + ctime -= hzr.statsgrid; + tmp = localtime(&ctime); + strftime(t, 64, "%H:%M", tmp); + printf (" %s |%s|\n", t, s.c_str()); + } + printf (" %-2.1f %-2.1f\n", fmin/10.0, fmax/10.0); } - printf (" %-2.1f %-2.1f\n", fmin/10.0, fmax/10.0); } @@ -145,7 +155,7 @@ int main(int argc, char** argv) { break; } else if (strcmp(argv[i], "gethzr") == 0) { - gethzr(argv[++i]); + gethzr(i, argc, argv); } //