Android App Notify

Begonnen von fhem86, 18 Januar 2013, 19:40:26

Vorheriges Thema - Nächstes Thema

ChrisW

Das Widget ist für Android-4.2-Handys optimiert und funktioniert bei älteren Android-Versionen nur in Kombination mit der Android-App WidgetLocker.
Das zieht auch wieder übelst Akku ;)
Whatsapp kann ja auch ein Popup anzeigen lassen. Lookscreen brauch ich auch nicht :D
Geht nur darum die Meldung nicht zu übersehen :P
Raspberry PI3 mit allem möglichen.

fhem86

ich habe mal einen Test Dummy für @ und % gebaut




define notify_test dummy
attr notify_test setList on off
define notify_test_n notify notify_test {fhem(sendNotify("@ %","@ %","@ %","@ %"))}



funktioniert wunderbar

@ und % funktioniert scheinbar nicht in komplexen Funktionen

fhem86

Das Problem mit dem Fehler ist gelöst ein "Log" hilft :)



sub sendNotify($$$$) {

  my ($message, $tickerText, $contentTitle, $contentText) = @_;

  use JSON;
  use HTTP::Request;
  use LWP::UserAgent;
 
  use IO::Socket::SSL;
 
 
  my $client = LWP::UserAgent->new();

  my $apikey = '';
  my $registration_ids = '';

  my $data = {
      registration_ids => [ $registration_ids ],
      data             => {
        message => $message,
tickerText => $tickerText,
contentTitle => $contentTitle,
contentText => $contentText
      }
  };
 
  my $req = HTTP::Request->new(POST => "https://android.googleapis.com/gcm/send");
    $req->header(Authorization  => 'key='.$apikey);
    $req->header('Content-Type' => 'application/json; charset=UTF-8');
    $req->content(encode_json $data);
 

  $client->request($req,$back);

  Log 3, "Notify gesendet";

}




ChrisW

Super Log ist Sauber !
und wenn ich den code auch mit " " einbaue geht @ und % Wunderbar.

Was mir gerade aufgefallen ist das es ab und zu wohl etwas Hängt. Weiss nicht ob die App vielleicht von Android gekillt wird  ??
Raspberry PI3 mit allem möglichen.

ChrisW

Also nach längeren Tests... die App wird von Android wohl gekillt... manchmal kommen keine Push Nachrichten. Muss erst die APP Starten und dann nach nem erneuten Push kommen alle :(
Raspberry PI3 mit allem möglichen.

fhem86

Zitat von: Chris schrieb am So, 20 Januar 2013 20:17Super Log ist Sauber !
und wenn ich den code auch mit " " einbaue geht @ und % Wunderbar.

Was mir gerade aufgefallen ist das es ab und zu wohl etwas Hängt. Weiss nicht ob die App vielleicht von Android gekillt wird  ??


Teste mal die angehängte Version. Dort habe ich Sicherheitsabfragen der Variablen eingebaut

Vibration an/aus geht auch ("start bis ende" noch nicht)

und ein neuer Parameter icon 0-2

fhem(sendNotify(message, tickerText, contentTitle, contentText, icon))



sub sendNotify($$$$$) {

  my ($message, $tickerText, $contentTitle, $contentText, $icon) = @_;

  use JSON;
  use HTTP::Request;
  use LWP::UserAgent;
 
  use IO::Socket::SSL;
 
 
  my $client = LWP::UserAgent->new();

  my $apikey = '';
  my $registration_ids = '';

  my $data = {
      registration_ids => [ $registration_ids ],
      data             => {
        message => $message,
tickerText => $tickerText,
contentTitle => $contentTitle,
contentText => $contentText,
icon => $icon
      }
  };
 
  my $req = HTTP::Request->new(POST => "https://android.googleapis.com/gcm/send");
    $req->header(Authorization  => 'key='.$apikey);
    $req->header('Content-Type' => 'application/json; charset=UTF-8');
    $req->content(encode_json $data);
 

  $client->request($req,$back);

  Log 3, "Notify gesendet";

}


fhem86

ProjectID musst du aber nochmal eingeben. Es hat sich etwas an der Konfigspeichermethode geändert.

ChrisW

cooool ;) Vibration + Icon Läuft.
Würd es vll nicht Icon Nennen sondern Prio Dann kann man davon später popups abhänig machen ohne wieder ein Wert hinzuzufügen dann schaut es später ,0,1,4,3,2 aus :D
Wird ja immer besser ;) Geil wäre es doch wenn du dich mit andFHEM zusammentust ;)
Raspberry PI3 mit allem möglichen.

ChrisW

hmm also :
2013.01.21 09:04:40 3: Notify gesendet
9:07 ist es erst angekommen ;(
Davor war eins was gar nicht angekommen ist ;/ Komisch
Raspberry PI3 mit allem möglichen.

fhem86

Es gibt eine neue öffentliche Version.
Ein großes Danke an den Beta Tester Chris :)

Funktionen:
  • 6 Verschiede Icons für Alarme/Infos usw
  • Vibration an/aus und auf einen Zeitraum von bis festlegbar
  • Notify Typen einzeln de-/aktivierbar innerhalb der App (Falls man von z.B. Infos zugespammt wird :D)
  • Es wird die gesendet Zeit angezeigt


(siehe Anhang / see attachement)


(siehe Anhang / see attachement)


(siehe Anhang / see attachement)


(siehe Anhang / see attachement)


FHEM Funktion:


sub sendNotify($$$$$) {

  my ($message, $tickerText, $contentTitle, $contentText, $icon) = @_;

  use JSON;
  use HTTP::Request;
  use LWP::UserAgent;

  use IO::Socket::SSL;


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

  my $apikey = '';
  my $registration_ids = '';

  my $unix_timestamp = time*1000;

  my $data = {
      registration_ids => [ $registration_ids ],
      data             => {
        message => $message,
                tickerText => $tickerText,
                contentTitle => $contentTitle,
                contentText => $contentText,
                timestamp => $unix_timestamp,
                icon => $icon
      }
  };

  my $req = HTTP::Request->new(POST => "https://android.googleapis.com/gcm/send");
    $req->header(Authorization  => 'key='.$apikey);
    $req->header('Content-Type' => 'application/json; charset=UTF-8');
    $req->content(encode_json $data);


  $client->request($req,$back);

  Log 3, "Notify gesendet";

}



Nutzung:

fhem(sendNotify("home","ticker","home","Content",0))
fhem(sendNotify("alarm","ticker","alarm","Content",1))
fhem(sendNotify("warnung","ticker","warnung","Content",2))
fhem(sendNotify("wecker","ticker","wecker","Content",3))
fhem(sendNotify("info","ticker","info","Content",4))
fhem(sendNotify("wetter","ticker","wetter","Content",5))


Wenn jemand kein eigenes google Projekt anlegen will.
Ich habe ein Projekt für das FHEM Forum angelegt:



API-Key:AIzaSyBofcqSTa0wWBusTJyvEeOsygowATW3Vok
ProjectID:526869440043



Ich empfehle trotzdem ein eigenes Projekt. Siehe erster Beitrag.


fhem86

hmm 4 downloads ein feedback wäre nicht schlecht

ChrisW

Mein Feedback hast du ja schon super App :)
Aber schon lustig wie oft die Icons geladen wurden fast 80x und die app nur 4 mal :P
Raspberry PI3 mit allem möglichen.

ChrisW

hmm ich glaube seit dem Update heute bekomme ich die Push Nachrichten alle 2x gesendet .. hat sich soweit aber nirgends etwas verändert.. muss an der 99_Utils.pm liegen ..
Raspberry PI3 mit allem möglichen.

fhem86

Notifikationen:

(siehe Anhang / see attachement)

Notifikation Body/Message (mit eigener HTML Formatierung):

(siehe Anhang / see attachement)

Icon Auswahl für Einstellungen:

(siehe Anhang / see attachement)

Einstellung eines Icons:

(siehe Anhang / see attachement)


Features:
  • Vibration für jedes Icon einstellbar inklusive von bis Uhrzeit
  • Topmeldungen (vor dem Lockscreen)
  • Meldungen werden durch einen Slider geschlossen (von links nach rechts sliden) (zurück button ist disabled)
  • HTML Code in der Message z.B. "messagehtml" in rot zentriert und groß

define notify_test dummy
attr notify_test room notify_test
attr notify_test setList on off
define notify_test_n notify notify_test {fhem(sendNotify("<br><br><br><br><h1 align=center style=color:FF0000>messagehtml</h1>","test","test","test",1))}
  • Jedes Icon kann bei bedarf einzeln pro Smartphone abgeschaltet werden.
  • Jedes Icon kann mit einem Sound bestückt werden
    Abspieldauer kann eingestellt werden
    0ms bedeutet kein Sound[/list]

    FHEM Modul:

    sub sendNotify($$$$$) {

      my ($message, $tickerText, $contentTitle, $contentText, $icon) = @_;

      use JSON;
      use HTTP::Request;
      use LWP::UserAgent;
     
      use IO::Socket::SSL;
     
     
      my $client = LWP::UserAgent->new();

      my $apikey = 'DER_API_KEY';
      my $registration_id1 = 'DIE_REG_ID_DES_SMARTPHONES';
      my $unix_timestamp = time*1000;
     
      my $data = {
          registration_ids => [ "$registration_id1" ],
          data             => {
            message => $message,
    tickerText => $tickerText,
    contentTitle => $contentTitle,
    contentText => $contentText,
    timestamp => $unix_timestamp,
    icon => $icon
          }
      };
     
      my $req = HTTP::Request->new(POST => "https://android.googleapis.com/gcm/send");
        $req->header(Authorization  => 'key='.$apikey);
        $req->header('Content-Type' => 'application/json; charset=UTF-8');
        $req->content(encode_json $data);
     

      $client->request($req,$back);

      Log 3, "Notify gesendet";

    }


    FHEM Nutzung Code:

    define notify_test dummy
    attr notify_test room notify_test
    attr notify_test setList on off
    define notify_test_n notify notify_test {fhem(sendNotify("<br><br><br><br><h1 align=center style=color:FF0000>messagebody</h1>","tickerText","contentTitle","contentText",iconid))}

    iconid=Icon 0-5

    Steffen

    Hallo!

    Ich finde dieses Thema sehr interessant und würde das sehr gerne umsetzen, doch komme ich an einigen Stellen nicht weiter.

    Hoffe ein wenig oder mehr;-) Hilfe durch euch?!

    Also da wäre zum einem:

    -Google Konto hatte ich schon
    -Creating Google Api project habe ich auch angelegt, doch da komme ich nicht weiter mit dem Punkt: Von "Creating a Google API project" Bis "Obtaining an API Key" was muss ich da genau machen?
    Welche Service muss ich im Dashboard Aktivieren?
    Wie bekomme ich die Project ID Regestriert, denn wenn ich einen Nummer eingeben möchte sag er mir "Not a valid identifier"
    -Die App habe ich schon auf Handy installiert
    -Das Paket php auf Debian installiert
    bei Aufruf: php5 /var/www/gcm/notify.php?message=msg&tickerText=ticker&contentTitle=Titel&contentText=Text
    [1] 28504
    [2] 28505
    [3] 28506
    root@NASC87667:~# PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysql.so' - /usr/lib/php5/20090626+lfs/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysqli.so' - /usr/lib/php5/20090626+lfs/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo_mysql.so' - /usr/lib/php5/20090626+lfs/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
    Could not open input file: /var/www/gcm/notify.php?message=msg

    [1]   Exit 1                  php5 /var/www/gcm/notify.php?message=msg
    [2]-  Fertig                  tickerText=ticker
    [3]+  Fertig                  contentTitle=Titel

    Naja ich glaube das reicht erstmal an Fragen;-)

    Mfg Steffen