Min.- Max. Temperaturen Gestern und Heute

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Karrlson
Beiträge: 47
Registriert: 03.08.2012, 10:38
Wohnort: Saarland
Danksagung erhalten: 2 Mal

Min.- Max. Temperaturen Gestern und Heute

Beitrag von Karrlson » 08.08.2013, 09:53

Da der alte Thread
http://homematic-forum.de/forum/viewtop ... 26&t=12743
vom TE unbrauchbar (gelöscht) wurde möchte ich hier die Lösung von casametti posten.

Zuerst 6 Variablen anlegen.
Variablen.png
Jeder Variable euren Temperatursensor zuordnen. Siehe oben und unten roter Kasten
Kanalzuordnung.png
Kanalzuordnung.png (12.29 KiB) 36659 mal betrachtet
Jetzt Programm 1 erstellen.
Min-Max.png
Skript Programm 1

Code: Alles auswählen

var source = dom.GetObject("$src$");
var maxTemp = dom.GetObject("Außentemperatur Maximum");
object maxTempDate = dom.GetObject("Uhrzeit Maximum");
object minTempDate = dom.GetObject("Uhrzeit Minimum");
if (source)
{
if (source.Value() > maxTemp.Variable())
{
maxTemp.Variable(source.Value());maxTempDate.Variable(system.Date("%H:%M "))
}
}
else
{
var wds = dom.GetObject("Dein Temperatursensor");
var curTemp = wds.DPByHssDP("TEMPERATURE");
maxTemp.Variable(curTemp.Value());
}
var source = dom.GetObject("$src$");
var minTemp = dom.GetObject("Außentemperatur Minimum");
if (source)
{
if (source.Value() < minTemp.Variable())
{
minTemp.Variable(source.Value());minTempDate.Variable(system.Date("%H:%M "))
}
}
else
{
var wds = dom.GetObject("Aussentemperatur");
var curTemp = wds.DPByHssDP("TEMPERATURE");
minTemp.Variable(curTemp.Value());
}
In dieser Zeile "var wds = dom.GetObject("Dein Temperatursensor");" Deinen Temperatursensor eintragen (Fett gekennzeichnet)
Diese Zeile am Anfang var source = dom.GetObject("$src$"); wird wohl unnötig sein. Ich habe aber keine Ahnung was die macht, daher habe ich sie gelassen da es funktioniert.

Jetzt Programm 2 erstellen.
MinMaxReset.png
Skript Programm 2.

Code: Alles auswählen

! Systemvariablen übernehmen
var minheute= dom.GetObject("Uhrzeit Außentemperatur (min) heute");
var mingestern= dom.GetObject("Uhrzeit Außentemperatur (min) gestern");
var maxheute= dom.GetObject("Uhrzeit Außentemperatur (max) heute");
var maxgestern= dom.GetObject("Uhrzeit Außentemperatur (max) gestern");


mingestern.Variable(minheute.Value());
dom.GetObject("Uhrzeit Außentemperatur (min) heute").State(0);
maxgestern.Variable(maxheute.Value());
dom.GetObject("Uhrzeit Außentemperatur (max) heute").State(0);
Nun müsst ihr 1 x das Programm 2 manuell starten um die Variablen zu befüllen.
Alternativ könnt ihr auch warten bis 00:01h dann passiert es warscheinlich automatisch :lol:

Wenn alles Richtig ist sollte das Ergebnis so aussehen.
Aussentemperatur.png
Aussentemperatur.png (9.51 KiB) 36659 mal betrachtet
Wer möchte kann es ja erweitern um Wochen- , Monats- , Jahrestemperaturen. Mir reicht es so.

Vielen Dank an casametti (Torsten) der das ganze zur Verfügung gestellt hat!!

Viel Spaß
Thomas
Zuletzt geändert von Karrlson am 08.08.2013, 12:58, insgesamt 2-mal geändert.

joe.oster
Beiträge: 288
Registriert: 17.06.2013, 12:15
Wohnort: NRW
Danksagung erhalten: 2 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von joe.oster » 08.08.2013, 10:06

Karrlson hat geschrieben:Skipt Programm 1

Code: Alles auswählen

var source = dom.GetObject("$src$");
var maxTemp = dom.GetObject("Außentemperatur Maximum");
object maxTempDate = dom.GetObject("Uhrzeit Maximum");
object minTempDate = dom.GetObject("Uhrzeit Minimum");
if (source)
{
if (source.Value() > maxTemp.Variable())
{
maxTemp.Variable(source.Value());maxTempDate.Variable(system.Date("%H:%M "))
}
}
else
{
var wds = dom.GetObject("Dein Temperatursensor");
var curTemp = wds.DPByHssDP("TEMPERATURE");
maxTemp.Variable(curTemp.Value());
}
var source = dom.GetObject("$src$");
var minTemp = dom.GetObject("Außentemperatur Minimum");
if (source)
{
if (source.Value() < minTemp.Variable())
{
minTemp.Variable(source.Value());minTempDate.Variable(system.Date("%H:%M "))
}
}
else
{
var wds = dom.GetObject("Aussentemperatur");
var curTemp = wds.DPByHssDP("TEMPERATURE");
minTemp.Variable(curTemp.Value());
}
In dieser Zeile "var wds = dom.GetObject("Dein Temperatursensor");" Deinen Temperatursensor eintragen (Fett gekennzeichnet)
Danke Thomas,

eine sehr gute Erklärung mit der Jeder dies einfach "nachbauen" kann 8)

vielleicht noch ein Hinweis:
In dieser Zeile "var wds = dom.GetObject("Aussentemperatur");" auch deinen Temperatursensor eintragen (Fett gekennzeichnet) :)

Gruß
Joe

joe.oster
Beiträge: 288
Registriert: 17.06.2013, 12:15
Wohnort: NRW
Danksagung erhalten: 2 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von joe.oster » 08.08.2013, 10:23

Karrlson hat geschrieben:Wenn alles Richtig ist sollte das Ergebnis so aussehen.
Der Dateianhang Aussentemperatur.png existiert nicht mehr.
wie kann man die Reihenfolge der Einträge ändern, ich hätte sie gerne so wie Thomas, nur meine sehen so aus
MinMaxTemp.jpg
Joe

Karrlson
Beiträge: 47
Registriert: 03.08.2012, 10:38
Wohnort: Saarland
Danksagung erhalten: 2 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von Karrlson » 08.08.2013, 10:32

Hallo Joe,

wenn ich mich richtig erinnere kommt das auf die Reihenfolge an, wie du den Variablen den Kanal zuordnest.
In meinem Beispiel müsstest du den Kanal von "Uhrzeit Minimum" als letztes zuordnen.
Probier es mal aus.

Thomas
Zuletzt geändert von Karrlson am 08.08.2013, 10:57, insgesamt 1-mal geändert.

joe.oster
Beiträge: 288
Registriert: 17.06.2013, 12:15
Wohnort: NRW
Danksagung erhalten: 2 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von joe.oster » 08.08.2013, 10:54

Hallo Thomas,

da lag es wirklich dran ...

Die Reihenfolge in der man die Systemvariablen einem Kanal zuordnet

ist die Reihenfolge wie sie dann auch angezeigt werden.

Dank und Gruß
Joe

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von Familienvater » 08.08.2013, 11:01

Moin,
Karrlson hat geschrieben: Diese Zeile am Anfang var source = dom.GetObject("$src$"); wird wohl unnötig sein. Ich habe aber keine Ahnung was die macht, daher habe ich sie gelassen da es funktioniert.
Ich bin auch nicht der Homematic-Script Experte, aber diese Zeile sollte genau so drinbleiben, weil sonst das Script an anderer Stelle nicht mehr funktionieren würde.
Es steht nach meiner Kenntnis der Auslösende Sensor oder so drin, und damit wird verhindert das z.B. beim CCU Start, wo Programme gerne mal angetriggert werden, nichts im Script passiert.

EDIT:
Wenn ich mir das Script genauer anschaue, ist das für mich irgendwie nicht 100% logisch, was da passiert, wenn $src$ null ist, weil dann wird zwar min und max trotzdem gesetzt, aber nicht die min/max Uhrzeit.

Die ganze Struktur des Programmes sind nach zusammenkopiert aus, und noch was angebaut, was woanders rauskopiert wurde. Aber wenn es so funktioniert, wie es soll, warum nicht...


Der Familienvater

Karrlson
Beiträge: 47
Registriert: 03.08.2012, 10:38
Wohnort: Saarland
Danksagung erhalten: 2 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von Karrlson » 08.08.2013, 11:11

Familienvater hat geschrieben:Moin,

Ich bin auch nicht der Homematic-Script Experte, aber diese Zeile sollte genau so drinbleiben, weil sonst das Script an anderer Stelle nicht mehr funktionieren würde.
Es steht nach meiner Kenntnis der Auslösende Sensor oder so drin, und damit wird verhindert das z.B. beim CCU Start, wo Programme gerne mal angetriggert werden, nichts im Script passiert.

Der Familienvater
Hallo Familienvater,

ja das könnte gut sein. Die Temperaturen bleiben bei einem Neustart erhalten.

Edit: @Familienvater
Ja das kann gut sein. Aus dem alten Thread war/ist zu erkennen, dass damit schon einige beschäftigt waren.
Aber es funktioniert :o

Thomas

roplo71
Beiträge: 22
Registriert: 02.04.2012, 10:46

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von roplo71 » 08.08.2013, 13:40

Fehlt in Script 1 nicht die Zeile

var minTemp = dom.GetObject("Außentemperatur Minimum");

var source = dom.GetObject("$src$");
var maxTemp = dom.GetObject("Außentemperatur Maximum");
var minTemp = dom.GetObject("Außentemperatur Minimum");
object maxTempDate = dom.GetObject("Uhrzeit Maximum");
object minTempDate = dom.GetObject("Uhrzeit Minimum");

USW.

Den Jetzt funktioniert es Bei mir auch, erst wurde die Variable minTemp nicht gefühlt

Grüße

Ronny

Karrlson
Beiträge: 47
Registriert: 03.08.2012, 10:38
Wohnort: Saarland
Danksagung erhalten: 2 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von Karrlson » 08.08.2013, 13:54

roplo71 hat geschrieben:Fehlt in Script 1 nicht die Zeile

var minTemp = dom.GetObject("Außentemperatur Minimum");

Grüße

Ronny
Hallo Ronny,

tja was soll ich sagen.
Ich habe jetzt nochmal nachgeschaut, ob ich beim kopieren was gelöscht habe oder so aber bei mir sieht Skript 1 genauso aus wie ich es gepostet habe.
Und bei mir funktioniert alles. :?:

Gruß
Thomas

joe.oster
Beiträge: 288
Registriert: 17.06.2013, 12:15
Wohnort: NRW
Danksagung erhalten: 2 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von joe.oster » 08.08.2013, 14:02

Karrlson hat geschrieben:
roplo71 hat geschrieben:Fehlt in Script 1 nicht die Zeile

var minTemp = dom.GetObject("Außentemperatur Minimum");

Grüße

Ronny
Die besagte Zeile steht aber im Skript etwa in der MItte, wird aber erst angesprochen

wenn die Bedingung (source.Value() > maxTemp.Variable()) nicht zutrifft

Übrigens das Skript in Programm 2 kann ganz raus :wink:

Joe

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“