summaryrefslogtreecommitdiff
path: root/test.r
blob: 4c5bda751c78be76e8b11a1f6f5547c77f05bc24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/Rscript --vanilla
require(RPostgreSQL)
##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=1000, height=800)

cat("Starte Abfragen\n")
brenner <- dbGetQuery(con,
    paste("SELECT timestamp
                , value_string
             FROM value
            WHERE sensor_id IN (select id from sensor where name = 'heizkreisregler1.betriebsdatenFeuerungsautomat.betriebszustand')
              AND date_trunc('day',timestamp) = date_trunc('day',now())
            ORDER BY  timestamp desc", sep=""))

## Brennerstatus auf Brennerstatusänderungen reduzieren
brenner <- aggregate(brenner$timestamp,
                     list(value_string=brenner$value_string),
                     min)

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 date_trunc('day',timestamp) = date_trunc('day',now()) ",
              " ORDER BY timestamp desc", sep=""))
    d$timestamp <- as.POSIXct(round(d$timestamp, "mins"),tz="GMT")
    dm <- aggregate(d$value, list(timestamp=d$timestamp), mean)
    names(dm) <- c("time", sensorName)
    dm
}

## multi arg version of merge()
mymerge <- function (a,...,all.x=TRUE) {
  if ( length(list(...)) > 1) {
    merge(a,merge(...,all.x=all.x),all.x=all.x)
  } else {
    x<-merge(a,list(...)[1],all.x=all.x)
  }
}

kollektor <- readNumericSensorDay("heizkreisregler9.solarDaten.tempKollektor")
warmwasser <- readNumericSensorDay("heizkreisregler9.solarDaten.tempWarmwasserSolar")
kessel <- readNumericSensorDay("heizkreisregler10.betriebsdatenRegler1.kesselTemperatur")
data <- mymerge(kollektor, kessel, warmwasser)

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)


lines(data$time, data$heizkreisregler10.betriebsdatenRegler1.kesselTemperatur, col="red")
lines(data$time, data$heizkreisregler9.solarDaten.tempWarmwasserSolar, col="orange")
lines(data$time, data$heizkreisregler9.solarDaten.tempKollektor, col="blue")

box()

for (i in c(1:dim(brenner)[2])) {
  text(brenner$x[i], max(data[2:length(data)])/2, paste("ab hier", brenner$value_string[i]) ,srt=90)
}


r <- as.POSIXct(range(data$time),tz="GMT")
s <- round.POSIXt(seq(r[1], r[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=c('Kollektor', 'Warmwasser', 'Kessel'), fill=c('red', 'orange', 'blue'))
title("Temperaturen")
dev.off()

dbDisconnect(con)