Hauptmenü

NotifyMyAndorid

Begonnen von kossmann, 17 Januar 2013, 15:21:00

Vorheriges Thema - Nächstes Thema

kossmann

Hallo zusammen,

hier eine Prozedur für die 99_myUtils.pm, welche Push-Nachrichten mittels der App Notify My Android auf das Smartphone bringt.

##########################################################
# NotifyMyAndroid
# Nachricht mittles NMA auf ein Android-Smartphone

sub NotifyMyAndroid($$) {

  my ($event, $description) = @_;

  use LWP::UserAgent;
  my $browser = LWP::UserAgent->new();

  # APIKey individuell eintragen
  my $apikey = '...';

  my $url = 'https://www.notifymyandroid.com/publicapi/notify';
  my $application = 'FHEM';
  my $priority = '0';

  my $seite = $browser->post($url,
    [ apikey => $apikey,
      application => $application,
      event => $event,
      description => $description,
      priority => $priority,
    ]);

}

Der Aufruf in FHEM erfolgt mittels Perl-Code, z.B.:

{ NotifyMyAndroid('Warnung','Batterie am Sensor x schwach.') }
Der APIkey muss natürlich individuell eingetragen werden.

Zur Info: Pro Account gibt es 5 Benachrichtigungen am Tag kostenlos, weitere gibt es in unendlicher Anzahl wenn man Premium-Kunde wird (kostet z.Zt. einmalig 3,88 Euro).

ChrisW

hi,
gerade versucht im Log steht folgender Fehler:
2013.01.17 15:44:06 3: HTTP::Response=HASH(0x4c4fce8) : Unknown command http::response=hash(0x4c4fce8), try help
Code:

fhem (NotifyMyAndroid('ACHTUNG','Abwesend aber Fenster noch offen'));;\
Raspberry PI3 mit allem möglichen.

kossmann

Hallo Chris,

ich gehe mal davon aus, dass die LWP::UserAgent problemlos eingebunden wurde. Das HTTP::Response=HASH(0x...) bekomme ich auch.

Kann es sein, dass FHEM diese Antwort als Befehl interpretiert? Ich habe es bis jetzt nur aus einer Telnet-Session auf dem FHEM-Port ausprobiert, in geschweiften Klammern wie oben als Beispiel angegeben. Funktioniert dies bei dir auch nicht?

Ich bin mir (mangels Erfahrung) auch nicht sicher, ob der Code von dir richtig ist. Ein fhem(...) führt doch keinen Perl-Code aus, welcher dies hier ja ist... sonder eher FHEM-Code, oder? Dann wäre auch klar, warum FHEM die Antwort als Befehl interpretiert ;-) Nimm mal das fhem mit seinen Klammern weg, du scheinst da ja schon im Perl-Code zu sein.

ChrisW

hm komisch jetzt 15:53 kommen 3 Push nachrichten auf einmal von 15:44 / 15:48 und 15:50

Da scheint irgendwas nicht zu stimmen bzw ist ja meine E-Mail schneller :D

Wie schnell ist diene Push Nachricht auf dem Handy?
Raspberry PI3 mit allem möglichen.

kossmann

Ich habe heute schon mein Kontingent von 5 (Test-)Nachrichten erschöpft, die waren aber in unter 5 Sekunden da.

ChrisW

hehe ich jetzt auch :D
Also jetzt 3 Sekunden Nachricht ist da ;)

Wunderbar vielen Dank für diese geniale Lösung.
Raspberry PI3 mit allem möglichen.

Trebor5

Hallo,

so ganz blicke ich noch nicht durch.

NMA ist jetzt auf Premium und eine Testnachricht vom Web auf das Handy funzt.

In 99_Utils.pm habe ich jetzt

##########################################################
# NotifyMyAndroid
# Nachricht mittles NMA auf ein Android-Smartphone

sub NotifyMyAndroid($$) {

  my ($event, $description) = @_;

  use LWP::UserAgent;
  my $browser = LWP::UserAgent->new();

  # APIKey individuell eintragen
  my $apikey = 'HIER STEHT JETZT MEIN API KEY';

  my $url = 'https://www.notifymyandroid.com/publicapi/notify';
  my $application = 'FHEM';
  my $priority = '0';

  my $seite = $browser->post($url,
    [ apikey => $apikey,
      application => $application,
      event => $event,
      description => $description,
      priority => $priority,
    ]);

}

Was muss ich denn jetzt weiter machen um
a: von Fhem eine Testnachricht mal zu senden und
b: wenn meine Rauchmelder angehen mit diesem Code würde ich gerne eine Push auf mein Handy senden.
define Feueralarm notify .*Rauch_Wohnzimmer:smoke.* { \
   fhem("set Wegbeleuchtung AN ;;\
         set Rollo_Kueche Runter ;; sleep 0.5 ;;\
              set Schlaf_Rollo Hoch;; sleep 0.5 ;;\                          
              set Terrassenstrahler AN ;; sleep 0.5 ;;\
         set Licht An") }
attr Feueralarm group Feueralarm
attr Feueralarm room Rauchmelder

c: Kann ich NMA auch bei meiner Frau auf das handy mit denn gleichen Zugangsdaten spielen oder brauche ich für jedes weitere Handy einen neuen NMA Zugang

Danke in voraus für eure Hilfe.

Odroid N2,Hauptsensoren Homematic + 1 Wire + 8Kanal Homematic auf Relay Schaltung. Forum Beiträge sind meine letzte Hoffnung nach Stundenlangen erfolglosen suchen und probieren.

kossmann

Hallo Trebor5,

Zitat von: Trebor5 schrieb am Fr, 01 März 2013 17:13a: von Fhem eine Testnachricht mal zu senden
Melde dich mal per telnet auf dem FHEM-Port an (also z.B. telnet localhost 7072) und gib dort {  NotifyMyAndroid("Test", "Testnachricht") } (mit den geschweiften Klammern außen herum) ein.

Alternativ kannst du dir natürlich als Test einen define-at-Block schreiben, in dem nur nicht irgendein Rollo hoch fährst, sondern nur o.a. Befehl ausführst.

Zitat von: Trebor5 schrieb am Fr, 01 März 2013 17:13b: wenn meine Rauchmelder angehen mit diesem Code würde ich gerne eine Push auf mein Handy senden.
define Feueralarm notify .*Rauch_Wohnzimmer:smoke.* { \
   fhem("set Wegbeleuchtung AN ;;\
         set Rollo_Kueche Runter ;; sleep 0.5 ;;\
              set Schlaf_Rollo Hoch;; sleep 0.5 ;;\                          
              set Terrassenstrahler AN ;; sleep 0.5 ;;\
         set Licht An") }
attr Feueralarm group Feueralarm
attr Feueralarm room Rauchmelder
Hier mal mein Block:
define Feueralarm notify .*Rauchmelder:smoke-Alarm { \
  GoogleTalk("Feueralarm !!!");; \
  NotifyMyAndroid("Alarm", "Feuer !!!");; \
  SendEmail("FHEM Feueralarm", "FHEM meldet Feueralarm!!!");; \
  fhem("set Wohnzimmer_RolloBalkon oben");; \
}

Das smoke-Alarm.* hat bei mir beim letzten Test nicht gegriffen, daher habe ich das .* am Ende erst mal entfernt. Da hinter smoke-Alarm auch kein Zeichen mehr kommt, wird .* (beliebiges Zeichen, egal wie oft) nicht greifen - es folgt ja kein Zeichen mehr. Getestet ist es allerdings noch nicht und Martin fummelt hier auch noch ordentlich rum.

Zitat von: Trebor5 schrieb am Fr, 01 März 2013 17:13c: Kann ich NMA auch bei meiner Frau auf das handy mit denn gleichen Zugangsdaten spielen oder brauche ich für jedes weitere Handy einen neuen NMA Zugang
Gute Frage, die ich dir leider nicht beantworten kann. Frag hier doch mal den Entwickler oder probiere es aus. Alternativ kannst du dir natürlich zwei Funktionen definieren, NotifyAndoridChef und NotifyAndroidSchatzi ;-)

muellthos

NMA mutzt ja Google Cloud Messageing. In GCM kann man sehr wohl mehrere Endgeräte erreichen, die erhalten alle einen eigenen GUID. Ob das aber NMA auch unterstützt, bezweifle ich. Schreib doch mal eone e-mail an den Support von NMA.

muelllthos

Trebor5

Also ich habe mal bei NMA nachgeschaut und dort steht in den FAQ.

You will receive a notification on each device that has NMA installed and configured with the username who owns that API key, regardless which Google account is used on that device. There is no limit on the number of devices you have registered on your NMA account.

Google Übersetzung sagt:

Sie erhalten eine Benachrichtigung auf jedes Gerät, das NMA installiert und konfiguriert mit dem Benutzernamen, die diese API-Schlüssel besitzt, unabhängig davon, welcher Google-Konto auf diesem Gerät verwendet wird. Es gibt keine Begrenzung für die Anzahl der Geräte, die Sie auf Ihrem NMA-Konto registriert haben.

Ist doch super.

Jetzt muss ich nur noch rausfinden wie man Cam Bilder mitverschickt damit der Einbrecher auch gesehen wird ;-))
Odroid N2,Hauptsensoren Homematic + 1 Wire + 8Kanal Homematic auf Relay Schaltung. Forum Beiträge sind meine letzte Hoffnung nach Stundenlangen erfolglosen suchen und probieren.

Trebor5

Hallo,

ich bekomme aus Fhem heraus einfach keine Push auf das Handy .

Ich drücke denn Schaletr Radio_HochRunter und im log kommt

act_on_TEST2 return value: HTTP::Response=HASH(0x109d8e0)

In der CFG steht

define act_on_TEST2 notify Radio_HochRunter:on {if("$value{Radio_HochRunter}" eq "on") { NotifyMyAndroid('Warnung','Batterie am Sensor x schwach.') }  }

Habe schon alle möglichen Kombination durch weiss da jemand weiter ?

Odroid N2,Hauptsensoren Homematic + 1 Wire + 8Kanal Homematic auf Relay Schaltung. Forum Beiträge sind meine letzte Hoffnung nach Stundenlangen erfolglosen suchen und probieren.

kossmann

Hallo Trebor5,

die HASH-Rückgabe ist korrekt und bei mir auch der Fall.

Zitat{ NotifyMyAndroid ("Test", "Testnachricht") }
HTTP::Response=HASH(0xaa4cee4)
Was mir dazu noch einfällt:

- Bist du "normaler" Kunde? Dann kannst du am Tag nur 5 Nachrichten empfangen.
- Hast du NMA auf dem Smartphone auch laufen? Nach einem eventuellen Neustart muss ich es immer einmal manuell starten, es startet nicht automatisch.
- Hast du den richtigen API-Key im Code?

Dein Define-Code sieht korrekt aus (NotifyMyAndorid wird ja auch ausgeführt, sonst gäbe es keine HASH-Rückmeldung), wobei die IF-Abfrage in meinen Augen unnötig ist. Welchen Status außer "on" sollte Radio_HochRunter sonst haben, wenn das Notify nur auf ":on" reagiert?

Trebor5

Hallo kossmann,

das ist nur eine Testkonfig.

Wenn es funktioniert werde ich das auf meinen Fingerprint denn ich schon instaliert habe einsetzen um damit die Alarmanlage einzuschalten.

Deshalb muss ich halt abfragen ob die an ist um dann dementsprechend eine Push Nachricht bei ALarmmeldung rauszuschicken.

Problem ist das keine Nachricht ankommt ausser ich schicke mir eine Mail mit einem Mailprog.


NMA habe ich bezahlt und damit als Vollversion. Die 3€ war es mir Wert.

Odroid N2,Hauptsensoren Homematic + 1 Wire + 8Kanal Homematic auf Relay Schaltung. Forum Beiträge sind meine letzte Hoffnung nach Stundenlangen erfolglosen suchen und probieren.

kossmann

Die Funktion wird aufgerufen, daher soll der restliche Code mal egal sein. Aber irgendwas scheint da ja trotzdem nicht zu stimmen.

Du könntest dir unter http://www.notifymyandroid.com/dev.jsp mal das Perl und/oder Shell-Skript laden und ausprobieren, ob du damit eine Nachricht übermittelt bekommst.

Vorher würde ich aber nochmal prüfen, ob du in der 99_myUtils.pm auch wirklich deinen API-Key eingetragen hast. Nicht, dass du die Nachrichten immer an ein anderes Smartphone schickst ;-)

Ansonsten könntest du mir deinen API-Key mal schicken (z.B. per PrivateMessage) und ich gucke mal, ob ich von mir aus eine Testnachricht verschickt bekomme.

Hat das ganze bei dir denn schon mal funktioniert? Davon würde ich momentan mal ausgehen, da ansonsten die 3,- Euro ja eine "Katze im Sack gekauft" gewesen wäre.

kossmann

Als Frage und zur Info an alle...

Ich habe mit Trebor5 privat etwas hin und her geschrieben. Ich kann von meinem Server problemlos Nachrichten an ihn verschicken. Die Funktion wird bei ihm auch korrekt aufgerufen, allerdings kommt nichts auf dem Smartphone an.

Er hat FHEM auf einer FritzBox laufen - kann hier eventuell ein Problem liegen, z.B. fehlende Perl-Bibliotheken? Läuft NotifyMyAndroid bei irgendwem auf einer FritzBox?

Wenn ich mir z.B. diesen alten Thread ansehe, könnte LWP::UserAgent das Problem sein.

Trebor5

@kossmann

Man das war aber schnell von dir.......

Noch eine Idee...... NMY ist ja nichts anderes als eine Mail zu schicken.....bei wem läuft der Mailversand auf einer Fritzbox?

Bitte um ein Beispiel zum testen .

Danke.

Odroid N2,Hauptsensoren Homematic + 1 Wire + 8Kanal Homematic auf Relay Schaltung. Forum Beiträge sind meine letzte Hoffnung nach Stundenlangen erfolglosen suchen und probieren.

Gerhard

Hallo Trebor5,

bei mir war das Verhalten ähnlich wie bei dir.
Nach besuch der Seite: http://homematic-forum.de/forum/viewtopic.php?t=11393 (sehr informativ)
habe ich in der Funktion NotifyMyAndroid die Zeile:
my $url = 'https://www.notifymyandroid.com/publicapi/notify'; nach
my $url = 'http://www.notifymyandroid.com/publicapi/notify'; geänert und
plötzlich kammen Meldungen auf mein Android an.
Vieleicht hilft Das weiter.

Gruß, Gerhard
FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.

Gerhard

Hallo Trebor5,

bei mir war das Verhalten ähnlich wie bei dir.
Nach besuch der Seite: http://homematic-forum.de/forum/viewtopic.php?t=11393 (sehr informativ)
habe ich in der Funktion NotifyMyAndroid die Zeile:
my $url = 'https://www.notifymyandroid.com/publicapi/notify'; nach
my $url = 'http://www.notifymyandroid.com/publicapi/notify'; geänert und
plötzlich kammen Meldungen auf mein Android an.
Vieleicht hilft Das weiter.

Gruß, Gerhard
FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.

kossmann

Das könnte auch ein Grund sein: Die FritzBox kennt die SSL-Zertifikate nicht (warum sollte sie auch) und die HTTPS-Verbindung schlägt fehl.

Paddy

Hallo,

Ja das ist richtige die URL muss "http://..." sein auf der Fritzbox

Ich habe hier meine Config für Fhem auf der FritzBox geposted,

Link

Hab sie auch etwas erweitert.

Danke nochmal an kossmann für die tolle Vorarbeit.

Beste Grüsse

Paddy