Jabber: Unterschied zwischen den Versionen
Krikan (Diskussion | Beiträge) (FHEM(R)) |
BioS (Diskussion | Beiträge) (Installationsinfos zu neueren Linux Systemen hinzugefügt) |
||
Zeile 151: | Zeile 151: | ||
**MucLastSenderJID - Nur die Sender-JID der Nachricht | **MucLastSenderJID - Nur die Sender-JID der Nachricht | ||
--> | --> | ||
==Installation== | |||
Auf aktuellen Systemen gibt es leider Probleme mit den verwendeten XMPP Perl Modulen. | |||
Im speziellen benötigt man zwingend die folgende Perl-Modul Kombination, damit das Jabber Modul richtig funktionieren kann: | |||
*XML::Stream 1.23 | |||
*Net::XMPP 1.02 | |||
Wenn man OTR benutzen möchte sollte zusätzlich noch das Perl Modul Crypt::OTR installiert sein. | |||
Auf einem frisch installieren Ubuntu 16.04.02 LTS bedeutet das folgende Kommandos: | |||
<source lang="bash"> | |||
apt-get remove libnet-xmpp-perl | |||
apt-get remove libxml-stream-perl | |||
apt-get remove libotr5 libotr5-dev | |||
apt-get install build-essential | |||
apt-get install libnet-jabber-perl | |||
wget http://ftp.de.debian.org/debian/pool/main/libn/libnet-xmpp-perl/libnet-xmpp-perl_1.02-3_all.deb | |||
wget http://ftp.de.debian.org/debian/pool/main/libx/libxml-stream-perl/libxml-stream-perl_1.23-2_all.deb | |||
dpkg -i libxml-stream-perl_1.23-2_all.deb | |||
dpkg -i libnet-xmpp-perl_1.02-3_all.deb | |||
</source> | |||
Für OTR ist noch folgendes notwendig (64bit Intel Platform): | |||
<source lang="bash"> | |||
cpan install Digest::SHA1 | |||
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2_3.2.1-1+deb7u2_amd64.deb | |||
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2-dev_3.2.1-1+deb7u2_amd64.deb | |||
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2-bin_3.2.1-1+deb7u2_amd64.deb | |||
wget http://ftp.de.debian.org/debian/pool/main/libg/libgcrypt11/libgcrypt11_1.5.0-5+deb7u4_amd64.deb | |||
dpkg -i libgcrypt11_1.5.0-5+deb7u4_amd64.deb | |||
dpkg -i libotr2_3.2.1-1+deb7u2_amd64.deb | |||
dpkg -i libotr2-bin_3.2.1-1+deb7u2_amd64.deb | |||
dpkg -i libotr2-dev_3.2.1-1+deb7u2_amd64.deb | |||
cpan | |||
cpan> notest install Crypt::OTR | |||
</source> | |||
OTR bei 32 bit (Intel Platform): | |||
<source lang="bash"> | |||
cpan install Digest::SHA1 | |||
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2_3.2.1-1+deb7u2_i386.deb | |||
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2-dev_3.2.1-1+deb7u2_i386.deb | |||
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2-bin_3.2.1-1+deb7u2_i386.deb | |||
wget http://ftp.de.debian.org/debian/pool/main/libg/libgcrypt11/libgcrypt11_1.5.0-5+deb7u4_i386.deb | |||
dpkg -i libgcrypt11_1.5.0-5+deb7u4_i386.deb | |||
dpkg -i libotr2_3.2.1-1+deb7u2_i386.deb | |||
dpkg -i libotr2-bin_3.2.1-1+deb7u2_i386.deb | |||
dpkg -i libotr2-dev_3.2.1-1+deb7u2_i386.deb | |||
cpan | |||
cpan> notest install Crypt::OTR | |||
</source> | |||
==Beispiele== | ==Beispiele== | ||
Mit folgendem [[Notify]]-Beispiel kannst du auf eingehende Nachrichten reagieren, dieses Beispiel schickt das Reading "Temperatur" des Sensors "BU_Temperatur" bei jeder ankommenden Nachricht an den Sender zurück: | Mit folgendem [[Notify]]-Beispiel kannst du auf eingehende Nachrichten reagieren, dieses Beispiel schickt das Reading "Temperatur" des Sensors "BU_Temperatur" bei jeder ankommenden Nachricht an den Sender zurück: |
Version vom 3. Juni 2017, 21:04 Uhr
Jabber | |
---|---|
Zweck / Funktion | |
Dieses Modul ermöglicht FHEM, sich mit dem Jabber-Netzwerk zu verbinden, um Nachrichten zu einem Jabber-Server zu senden oder von diesem zu empfangen. | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE Thema |
Support (Forum) | Unterstuetzende Dienste |
Modulname | 70_Jabber.pm |
Ersteller | BioS (Forum ) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Jabber ist eine andere Beschreibung für "XMPP", ein Kommunikationsprotokoll für Nachrichtenorientierte "middleware", basierend auf XML. Fester bestandteil des Protokolls ist die Verschlüsselung zwischen Client und Server. Für den Benutzer ist es ähnlich anderer Chat-Plattformen wie zum Beispiel dem facebook Chat, ICQ oder Google Hangouts - jedoch frei Verfügbar, open Source und normalerweise Verschlüsselt (was Serverabhängig ist).
Seit Version 1.5 kann dieses Modul in Multi-User-Channel (sogenannte MUC) beitreten und Off-the-Record (OTR) Ende-zu-Ende Verschlüsselung benutzen. OTR ist nochmal ein zusätzlicher Sicherheitsrelevater Punkt, da die Kommunikation wirklich von Endgerät zu FHEM verschlüsselt wird und man sich nicht auf die Jabber Server Transportverschlüsselung verlassen muss.
Installation
Auf aktuellen Systemen gibt es leider Probleme mit den verwendeten XMPP Perl Modulen.
Im speziellen benötigt man zwingend die folgende Perl-Modul Kombination, damit das Jabber Modul richtig funktionieren kann:
- XML::Stream 1.23
- Net::XMPP 1.02
Wenn man OTR benutzen möchte sollte zusätzlich noch das Perl Modul Crypt::OTR installiert sein.
Auf einem frisch installieren Ubuntu 16.04.02 LTS bedeutet das folgende Kommandos:
apt-get remove libnet-xmpp-perl
apt-get remove libxml-stream-perl
apt-get remove libotr5 libotr5-dev
apt-get install build-essential
apt-get install libnet-jabber-perl
wget http://ftp.de.debian.org/debian/pool/main/libn/libnet-xmpp-perl/libnet-xmpp-perl_1.02-3_all.deb
wget http://ftp.de.debian.org/debian/pool/main/libx/libxml-stream-perl/libxml-stream-perl_1.23-2_all.deb
dpkg -i libxml-stream-perl_1.23-2_all.deb
dpkg -i libnet-xmpp-perl_1.02-3_all.deb
Für OTR ist noch folgendes notwendig (64bit Intel Platform):
cpan install Digest::SHA1
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2_3.2.1-1+deb7u2_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2-dev_3.2.1-1+deb7u2_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2-bin_3.2.1-1+deb7u2_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/libg/libgcrypt11/libgcrypt11_1.5.0-5+deb7u4_amd64.deb
dpkg -i libgcrypt11_1.5.0-5+deb7u4_amd64.deb
dpkg -i libotr2_3.2.1-1+deb7u2_amd64.deb
dpkg -i libotr2-bin_3.2.1-1+deb7u2_amd64.deb
dpkg -i libotr2-dev_3.2.1-1+deb7u2_amd64.deb
cpan
cpan> notest install Crypt::OTR
OTR bei 32 bit (Intel Platform):
cpan install Digest::SHA1
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2_3.2.1-1+deb7u2_i386.deb
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2-dev_3.2.1-1+deb7u2_i386.deb
wget http://ftp.de.debian.org/debian/pool/main/libo/libotr/libotr2-bin_3.2.1-1+deb7u2_i386.deb
wget http://ftp.de.debian.org/debian/pool/main/libg/libgcrypt11/libgcrypt11_1.5.0-5+deb7u4_i386.deb
dpkg -i libgcrypt11_1.5.0-5+deb7u4_i386.deb
dpkg -i libotr2_3.2.1-1+deb7u2_i386.deb
dpkg -i libotr2-bin_3.2.1-1+deb7u2_i386.deb
dpkg -i libotr2-dev_3.2.1-1+deb7u2_i386.deb
cpan
cpan> notest install Crypt::OTR
Beispiele
Mit folgendem Notify-Beispiel kannst du auf eingehende Nachrichten reagieren, dieses Beispiel schickt das Reading "Temperatur" des Sensors "BU_Temperatur" bei jeder ankommenden Nachricht an den Sender zurück:
define Jabber_Notify notify JabberClient1:Message.* {
my $lastsender=ReadingsVal("JabberClient1","LastSenderJID","0");
my $lastmsg=ReadingsVal("JabberClient1","LastMessage","0");
my $temperature=ReadingsVal("BU_Temperatur","temperature","0");
fhem("set JabberClient1 msg ". $lastsender . " Temp: ".$temperature);
}
Auf MUC Nachrichten lässt sich folgend reagieren, Augenmerk darauf legen dass der Nickname aus $lastsender in der msgmuc Funktion entfernt wird, damit die Nachricht an den Raum geht
define Jabber_Notify notify JabberClient1:MucMessage.* {
my $lastsender=ReadingsVal("JabberClient1","LastSenderJID","0");
my $lastmsg=ReadingsVal("JabberClient1","LastMessage","0");
my $temperature=ReadingsVal("BU_Temperatur","temperature","0");
fhem("set JabberClient1 msgmuc ". $lastsender . " Temp: ".$temperature);
}
Auf OTR Nachrichten wird reagiert, wie auf normale private Nachrichten auch, jedoch wird mit der msgotr Funktion geantwortet:
define Jabber_Notify notify JabberClient1:OTRMessage.* {
my $lastsender=ReadingsVal("JabberClient1","LastSenderJID","0");
my $lastmsg=ReadingsVal("JabberClient1","LastMessage","0");
my $temperature=ReadingsVal("BU_Temperatur","temperature","0");
fhem("set JabberClient1 msgotr ". $lastsender . " Temp: ".$temperature);
}