Hi zusammen,
ich möchte gerne ein notify senden sobald einwert größer als 60 ist.
so in die richtung:
define notifyhumidityBad notify humidityBad:humidity:.* { if(ReadingsVal("humidityBad","humidity","") > 50) { fhem("set teleBot _msg bad hohe luftfeuchtigkeit") }}
geht das?
Nein das geht nicht. Du musst hier mit RegEx arbeiten.
Alternative wäre ein userReadings im Device humiditywarn zu erstellen und ein high oder low als value zu nehmen. Dann reagierst du auf das high.
ich hab meinen code oben aktualisiert wie ist das geht das so vielleicht?
uh das hat sogar funktioniert ... es hat was gesendet
Ja das geht auch. Aber so triggert das Notify ja ständig.
Und so lange de rWert drüber liegt bekommst Du jedesmal eine Nachricht.
Gib mal bitte ein list vom Device was humidity hat und ein list vom Notify
ja da hast du recht es bimmelt bei jedem update.
was für ein list möchtest du?
"list humidityBad" und "list notifyhumidityBad" im Kommandofeld von Fhem eingeben. Dann copy/paste
Siehe hier: https://forum.fhem.de/index.php/topic,71806.0.html
list ist ein FHEM Kommando das Du in der FHEMWEB Kommandozeile ein gibst
list DEVICENAME
hier brauche ich vom Device welches das humidity Reading hat und vom Notify Device bitte.
Internals:
DEF WSDCGQ11LM 0x00158d0002c9cab9
FRIENDLYNAME
IODev myBroker
MODEL WSDCGQ11LM
NAME humidityBad
NOTIFYDEV WSDCGQ11LM 0x00158d0002c9cab9
NR 155
SID 0x00158d0002c9cab9
STATE state
TYPE XiaomiMQTTDevice
READINGS:
2019-03-10 21:31:30 battery low
2019-03-10 21:31:30 battery_level 55
2019-03-10 21:31:30 humidity 67.63
2019-03-10 21:31:30 linkquality 31
2019-03-10 21:31:30 pressure 965
2019-03-10 21:31:30 temperature 21.1
2019-03-10 21:31:30 transmission-state incoming publish received
2019-03-10 21:31:30 voltage 2995
message_ids:
subscribe:
zigbee2mqtt/0x00158d0002c9cab9
xiaomi/0x00158d0002c9cab9/#
subscribeExpr:
^zigbee2mqtt\/0x00158d0002c9cab9$
^xiaomi\/0x00158d0002c9cab9.*$
subscribeQos:
xiaomi/0x00158d0002c9cab9/# 0
zigbee2mqtt/0x00158d0002c9cab9 0
Attributes:
IODev myBroker
room 6_Bad,MQTT,XiaomiMQTTDevice
stateFormat state
Internals:
CFGFN
DEF humidityBad:humidity:.* { if(ReadingsVal("humidityBad","humidity","") > 65) { fhem("set teleBot _msg bad hohe luftfeuchtigkeit") }}
NAME notifyhumidityBad
NOTIFYDEV humidityBad
NR 9722
NTFY_ORDER 50-notifyhumidityBad
REGEXP humidityBad:humidity:.*
STATE 2019-03-10 21:31:30
TRIGGERTIME 1552249890.57154
TYPE notify
READINGS:
2019-03-10 19:05:32 state active
Attributes:
define dihumidity DOIF ([humidityBad:humidity] > 65) (set teleBot _msg bad hohe luftfeuchtigkeit)
Sowas sollte reichen und nur einmal benachrichtigen.
attr humidityBad userReadings humidityWarn:humidity:.* { ( ReadingsNum($name,'humidity',1000) > 65 ? 'high' : 'low' ) }
humidityBad:humidityWarn:.high set teleBot _msg bad hohe luftfeuchtigkeit
So sollte es gehen
Er wollte 65 ;)
Aber die Lösung ist auch schön
Sind wir aber heute pingelig ;D
Hab es geändert.
Sollte dann nicht noch ein event-on-change-reading auf humidityWarn?
Jep das wäre auf jeden Fall noch an zu raten.