Hauptmenü

GoogleTalk

Begonnen von kossmann, 17 Januar 2013, 17:00:56

Vorheriges Thema - Nächstes Thema

kossmann

Hallo zusammen,

hier eine Prozedur für die 99_myUtils.pm, welche Push-Nachrichten mittels GoogleTalk auf das Smartphone bringt.

##########################################################
# GoogleTalk
# Nachricht mittles GoogleTalk auf ein Android-Smartphone

sub GoogleTalk($$) {

  my ($message, $recipient) = @_;

  use Net::XMPP;
  my $conn = Net::XMPP::Client->new;

  # individuelles Google-Konto zum Versenden
  my $username = '<Google-Username>';
  my $domain = 'gmail.com';
  my $password = '<Google-Passwort>';

  my $resource = 'FHEM';

  my $status = $conn->Connect(
    hostname => 'talk.google.com',
    port => 5222,
    componentname => $domain,
    connectiontype => 'tcpip',
    tls => 1,
  );

  die "Connection failed: $!" unless defined $status;
  my ($res,$msg) = $conn->AuthSend(
    username => $username,
    password => $password,
    resource => $resource,
  );

  die "Auth failed ", defined $msg ? $msg : '', " $!" unless defined $res and $res eq 'ok';
  $conn->MessageSend(
    to => $recipient,
    resource => $resource,
    subject => 'message via ' . $resource,
    type => 'chat',
    body => $message,
  );

}

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

{ GoogleTalk('Warnung: Batterie am Sensor x schwach.','meinname@gmail.com') }
FHEM benötigt ein eigenes Google-Konto, welches natürlich individuell eingetragen werden muss. Der Empfänger sollte sich sinnvollerweise im Status 'Verfügbar' befinden.

korbinian

Moin Kossmann,

Hatte vorher einen wrapper für ein python script, werd gleich mal umstellen.
Nur muss ich noch Net::XMPP unter Centos 6 minimal installiert bekommen, cpan mag nicht so recht.

Code frei von SchnickSchnack, Danke auf jedenfall.

kossmann

Cpan.org war heute Mittag "hacked by ...", also besser aufpassen oder nach RPMs suchen

korbinian

Hätte man besser mal ein paar euro für Sicherheit ausgegeben... ;)

CentOS:
yum install perl-Net-XMPP

Debian: sudo apt-get install libnet-xmpp-perl

Windows: keine Ahnung, evtl über cpan

Grüße

ChrisW

hm habs nachinstalliert aber keine Funktion. Auch im Log steht nix :(

Hat es schon jemand anderes ausprobiert?
Raspberry PI3 mit allem möglichen.

kossmann

Ich habe den Code um viel BlaBla gekürzt, aber es hat weiterhin funktioniert.

- Hast du unterschiedliche Google-Konten zum Senden und Empfangen verwendet? Ich vermute (!), dass dies notwendig ist.

- Bis du mit dem Empfangs-Konto "verfügbar"?

- Sind die beiden Konten jeweils in der anderen GoogleTalk-Kontaktliste (und wurde eine entsprechende Test-Nachricht über die Weboberfläche verschickt)?

ChrisW

ja beide verbunden und über web kann ich hin / herschreiben vll muss ich PC mal neu starten
Raspberry PI3 mit allem möglichen.

kossmann

Dann habe ich vielleicht zu viel heraus gekürzt, wundere mich dann aber, dass es bei mir funktioniert. Das ganze ist von hier mehr oder weniger übernommen. Probier´ mal aus, ob der obere Block wieder rein muss.

Ich hatte es mit zwei GoolgeApp-Konten in der selben Domain probiert (fhem@meinedomain.de (fhem@meinedomain.de) -> ich@meinedomain.de (ich@meinedomain.de)), vielleicht ist für echte Google-Konten etwas mehr Code notwendig.

ChrisW

hm muss ich mal testen. Aber komisch das es nirgends ne Fehlermeldung gibt :(
Benutzername ist XXXX ohne das @gmail.com oder ? Dafür ist ja Domain da ?
Raspberry PI3 mit allem möglichen.

kossmann

Ja, wenn deine GMail-Adresse hansdampf@gmail.com (hansdampf@gmail.com) ist, ist $username=hansdampf und $domain=gmail.com, bei GoogleApps-Konten wird $domain entsprechend anders gesetzt.

Bei mir funktioniert es übrigens noch ;-)

ChrisW

jo also hab ich da alles richtig gemacht.  Kannst du da keine Log abfrage ins Perl script packen ? Nichtmal in der Console sehe ich etwas
Raspberry PI3 mit allem möglichen.

kossmann

Ich kann mir das morgen noch mal genauer ansehen, aber wie gesagt: Das Skript basiert grundsätzlich nicht auf meinem Hirnschmalz, sondern ist aus dem Link kopiert, gekürzt und angepasst.

ChrisW

okay ich warte einfach mal vielleicht probiert es in der Zeit noch jemand anderes aus. Bin leider kein Perl Experte.
Raspberry PI3 mit allem möglichen.

rtv

Ich hab' auch nur wenig hilfreiches Feedback:
- Mit gmail Account (und appspezifischem Passwort) kein Fehler, Anmeldung gelingt, keine Nachrichten.
- mit gapps Account (für FHEM) an gmail Account kam die erste Nachricht an aber keine weiteren.

kossmann

Ich habe mir soeben zwei GMail-Konten zum testen erstellt, diese erst mal im Online-Chat miteinander "bekannt" gemacht und erste Test-Nachrichten hin und her geschrieben, was natürlich funktioniert hat.

In o.a. Prozedur habe ich anschießend das erste Test-Konto definiert (username, domain (gmail.com), password) und mich mit dem zweiten im Büro (natürlich andere IP-Adresse als zu Hause) im Browser angemeldet.

Ein { GoogleTalk('Test','test...2@gmail.com' ('test...2@gmail.com')) } kommt sofort an, womit die Prozedur in meinen Augen funktioniert.