FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: Aki1988 am 04 März 2014, 14:25:19

Titel: Pushover bei Statusänderung
Beitrag von: Aki1988 am 04 März 2014, 14:25:19
Hallo, nachdem ich lange rumprobiert habe (als Anfänger) eine einfache Push Benachrichtigung auf mein iPhone mit Pushover zu senden möchte ich euch hier mal das Ergebnis vorlegen.

Zuerst habe ich Pushover in FHEM definiert (siehe http://fhem.de/commandref_DE.html#Pushover (http://fhem.de/commandref_DE.html#Pushover)):
define <name> Pushover <token> <user>

also bei mir in diesem Beispiel:
define Pushover_Test Pushover abcdefghijklmnopqrstuvwxyzXXXXX abcdefghijklmnopqrstuvwxyzXXXXX

Als nächstes habe ich mir einen Dummy erstellt welcher mein Gerät darstellt welches beim Schalten eine Push Benachrichtigung auslösen soll:
define TestGeraet dummy
attr TestGeraet webCmd on:off

das TestGeraet in einen Definierten Zustand bringen mit
set TestGeraet off
Das hier geht natürlich auch mit einem schon vorhandenen Gerät welches den Status an FHEM zurückmeldet (z.B. Homematic)

Jetzt erstelle ich ein notify das die Push Benachrichtigung bei Statusänderung ausführt.

define PushDummy notify TestGeraet {fhem ("set Pushover_Test msg 'FHEM' 'Dummy geschalten!' '' 0 ''")}}

wenn ich jetzt das TestGeraet schalte erhalte ich eine Push Benachrichtigung auf meinem Smartphone (Ich setze mal voraus das die App eingerichtet ist)

---------------------------------------------------------------------------------------------------------------------------------------------------
Zur Erweiterung habe ich noch einen Schalter (Push_Aktiv) definiert mit dem ich die Push Benachrichtigungen "unterdrücken" kann.
define Push_Aktiv dummy
attr Push_Aktiv webCmd on:off

Auch hier wieder den Schalter in einen definierten Zustand bringen mit
set Push_Aktiv on

jetzt das neue notify mit IF Push_Aktiv=ON einbauen
define PushDummy notify TestGeraet {if(Value("Push_Aktiv") eq "on") {fhem ("set Pushover_Test msg 'Titel' 'Push Aktiv und Schalter ausgelößt.' '' 0 ''")}}

heißt auf Deutsch: Wenn das TestGeraet geschaltet wird überprüfe ob Push_Aktiv den Status on hat. Wenn ja, dann Schicke eine Push Nachricht.

So funktioniert es bei mir. Ein kleiner Schritt für die FHEM Experten hier, aber ich bin recht froh dass ich es hinbekommen habe. Vielleicht hilft es ja dem einen oder anderen.
Titel: Antw:Pushover bei Statusänderung
Beitrag von: P.A.Trick am 04 März 2014, 19:43:11
Würde auch herrlich in unser Wiki passen, oder?
Titel: Antw:Pushover bei Statusänderung
Beitrag von: Aki1988 am 05 März 2014, 11:48:24
So ich habe mein obiges Programm noch einmal erweitert: Jetzt kann ich den Schaltzustand des TestGeraets in der Pushnachricht mitsenden.

Also nocheinmal im überblick

define Pushover_Test Pushover abcdefghijklmnopqrstuvwxyzXXXXX abcdefghijklmnopqrstuvwxyzXXXXX
define TestGeraet dummy
attr TestGeraet webCmd on:off


das TestGeraet in einen Definierten Zustand bringen mit
set TestGeraet off
oder mit einem Klick auf Off

Push Aktiv Dummy anlegen:
define Push_Aktiv dummy
attr Push_Aktiv webCmd on:off


Auch hier wieder den Schalter in einen definierten Zustand bringen mit
set Push_Aktiv on

define PushNotify notify TestGeraet {if(Value("Push_Aktiv") eq "on"){my $temp_Status = Value("TestGeraet");; fhem ("set Pushover_Test msg 'TestGeraet' 'Schaltzustand: $temp_Status' '' 0 ''")}}

define PushNotify notify TestGeraet {if(Value("Push_Aktiv") eq "on"){my $temp_Status = Value("TestGeraet");; fhem ("set Pushover_Test msg 'TestGeraet' 'Schaltzustand: $temp_Status' '' 0 ''")}}

if(Value("Push_Aktiv") eq "on") --> Wenn der Dummy Schalter "Push_Aktiv" AN ist
my $temp_Status = Value("TestGeraet") --> erstelle die Variable $temp_Status und Schreibe dort den Status (bzw Value) vom TestGeraet hinein
fhem ("set Pushover_Test msg 'TestGeraet' 'Schaltzustand: $temp_Status' '' 0 ''") --> führe den FHEM Befehl "set Pushover_Test msg 'TestGeraet' 'Schaltzustand: $temp_Status' '' 0 ''" aus wobei $temp_Status als Variable durch den oben hineingeschriebenen Wert ersetzt wird.
Titel: Antw:Pushover bei Statusänderung
Beitrag von: dieda am 07 März 2014, 16:52:47
Interessant, obwohl ich Pushover nur unterwegs nutze und Zuhause WebViewControl.
Titel: Antw:Pushover bei Statusänderung
Beitrag von: AHA1805 am 09 März 2014, 21:24:32
Hallo

hab mir auch eine Lösung mit Pushover gebastelt.

Diese schickt mir, wenn ich nach Hause komme, und noch niemand die Post aus dem Briefkasten geholt hat eine Pushover Nachricht aufs Handy.

Wenn es jemanden interessiert, kann ich es beschreiben.

Schöne Grüße
Hannes
Titel: Antw:Pushover bei Statusänderung
Beitrag von: fazer41 am 18 März 2014, 14:01:53
@aki1988
Ich habe mal dein Beispiel übernommen. Für Testgerät meinen in Fhem bestehenden AV-Receiver genommen.
Ich möchte eine Benachrichtigung bekommen, sobald das Gerät eingeschaltet wird. Ist nur um die eigentlich Funktion zu testen.
Ich erhalte auch die Benachrichtigung, allerdings sofort 8 Mal beim Einschalten und 8 Mal beim Ausschalten.

Hier noch der fhem Auszug
define Pushover_Test Pushover xxxxxxxxxxxxxxxxxxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxx
define Push_Aktiv dummy
attr Push_Aktiv webCmd on:off
define PushNotify notify AV_Receiver {if(Value("Push_Aktiv") eq "on"){my $temp_Status = Value("AV_Receiver");; fhem ("set Pushover_Test msg 'AV_Receiver' 'Schaltzustand: $temp_Status' '' 0 ''")}}

Kann sich jemand einen Reim draus machen?
Titel: Antw:Pushover bei Statusänderung
Beitrag von: AHA1805 am 18 März 2014, 18:32:41
Was zeigt
"inform timer"
bzw. "Event Monitor" in der Web Oberfläche
SG

Gesendet von Unterwegs mit Tapatalk 4

Titel: Antw:Pushover bei Statusänderung
Beitrag von: P.A.Trick am 18 März 2014, 20:26:47
Setze mal event-on-change auf das Device "AV_Receiver", dann sollte die Zustandsänderung nur einmal kommen!
Titel: Antw:Pushover bei Statusänderung
Beitrag von: fazer41 am 19 März 2014, 09:03:56
Zitat von: AHA1805 am 18 März 2014, 18:32:41
Was zeigt
"inform timer"
bzw. "Event Monitor" in der Web Oberfläche
SG

Gesendet von Unterwegs mit Tapatalk 4
inform timer liefert
2014-03-19 09:01:01 Pushover Pushover_Test last-message: AV_Receiver: Schaltzustand: on
                                                                                                                   2014-03-19 09:01:01 Pushover Pushover_Test last-result: OK






und das ganze 8 Mal......

bei attr AV_Receiver event-on-change-reading .* bekomme ich die Benachrichtigung nur noch zweimal
bei attr AV_Receiver event-on-change-reading  1 bekomme ich keinerlei Benachrichtigung

Folgender Eintrag war erfolgreich attr AV_Receiver event-on-change-reading state
Titel: Antw:Pushover bei Statusänderung
Beitrag von: inesa394 am 24 März 2014, 12:23:00
Hallo AHA1805

Würde mich interressieren wenn du so nett wärst veröffentlich es doch

Bei mir funktioniert es nicht mit einen Bewegungsmelder von Homematic
hier der code was ist da falsch bekomme keinerlei Nachricht auf mein Handy
Pushover ist eingerichtet
define Pushover1 Pushover atVUuddddpceGE3Q9o36Erddwkddh xxxxxxxxxGRZErTuxxxnM8wNTJ85i
define pushnachricht dummy
attr pushnachricht webCmd on:off
define Push_Aktiv dummy
attr Push_Aktiv webCmd on:off
define PushNotify notify aussen_bewegung {if(Value("Push_Aktiv") eq "on"){my $temp_Status = Value("aussen_bewegung");;;; fhem ("set Pushover1 msg 'aussen_bewegung' 'Schaltzustand: $temp_Status' '' 0 ''")}}



Gruß Inesa
Titel: Antw:Pushover bei Statusänderung
Beitrag von: inesa394 am 24 März 2014, 18:11:10
Funktioniert jetzt bei mir danke noch für diese gute Idee

Gesendet von meinem LG-D802 mit Tapatalk

Titel: Antw:Pushover bei Statusänderung
Beitrag von: fazer41 am 24 März 2014, 19:56:47
@Inesa394
Hast Du noch was ändern müssen damit es funktioniert und wenn ja was? :)
Titel: Antw:Pushover bei Statusänderung
Beitrag von: P.A.Trick am 24 März 2014, 20:00:06
Ich habe mal angefangen einen Wiki Artikel zu schreiben. Jeder ist herzlich eingeladen zu ändern bzw. zu verbessern!

http://www.fhemwiki.de/wiki/Pushover
Titel: Antw:Pushover bei Statusänderung
Beitrag von: inesa394 am 24 März 2014, 20:05:07
Nein im code hat sich bei mir ein Fehler eingeschlichen

Gesendet von meinem LG-D802 mit Tapatalk

Titel: Antw:Pushover bei Statusänderung
Beitrag von: AHA1805 am 24 März 2014, 20:15:08
Hallo Inesa,

ich habe Pushover verwendet, so dass ich informiert werde, wenn Post in den Briefkasten geworfen wird
Aber nur wenn ich schon zu Hause bin, oder gerade nach Hause komme.

Definition von PUSHOVER

define PO_Hannes_Post Pushover aZaaUo58xxxxxxxxxxxxxxxxxxx urdJFEeNESEukxxxxxxxxxxxxxxxxxxx
define PO_Heike_Post Pushover aYeh3kLijKS8xxxxxxxxxxxxxxxxxxx uGdVXxEkgYR5s1vxxxxxxxxxxxxxxxxxxx


Im Briefkasten habe ich einen HM-SCI-3-FM eingebaut, welcher den Status des Deckels als auch der Türe mittels Reedkontakt bzw. Taster abfrägt.
define SW_Briefkasten_Tuer CUL_HM 20837A02
define SW_Briefkasten_Deckel CUL_HM 20837A03


Den Status ob der Briefkasten voll/leer als auch
Ob die Nachricht schon gesendet wurde (zu Hause) oder nicht (noch unterwegs)
wird in 3 dummys zwischen gespeichert.
define Briefkasten dummy
define pushPostHeike dummy
define pushPostHannes dummy


Diese Schalte lösen einen Notify aus, welche die Function evtBriefkasten aufruft.
define ntf_Briefkasten notify SW_Briefkasten.* {evtBriefkasten("@")}

Die eigentliche Funktion für das auswerten der Deckel und versenden der Nachrichten.
sub evtBriefkasten($)
{
   my ($objname) = shift;
   my ($objvalue) = Value($objname) ;
   my ($statBriefkasten) = Value("Briefkasten");
   my ($myAnwesend) = "";
   my ($myPushstate) ="";
   if ($objname eq "SW_Briefkasten_Deckel" and $objvalue eq "open" and $statBriefkasten eq "leer") {
      fhem("set Briefkasten voll");
      $myAnwesend  =  Value("Anw_Nexus");
      if ($myAnwesend eq "present") {
          fhem("set pushPostHeike send");
          fhem("set PO_Heike_Post msg msg 'Briefkasten' 'Der Briefkasten ist voll' '' 0 ''");
      } else {
          fhem("set pushPostHeike pendig");
      }

      $myAnwesend  =  Value("Anw_iPhone");
      if ($myAnwesend eq "present") {
          fhem("set pushPostHannes send");
          fhem("set PO_Hannes_Post msg msg 'Briefkasten voll' 'Der Briefkasten ist voll' '' 0 ''");
      } else {
          fhem("set pushPostHannes pendig");
      }
   }
   #Briefkasten Status zurück setzen
   if ($objname eq "SW_Briefkasten_Tuer" and $objvalue eq "closed" and $statBriefkasten eq "voll") {
      fhem("set Briefkasten leer");
      fhem("set pushPostHannes leer");
      fhem("set pushPostHeike leer");
   }
}




Den Status über "zu Hause" oder "abwesend" mache ich über das PRESENC Modul
define Anw_iPhone PRESENCE fritzbox AHAs-iPhone
define Anw_Nexus PRESENCE fritzbox Nexus4


Dann noch ein Notify bei einem Event des PRESENC Modul
define ntf_Anwesend notify Anw_.* {evt_Anwesend("@")}

sub evt_Anwesend($)
{
   my ($objname) = shift;
   my ($objvalue) = Value($objname) ;
   my ($myPushstate) ="";
   if ($objvalue eq "present" ) {
       $myPushstate =  Value("pushPostHeike");
       if ($myPushstate eq "pendig"  and $objname eq "Anw_Nexus") {
         fhem("set PO_Heike_Post msg msg 'Briefkasten' 'Der Briefkasten ist voll' '' 0 ''");
         fhem("set pushPostHeike send");
       }
       $myPushstate =  Value("pushPostHannes");
       if ($myPushstate eq "pendig"  and (($objname eq "Anw_iPhone") or ($objname eq "Anw_Note8"))) {
         fhem("set PO_Hannes_Post msg msg 'Briefkasten' 'Der Briefkasten ist voll' '' 0 ''");
         fhem("set pushPostHannes send");
       }
   }
}



Schöne Grüße
Hannes
Titel: Antw:Pushover bei Statusänderung
Beitrag von: fazer41 am 25 März 2014, 10:47:57
@Aha1805
Danke für Deine Briefkastenlösung!
welche Reedkontakte hast du im Briefkasten verbaut?
Titel: Antw:Pushover bei Statusänderung
Beitrag von: inesa394 am 25 März 2014, 11:54:28
Das ist der HC-SCI-3-FM wenn ich richtig gelesen habe.Wozu sind die Kabel die aus dem Sensor rausschauen?

Gesendet von meinem LG-D802 mit Tapatalk

Titel: Antw:Pushover bei Statusänderung
Beitrag von: AHA1805 am 25 März 2014, 12:08:26
Zitat von: fazer41 am 25 März 2014, 10:47:57
@Aha1805
Danke für Deine Briefkastenlösung!
welche Reedkontakte hast du im Briefkasten verbaut?

Wenn ich Zuhause bin kann ich mal ein Foto machen.


Zitat von: inesa394 am 25 März 2014, 11:54:28
Das ist der HC-SCI-3-FM wenn ich richtig gelesen habe.Wozu sind die Kabel die aus dem Sensor rausschauen?
Mit den Kabel kann man den Zustand von 3 Schalter, Taster, egal ob Öffner oder Schließer in Echtzeit zuverlässig abfragen.

Bei mir ein Taster mit Öffner Funktion für den Deckel
und ein Eingang für der Tür Status via Reedkontakt.

Gesendet von meinem LG-D802 mit Tapatalk


Gesendet von Unterwegs mit Tapatalk 4
Titel: Antw:Pushover bei Statusänderung
Beitrag von: AHA1805 am 28 März 2014, 22:16:06
Hallo hier das Bild
(http://img.tapatalk.com/d/14/03/29/6equ4y6y.jpg)

hat zwar etwas gedauert, aber es war immer schon zu dunkel zum Fotografieren.

Gruß Hannes

Gesendet von Unterwegs mit Tapatalk 4

Titel: Antw:Pushover bei Statusänderung
Beitrag von: fazer41 am 29 März 2014, 04:49:32
Danke fürs Bild. Saubere Lösung!

Gesendet von meinem GT-I9100 mit Tapatalk

Titel: Pushover bei Statusänderung
Beitrag von: fazer41 am 31 März 2014, 12:23:07
Wie sieht die Befehlszeile aus wenn ich für ein Ereignis zwei Personen auf unterschiedlichen Pushoveraccounts die selbe Benachrichtigung zukommen lassen will. Kann ich das zusammen definieren oder geht das nur einzeln.

Meine Benachrichtigung lautet bisher folgendermassen
define WaschmaschineAbgeschlossenPushover notify HR.WaschmaschineBetrieb:standby {fhem("set PushWa msg 'Hauswirtschaftsraum''Waschvorgang abgeschlossen' '' 0 ''")}
PushWa habe ich vorher definiert.
Die zweite Person soll die selbe Benachrichtigung bekommen?
Titel: Antw:Pushover bei Statusänderung
Beitrag von: P.A.Trick am 31 März 2014, 23:10:06
Du kannst bei Pushover sog. "Delivery Groups" definieren. So wie ich das verstanden habe, sollte das doch genau für deinen Fall passen!?


https://pushover.net/groups/build

ZitatIf you often need to send the same notification to a group of Pushover users at the same time, creating a Delivery Group can make this process easier.
Titel: Antw:Pushover bei Statusänderung
Beitrag von: fazer41 am 01 April 2014, 17:29:32
Zitat von: P.A.Trick am 31 März 2014, 23:10:06
Du kannst bei Pushover sog. "Delivery Groups" definieren. So wie ich das verstanden habe, sollte das doch genau für deinen Fall passen!?


https://pushover.net/groups/build

ja danke, das vereinfacht die Sache enorm!
Titel: Antw:Pushover bei Statusänderung
Beitrag von: crepp1967 am 01 August 2014, 11:52:29
@Aki1988
Hallo,
Diese Lösung habe ich schon lange gesucht. Allerdings hapert es bei mir an der Umsetzung. Den Dummy habe ich definiert u. er funktioniert auch, aber wie kann ich einen Aktor zuordnen ?

Meine Konfig:

define pushover_modul Pushover xxx xxx
attr pushover_modul room Connect
define Pushover_Test Pushover xxx xxx
define Poolpumpe dummy
attr Poolpumpe room Energie
attr Poolpumpe webCmd on:off
define PushDummy notify Poolpumpe {fhem ("set Pushover_Test msg 'FHEM' 'Poolpumpe wurde geschalten!' '' 0 ''")}

u. hier der Schalter bei dem der Status an Pushover gesendet werden soll:

define Schalter CUL_HM 24A36801
attr Schalter event-on-change-reading state
attr Schalter model HM-ES-PMSw1-Pl
attr Schalter peerIDs 00000000,
attr Schalter room Energie

Wäre dankbar für Tipps ...
Gruß
crepp1967