diff options
Diffstat (limited to 'sql/chart.r')
-rwxr-xr-x | sql/chart.r | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/sql/chart.r b/sql/chart.r deleted file mode 100755 index 5575293..0000000 --- a/sql/chart.r +++ /dev/null @@ -1,148 +0,0 @@ -#!/usr/bin/Rscript --vanilla -require(RPostgreSQL) -require(RSvgDevice) -nulltime <- strptime("01.01.1970", "%d.%m.%Y") - -drv <- dbDriver("PostgreSQL") -con <- dbConnect(drv, host="10.2.2.22", user="jack", password="jack", dbname="ebus") - - -## plot 1 -#png(file = "Rplots.png", width=1500, height=800) -devSVG(file="Rplots.svg",width=15,height=10) -par(cex=1.25) -cat("Starte Abfragen\n") -brenner <- dbGetQuery(con, - paste("SELECT timestamp as \"time\" - , value_string - FROM value - WHERE sensor_id IN (select id from sensor where name = 'heizkreisregler1.betriebsdatenFeuerungsautomat.betriebszustand') - AND timestamp > now() - interval '1 day'", - " AND value_string IS NOT NULL", - " ORDER BY timestamp asc", sep="")) - -## Brennerstatus auf Brennerstaotusänderungen reduzieren - -brennerBla <- table(NULL,NULL) -liste <- c() -old_value_string <- "bla" -for (i in seq(1,nrow(brenner))) { - if (brenner$value_string[i] != old_value_string) { - old_value_string <- brenner$value_string[i] - brennerBla <- rbind(brennerBla, data.frame(time=brenner$time[i], value_string=brenner$value_string[i])) - } -} -brenner <- brennerBla - -# Solar Pumpe -solarEngine <- dbGetQuery(con, - paste("SELECT timestamp as \"time\", - value_int - FROM value - WHERE sensor_id IN (select id from sensor where name = 'heizkreisregler9.solarDaten.solarPumpe') - AND timestamp > now() - interval '1 day' - AND value_int IS NOT NULL - ORDER BY timestamp asc", sep="")) -# reduzieren -solarEngineNew <- table(NULL,NULL) -emptyList <- c() -old_value_int <- "blub" -for (i in seq(1,nrow(solarEngine))) { - if (solarEngine$value_int[i] != old_value_int) { - old_value_int <- solarEngine$value_int[i] - solarEngineNew <- rbind(solarEngineNew, data.frame(time=solarEngine$time[i], value_int=solarEngine$value_int[i])) - } -} -solarEngine <- solarEngineNew - -# Numerische Sensoren Lesen -readNumericSensorDay <- function (sensorName) { - d <- dbGetQuery(con, - paste("SELECT timestamp", - " , COALESCE(value_int,value_float) \"value\"", - " FROM value", - " WHERE sensor_id IN (select id from sensor where name = '",sensorName,"')", - " AND timestamp > now() - interval '1 day'", - # ausreißer ausblenden - " AND COALESCE(value_int,value_float) < 200", - " AND COALESCE(value_int,value_float) > -50", - " ORDER BY timestamp desc", sep="")) - d$timestamp <- as.POSIXct(round(d$timestamp, "mins")) - #d <- supsmu(as.vector(d$timestamp), as.vector(d$value)) - names(d) <- c("time", "value") - - myMean <- function(values) { - if (mad(values) > 2) { - print(paste("Streiche ",length(values), - " Werte aus",sensorName, - "mad =", mad(values))) - values <- values * NA - } - mean(values) - } - -# dm <- aggregate(d$value, list(time=d$time), myMean) - dm <- d - dm$time <- as.POSIXct(dm$time,origin=nulltime) - names(dm) <- c("time", sensorName) - dm -} - -warmwasser <- readNumericSensorDay("heizkreisregler9.solarDaten.tempWarmwasserSolar") -kessel <- readNumericSensorDay("heizkreisregler10.betriebsdatenRegler1.kesselTemperatur") -kollektor <- readNumericSensorDay("heizkreisregler9.solarDaten.tempKollektor") -aussenTemperatur <- readNumericSensorDay("feuerungsautomat1.betriebsdatenRegler1.aussenTemperatur") - -# -- TODO ausreißer als punkte darstellen -data <- Reduce(function(x,y) { merge(x,y,all.x=TRUE) }, list(kollektor, kessel, warmwasser, aussenTemperatur)) - - - -cat("Plotte\n") -plot.new() -plot.window(xlim=c(min(data$time), max(data$time)), - ylim=c(min(data[2:length(data)],na.rm=TRUE)*0.9, max(data[2:length(data)],na.rm=TRUE)*1.1)) -par(lwd=2) - - -for (i in c(2:length(data))) { - lines(subset(data,select=c(1,i)), - col=rainbow(length(data)-1)[i-1]) -} -box() - -for (i in c(1:nrow(brenner))) { - text(as.numeric(brenner$time[i]), max(data[2:length(data)],na.rm=TRUE)/2, paste("ab hier", brenner$value_string[i]) ,srt=90) -} - -# quick and dirty add solarEngine to plot - -rect_start <- 0 -rect_color <- rgb(255, 255, 0, alpha=40, maxColorValue=255) - -for (i in c(1:nrow(solarEngine))) { - if (solarEngine$value_int[i] == 1) { - rect_start <- solarEngine$time[i]; - } else if (rect_start != 0) { - end <- solarEngine$time[i]; - # plot - rect(rect_start, 0, solarEngine$time[i], 100, col=rect_color,border=F) - beginn <- 0 - } - #text(as.numeric(solarEngine$time[i]), max(data[2:length(data)],na.rm=TRUE)/2, paste("Solar Pumpe", solarEngine$value_int[i]), srt=90) -} - -rangeX <- as.POSIXct(range(data$time)) -s <- round.POSIXt(seq(rangeX[1], rangeX[2], by=60*60),"hour") -axis.POSIXct(1, at=s, format="%H:%M") - -r <- range(data[2:length(data)], na.rm=TRUE) -s <- seq(r[1], r[2], by=(r[2]-r[1])/8) -axis(2, at=s, labels=paste(round(s,1),"°C")) -legend('topleft', - legend=names(data)[2:length(data)], - fill=rainbow(length(data)-1)) -title(paste("Temperaturen ", rangeX[1], " bis ", rangeX[2])) -dev.off() - -dbDisconnect(con) |