FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Motivierte linke Hände am 24 Januar 2015, 09:55:41

Titel: Notify bei ungewöhnlichen Temperaturen
Beitrag von: Motivierte linke Hände am 24 Januar 2015, 09:55:41
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?
Titel: Antw:Notify bei ungewöhnlichen Temperaturen
Beitrag von: KernSani am 24 Januar 2015, 10:16:45
Reine Spekulation, aber ist ein Stringvergleich hier richtig?
Titel: Antw:Notify bei ungewöhnlichen Temperaturen
Beitrag von: Icinger am 24 Januar 2015, 10:39:10
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
Titel: Antw:Notify bei ungewöhnlichen Temperaturen
Beitrag von: Motivierte linke Hände am 24 Januar 2015, 11:28:20
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

Titel: Antw:Notify bei ungewöhnlichen Temperaturen
Beitrag von: Ich79 am 24 Januar 2015, 11:53:20
Spontan hätte ich
.*:measured-temp.*
anstelle von
.*:measured-temp
gemacht. So mache ich meine Notifies zumindest.

VG!
Boris
Titel: Antw:Notify bei ungewöhnlichen Temperaturen
Beitrag von: Motivierte linke Hände am 27 Januar 2015, 10:38:52
Guter Tipp, danke, mit .* dahinter funktioniert es. Was auch immer noch an Zeichen dahinter sein mag, solange es klappt, bin ich zufrieden.  :)
Titel: Antw:Notify bei ungewöhnlichen Temperaturen
Beitrag von: strauch am 27 Januar 2015, 10:41:06
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.
Titel: Antw:Notify bei ungewöhnlichen Temperaturen
Beitrag von: Motivierte linke Hände am 27 Januar 2015, 10:52:44
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.