#define POWER_PATH "/home/kaapeli/rrdd/power/" #define POWER_RRD_PATH POWER_PATH "power.rrd" #define POWER_IMAGES_PATH POWER_PATH "images/" const char *powertext[] = { "DEF:vesiv=" POWER_RRD_PATH ":vesivoima:AVERAGE", "DEF:ydinv=" POWER_RRD_PATH ":ydinvoima:AVERAGE", "DEF:lauhd=" POWER_RRD_PATH ":lauhdevoima:AVERAGE", "DEF:kauko=" POWER_RRD_PATH ":kaukolampo:AVERAGE", "DEF:teoll=" POWER_RRD_PATH ":teollisuus:AVERAGE", "DEF:muutu=" POWER_RRD_PATH ":muu:AVERAGE", "DEF:huipp=" POWER_RRD_PATH ":huippuvoima:AVERAGE", "DEF:tuont=" POWER_RRD_PATH ":tuonti:AVERAGE", "COMMENT:\\n", blank, "COMMENT: " "MIN MAX AVG Last\\n", blank, "AREA:ydinv#ffff00:Ydinvoima ", "GPRINT:ydinv:MIN:" numfmt, "GPRINT:ydinv:MAX:" numfmt, "GPRINT:ydinv:AVERAGE:" numfmt, "GPRINT:ydinv:LAST:" numfmt "\\n", "COMMENT:\\n", blank, "STACK:teoll#ff00ff:Teollisuus ", "GPRINT:teoll:MIN:" numfmt, "GPRINT:teoll:MAX:" numfmt, "GPRINT:teoll:AVERAGE:" numfmt, "GPRINT:teoll:LAST:" numfmt "\\n", "COMMENT:\\n", blank, "STACK:kauko#00ff00:Kaukolämpö ", "GPRINT:kauko:MIN:" numfmt, "GPRINT:kauko:MAX:" numfmt, "GPRINT:kauko:AVERAGE:" numfmt, "GPRINT:kauko:LAST:" numfmt "\\n", "COMMENT:\\n", blank, "STACK:muutu#808080:Muu ", "GPRINT:muutu:MIN:" numfmt, "GPRINT:muutu:MAX:" numfmt, "GPRINT:muutu:AVERAGE:" numfmt, "GPRINT:muutu:LAST:" numfmt "\\n", "COMMENT:\\n", blank, "STACK:lauhd#ff0000:Lauhdevoima ", "GPRINT:lauhd:MIN:" numfmt, "GPRINT:lauhd:MAX:" numfmt, "GPRINT:lauhd:AVERAGE:" numfmt, "GPRINT:lauhd:LAST:" numfmt "\\n", "COMMENT:\\n", blank, "STACK:vesiv#0000ff:Vesivoima ", "GPRINT:vesiv:MIN:" numfmt, "GPRINT:vesiv:MAX:" numfmt, "GPRINT:vesiv:AVERAGE:" numfmt, "GPRINT:vesiv:LAST:" numfmt "\\n", "COMMENT:\\n", blank, "STACK:tuont#000000:Tuonti ", "GPRINT:tuont:MIN:" numfmt, "GPRINT:tuont:MAX:" numfmt, "GPRINT:tuont:AVERAGE:" numfmt, "GPRINT:tuont:LAST:" numfmt "\\n", "COMMENT:\\n", blank, "STACK:huipp#ff0000:Huippuvoima ", "GPRINT:huipp:MIN:" numfmt, "GPRINT:huipp:MAX:" numfmt, "GPRINT:huipp:AVERAGE:" numfmt, "GPRINT:huipp:LAST:" numfmt "\\n", "COMMENT:\\n", 0 }; const char *freqtext[] = { "DEF:freq=" POWER_RRD_PATH ":taajuus:AVERAGE", "COMMENT:\\n", blank, "COMMENT: " "MIN MAX AVG Last\\n", blank, "LINE1:freq#0000ff:Taajuus ", "GPRINT:freq:MIN:" numfmt, "GPRINT:freq:MAX:" numfmt, "GPRINT:freq:AVERAGE:" numfmt, "GPRINT:freq:LAST:" numfmt "\\n", "COMMENT: \\n", }; const char *deviationtext[] = { "DEF:devi=" POWER_RRD_PATH ":aikapoikkeama:AVERAGE", "COMMENT:\\n", blank, "COMMENT: " "MIN MAX AVG Last\\n", blank, "LINE1:devi#0000ff:Aikapoikkeama ", "GPRINT:devi:MIN:" numfmt, "GPRINT:devi:MAX:" numfmt, "GPRINT:devi:AVERAGE:" numfmt, "GPRINT:devi:LAST:" numfmt "\\n", "COMMENT: \\n", }; const char *pricetext[] = { "DEF:hinta=" POWER_RRD_PATH ":hinta:AVERAGE", "COMMENT:\\n", blank, "COMMENT: " "MIN MAX AVG Last\\n", blank, "LINE1:hinta#0000ff:Hinta ", "GPRINT:hinta:MIN:" numfmt, "GPRINT:hinta:MAX:" numfmt, "GPRINT:hinta:AVERAGE:" numfmt, "GPRINT:hinta:LAST:" numfmt "\\n", "COMMENT: \\n", }; const char *consumptiontext[] = { "DEF:kulut=" POWER_RRD_PATH ":kulutus:AVERAGE", "DEF:tuota=" POWER_RRD_PATH ":tuotanto:AVERAGE", "COMMENT:\\n", blank, "COMMENT: " "MIN MAX AVG Last\\n", blank, "LINE1:kulut#0000ff:Kulutus ", "GPRINT:kulut:MIN:" numfmt, "GPRINT:kulut:MAX:" numfmt, "GPRINT:kulut:AVERAGE:" numfmt, "GPRINT:kulut:LAST:" numfmt "\\n", blank, "LINE1:tuota#00ff00:Tuotanto ", "GPRINT:tuota:MIN:" numfmt, "GPRINT:tuota:MAX:" numfmt, "GPRINT:tuota:AVERAGE:" numfmt, "GPRINT:tuota:LAST:" numfmt "\\n", "COMMENT: \\n", }; const char *importtext[] = { "DEF:tuont=" POWER_RRD_PATH ":tuonti:AVERAGE", "COMMENT:\\n", blank, "COMMENT: " "MIN MAX AVG Last\\n", blank, "LINE1:tuont#ff0000:Tuonti ", "GPRINT:tuont:MIN:" numfmt, "GPRINT:tuont:MAX:" numfmt, "GPRINT:tuont:AVERAGE:" numfmt, "GPRINT:tuont:LAST:" numfmt "\\n", "COMMENT: \\n", }; const char *freqoptions[] = { "--alt-autoscale", "--vertical-label", "Taajuus Hz", "--units-exponent", "-3", 0 }; const char *deviationoptions[] = { "--alt-autoscale", "--vertical-label", "Aikapoikkeama s", 0 }; const char *priceoptions[] = { "--alt-autoscale", "--vertical-label", "Hinta €/MWh", 0 }; const char *consumptionoptions[] = { "--alt-autoscale", "--vertical-label", "Teho MW", "--units-exponent", "0", 0 }; const char *importoptions[] = { "--alt-autoscale", "--vertical-label", "Teho MW", "--units-exponent", "0", 0 }; const char *poweroptions[] = { "--alt-autoscale-max", "--lower-limit", "0", "--vertical-label", "Teho (MW)", "--units-exponent", "0", 0 }; DEFINE_IMAGE(power, "/home/kaapeli/rrdd/power/images/power", 960, 480, 2); DEFINE_IMAGE(freq, "/home/kaapeli/rrdd/power/images/freq", 960, 240, 2); DEFINE_IMAGE(deviation, "/home/kaapeli/rrdd/power/images/deviation", 960, 240, 2); DEFINE_IMAGE(price, "/home/kaapeli/rrdd/power/images/price", 960, 240, 2); DEFINE_IMAGE(consumption,"/home/kaapeli/rrdd/power/images/consumption", 960, 240, 2); DEFINE_IMAGE(import, "/home/kaapeli/rrdd/power/images/import", 960, 240, 2); static struct rrd_image *power_images[] = { &powerdaily, &powerweekly, &powermonthly, &poweryearly, &freqdaily, &freqweekly, &freqmonthly, &freqyearly, &deviationdaily, &deviationweekly, &deviationmonthly, &deviationyearly, &pricedaily, &priceweekly, &pricemonthly, &priceyearly, &consumptiondaily, &consumptionweekly, &consumptionmonthly, &consumptionyearly, &importdaily, &importweekly, &importmonthly, &importyearly, 0 }; struct rrd_data_source power_sources[] = { SOURCE_ENTRY("kulutus", "GAUGE", 360, 0, 20000) SOURCE_ENTRY("tuotanto", "GAUGE", 360, 0, 20000) SOURCE_ENTRY("vesivoima", "GAUGE", 360, 0, 3000) SOURCE_ENTRY("ydinvoima", "GAUGE", 360, 0, 3000) SOURCE_ENTRY("lauhdevoima", "GAUGE", 360, 0, 3000) SOURCE_ENTRY("kaukolampo", "GAUGE", 360, 0, 3000) SOURCE_ENTRY("teollisuus", "GAUGE", 360, 0, 3000) SOURCE_ENTRY("muu", "GAUGE", 360, 0, 3000) SOURCE_ENTRY("huippuvoima", "GAUGE", 360, 0, 3000) SOURCE_ENTRY("tuonti", "GAUGE", 360, -3000, 3000) SOURCE_ENTRY("hinta", "GAUGE", 360, 0, 3000) SOURCE_ENTRY("ylijaama", "GAUGE", 360, -3000, 3000) SOURCE_ENTRY("ylijaamakumul", "GAUGE", 360, -3000, 3000) SOURCE_ENTRY("taajuus", "GAUGE", 360, 0, 3000) SOURCE_ENTRY("aikapoikkeama", "GAUGE", 360, -30, 30) {}, }; struct rrd_archive power_archives[] = { ARCHIVE_ENTRY("AVERAGE", 0.5, 1, 960) ARCHIVE_ENTRY("AVERAGE", 0.5, 7, 960) ARCHIVE_ENTRY("AVERAGE", 0.5, 31, 960) ARCHIVE_ENTRY("AVERAGE", 0.5, 365, 960) ARCHIVE_ENTRY("MIN", 0.5, 1, 960) ARCHIVE_ENTRY("MIN", 0.5, 7, 960) ARCHIVE_ENTRY("MIN", 0.5, 31, 960) ARCHIVE_ENTRY("MIN", 0.5, 365, 960) ARCHIVE_ENTRY("MAX", 0.5, 1, 960) ARCHIVE_ENTRY("MAX", 0.5, 7, 960) ARCHIVE_ENTRY("MAX", 0.5, 31, 960) ARCHIVE_ENTRY("MAX", 0.5, 365, 960) {}, }; char *power_parse_cmdline[] = { "./parse_power.sh", "", NULL, }; static struct rrd_database power_rrd = { .name = "power", .filename = POWER_RRD_PATH, .interval = 180, .sources = power_sources, .archives = power_archives, .parse = script_parser, .parser_data = power_parse_cmdline, .images = power_images, };