Plot Code alles in einem

Begonnen von ChrisW, 17 Januar 2013, 12:30:34

Vorheriges Thema - Nächstes Thema

ChrisW

Hallo,
habe schon den Code aus dem Wiki versucht.
Datei max_temp.gplot hab ich angelegt und mit dem WIki COde gefüllt.
Der Code für die Fhem nach ändern des Gerätenamen funktioniert nicht kein Inhalt.

Suche da ein fertiges Beispiel mit allen Daten in einem Plot :)

Vielen Dank
Raspberry PI3 mit allem möglichen.

Jürgen I.

meine MAXLAN.cfg für einen Wandthermostaten und 2 Heizkörperthermostaten, Daten werden in einem Plot angezeigt

#Wandthermostat Wohnzimmer
define wz_WandThermostat MAX WallMountedThermostat 03c09e
attr wz_WandThermostat room Wohnzimmer

#Fensterkontakt Wohnzimmer Balkontüre
define wz_Balkontuere MAX ShutterContact 02b8db
attr wz_Balkontuere room Wohnzimmer

#Heizkörperthermostat Wohnzimmer
define wz_HT_Wohnzimmer MAX HeatingThermostat 032eec
attr wz_HT_Wohnzimmer room Wohnzimmer

#Heizkörperthermostat Esszimmer
define wz_HT_Esszimmer MAX HeatingThermostat 032f3f
attr wz_HT_Esszimmer room Wohnzimmer

#Logfile Wohnzimmer
define wz_log FileLog ./log/wz-%Y.log wz_Wand.*:(desiredTemperatur|temperature).*|wz_HT.*:(valveposition).*
attr wz_log logtype text
attr wz_log room LOG
define wl_wz weblink fileplot wz_log:temp4MAX_WZ:CURRENT
attr wl_wz room Wohnzimmer

und die dazugehörige temp4MAX_wz.gplot <- Achtung, Name.
dieses Plot zeigt die Soll- und Isttemperatur des Wandthermostaten und die Ventilstellungen der beiden Heizkörperthermostaten

# Attribute 'small' is useful for gnuplot/-scroll only,
# if plotsize is less than 800,400
#set terminal png transparent small size <SIZE> crop

set terminal png transparent size <SIZE> crop

set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
#set ytics
set title '<TL>'
set grid xtics y2tics

set y2label "Temperature in C"
set ylabel "Ventil Position (%)"


#set y2range [11:29]
set yrange [0:80]

#FileLog 4:desiredTemperature:4.5:
#FileLog 4:temperature:4.5:
#FileLog 4:wz_HT_Wohnzimmer:0:
#FileLog 4:wz_HT_Esszimmer:0:

plot \
 "< awk 'desiredTemperature' <IN>",\
      using 1:2 ls l2 axes x1y2 title 'Soll' with histeps
 "< awk 'temperature' <IN>",\
      using 1:2 ls l1fill axes x1y2 title 'Ist' with lines
 "< awk 'wz_HT_Wohnzimmer' <IN>",\
      using 1:2 ls l0 axes x1y1 title 'Ventil WZ (%)' with histeps
 "< awk 'wz_HT_Esszimmer' <IN>",\
      using 1:2 ls l3 axes x1y1 title 'Ventil EZ (%)' with histeps


Ich hoffe das hilft ein wenig

Matthias Gehre

Wenn dir bisher das Wiki nicht geholfen hat, und du aber nun eine Lösung findest,
wäre ich dir sehr dankbar, wenn du das Wiki verbesserst.
So hilfst du allen, die nach dir die gleiche Frage haben.

ChrisW

hmmm bekomme das nicht umgebaut. Hier das Thermostat welches ich in einem Plot packen will. Dazu noch die Temperatur von meinem Raum Thermostat.
Packe es gerne ins WIki danach wenns läuft.

Folgends im Plot:

Ist(MAX) / Soll(MAX( / Ventilstand(MAX)  / Temperatur(externes Thermometer)[/b]

Max:

#Bad
define MAX_Bad MAX HeatingThermostat 01090d
attr MAX_Bad event-on-change-reading .*
attr MAX_Bad fp_1.Etage 367,366,0,
attr MAX_Bad icon icoTemp
attr MAX_Bad room MAX,1.Etage
define FileLog_MAX_Bad FileLog ./log/MAX_Bad-%Y.log MAX_Bad
attr FileLog_MAX_Bad logtype text
attr FileLog_MAX_Bad room Logfiles


Ext. Thermostat:

efine Bad_Temp CUL_TX 125
attr Bad_Temp fp_1.Etage 413,290,4,Temperatur
attr Bad_Temp loglevel 6
attr Bad_Temp room Thermometer
define FileLog_Bad_Temp FileLog ./log/Bad_Temp-%Y.log Bad_Temp
attr FileLog_Bad_Temp logtype temp4hum4:Temp/Hum,text
attr FileLog_Bad_Temp room Logfiles
define weblink_Bad_Temp weblink fileplot FileLog_Bad_Temp:temp4hum4:CURRENT
attr weblink_Bad_Temp fp_1.Etage 511,193,0,Badezimmer
attr weblink_Bad_Temp label "Bad_Temp Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_Bad_Temp room Klima,1.Etage

Raspberry PI3 mit allem möglichen.

Jürgen I.

OK, um 2 Geräte in einen Plot zu bekommen muss eine LOG-Datei mit den gewünschten Werten erzeugt werden. Ich habe z.B. alle Geräte im Wohnzimmer am Anfang mit wz_ gekennzeichnet und dann die einzelnen Werte der unterschiedlichen Geräte die ich haben will angegeben.

define wz_log FileLog ./log/wz-%Y.log wz_Wand.*:(desiredTemperatur|temperature).*|wz_HT.*:(valveposition).*

der Inhalt der LOG sieht dann so aus:

2013-01-17_17:06:16 wz_HT_Esszimmer valveposition: 31
2013-01-17_17:06:16 wz_HT_Wohnzimmer valveposition: 31
2013-01-17_17:06:16 wz_WandThermostat temperature: 22.2
2013-01-17_17:06:16 wz_WandThermostat desiredTemperature: 21.5

um das dann im plot richtig anzuzeigen habe ich eine eigene gplot Datei geschrieben

#FileLog 4:desiredTemperature:4.5:
#FileLog 4:temperature:4.5:
#FileLog 4:wz_HT_Wohnzimmer:0:
#FileLog 4:wz_HT_Esszimmer:0:

plot \
"< awk 'desiredTemperature' <IN>",\
using 1:2 ls l2 axes x1y2 title 'Soll' with histeps
"< awk 'temperature' <IN>",\
using 1:2 ls l1fill axes x1y2 title 'Ist' with lines
"< awk 'wz_HT_Wohnzimmer' <IN>",\
using 1:2 ls l0 axes x1y1 title 'Ventil WZ (%)' with histeps
"< awk 'wz_HT_Esszimmer' <IN>",\
using 1:2 ls l3 axes x1y1 title 'Ventil EZ (%)' with histeps

ich bin Neuling und benutze FHEM erst seit ein paar Wochen, ob das so sauber ist kann ich nicht sagen aber bei mir tut´s.


ChrisW

Schönes Plot hab es nun hin bekommen. Jedoch suche ich noch eine Möglichkeit meine 2. Temperatur dort rein zu bekommen.
Beides heißt im log:
Externes Thermometer:
2013-01-17_20:52:46 Bad_Temp temperature: 21.9

Temperatur von Max:
013-01-17_20:59:03 MAX_Bad temperature: 23.3

Mein Plot:

# Attribute 'small' is useful for gnuplot/-scroll only,
# if plotsize is less than 800,400
#set terminal png transparent small size <SIZE> crop

set terminal png transparent size <SIZE> crop

set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
#set ytics
set title '<TL>'
set grid xtics y2tics

set y2label "Temperature in C"
set ylabel "Ventil Position (%)"


#set y2range [11:29]
set yrange [0:80]



#FileLog 4:desiredTemperature:4.5:
#FileLog 4:temperature:4.5:
#FileLog 4:wz_HT_Wohnzimmer:0:
#FileLog 4:wz_HT_Esszimmer:0:

plot \
"< awk 'desiredTemperature' <IN>",\
using 1:2 ls l2 axes x1y2 title 'Soll' with histeps
"< awk 'temperature' <IN>",\
using 1:2 ls l1fill axes x1y2 title 'Ist' with lines
"< awk 'valveposition' <IN>",\
using 1:2 ls l0 axes x1y1 title 'Ventil (%)' with histeps


Welche Temperatur nimmt er den jetzt von da ???  kann ich das awk 'temperature' in awk 'Bad_Temp temperature'  ändern ??

"< awk 'temperature' <IN>",\
using 1:2 ls l1fill axes x1y2 title 'Ist' with lines
Raspberry PI3 mit allem möglichen.

Jürgen I.

es werden beide temperaturen genommen, am besten nur eine temperatur ins LOG schreiben

ChrisW

hmm sicher das bei dir Ventil Funktioniert ??

plot \
"< awk 'desiredTemperature' <IN>",\
using 1:2 ls l2 axes x1y2 title 'Soll' with histeps
"< awk 'temperature' <IN>",\
using 1:2 ls l1fill axes x1y2 title 'Ist' with lines
"< awk 'valveposition' <IN>",\
using 1:2 ls l0 axes x1y1 title 'Ventil (%)' with histeps

Im Log steht es so:

2013-01-17_22:07:14 MAX_Bad valveposition: 100


Der Rote Strick hängt aber durchgehen bei 0 ;(
Da ist was Faul
Raspberry PI3 mit allem möglichen.

ChrisW


(siehe Anhang / see attachement)



(siehe Anhang / see attachement)


Hmm also da stimmt glaube ich noch mehr nicht, Er wertet das auto / eco wohl auch mit aus. Und die Temperatur scheint dauerhaft gleich zu sein Okay mal 21,5 mal 22,9 da kann man natürlich wenig erkennen.
Ventilstände sind aber durchgehend 0 ...

Code zum Log zusammenstellen :

define FileLog_Max_Bad_Temp FileLog ./log/Max_Bad_Temp-%Y.log Max_Bad_Temp|MAX_Bad.*:(desiredTemperatur|valveposition).*|Bad_Temp.*:(temperature).*
attr FileLog_Max_Bad_Temp logtype text
attr FileLog_Max_Bad_Temp room Logfiles



Das Log hat meine Inhalte die ich will:

2013-01-18_07:49:20 Bad_Temp temperature: 22.9
2013-01-18_07:50:20 Bad_Temp temperature: 22.9
2013-01-18_07:51:11 MAX_Bad desiredTemperature auto
2013-01-18_07:51:19 MAX_Bad desiredTemperature auto
2013-01-18_07:51:27 Bad_Temp temperature: 22.8
2013-01-18_07:52:15 MAX_Bad desiredTemperature eco
2013-01-18_07:52:20 MAX_Bad desiredTemperature: 17.0
2013-01-18_07:52:28 MAX_Bad desiredTemperature eco
2013-01-18_07:53:17 Bad_Temp temperature: 22.8
2013-01-18_07:54:16 Bad_Temp temperature: 22.8
2013-01-18_07:55:17 Bad_Temp temperature: 22.8
2013-01-18_07:56:12 MAX_Bad valveposition: 17
2013-01-18_07:56:18 Bad_Temp temperature: 22.8
2013-01-18_07:57:19 Bad_Temp temperature: 22.8


Damit lasse ich den Plot generieren:


define wl_max_bad weblink fileplot FileLog_Max_Bad_Temp:temp4MAX_bad:CURRENT
attr wl_max_bad room MAX

Plot:

# Attribute 'small' is useful for gnuplot/-scroll only,
# if plotsize is less than 800,400
#set terminal png transparent small size <SIZE> crop

set terminal png transparent size <SIZE> crop

set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
#set ytics
set title '<TL>'
set grid xtics y2tics

set y2label "Temperature in C"
set ylabel "Ventil Position (%)"


#set y2range [11:29]
set yrange [0:80]

#FileLog 4:desiredTemperature:4.5:
#FileLog 4:temperature:4.5:
#FileLog 4:wz_HT_Wohnzimmer:0:
#FileLog 4:wz_HT_Esszimmer:0:

plot \
"< awk 'desiredTemperature' <IN>",\
using 1:2 ls l2 axes x1y2 title 'Soll' with histeps
"< awk 'temperature' <IN>",\
using 1:2 ls l1fill axes x1y2 title 'Ist' with lines
"< awk 'valveposition' <IN>",\
using 1:2 ls l0 axes x1y1 title 'Ventil (%)' with histeps

Raspberry PI3 mit allem möglichen.

ChrisW

Aha das # ist in der Plot datei kein Kommentar :D
Jetz gehts:

plot \
"< awk 'desiredTemperature' <IN>",\
using 1:2 ls l2 axes x1y2 title 'Soll' with histeps
"< awk 'temperature' <IN>",\
using 1:2 ls l1fill axes x1y2 title 'Ist' with lines
"< awk 'valveposition' <IN>",\
using 1:2 ls l3 axes x1y1 title 'Ventil (%)' with histeps
Raspberry PI3 mit allem möglichen.

Jürgen I.

hier sitzt der Fehler:
das ändern
#FileLog 4:desiredTemperature:4.5:
#FileLog 4:temperature:4.5:
#FileLog 4:wz_HT_Wohnzimmer:0:
#FileLog 4:wz_HT_Esszimmer:0:

so sollte es gehen
#FileLog 4:desiredTemperature:4.5:
#FileLog 4:temperature:4.5:
#FileLog 4:valveposition:0:

die # ist im gplot kein Kommentar, da bin ich am Anfang auch drüber gestolpert

wieso bei dir auto und eco im LOG steht versteh ich nicht, bei mir ist das nicht so

vielleicht hilft das:
define FileLog_Max_Bad_Temp FileLog ./log/Max_Bad_Temp-%Y.log Max_Bad_Temp|MAX_Bad.*:(desiredTemperature|valveposition).*|Bad_Temp.*:(temperature).*

Jürgen I.