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.
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.
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!
Hallo zusammen,
hat hier niemand eine Idee, wie man soetwas zusammen gebaut bekommt?
GRuss Dirk
Die Comandref hat sicher eine Idee - Damian hat sich sehr viel mühe gegeben die comandref mit einigen Beispielen zu spicken...
Danke, aber ich denke ich brauche da ein bisschen mehr Perl Erfahrungen, da ich die Rechnungen irgendwie nicht hinbekomme!
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)
Sorry, schaffe es einfach nicht
Als ODER kannst du ins regexp einen senkrechten Strich einfügen.
(.*_Radio_|Lautsprecher_).*
Wenn dir das nicht hilft musst du vermutlich mehr Infos bringen.
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
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.
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.
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)
Noch ein kleiner Hinweis:
if != IF
Danke für eure Hilfe. Kann ich die ganze sache antriggern zum testen?
Zitat von: hyper2910 am 23 April 2015, 21:41:42
Danke für eure Hilfe. Kann ich die ganze sache antriggern zum testen?
Ja.
Danke
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
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
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
Super, genau das wait könnte ich nutzen