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
Wo misst du denn die Temperatur?
Gesendet von dem teuren ding in meiner hand
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.
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
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.
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
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?
das userreading scheint mir falsch zu sein. schau dir das mal in der commandref an.
attr userReadings diffT:temperature.* differential {ReadingsVal($name,"temperature",0)}
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
"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.
Hallo Frank,
Hallo Ellert.
Vielen Dank für Eure Hilfe. Es klappt wie es soll.
"difference" ist nun auch verstanden.
Vielen Dank
Hoffi