[gelöst] Schalten bei Temperaturabfall

Begonnen von Thoffi1978, 30 Juli 2017, 18:02:55

Vorheriges Thema - Nächstes Thema

Thoffi1978

Hallo,
ich will meinen Wäschetrockner gerne überwachen, so dass ich eine Mitteilung bekomme wenn dieser fertig ist.
Dafür wollte ich die Temperatur auswerten. (Stromverbrauch habe ich nicht)

Ein DOIF mit kleiner als, größer als um Aktionen auszulösen bekomme icht gut hin.

ich habe aber keinen festen Schwellwert. Ich wollte also,
"wenn aktuelle Temperatur (vermutlich Höchstwert) länger als 3 Minuten unterschritten, führe Aktion aus"

wie bekomme ich das mit der variablen Temperatur hin?
Ich habe eine gute Zeit im Forum gesucht, finde aber immer nur etwas mit festen Werten.

Vielen Dank
Hoffi

sash.sc

Wo misst du denn die Temperatur?

Gesendet von dem teuren ding in meiner hand

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Ellert

Du könntest in den Sensor ein userReading einbauen

diffT:temperature differential

und dann ein DOIF nehmen

([Sensor:diffT] < -0.1 and [?Sensor:temperature] < 40) (<Fertigmeldung>)
DOELSEIF ([Sensor:diffT] > 0.1) ## Fertigmeldung zurücksetzen

wait 180:0


Wenn die Temperatur unter 40 °C liegt und die Temperatur mit 0.1°C/s fällt und in 180 s die Temperatur nicht mit mehr als 0.1°C/s steigt, wird nach 180 s eine Meldung erzeugt.

Welche tatsächlichen Werte Du nehmen musst, müsstest Du ausprobieren.

Voraussetzung ist, dass der Sensor mehrere Werte innerhalb der 180 s aktualisiert und Events erzeugt.

Thoffi1978

Hallo Ellert,
vielen Dank für die gute Idee.
das UserReading wird nicht übernommen, bzw. nicht angezeigt.
Dadurch liefert das DOIF vermutlich den Fehler.
Anbei die List´s
einmal vom Temperatursender und vom DOIF

List Temperatur:
Internals:
   CFGFN
   CODE       CUL_TCM97001_94
   DEF        CUL_TCM97001_94
   LASTInputDev nanoCUL
   MSGCNT     2545
   NAME       Trockner_Temp
   NR         955
   RSSI       -62.5
   STATE      T: 20.1 H: 71
   TYPE       CUL_TCM97001
   lastH      0
   lastT      1501515265.81103
   nanoCUL_MSGCNT 2545
   nanoCUL_RAWMSG s5E780C947017;  480: 9184
   nanoCUL_TIME 2017-07-31 17:34:25
   READINGS:
     2017-07-30 16:50:25   battery         low
     2017-07-30 16:50:25   channel         0
     2017-07-31 17:34:25   humidity        71
     2017-07-30 16:50:25   mode            normal
     2017-07-31 17:34:25   state           T: 20.1 H: 71
     2017-07-31 17:34:25   temperature     20.1
Attributes:
   event-min-interval .*:300
   event-on-change-reading .*
   model      NC_WS
   room       CUL_TCM97001
   userReadings diffT:temperature differential


List DOIF
Internals:
   CFGFN
   DEF        ([Trockner_Temp:diffT] < -0.1 and [?Trockner_Temp:temperature] < 40) (set Torsten_WA send Trockner fertig) DOELSEIF ([Trockner_Temp:diffT] > 0.1) ## Fertigmeldung zurücksetzen
   NAME       di_Trockner
   NR         3027
   NTFY_ORDER 50-di_Trockner
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-07-31 17:35:35   Device          Trockner_Temp
     2017-07-31 17:27:01   cmd             0
     2017-07-31 17:27:01   state           initialized
     2017-07-31 17:28:36   wait_timer      no timer
     2017-07-31 17:35:35   warning         condition c02: Argument "" isn't numeric in numeric gt (>)

   condition:
     0          ReadingValDoIf($hash,'Trockner_Temp','diffT') < -0.1 and ReadingValDoIf($hash,'Trockner_Temp','temperature') < 40
     1          ReadingValDoIf($hash,'Trockner_Temp','diffT') > 0.1
   devices:
     0           Trockner_Temp
     1           Trockner_Temp
     all         Trockner_Temp
   do:
     0:
       0          set Torsten_WA send Trockner fertig
     1:
       0
     2:
   helper:
     event      temperature: 21.0,humidity: 70,T: 21.0 H: 70
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev Trockner_Temp
     triggerEvents:
       temperature: 21.0
       humidity: 70
       T: 21.0 H: 70
     triggerEventsState:
       temperature: 21.0
       humidity: 70
       state: T: 21.0 H: 70
   internals:
   itimer:
   readings:
     0           Trockner_Temp:diffT
     1           Trockner_Temp:diffT
     all         Trockner_Temp:diffT
   regexp:
     0:
     1:
     all:
   state:
     STATE:
   trigger:
Attributes:
   wait       180:0


@sash.sc: auf der Metallrückwand vom Trockner

Ellert

Dein Sensor liefert alle 10 Minuten einen Wert, einen Differenzenquotienten wird er spätestens nach 20 Minuten liefern, da warst Du wohl etwas ungeduldig.

Außerdem solltest Du den letzten Satz aus Antwort #2 nochmal lesen und die entsprechenden Attribute löschen damit er wahr wird.

Thoffi1978

Hallo Ellert,
ich habe event-min-intervall gelöscht. Nun werden die Werte alle 35 Sekunden aktualisiert.

Im DOIF bleibt die Fehlermeldung
warning  condition c02: Argument "" isn't numeric in numeric gt (>)
weiterhin bestehen.

Ein neuen ReadingWert habe ich nicht:
Internals:
   CFGFN
   CHANGED
   CODE       CUL_TCM97001_94
   DEF        CUL_TCM97001_94
   LASTInputDev nanoCUL
   MSGCNT     2891
   NAME       Trockner_Temp
   NR         955
   RSSI       -60
   STATE      T: 22.7 H: 71
   TYPE       CUL_TCM97001
   lastH      0
   lastT      1501527375.82163
   nanoCUL_MSGCNT 2891
   nanoCUL_RAWMSG s5E780E34701C;  464: 9200
   nanoCUL_TIME 2017-07-31 20:56:15
   READINGS:
     2017-07-30 16:50:25   battery         low
     2017-07-30 16:50:25   channel         0
     2017-07-31 20:56:15   humidity        71
     2017-07-30 16:50:25   mode            normal
     2017-07-31 20:56:15   state           T: 22.7 H: 71
     2017-07-31 20:56:15   temperature     22.7
Attributes:
   event-on-change-reading .*
   model      NC_WS
   room       CUL_TCM97001
   userReadings diffT:temperature differential



Ellert

Hat sich die Temperatur geändert, in der Zeit vom Löschen des Readings bis zum Erstellen des Listings? Wie sieht das Temperaturlogfile für die Zeit aus?

frank

#7
das userreading scheint mir falsch zu sein. schau dir das mal in der commandref an.

attr userReadings diffT:temperature.* differential {ReadingsVal($name,"temperature",0)}

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Thoffi1978

Hallo

@Ellert: die Temperatur hat sich geändert. Das Reading wurde  nicht geschrieben.

@Frank: Das Reading wurde geschrieben. Es gibt folgenden Wert aus:
diffT  -0.000952370920524803

Kann man das in Grad anzeigen lassen?


Vielen Dank
Hoffi

frank

"differential" ist ja der gradient, also kelvin pro zeit.
wenn du eine differenz willst, musst du "difference" nutzen.
scheinbar hast du noch nicht in die commandref geschaut.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Thoffi1978

Hallo Frank,
Hallo Ellert.

Vielen Dank für Eure Hilfe. Es klappt wie es soll.
"difference" ist nun auch verstanden.


Vielen Dank
Hoffi