xy plot von Aussentemperatur gegen Gasverbrauch

Begonnen von toka11, 19 Dezember 2016, 09:09:21

Vorheriges Thema - Nächstes Thema

toka11

Hallo,

ich möchte die tägliche durchschnittliche Aussentemperatur gegen den täglichen Gasverbrauch plotten (scatter plot). Ich habe beide Werte in verschiedenen Logdateien gespeichert.

Geht das mit logproxy?

justme1968

das plotten ja, das zusammenführen aus zwei log files nicht direkt.

du müsstest dir eine eigene routine schreiben die z.b. über die filelog get funktion die daten für den relevanten zeitraum aus beiden logs holt und dann in das von logproxy benötigte format zusammen mischt. diese kannst du dann mit Func: in einer logProxy columnspec zeile im plotfile angeben.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

toka11

Vielen Dank.
Wenn ich es richtig verstehe, müsste ich die aus den log files ein neues log file erstellen und das dann mit einer eigenen Funktion (Func:) plotten?
D.h. logProxy_xy2Plot(\@xyPoints) ist dafür nicht anwendbar?

Grüße
Toralf

justme1968

du musst kein neues log erstellen.

aber du rauchst eine eigene routine um beide logs auszulesen und das array zu erstellen.

und dann hast du etwas in der art im plot file: Func:logProxy2Plot(myFunc($from,$to,'log1','log2'))

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

andies

Ich kapere mal den Thread, weil ich keinen neuen aufmachen will. Ich hatte mir aus jux und tollerei überlegt, wie man den Gasverbrauch als Funktion der Außentemperaturen messen kann und da ich über mehrere Monate (eigentlich zwei Jahre) Daten haben, wollte ich mal loslegen. Das Bild unten zeigt den Plot aus den Daten. Auf der x- und der y-Achse stehen Minimal- und Maximaltemperatur des jeweiligen Tages, gemessen mit einem Sensor etwa zehn Meter vom Haus entfernt (die Gasheizung hat einen eigenen Temperaturfühler, den wollte ich aber nicht nehmen - obwohl der ja eigentlich auslöst). Auf der z-Achse steht der Gasverbrauch in Euro. Man sieht kleinere Fehler, an denen der Gaszähler ausgefallen ist sowie an denen wie verrückt gebadet wurde.

Logischerweise steigt der Verbrauch bei sinkenden Temperaturen; außerdem bleibt eine Grundlast, weil bei uns das warme Wasser ja mit Gas erzeugt wird. Dann war die Frage, wie man diese Funktion am geschicktesten darstellt. Es ist so, dass der Mittelwert aus Minimum und Maximum des Tages am besten vorhersagen kann, wie der Gasverbrauch werden wird (Vorhersagegüte fast 90%, das ist sehr gut). Die ideale Funktion ist eine quadratische:

  • Bei niedrigen Temperaturen ist der Verbrauch fast linear,
  • bei hohen Temperaturen sinkt er konvex ab und bleibt bei etwa 67 Cent/Tag stehen.

Ich habe dann intern das so umgesetzt, um mir das auch anzeigen zu lassen:
   
   my $m=(ReadingsVal("BresserTemeo_1", "tmin", "20")+ReadingsVal("BresserTemeo_1", "tmax", "20"))/2; #Mittelwert holen
   fhem("setreading Gasrechner Normverbrauch ".sprintf "%.2f", 9.9329-0.7284*$m+0.0137*$m*$m);  # Vorhersage schreiben


Wozu man das gebrauchen kann? Keine Ahnung...
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Ich habe hier ein wenig weiter gespielt und festgestellt, dass meine Rechnung oben mit zwei Eingabewerten viel zu kompliziert ist. Am besten kann man den Gasverbrauch bei meinem Haus vorhersagen, wenn man sich die Durchschnittstemperatur des  Tages anschaut. Genauer den Quotienten
Zitat(Maximaltemperatur+Minimaltemperatur)/2.
Das entsprechende Bild über zwei Jahre (unten dieser Durchschnitt, links der Preis des verbrauchten Gases, jeder Punkt ist ein Tag) hängt an. Wenn man da eine einfache Regression durchführt, kommt eine quadratische Gleichung heraus.   

Wenn man nun noch die Oberfläche des Hauses dazunimmt (da habe ich sehr überschlagsmäßig gerechnet) und unterstellt, dass diese quadratische Funktion in Wirklichkeit linear ist, kann man den U-Wert des Hauses abschätzen. Denn jeder Grad Temperaturverlust kostet mich ja ungefähr 0.68 Euro pro Tag, das macht also ungefähr 13 kWh pro Tag und das sind dann pro Stunde ungefähr 0.55 kW. Auf die Oberfläche des Hauses bezogen bedeutet das, mein Haus (1937 gebaut, Dach gedämmt, aber Oberfläche nicht und Doppelfenster) hat einen U-Wert von 1.2.

Jetzt müsste ich nur noch wissen, ob das gegenüber den Werten https://de.wikipedia.org/wiki/W%C3%A4rmedurchgangskoeffizient#Typische_Werte_des_Bauwesens gut oder schlecht ist. Genau ist es sicher nicht, aber es wird näher an der Wahrheit liegen als 0.5 oder 2.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann