Hauptmenü

Jahreshöchsttemperatur

Begonnen von Kitt, 26 Mai 2018, 17:06:05

Vorheriges Thema - Nächstes Thema

Kitt

Hallo,

ich nutze ein Funkthermometer und einen CUL-Stick, um mir alle 15 Minuten die
Temperatur ausgeben zu lassen.

Nun würde ich mir gerne die bisherige Höchst- bzw. Tiefsttemperatur anzeigen lassen.
Falls diese sich ändern sollten, können die bisherigen Werte gerne gelöscht werden.
Mich interssiert nur der höchste und tiefste Wert der Aufzeichnung (mit Datum und
Uhrzeit).

Hat jemand eine Idee?

Viele Grüße

andies

Du fügst zwei weitere Readings Min und Max hinzu. Dann noch ein notify, das bei Änderungen diese beiden userreadings überschreibt, sollten die aktuellen Temperaturen größer / kleiner sein.

Nach einem ,,Zyklus" (Jahr?) löschst Du die beiden readings. So sollte es gehen.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
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

eisman

Hi,

oder du nutzt average........


temperature_avg_day      24.4 2018-05-26 17:22:34
temperature_avg_month  23.6 2018-05-26 17:22:34
temperature_cum_day     1523322.2  2018-05-26 17:22:34
temperature_cum_month 54446917.6000001 2018-05-26 17:22:34
temperature_max_day      25.0  2018-05-26 17:06:53
temperature_max_month  25.1 2018-05-10 00:16:32
temperature_min_day       24.1  2018-05-26 02:27:51
temperature_min_month  20.1

gruss


1x FHEM Debian, Homematic,ZigBee,FS20 / 1X Raspberry, ConBee / 7x ESP
1x FHEM Debian, Homematic,Z2M             / 1X Raspberry, ConBee / 6x ESP
1x FHEM Debian,MQTT2                             / 1X Raspberry, i2c,onewire,gpio
1x auf Windows 2012 Hyper-V-S

MadMax-FHEM

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Wzut

Zitat von: andies am 26 Mai 2018, 17:15:57
Du fügst zwei weitere Readings Min und Max hinzu. Dann noch ein notify, das bei Änderungen diese beiden userreadings überschreibt, sollten die aktuellen Temperaturen größer / kleiner sein.
userReadings min/max : ja
aber wozu noch ein extra notify ? Den Vergleich kann man auch direkt im userReading machen. (zumindest mache ich es so) 
 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

andies

Und wie lässt du die readings füllen bzw. wie wird das ausgelöst? Kannst du mal den Code Posten?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
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

Wzut

#6
Die Funktionen die in userReadings stehen weden doch automatisch abgearbeitet wenn die Readings aktualisiert werden.
Hier mal ein Bsp als Raw  definition :
attr <myDevice> userReadings t_min {my $t=ReadingsNum($name,"temperature",0);; my $a=ReadingsNum($name,"t_min",99);; ($t<$a) ? $t : $a;;},\
t_max {my $t=ReadingsNum($name,"temperature",0);; my $a=ReadingsNum($name,"t_max",0);; ($t>$a) ? $t : $a;;}

<myDevice> ist naturlich zu ersetzen durch den Namen des Device , damit die Timestamps sich nicht jedesmal ändern muss man noch mit timestamp-on-change-readings arbeiten, also ggf.
attr <myDevic> timestamp-on-change-reading .*
Um die Timestamps irgendwann mal zu reseten lösche ich sie einfach , ala deletereading <myDevice> t_m.*
Beim nächsten Durchlauf werden sie dann wieder mit ihren Pseudo Startwerten 0 & 99 automatisch neu angelegt.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Kitt

Danke für die Hilfe soweit.

Der Minimumwert wird auch jeweils korrekt aktualisiert, aber beim Maximumwert passiert nichts.

Was mache ich falsch? Hab einfach den Code kopiert und <myDevice> angepasst.

Viele Grüße

Wzut

Zitat von: Kitt am 28 Mai 2018, 16:36:59
Was mache ich falsch?
ohne ein list  vom betroffenden Device wird dir das vermutlich niemand sagen können .....
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Kitt

#9
Hier das list (wie schon geschrieben: Mit dem Minimumwert ist alles ok, aber ein Maximumwert wird nicht angelegt):

Internals:
   DEF        22
   IODev      JeeLink
   JeeLink_MSGCNT 358847
   JeeLink_RAWMSG OK 9 34 1 4 206 62
   JeeLink_TIME 2018-06-01 19:02:51
   LASTInputDev JeeLink
   LaCrosse_lastRcv 2018-06-01 19:02:51
   MSGCNT     358724
   NAME       LaCrosse_22
   NR         49
   STATE      T: 23 H: 62
   TYPE       LaCrosse
   addr       22
   battery_new 0
   bufferedH 
   bufferedT 
   corr1      0
   corr2      0
   previousH  62
   previousT  23
   sensorType 0=T(H)
   OLDREADINGS:
   READINGS:
     2018-06-01 19:02:51   battery         ok
     2018-06-01 19:02:51   humidity        62
     2018-06-01 19:02:51   state           T: 23 H: 62
     2018-06-01 19:02:51   t_min           23
     2018-06-01 19:02:51   temperature     23
Attributes:
   IODev      JeeLink
   alias      Draußen
   event-on-change-reading .*
   room       Draußen
   userReadings t_min {my $t=ReadingsNum($name,"temperature",0); my $a=ReadingsNum($name,"t_min",99); ($t<$a) ? $t : $a;},\ t_max {my $t=ReadingsNum($name,"temperature",0); my $a=ReadingsNum($name,"t_max",0); ($t>$a) ? $t : $a;}



Wzut

#10
},\ t_max {
Vermutlich hast du es nicht in raw eingegeben sondern direkt am Attribut ?
Wenn ja mach den \ weg und setze dafür einen Zeilenumbruch wenn du in der Webansicht keine überlange Zeile bei userReadings haben willst.
Edit : ich sehe gerade dein Timestamp bei t_min stimmt bestimmt nicht weil du meinen Hinweis bezüglich timestamp-on-change-reading .*  nicht beachtet hast.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Kitt

Ok, jetzt funktioniert beides.

Aber wie kann ich mir den Zeitpunkt der Maxmimun- und Minimumtemperatur angeben lassen (als reading)?
Im Moment wird nur der Zeitpunkt der letzten Messung angegeben, oder?

Danke!

Wzut

#12
Zitat von: Wzut am 27 Mai 2018, 08:42:35
attr <myDevic> timestamp-on-change-reading .*
als reading ? Warum ? Die Zeitstempel von t_min und t_max sagen einem doch wann es war ....

Bsp von mir :
2018-05-31 20:35:23   t_max           29.3
2018-06-01 06:32:43   t_min           24.3
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Kitt

Danke erstmal für deine Geduld ;)

Ich würden gerne ein stateformat erstellen (um es per telegram zu versenden) mit der Minimum- und
Maximumtemperatur und dem jeweiligen timetstamp.

Also ungefähr so:
Höchsttemperatur: t_max °C (am "timestamp");
Minimumtemperatur: t_min °C (am "timestamp").

Kannst du mir nochmal weiterhelfen?



Wzut

Zitat von: Kitt am 01 Juni 2018, 22:02:11
Ich würden gerne ein stateformat erstellen (um es per telegram zu versenden) mit der Minimum- und
Maximumtemperatur und dem jeweiligen timetstamp.
den ersten Teil mit stateformat habe ich nicht verstanden , den zweiten Teil schon, bleibt aber die Frage offen wann das Handy bimmeln soll ?
Jeden Tag um Mitternacht ? oder jedsmal wenn sich t_min oder t_max geändert haben - ala wir haben einen neuen Rekord ?
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher