Alarm. CC BY-NC 2.0: http://www.flickr.com/photos/h_is_for_home/
Artikel
3 Kommentare

Mit Perl und Jabber/XMPP mit dem Raspberry Pi kommunizieren – Senden

Wenn der Raspberry Pi im stillen Kämmerlein vor sich hin arbeitet, sollte doch ab und zu mal eine kleine Kommunikation stattfinden:

  • Temperatur der CPU über Schwellwert gestiegen
  • Backup erfolgreich erledigt
  • Die Temperatur im Rücklauf der Heizung ist unter einen Schwellwert gefallen
  • PIR Sensor schlägt Alarm
  • … der Fantasie sind keine Grenzen gesetzt…

Bei Emails habe ich immer das Problem,  dass diese in der Mailflut untergehen. Es gibt auch noch die Möglichkeit per Whattsapp Nachrichten zu senden, aber auch hier besteht die Gefahr des gekonnten Ignorierens.  Wie kann man also mit dem Raspberry Pi kommunizieren? Am besten noch ohne große Verzögerungen.

Ich finde die Lösung über Jabber/XMPP ganz gut. Clients gibt es quasi für jedes Betriebssystem: Android, Linux,… Und eben auch zahlreiche Schnittstellen für Programmiersprachen. In meinem Fall für Perl (Paket libnet-xmpp-perl unter Ubuntu). Im ersten Beitrag geht es mir erst mal um die Richtung Pi => Smartphone. Mit dem angehängten Code kann man nach dem Speichern per Kommandozeile einen Empfänger und einen Text dem Programm mitgeben.

#!/usr/bin/perl
use strict;
use warnings;
use Net::XMPP;

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

if(!($recipient) || !($message)) {
    print "Usage: $0  \n";
    exit;
}

my $hostname = 'host';
my $sender = 'user';
my $password = 'pw';

my $connection = new Net::XMPP::Client();
my $status = $connection->Connect(
    hostname => $hostname,
    connectiontype => 'tcpip',
    tls => 1,
    port => 5222
    );

die("XMPP connection failed $!") if ! defined($status);

my @result = $connection->AuthSend(
    hostname => $hostname,
    username => $sender,
    password => $password);

die("XMPP authentication failed") if $result[0] ne 'ok';
die("XMPP message failed") if ($connection->MessageSend(to => $recipient, body => $message) != 0);
print "Message sent!\n";

Für meinen Testbetrieb habe ich mir unter http://jabber.hot-chilli.net/ zwei Accounts angelegt. Einen Account für den Raspberry Pi und einen Empfänger, der bei mir auf dem Smartphone angemeldet ist. Vielleicht ist diese Anleitung ja auch für Jemand anderes interessant. Der Code wird bei mir später in die Alarmierung direkt eingebunden und vermutlich nicht als eigenständiges Programm verwendet. Im Nächsten Teil möchte ich dann auf das Empfangen von Nachrichten eingehen, damit z.B. Befehle per XMPP/Jabber gegeben werden können.

  1. Teil – Senden von Nachrichten
  2. Teil – Empfangen von Nachrichten

Beitragsbild: Alarm. CC BY-NC 2.0: http://www.flickr.com/photos/h_is_for_home/