Globale, flexible Fenster-/Tür-Offen-Meldungen

Begonnen von Benni, 20 April 2015, 20:19:31

Vorheriges Thema - Nächstes Thema

Mitch

Danke für den Code.
Hab es mal schnell getestet, funktioniert prima.

Evtl. erweitere ich das noch um ei paar Dinge, die nicht Fenster oder Türe sind.
Dann hat man alles in einer Routine.
FHEM im Proxmox Container

Benni

Zitat von: QuesT am 23 April 2015, 20:21:44
könntest du deine Sub dazu auch noch posten?
Denn das ganze ist noch eine nummer zu hoch für mich.

Könnte ich schon, allerdings würde dir das nicht wirklich weiterhelfen, denn meine PushInfo() macht etwas mehr, als einfach nur eine Meldung über Pushover abzusetzen. Es wird dort u.a. auch gleich noch geprüft, wer überhaupt alles eine Benachrichtigung bekommen soll (Anwesenheit) und über welchen Dienst, bzw. Dienste Meldungen ausgegeben werden sollen (Pushover, Pushbullet, E-Mail, Logfile ....).

Für die Pushover-Meldungen an sich verwende ich dabei übrigens auch einfach das Pushover-Modul.

QuesT

Danke nur wie baue ich das heir um das ich eine nachricht per Pushover bekomme?

          #Jetzt wird der Ausgabebefehl für die Offenmeldung zusammengebaut
          #(Ich habe eine sub PushInfo, die Betreff und Text als Parameter erhält und aktuell
          # meine Meldungen über Pushover ausgibt)
          my $pushcmd="PushInfo('$devtype','$devname ist $immer $devstate');;";

Mein Pushover hast nur PO.

Und diesen Fehler bekomme ich auch noch:

2015.04.24 07:41:07 3: winOpen.CloseNotify return value: Global symbol "$MAX_xxxxx" requires explicit package name at (eval 979) line 1.

Benni

Damit hier jeder(!) auch mal was testen kann, ohne sich mit Pushover "rumschlagen" zu müssen kann einfach mal noch folgende sub in die 99_myUtils.pm einbauen:


sub PushInfo($$) {
   my ($msgsubj,$msgtext) = @_;

   Log3(undef,1,"winOpenMessage: $msgsubj - $msgtext");
}


Es wird dann statt einer Pushover-Nachricht eben eine Meldungszeile im Logfile eingetragen.
(Eventuelle Tipfehler möge man mir verzeihen, das habe ich jetzt einfach nur so auf die Schnelle hier reingetippt.)

Benni

Zitat von: QuesT am 24 April 2015, 08:23:27
Und diesen Fehler bekomme ich auch noch:

2015.04.24 07:41:07 3: winOpen.CloseNotify return value: Global symbol "$MAX_xxxxx" requires explicit package name at (eval 979) line 1.

Wie sieht denn dein winOpen.CloseNotify aus? Wieso verwendest du dort eine Variable $MAX_xxxxx?

QuesT

#20
Zitat von: Benni am 24 April 2015, 10:13:36
Wie sieht denn dein winOpen.CloseNotify aus? Wieso verwendest du dort eine Variable $MAX_xxxxx?

Sorry hat sich erledigt.

Hab einen dummy erstellt:

define FensterTestDummy dummy
attr FensterTestDummy userattr winOpenMaxTrigger winOpenTimer winOpenTimer2 winOpenType:Fenster,Türe winOpenName
attr FensterTestDummy setList open closed tilted
attr FensterTestDummy webCmd closed:open:tilted
attr FensterTestDummy winOpenMaxTrigger 3
attr FensterTestDummy winOpenName Fenster Test-Dummy
attr FensterTestDummy winOpenTimer 00:00:15
attr FensterTestDummy winOpenTimer2 00:00:30
attr FensterTestDummy winOpenType Fenster


Wenn ich nun den Dummy auf open stelle um 2015.04.24 10:48:48 sehe ich im Log folgendes:

2015.04.24 10:48:48 1: winOpenMessage: Fenster - Fenster Test-Dummy ist noch  offen
2015.04.24 10:48:48 1: in DELETED
2015.04.24 10:48:48 1: in DELETED
2015.04.24 10:48:48 1: in DELETED
2015.04.24 10:48:48 1: in DEFINED
2015.04.24 10:48:48 1: in DEFINED
2015.04.24 10:48:48 1: in DEFINED
2015.04.24 10:48:48 1: in ATTR
2015.04.24 10:48:48 1: in ATTR
2015.04.24 10:48:48 1: in ATTR
2015.04.24 10:49:18 1: winOpenMessage: Fenster - Fenster Test-Dummy ist immer noch  offen
2015.04.24 10:49:18 1: in DELETED
2015.04.24 10:49:18 1: in DELETED
2015.04.24 10:49:18 1: in DELETED
2015.04.24 10:49:18 1: in DEFINED
2015.04.24 10:49:18 1: in DEFINED
2015.04.24 10:49:18 1: in DEFINED
2015.04.24 10:49:18 1: in ATTR
2015.04.24 10:49:18 1: in ATTR
2015.04.24 10:49:18 1: in ATTR
2015.04.24 10:49:49 1: winOpenMessage: Fenster - Fenster Test-Dummy ist immer noch  offen
2015.04.24 10:49:49 1: in DELETED
2015.04.24 10:49:49 1: in DELETED
2015.04.24 10:49:49 1: in DELETED



Also alle drei meldungen in 1 Minute.

--

EDIT:

Lösche ich folgede Werte:

attr FensterTestDummy winOpenTimer 00:00:15
attr FensterTestDummy winOpenTimer2 00:00:30

geht es.
Liegt es daran das es die standart werte sind?

Benni

Wieso denn?

Es funktioniert alles doch korrekt:

winOpenTimer steht mit 00:00:15 auf 15 Sekunden(!)
winOpenTimer2 mit 00:00:30 auf 30 Sekunden(!)

Also kommt die erste Meldung nach 15 Sekunden, die 2. nach wieteren 30 Sekunden und die letzte nach nochmal 30 Sekunden.

Als Defaults sind mit 00:10:00 10 Minuten(!) hinterlegt.


QuesT

Oh, wie immer ist das Problem vor dem Pc.

Sorry  :'(

sub PushInfo($$) {
   my ($msgsubj,$msgtext) = @_;

   Log3(undef,1,"winOpenMessage: $msgsubj - $msgtext");
}

Wie bekomme ich die nachricht noch per Pushover?

Benni


QuesT

Wie ich Pushover verwende weis ich nur nicht wie in einer Sub / Perl.


Benni

Zitat von: QuesT am 24 April 2015, 11:58:46
Wie ich Pushover verwende weis ich nur nicht wie in einer Sub / Perl.

Das ist OT und das sind Grundlagen und gehört nicht in diesen Thread!

Ein letzter Tipp an dieser Stelle dazu: Schon mal was von der fhem() - Funktion gehört/gelesen?

selfarian

Ist auf jeden Fall eine sehr schöne Sache, dankeschön für das Bereitstellen :-)
Ich muss nur noch irgendwie bei mir den bzw. die notifies umstricken, da sie bei mir auch von den Heizkörper-Thermostaten ausgelöst werden (STATE last:eg.az.fenster :closed).
RasPi mit HMLAN, 5x HM-SEC-SC, HM LED16 als Alarmanlagendisplay, HM-TC-IT-WM-W-EU, 4x HM-CC-RT-DN, 1x HM PBU, 1x HM PBI-4

QuesT

Für alle die es auch brauchen:


sub PushInfo($$) {
   my ($msgsubj,$msgtext) = @_;

   fhem("set <Pushover> msg 'winOpenMessage' '$msgsubj - $msgtext' ")
}


Weiter wenn man MAX ShutterContact einsetzt:

define winOpen.OpenNotify notify .*:(opened|tilted) {winOpenStart($NAME)}

noanda

Hallo in die Runde,

bin mal wieder am Raten, ich hätte die Ausgabe gerne auf meinem Mails. Leider mache ich bei der Syntax was falsch:

sub PushInfo($$) {
   my ($msgsubj,$msgtext) = @_;

   fhem ({DebianMail('XX@xx.com','winOpenMessage','$msgsubj - $msgtext')})
}


schickt mir nämlich:
ZitatBetreff: winOpenMessage

Mail: $msgsubj - $msgtext
Raspberry Pi - FHEM 5.5
HMLAN, RFXtrx433 , CUL 868
HM-CC-RT-DN, HM-SEC-MDIR , HM-SEC-SC-2
HM-LC-SW2-FM, ROTO_ZEL-STG-RM-FZS
ELRO440AB, Flamingo

stromer-12

Vesuch es mal so:
sub PushInfo($$) {
   my ($msgsubj,$msgtext) = @_;

   fhem ({DebianMail('XX@xx.com','winOpenMessage',"$msgsubj - $msgtext")})
}
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL