FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hyper2910 am 19 April 2015, 19:57:24

Titel: Notify. Mal wieder :-(
Beitrag von: hyper2910 am 19 April 2015, 19:57:24
Hi,  ich möchte gerne mit dem Pushbullet Modul Infos zu bestimmten Vorgängen versenden,  grundsätzlich funktioniert das, jedoch möchte ich noch einen Status zusätzlich abfragen und da hakt es


define Alarmtest notify Esszimmer_WindowSensor:opened set Nachricht message  Esszimmertuer offen

So wird immer die Nachricht gesendet.   Jetzt habe ich noch einen Max! Taster, welcher opened oder closed sein kann. Es soll die Nachricht nur bei opened des MaxTasters versendet werden und das bekomme ich nicht hin.
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: RitterSport am 19 April 2015, 22:34:46
define Alarmtest DOIF ([Esszimmer_WindowSensor] eq"opened" and [Esszimmer_WindowSensor2:?opened]) (set Nachricht message  Esszimmertuer offen )

Ist eine Möglichkeit als Anregung. Da wir ja nicht genau wissen was du machen möchtest, würde in dem Bsp. oben nur eine Mitteilung kommen wenn der Status des 1. Sensor auf opened ist, und dann der 2. Sensor das Event opened sendet.

Titel: Antw:Notify. Mal wieder :-(
Beitrag von: hyper2910 am 20 April 2015, 08:32:23
Hi, Danke an DOIF habe ich gar nicht gedacht, wollte es immer mit Notify und IF machen.

Da ich noch nicht mit DOIF gearbeitet habe, eine Frage dazu:
Kann man hier auch einzelne Actoren abfragen ob sie in den letzten zwei Stunden Ihren Zustand geändert haben und wenn nicht eine Aktion auslösen!

Ich hätte ein Reading von einem Notify, mit welchem man rechnen könnte:
STATE
2015-04-20 13:31:50





Gruss und danke für die Hilfe!
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: hyper2910 am 21 April 2015, 13:41:24
Hallo zusammen,


hat hier niemand eine Idee, wie man soetwas zusammen gebaut bekommt?



GRuss Dirk
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: der-Lolo am 21 April 2015, 13:44:01
Die Comandref hat sicher eine Idee - Damian hat sich sehr viel mühe gegeben die comandref mit einigen Beispielen zu spicken...
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: hyper2910 am 21 April 2015, 22:51:02
Danke,  aber ich denke ich brauche da ein bisschen mehr Perl Erfahrungen,  da ich die Rechnungen irgendwie nicht hinbekomme!
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: RitterSport am 21 April 2015, 23:48:54
Hier mal die DEF eines meiner Notify:
Sensor23:temperature:.* {
my $inttmp = ReadingsVal("Sensor23", "temperature", 0) - ReadingsVal("Sensor22", "temperature", 0);

fhem "set Solarthermie_Delta $inttmp";

}


Es wird ganz einfach die Differenz zweier Sensoren in einen anderen Dummy geschrieben.
Ohne jetzt viel nachgedacht zu haben, könntest du ähnliches mit den Uhrzeiten machen, dann ein DOIF oder Notify auf den Dummy wenn sein Wert größer oder kleiner wie 2h ist....

Oder:

define Actor1_Abfrage DOIF ([Actor1:state:sec] >= 7200) (set Alarm_Actor_1)
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: hyper2910 am 22 April 2015, 21:29:22
Sorry,  schaffe es einfach nicht
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: Puschel74 am 22 April 2015, 21:37:37
Als ODER kannst du ins regexp einen senkrechten Strich einfügen.
(.*_Radio_|Lautsprecher_).*
Wenn dir das nicht hilft musst du vermutlich mehr Infos bringen.
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: hyper2910 am 23 April 2015, 08:59:06
So kurz zusammengefasst.

Ich nutze das Modul HourCounter zur Heizungsüberwachung, Ölverbrauch etc.


Was ich jetzt noch gerne hätte wäre eine Alarmfunktion, bedeutet wenn der Fensterkontakt nicht nach einer bestimmten Zeit seinen Wert ändert soll ein Alarm ausgegeben werden.

Gruss Dirk
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: Zrrronggg! am 23 April 2015, 13:30:45
define Alarmtest notify Esszimmer_WindowSensor:opened { if (Value("MaxTast") eq "Open") { fhem("set Nachricht message  Esszimmertuer offen")}}

Dies ist die perl-if Methode. Anderer Weg wäre was ähnliches mit DOIF zu bauen, kann ich dir aber nicht mit helfen.

MAxTast ist natürlich dein MAX! Taster, und "Open" musst du ersetzen durch das was der tatsächlich liefert.
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: hyper2910 am 23 April 2015, 13:57:30
danke,  soweit bin ich im Prinzip schon,  was mir fehlt ist die Zeitenbetrachtung bzw. Berechnung.


Wie schaffe ich es, das dieser IF befehl nur dann ausgeführt wird, wenn die letzte Änderung grösser zwei Stunden her ist.
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: RitterSport am 23 April 2015, 21:15:57
Puschel hat dir den Hinweis gegeben mit dem Oder-Zeichen.
Das hier:
([Actor1:state:sec] >= 7200)
liest von Actor1 im state die letzte Änderung aus, mit größer / gleich 7200 Sekunden (2 h)
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: Puschel74 am 23 April 2015, 21:24:35
Noch ein kleiner Hinweis:
if != IF
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: hyper2910 am 23 April 2015, 21:41:42
Danke für eure Hilfe.   Kann ich die ganze sache antriggern zum testen?
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: Puschel74 am 23 April 2015, 21:44:36
Zitat von: hyper2910 am 23 April 2015, 21:41:42
Danke für eure Hilfe.   Kann ich die ganze sache antriggern zum testen?
Ja.
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: hyper2910 am 23 April 2015, 22:17:52
Danke
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: hyper2910 am 24 April 2015, 12:43:10
Hi,


irgendwie klappt das nicht:
ich habe die 2h schon auf 10min umgestellt, und da die Heizung ja nur noch für Warmwasser da ist, läuft sie auch selten und sollte eine Nachricht senden.



([oelzaehler:state:sec]>=7200) (set Nachricht message BRENNERSTÖRUNG)



Gruss Dirk






Titel: Antw:Notify. Mal wieder :-(
Beitrag von: Damian am 24 April 2015, 15:35:14
Zitat von: hyper2910 am 24 April 2015, 12:43:10
Hi,


irgendwie klappt das nicht:
ich habe die 2h schon auf 10min umgestellt, und da die Heizung ja nur noch für Warmwasser da ist, läuft sie auch selten und sollte eine Nachricht senden.



([oelzaehler:state:sec]>=7200) (set Nachricht message BRENNERSTÖRUNG)



Gruss Dirk

Normalerweise ist [oelzaehler:state:sec] = 0, denn normalerweise, wenn das Device triggert wurde gleichzeitig auch das Reading gesetzt.

Die sec-Angabe ist entweder für Devices wie HM-Bewegungsmelder interessant, dieser triggert zyklisch, ändert aber den Status  nur bei Bewegungserkennung - so etwas kann man mit sec erkennen oder man gibt einen anderen Trigger an und fragt mit [?oelzaehler:state:sec] die letzte Triggerzeit ab siehe hier:

http://forum.fhem.de/index.php/topic,35638.msg288854.html#msg288854

Gruß

Damian
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: Damian am 24 April 2015, 15:40:47
Zitat von: hyper2910 am 23 April 2015, 08:59:06
So kurz zusammengefasst.

Ich nutze das Modul HourCounter zur Heizungsüberwachung, Ölverbrauch etc.


Was ich jetzt noch gerne hätte wäre eine Alarmfunktion, bedeutet wenn der Fensterkontakt nicht nach einer bestimmten Zeit seinen Wert ändert soll ein Alarm ausgegeben werden.

Gruss Dirk

Dafür kannst du so etwas nutzen, Auszug aus der Commandref zu DOIF:

ZitatAnwendungsbeispiel: Meldung beim Ausbleiben eines Events

define di_push DOIF ([Tempsensor])(set pushmsg "sensor failed again")
attr di_push wait 1800
attr di_push do resetwait


Gruß

Damian
Titel: Antw:Notify. Mal wieder :-(
Beitrag von: hyper2910 am 25 April 2015, 18:04:50
Super, genau das wait könnte ich nutzen