Notify bei ungewöhnlichen Temperaturen

Begonnen von Motivierte linke Hände, 24 Januar 2015, 09:55:41

Vorheriges Thema - Nächstes Thema

Motivierte linke Hände

Hallo, ich wollte mich von fhem benachrichtigen lassen, wenn ein Thermostat eine ungewöhnliche Temperatur (idR zu niedrig) misst. Dafür habe ich Folgendes notify (mit einer Bedingung, die hier überall erfüllt ist, zum Test) erstellt:

.*:measured-temp {
  if ( "$EVTPART1" gt "18") {
    fhem ("set Pushbullet message Temperaturwarnung $NAME | Temperatur im $NAME beträgt $EVTPART1")
    }
}


Der Event-Monitor zeigt auch viele passende Einträge à la

2015-01-24 09:45:34 CUL_HM Hzg_Gaestebad measured-temp: 21.2
2015-01-24 09:45:34 CUL_HM Hzg_Gaestebad_Clima measured-temp: 21.2
2015-01-24 09:46:15 CUL_HM Hzg_Schlafzimmer measured-temp: 22.7
2015-01-24 09:46:29 CUL_HM Hzg_WC measured-temp: 22.3


Aber der notify scheint nicht anzuspringen. Was mache ich falsch?
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

KernSani

Reine Spekulation, aber ist ein Stringvergleich hier richtig?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Icinger

Moin,

1) $EVTPART ist eine Variable, und kein String, daher gehört er nicht in Klammern
2) Wie schon gesagt, ist ein mathematischer Vergleich sinnvoller

also:
if ($EVTPART1 > 18)

Um die die Klammern zu sparen, kannst du auch
fhem ("set Pushbullet message Temperaturwarnung $NAME | Temperatur im $NAME beträgt $EVTPART1") if ($EVTPART1 >18);
schreiben.

lg, Ici
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Motivierte linke Hände

Danke, habe den Vergleich umgestellt. Es passiert aber nichts.

Ich habe mal die zusätzlichen Klammern gelassen und einen Log-Eintrag hinzugenommen:

.*:measured-temp {
  { Log 1, ("notify aufgerufen, name $NAME, evtpart1 $EVTPART1")}
  if ($EVTPART1 >18) {
    fhem ("set Pushbullet message Temperaturwarnung $NAME | Temperatur im $NAME beträgt $EVTPART1")
  }
}


Irgendwas scheint an der Definition am Anfang des Notify nicht zu stimmen.
Problem: Es kommt auch nix im Log an...?! Events kommen weiter:

2015-01-24 11:24:41 CUL_HM Hzg_Gaestebad measured-temp: 21.6
2015-01-24 11:24:41 CUL_HM Hzg_Gaestebad_Clima measured-temp: 21.6
2015-01-24 11:24:41 CUL_HM Hzg_Gaestebad_Weather measured-temp: 21.6
2015-01-24 11:24:46 CUL_HM Hzg_Eingang measured-temp: 21.7
2015-01-24 11:24:46 CUL_HM Hzg_Eingang_Clima measured-temp: 21.7
2015-01-24 11:24:46 CUL_HM Hzg_Eingang_Weather measured-temp: 21.7
2015-01-24 11:25:37 CUL_HM Hzg_Wohnzimmer1 measured-temp: 22.7
2015-01-24 11:25:37 CUL_HM Hzg_Wohnzimmer1_Clima measured-temp: 22.7
2015-01-24 11:25:37 CUL_HM Hzg_Wohnzimmer1_Weather measured-temp: 22.7

FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Ich79

Spontan hätte ich
.*:measured-temp.*
anstelle von
.*:measured-temp
gemacht. So mache ich meine Notifies zumindest.

VG!
Boris
Fritz!Box 7490 mit FHEM 5.6 und HM-CFG-USB-2 (hmland)
AVM: 1x Fritz!Powerline546E
HM: 6x HM-CC-RT-DN / 2x HM-Sec-RHS / 1x HM-WDS40-TH-I-2 / 2x HM-Sec-SC-2 / 1x HM-LC-Sw4-Ba-PCB

Motivierte linke Hände

Guter Tipp, danke, mit .* dahinter funktioniert es. Was auch immer noch an Zeichen dahinter sein mag, solange es klappt, bin ich zufrieden.  :)
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

strauch

IMHO wäre ein threshold hier besser als ein notify sonst kriegst du jedesmal eine Nachricht wenn die Temperatur sich oberhalb von 18°C befindet. Was man zwar mit einem Event on change reading etwas eindämmen könnte. Aber ein Threshold ist hier eleganter.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

Motivierte linke Hände

THRESHOLD habe ich vorher probiert. Da ist das Problem, dass er nicht mit .*:measured-temp[.*] klarkommt, sondern man die devices jeweils einzeln anlegen muss. Das geht zwar, ist aber 'ne Menge Tipparbeit (auch wenn sie zugegebenermaßen nur einmal je device durchgeführt werden müsste).

Die 18 Grad war natürlich nur der Testcase, ob es überhaupt funktioniert.

Ich muss nochmal schauen, wo ich was über Variablen und deren Gültigkeit (bleibt der Inhalt über mehrere Aufrufe eines Notifys erhalten, lassen sich Variablen definieren, die über mehrere Notifys hinweg funktionieren, etc.) finde. Damit ließen sich sicher auch nette Lösungen basteln.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.