Pushover bei Statusänderung

Begonnen von Aki1988, 04 März 2014, 14:25:19

Vorheriges Thema - Nächstes Thema

Aki1988

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):
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.

P.A.Trick

Würde auch herrlich in unser Wiki passen, oder?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Aki1988

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.

dieda

Interessant, obwohl ich Pushover nur unterwegs nutze und Zuhause WebViewControl.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

AHA1805

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
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

fazer41

@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?

AHA1805

Was zeigt
"inform timer"
bzw. "Event Monitor" in der Web Oberfläche
SG

Gesendet von Unterwegs mit Tapatalk 4

AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

P.A.Trick

Setze mal event-on-change auf das Device "AV_Receiver", dann sollte die Zustandsänderung nur einmal kommen!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

fazer41

#8
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

inesa394

#9
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

inesa394

Funktioniert jetzt bei mir danke noch für diese gute Idee

Gesendet von meinem LG-D802 mit Tapatalk


fazer41

@Inesa394
Hast Du noch was ändern müssen damit es funktioniert und wenn ja was? :)

P.A.Trick

Ich habe mal angefangen einen Wiki Artikel zu schreiben. Jeder ist herzlich eingeladen zu ändern bzw. zu verbessern!

http://www.fhemwiki.de/wiki/Pushover
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

inesa394

Nein im code hat sich bei mir ein Fehler eingeschlichen

Gesendet von meinem LG-D802 mit Tapatalk


AHA1805

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
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)