Min.- Max. Temperaturen Gestern und Heute

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

Moderator: Co-Administratoren

1techone
Beiträge: 213
Registriert: 19.01.2016, 10:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 49 Mal
Danksagung erhalten: 19 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von 1techone » 12.05.2020, 09:44

Hallo,

und hier nun mein Ergebnis.

Die untere Zeile (Mittelwert und Aktualisiert) ist nur zum Testen und wird später wieder ausgeblendet :wink: .
Wie man sieht, wir haben die „Eisheiligen“ :x .
Gruß und danke für die schnelle Hilfe in diesem Forum

Jürgen

Code: Alles auswählen

var tAkt =  datapoints.Get("BidCos-RF.OEQ1387281:1.TEMPERATURE").Value(); ! altuelle Temperatur
var zAkt =  system.Date("%H:%M Uhr");                                     ! aktuelle Zeit         
var tMax =  dom.GetObject("Max Temp Heute").Value();          ! Heutige Maximale Temperatur
var tMin =  dom.GetObject("Min Temp Heute").Value();          ! Heutige Minimale Temperatur
var tMit = (dom.GetObject("Mittelwert").Value())*1.00;        ! *1.00 um Kommastellen zu erhalten
object zMaH = dom.GetObject("Max Heute").Value();             ! Zeitpunk der MaxTempHeute
object zMiH = dom.GetObject("Min Heute").Value();             ! Zeitpunk der MinTempHeute
var tDif =  0.05; ! Bereich in dem "Tendenz = konstant =" angezeigt wird (Bei 0.05 = zwischen +0,05°C und -0,05°C Abweichung) 
var n    =  5.00; ! Wie schnell der Mittelwert sich dem Istwert annähert. >der Wert muss mind 02.00 sein, sinnvoll 5.00 - 10.00 
                  ! Bei 02.00= wird die Diff. pro Durchgang halbiert /Bei 10.00= wird die Diff. pro Durchgang um ein 1/10 kleiner)

! -- Aktuallisierungszeit, -----------------Zeitpunkt, wann zuletzt aktualisiert wurde
dom.GetObject("Aktualisiert").State(system.Date("%d.%m. - %H:%M Uhr"));

! -- Min/Max ,------------------------------Minimale/Maximale Temperatur wird ermittelt
if (tMax < tAkt)
 {
   dom.GetObject("Max Temp Heute").State(tAkt);                         ! (tAkt); 
   dom.GetObject("Max Heute").State(system.Date("%d.%m. - %H:%M Uhr"));      ! State(zMaH);
 }

 if ((tMin) > (tAkt))
 { 
   dom.GetObject("Min Temp Heute").State(tAkt);
   dom.GetObject("Min Heute").State(system.Date("%d.%m. - %H:%M Uhr"));      ! (zMiH); 
 }    

! -- Tendenz ,---------------------------Schwankungen werden gedämpft und dann die Richtung ermittelt
tMit = ((((n - 1) * (tMit)) + (tAkt)) / n);
dom.GetObject("Mittelwert").State(tMit);
if     ((tMit - tAkt) > tDif) {dom.GetObject("Tendenz").State("__  fällt   __");}
elseif ((tAkt - tMit) > tDif) {dom.GetObject("Tendenz").State("++  steigt  ++");}
else                          {dom.GetObject("Tendenz").State("=  konstant  =");}

! -- Ende des Programms -----------------

! - Ab hier kann alles gelöscht oder ausgeblendet werden, zum Testen benutzen - !!!
  WriteLine (("=====  Testausgabe:  ====  ")+(dom.GetObject("Aktualisiert")).Value());
  WriteLine (("Aktuelle Zeit = ")+(dom.GetObject("Aktualisiert")).Value()); ! (zAkt));
  WriteLine (("Aktuelle Temp = ")+(tAkt));
  WriteLine (("Maximale Temp = ")+(tMax));
  WriteLine (("Minimale Temp = ")+(tMin));
  WriteLine (("MaxUhrHeute   = ")+(zMaH));
  WriteLine (("MinUhrHeute   = ")+(zMiH)); 
  WriteLine (("   Differenz  = ")+(tMit-tAkt));   
  WriteLine (("    T-Mittel  = ")+(dom.GetObject("Mittelwert")).Value());
  WriteLine (("     Tendenz  = ")+(dom.GetObject("Tendenz")).Value());
  WriteLine (("KonstBereich  = ")+(tDif));
  WriteLine (("MittelwBildg  = ")+(n));
Dateianhänge
TempMinMax_HM.PNG
TempMinMax_HM.PNG (15.77 KiB) 3071 mal betrachtet
Zuletzt geändert von 1techone am 27.03.2021, 10:41, insgesamt 1-mal geändert.

Kurzschlusselektriker
Beiträge: 101
Registriert: 22.09.2014, 15:58
Hat sich bedankt: 2 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von Kurzschlusselektriker » 25.08.2020, 17:30

Hallo 1techone,
bin grade dabei "Dein" Programm nachzubauen, leider habe ich irgendwo einen kapitalen Fehler drin, es wird quasi nix gefüllt, besonders unsicher bin ich mir mit dem Gerätenamen des TempSensors.
1.jpg
Kannst Du mal draufschauen wo da der Fehler ist?
Außerdem habe ich in dem Script nichts gesehen wie die Variablen "...gestern.." gefüllt werden.

Vielen Dank
Kurzschlusselektriker
2.jpg
3.jpg
Hier noch mein "Dein" Script:
var tAkt = datapoints.Get("HmIP-RF.00181BEXXX:3.ACTUAL_TEMPERATURE").Value(); ! altuelle Temperatur
var zAkt = system.Date("%H:%M Uhr"); ! aktuelle Zeit
var tMax = dom.GetObject("Max Temp Heute").Value(); ! Heutige Maximale Temperatur
var tMin = dom.GetObject("Min Temp Heute").Value(); ! Heutige Minimale Temperatur
var tMit = (dom.GetObject("Mittelwert").Value())*1.00; ! *1.00 um Kommastellen zu erhalten
object zMaH = dom.GetObject("Max Heute").Value(); ! Zeitpunk der MaxTempHeute
object zMiH = dom.GetObject("Min Heute").Value(); ! Zeitpunk der MinTempHeute
var tDif = 0.05; ! Bereich in dem "Tendenz = konstant =" angezeigt wird (Bei 0.05 = zwischen +0,05°C und -0,05°C Abweichung)
var n = 5.00; ! Wie schnell der Mittelwert sich dem Istwert annähert. >der Wert muss mind 02.00 sein, sinnvoll 5.00 - 10.00
! Bei 02.00= wird die Diff. pro Durchgang halbiert /Bei 10.00= wird die Diff. pro Durchgang um ein 1/10 kleiner)

! -- Aktuallisierungszeit, -----------------Zeitpunkt, wann zuletzt aktualisiert wurde
dom.GetObject("Aktualisiert").State(system.Date("%d.%m. - %H:%M Uhr"));

! -- Min/Max ,------------------------------Minimale/Maximale Temperatur wird ermittelt
if (tMax < tAkt)
{
dom.GetObject("Max Temp Heute").State(tAkt); ! (tAkt);
dom.GetObject("Max Heute").State(system.Date("%d.%m. - %H:%M Uhr")); ! State(zMaH);
}

if ((tMin) > (tAkt))
{
dom.GetObject("Min Temp Heute").State(tAkt);
dom.GetObject("Min Heute").State(system.Date("%d.%m. - %H:%M Uhr")); ! (zMiH);
}

! -- Tendenz ,---------------------------Schwankungen werden gedämpft und dann die Richtung ermittelt
tMit = ((((n - 1) * (tMit )) + (tAkt)) / n);
dom.GetObject("Mittelwert").State(tMit);
if ((tMit - tAkt) > tDif) {dom.GetObject("Tendenz").State("__ fällt __");}
elseif ((tAkt - tMit) > tDif) {dom.GetObject("Tendenz").State("++ steigt ++");}
else {dom.GetObject("Tendenz").State("= konstant =");}

! -- Ende des Programms -----------------

! - Ab hier kann alles gelöscht oder ausgeblendet werden, zum Testen benutzen - !!!
WriteLine (("===== Testausgabe: ==== ")+(dom.GetObject("Aktualisiert")).Value());
WriteLine (("Aktuelle Zeit = ")+(dom.GetObject("Aktualisiert")).Value()); ! (zAkt));
WriteLine (("Aktuelle Temp = ")+(tAkt));
WriteLine (("Maximale Temp = ")+(tMax));
WriteLine (("Minimale Temp = ")+(tMin));
WriteLine (("MaxUhrHeute = ")+(zMaH));
WriteLine (("MinUhrHeute = ")+(zMiH));
WriteLine ((" Differenz = ")+(tMit-tAkt));
WriteLine ((" T-Mittel = ")+(dom.GetObject("Mittelwert")).Value());
WriteLine ((" Tendenz = ")+(dom.GetObject("Tendenz")).Value());
WriteLine (("KonstBereich = ")+(tDif));
WriteLine (("MittelwBildg = ")+(n));

Benutzeravatar
joni-blue
Beiträge: 1171
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von joni-blue » 12.11.2020, 11:35

Danke für die super Erklärung, eine frage habe ich aber. Die Uhrzeiten sind das die von heute oder gestern?
Reboot tut gut ! ! !

1techone
Beiträge: 213
Registriert: 19.01.2016, 10:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 49 Mal
Danksagung erhalten: 19 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von 1techone » 03.12.2020, 11:58

Hallo,
es tut mir leid, aber die Fragen sind bei mir nie angekommen, habe es jetzt nur zufällig gesehen :oops:
Ich denke, wenn man alles von vorne durchliest, sollte es klar sein.
Gruß 1techone

Germa
Beiträge: 169
Registriert: 15.12.2019, 12:26
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 19 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von Germa » 17.02.2021, 15:56

habs gefunden!
Dieses kleine dumme Leerzeichen im code hat mich jetzt auch 'ne Stunde Sucherei gekostet:

Code: Alles auswählen

! -- Tendenz ,---------------------------Schwankungen werden gedämpft und dann die Richtung ermittelt
tMit = ((((n - 1) * (tMit )) + (tAkt)) / n);
richtig muss es heißen (tMit)

Code: Alles auswählen

! -- Tendenz ,---------------------------Schwankungen werden gedämpft und dann die Richtung ermittelt
tMit = ((((n - 1) * (tMit)) + (tAkt)) / n);
dann klapps auch mitm Nachbarn 8)
wenn wir uns alle gegenseitig helfen, ist allen geholfen :wink:
_______________________________________________
CCU3 seit 2018, 103 Geräte, 202 Programme, 222 sysvar
Projekte: Wettersensor viewtopic.php?t=65631

Organist
Beiträge: 124
Registriert: 31.08.2018, 15:21
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wülfrath
Hat sich bedankt: 39 Mal
Danksagung erhalten: 5 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von Organist » 08.03.2021, 21:45

Hallöchen.
Ich habe die Weatherman Edition Wetterstation, die leider keine Min/Max Temperaturen mitschneidet. Habe ich das hier richtig verstanden, dass hier mit den Scripten nicht die Min.-/Max Werte eines beliebigen Thermometers mitgeschnitten werden sondern nur die Variablen der Homematic Wetterstation von Variable "heute" auf "gestern"?
Gruß
Axel

Organist
Beiträge: 124
Registriert: 31.08.2018, 15:21
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wülfrath
Hat sich bedankt: 39 Mal
Danksagung erhalten: 5 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von Organist » 14.03.2021, 20:03

Hallo ihr Lieben,
vielen Dank für diesen Thread! Er hat mir geholfen, diese Sachen für meine Weatherman Edition Wetterstation nachzubauen!

1techone
Beiträge: 213
Registriert: 19.01.2016, 10:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 49 Mal
Danksagung erhalten: 19 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von 1techone » 27.03.2021, 10:43

Germa hat geschrieben:
17.02.2021, 15:56
habs gefunden!
Dieses kleine dumme Leerzeichen im code hat mich jetzt auch 'ne Stunde Sucherei gekostet:

Code: Alles auswählen

! -- Tendenz ,---------------------------Schwankungen werden gedämpft und dann die Richtung ermittelt
tMit = ((((n - 1) * (tMit )) + (tAkt)) / n);
richtig muss es heißen (tMit)

Code: Alles auswählen

! -- Tendenz ,---------------------------Schwankungen werden gedämpft und dann die Richtung ermittelt
tMit = ((((n - 1) * (tMit)) + (tAkt)) / n);
dann klapps auch mitm Nachbarn 8)
>>>>>>>>>>>>>> habe es berichtigt, sorry
Jürgen

Chemieka
Beiträge: 649
Registriert: 03.01.2017, 17:39
Hat sich bedankt: 4 Mal
Danksagung erhalten: 9 Mal

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von Chemieka » 05.06.2021, 14:48

Hallo,

ich benutze dieses Script schon seit Jahren um die max und min Temperatur meines Pools zu ermitteln.
Ging auch immer. Jetzt werden die Variablen nicht mehr beschrieben warum auch immer. Gab es durch irgendein Update eine Änderung am System?
Ich hänge mal den ersten Teil des Scripts an evtl. könnt ihr sehen warum es nicht mehr will.

Vielen Dank für die Hilfe.

Code: Alles auswählen

! Minimum-Maximum
! 18.12.2012 Minimum/Maximum-Werte des Thermometers speichern
! 19.12.2012 Uhrzeit hinzugefügt


! Systemvariablen übernehmen
var maxTemp = dom.GetObject("Pool Max Heute");
var minTemp = dom.GetObject("Pool Min Heute");
var timeMin = dom.GetObject("Uhrzeit Minimum");
var timeMax = dom.GetObject("Uhrzeit Maximum");

! Aktuelle Temperatur
var wds = dom.GetObject("TemperaturPool");
var curTemp = wds.DPByHssDP("TEMPERATURE");
 

if (curTemp.Value() > maxTemp.Value())
 {
 maxTemp.Variable(curTemp.Value());
 timeMax.Variable(system.Date("%H:%M"));
 }

if (curTemp.Value() < minTemp.Value())
 {
 minTemp.Variable(curTemp.Value());
 timeMin.Variable(system.Date("%H:%M"));
 }
OK ich habs mal so geändert, scheint zu laufen. Was das nun wieder war hm.

Code: Alles auswählen

var curTemp = dom.GetObject("TemperaturPool").DPByHssDP("TEMPERATURE").Value();
var maxTemp = dom.GetObject("Pool Max Heute").Value();
var minTemp = dom.GetObject("Pool Min Heute").Value();
var jetzt = system.Date("%H:%M");

if (curTemp > maxTemp)
{ dom.GetObject("Pool Max Heute").State(curTemp);
  dom.GetObject("Uhrzeit Maximum").State(jetzt);
}
if (curTemp < minTemp)
{ dom.GetObject("Pool Min Heute").State(curTemp);
  dom.GetObject("Uhrzeit Minimum").State(jetzt);
}
PI3+ mit RaspberryMatic; PI4 mit IOBroker; Samsung Tab A mit Mediola Visualisierung; Harmony Hub; Philips Hue; Drei IP Cams; Zwei Leseköpfe an den Stromzählern; Reedkontakt (Arduino) am Wasserzähler; Drucksensor (Arduino); CUL433 für Intertechno und Somfy RTS; Nuki Bridge

Zumi
Beiträge: 2
Registriert: 28.09.2021, 12:26
System: CCU

Re: Min.- Max. Temperaturen Gestern und Heute

Beitrag von Zumi » 28.09.2021, 13:34

Moin Moin ihr lieben!
Ich bin gerade dabei mir das ganze nach zu basteln und komme leider nicht weiter.
ich bekomme leider wie einige andere vor mir keine richtigen Werte angezeigt. Habe auch schon einiges probiert aber bin leider nicht zu einer Lösung gekommen.
Ich hoffe ihr könnt mir weiterhelfen (Ps. Bitte seid nachsichtig mit mir, falls die Lösung eventuell hier schon geschrieben wurde. Ich habe mein bestes gegeben und erst alles was hier beschrieben wurde so gut ich konnte ausprobiert).
ich gebe euch mal alle screenshots die wichtig seien könnten.
vielen dank für eure Hilfe
Bild


und natürlich die noch die Skripte:

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("Aussen Thermometer");
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("Aussen Thermometer");
var curTemp = wds.DPByHssDP("TEMPERATURE");
minTemp.Variable(curTemp.Value());
}


und 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);
Dateianhänge
Bildschirmfoto 2021-09-28 um 13.32.21.png
Bildschirmfoto 2021-09-28 um 12.38.33.png
Bildschirmfoto 2021-09-28 um 13.22.53.png
Was optisches und akustisches Signal bedeuten soll ist mir ebenfalls schleierhaft. aber für mein Anliegen vermutlich nicht so entscheidend.
Bildschirmfoto 2021-09-28 um 13.12.46.png
Zuletzt geändert von alchy am 28.09.2021, 20:55, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Antworten

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