Notify / DoIf - Telegram Medlung absetzen

Begonnen von Mois_Alexander, 02 April 2016, 10:58:52

Vorheriges Thema - Nächstes Thema

Mois_Alexander

Hi Leute,

ich versuche mich jetzt schon seit einiger Zeit an Notifies für mein Fhem. Aber ich krieg´s einfach nicht so hin wie ich es mir vorstelle.

Ich versuche zum einen eine Nachricht zu senden wenn einer meiner MySensors Bewegungsmelder eine Bewegung meldet. Das hab ich auch schon hingekriegt, aber nur mit einem DoIf Befehl. Und bei meiner Lösung krieg ich nicht nur eine Bewegungsmeldung sondern auch eine Nicht-Bewegung Meldung.

Hier mal die Codezeile:
define Alarm_Bewegung_hinten DOIF ([MYSENSOR_101:tripped2] eq "on") (set telegram message motion) DOELSE (set telegram message nomotion)
attr Alarm_Bewegung_hinten room Notifies


Das funktioniert also, aber nur mit dem DoElse - geht das auch ohne?

Und zum anderen würde ich mir gerne eine Meldung schicken lassen wenn einer meiner Temperatursensoren eine Temperatur unter einem bestimmten Wert anzeigt. Aber da hab ich ein ähnliches Porblem, da krieg ich bei jeder kleinen Änderung der Temperatur eine Meldung.

Hier der Code (der hat schon funktionert, aber nur wenn ich bei "else" was eintrage, so geht er nicht)
MYSENSOR_101:temperature1:.* { if(ReadingsVal("MYSENSOR_101","temperature1","") eq 0.0 ) { fhem ( "set telegram message warm draussen") } else {}}



Hat vielleicht jemand eine Idee wie ich das hinkrieg?

Danke
Alex

viegener

Ich bin jetzt kein Experte für DOIF, deshalb erstmal die Empfehlung dazu die Doku und Beispiele aufmerksam zu lesen. DOIF/notify und die Events hängen sehr eng zusammen, man sollte sich also im Event Monitor anschauen, was an Events kommt, damit man den notify/DOIF entsprechend aufbauen kann. Ich kenne auch den Bewegungsmelder nicht, deshalb kann ich nicht sagen, welche Events von dort kommen.

Im zweiten Fall ist klar, dass bei jeder Temperaturänderung (lässt sich leicht im Eventmonitor nachvollziehen) das DOIF getriggert wird. Du musst also irgendwie angeben, wie oft, wann oder bei wie grossen Änderungen eine neue Benachrichtigung erfolgen soll:

- Das kann zum Beispiel über die event-min... / event-on... Attribute am Device passieren
- Oder im DOIF z.B. über cmdpause am DOIF

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Damian

Zitat von: Mois_Alexander am 02 April 2016, 10:58:52
Hi Leute,

ich versuche mich jetzt schon seit einiger Zeit an Notifies für mein Fhem. Aber ich krieg´s einfach nicht so hin wie ich es mir vorstelle.

Ich versuche zum einen eine Nachricht zu senden wenn einer meiner MySensors Bewegungsmelder eine Bewegung meldet. Das hab ich auch schon hingekriegt, aber nur mit einem DoIf Befehl. Und bei meiner Lösung krieg ich nicht nur eine Bewegungsmeldung sondern auch eine Nicht-Bewegung Meldung.

Hier mal die Codezeile:
define Alarm_Bewegung_hinten DOIF ([MYSENSOR_101:tripped2] eq "on") (set telegram message motion) DOELSE (set telegram message nomotion)
attr Alarm_Bewegung_hinten room Notifies


Das funktioniert also, aber nur mit dem DoElse - geht das auch ohne?

Und zum anderen würde ich mir gerne eine Meldung schicken lassen wenn einer meiner Temperatursensoren eine Temperatur unter einem bestimmten Wert anzeigt. Aber da hab ich ein ähnliches Porblem, da krieg ich bei jeder kleinen Änderung der Temperatur eine Meldung.

Hier der Code (der hat schon funktionert, aber nur wenn ich bei "else" was eintrage, so geht er nicht)
MYSENSOR_101:temperature1:.* { if(ReadingsVal("MYSENSOR_101","temperature1","") eq 0.0 ) { fhem ( "set telegram message warm draussen") } else {}}



Hat vielleicht jemand eine Idee wie ich das hinkrieg?

Danke
Alex

Unterschiedliche Bewegungsmelder verhalten sich unterschiedlich. Mit dieser Lösung wird nur auf das Event reagiert, in dem "tripped2" vorkommt.

define Alarm_Bewegung_hinten DOIF ([MYSENSOR_101:"tripped2"]) (set telegram message motion)

attr Alarm_Bewegung_hinten do always


Hier eine Lösung mit DOIF zu Temperaturüberschreitung:

define di_temp DOIF ([MYSENSOR_101:temperature1] > 0) (set telegram message warm draussen)


Diesmal ohne do always. Damit gibt es immer nur eine Nachricht, die nächste erst wenn zwischendurch die Temperatur unter oder gleich Null grad war.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF