Hi Gemeinde,
kürzlich, so vor ca. einem halben Jahr, hat mich mein Kollege und FHEM'ler Predictor auf die Idee gebracht ein Jabber bzw. XMPP Modul für FHEM zu entwickeln, also hab ich die letzten eineinhalb Tage meines Urlaubs geopfert ;)
Grund ist dass wir im Jabber recht aktiv sind und es ganz nett ist wenn FHEM an unsre Chat-Accounts Infos schreiben kann - ähnlich wie z.B. mit Pushover.
Per Jabber hat man allerdings nicht nur einen Vorwärts-, sondern auch einen Rückwärtskanal - d.h. ich kann FHEM eine Message schicken und FHEM kann das als notify empfangen und reagieren.
Ihr braucht 2 Jabber Accounts um das zu testen, einen für euch, einen für FHEM.
Wer nicht bei einem offiziellen Jabber Server (siehe jabber.org) suchen möchte darf mir gerne eine PM schreiben, ich hab noch ein paar Testaccounts auf einem privaten Server.
Benötigt wird das perl Modul Net::Jabber damit es funktioniert. Wie man das auf einer FritzBox installiert oder ob das vielleicht schon drauf ist weis ich leider nicht. Da könnte ich die Infos von ein paar Fritz'lern gut gebrauchen.
Ansonsten hier eine kurze Beschreibung:
Define:
define <name> Jabber <server> <port> <username> <password> <tls> <ssl>
Beispiel:
define JabberClient1 Jabber jabber.org 5222 myusername mypassword 1 0
Damit verbindet sich FHEM schon mit dem Server und setzt sich selbst online.
dann kann man dem User schon Nachrichten schicken und diese sollten im Event-Monitor mit auftauchen.
Selbst kann man Nachrichten, geklaut von Pushover, in dieser Form senden:
set JabberClient1 msg user@jabber.org meine Nachricht ohne Anführungszeichen
Über Notify's kann man auf eingehende Nachrichten reagieren.
Weitere Infos über die Attribs und ein Notify Beispiel stehen im Modul als englische Doku zur Verfügung.
Ich stelle euch das Modul hier jetzt mal zum Testen und Spielen zur Verfügung - Ideen, Vorschläge, Verbesserungsvorschläge natürlich erwünscht!
Viel Spaß damit ;)
Update 2014-04-10:
ich hab die File, die im Forum angehängt war gelöscht.
Das Modul lebt ab jetzt im SVN weiter und kommt mit den FHEM Updates entsprechend ;)
Grüße,
BioS
Dauerte etwas, aber hab den Post entdeckt.
Da ich leider gerade etwas unter Wasser bin (wie schon im Multimedia Bereich offenbart) konnte ich bisher nicht schauen wie ich Module auf eine Fritz bekomme.
Ich denke ein kurzer Post im Dev Bereich bringt da viele Antworten.
Ansonsten schon mal THX für die Mühe
Hey,
sehr feines Plugin. Leider schmiert fhem immer ab, wenn ich tls durch eine 1 ersetze.
Aktueller workaround: ich habe einen, nicht von außen erreichbaren, unverschlüsselten Port auf dem jabber server angelegt. Nun verbindet er sich und sendet Nachrichten.
Aber auf gesendete Nachrichten antwortet das plugin nicht. Auch nicht mit whitelist auf '.*' gesetzt.
Ich würde gerne z.B. Werte abfragen, z.B. würde ich gerne eine Nachricht ala "set HeizungWz getConfig" absetzen und er soll mir die gesamte config per jabber senden. Geht sowas?
Wenn ja, wie?
Generell aber mal fetten Dank für das Plugin!! So gehen Notifications auch ohne google als man in the middle ;)
Cheers,
Stefan
Hi Stefan,
freut mich, dass das Plugin nicht umsonst war :)
zu deinem TLS Problem: Was für einen Jabber Server hast du? Ich benutze bei mir ejabberd und da geht die TLS funktion ohne Probleme.
Vielleicht kannst du mir per PM die Fehlermeldung schicken, wenn das Plugin bei dir abstürzt. Ist bestimmt nur eine SSL/TLS Sache.
Zu deiner anderen Frage mit dem Antworten:
Das Plugin schickt quasi Events die man per notify abfangen kann.
Wenn du ein notify wie folgt definierst, nimmt das Plugin deine Message als FHEM Kommando an und schickt dir den Output:
(Achtung, wenn du RecvWhitelist auf .* hast, kann jeder Jabber User dein FHEM steuern! ;) )
Wenn dein JabberClient "JabberClient" heißt:
define jabber_test_notify notify JabberClient:Message.* {
my $lastsender=ReadingsVal("JabberClient","LastSenderJID","0");
my $lastmsg=ReadingsVal("JabberClient","LastMessage","0");
my $fhem_output=fhem(ReadingsVal("JabberClient","LastMessage","0"));
fhem("set JabberClient msg ". $lastsender . " FHEM: ".$fhem_output) ;
}
Ich habs eben noch getestet, damit kann man dann alles mögliche machen:
list WohnzimmerLicht
set WohnzimmerLicht off
{ Value('WohnzimmerLicht') }
Wenn du denkst, dass die Nachrichten nicht ankommen kannst du das im Normalen Event Monitor prüfen, da sollte wie beim Licht schalten auch eine Zeile kommen in der deine Nachricht steht.
Have Phun :)
Hi,
cool, dass probiere ich heute oder morgen Abend mal aus. Das mit der Whitelist ist mir klar. Wollte nur verdeutlichen, dass es nicht daran liegt, dass meine regex falsch definiert ist ;)
Auf meinem Server läuft auch ejabberd. MIt self signed cert. Wenn ich mir die perl libraries aber so anschaue, dann sollten self signed certs eh automatisch akzeptiert werden. Ich muss wohl noch etwas rumspielen.
Aber da ejabberd und fhem auf dem gleichen BSD laufen, nur in unterschiedlichen jails, habe ich das routing so gebaut, dass nur fhem über den nicht verschlüsselten port gehen kann. In sofern sollte es so auch erstmal passen.
Umsonst war es definitiv nicht. Da jabber mein Hauptkommunikationsmedium ist, ist eine Integration davon perfekt.
Cheers,
Stefan
Hi,
ich hab den Fehler mit SSL gefunden.
Im ejabberd gibt es 4 verschiedene Möglichkeiten SSL bzw. TLS zu aktivieren ;)
Du hast in deiner config vermutlich "tls" drin, ich arbeite mit "starttls", da die "tls" Option anscheinend im xmpp deprecated ist.
Nun ist wohl unter dem ejabberd tls == ssl und starttls == tls, sehr witzig..
Egal wie es nun geconft ist, ich habe das Modul im 1. Post aktualisiert, jetzt hat man hinten 2 Optionen, einmal <tls> und <ssl>
Du kannst dann ja mal probieren ob es besser geht wenn du die tls option auf 0 setzt und die ssl option auf 1
So sieht das neue define aus:
define <name> Jabber <server> <port> <username> <password> <tls> <ssl>
Grüße,
BioS
Hi,
ja, habe tls in der config. aber auch starttls. Ich supporte sowieso Beides - auf unterschiedlichen Ports. Es gibt doch tatsächlich Clients, die noch nie TLS gehört haben. Aber ich habe auch beide Ports ausprobiert. Ich werde aber bei nächster Gelegenheit mal Dein aktualisiertes Modul ausprobieren und berichten.
Der Server läuft schon seit Jahren und ist auch schon mehrfach umgezogen ( was mit ejabberd absolut keinen Spaß macht. Dafür ist er sehr stabil und läuft und läuft) und recht gut besucht. Aber vll hilft es ja Abschätzungen für das Modul zu machen, wenn Du auch andere Configs gesehen hast? Ist aber recht Standard und übersichtlich.
Die Config, nur zur info und nicht relevante Teile durch Platzhalter ersetzt oder weggelassen (ja, auch der cert-path ;) ):
...
{listen,
[
%%
%% TLS
%%
{5222, ejabberd_c2s, [
{certfile, "/path/to/my/cert"}, starttls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},
%%
%% Legacy SSL
%%
{5223, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
{certfile, "/path/to/cert"}, tls,
{max_stanza_size, 65536}
]},
%%
%% MEH - Never route this to the outside world!
%%
{5224, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},
... weitere ports, aber für Interconnectivity zu anderen Servern ...
]}
Cheers,
Stefan
Hi BioS,
hört sich sehr interessant an.
Ich brauche dafür nicht zwangsläufig einen eigenen Jabber Server, oder?
Wie kann man gewährleisten, dass der FHEM Jabber-Account keinen Input von anderen annimmt?
Wenn der Useraccount nicht bekannt ist, hilft das etwas aber ein wirklicher Schutz ist es ja auch nicht.
ciao
Martin
Hi Martin,
Du brauchst nicht zwangsläufig einen eigenen jabber Server.
Es reicht wenn du einen Account bei irgendeinem free Anbieter erstellst.
Eine Liste mit free Anbietern findest du auf http://jabber.org
Das Plugin hat eine Option in der man einstellen kann von wem der FHEM Server Nachrichten akzeptiert.
D.h. dort kannst du deine jabber Adresse eintragen und dann kannst nur du deinem Server was schreiben :)
Soweit ich weis sind diese Adressen auch nicht fake-bar, da ein jabber Server immer nur mit seinen eigenen usern arbeitet und sich gegenüber anderen Servern authentifiziert im dns wie auch mit einem ssl Zertifikat.
Also nicht so wie bei EMails bei denen ein Server Mails von anderen Accounts weiterleiten kann..
Grüße,
BioS
Gesendet von meinem XT910 mit Tapatalk
Ok cool. Danke für die schnelle Antwort.
Kein ding :)
Denk nur dran dass du 2 Accounts brauchst - einen für dich und einen für deinen FHEM Server.
Gesendet von meinem XT910 mit Tapatalk
Hi,
das klingt nach einer tollen Sache! So kann ich bequem mein fhem von auswärts bedienen, ohne mir mit dem webinterface am smartphone einen abzubrechen!
Senden klappt auf Anhieb schon einmal super. Wenn ich antworte kommt aber nichts im event an.
Sollte doch oder?
Gruß, George
Hi George,
deine Antwort sollte im Eventmonitor als auch in den readings erscheinen.
Versuche mal das Attribut " RecvWhitelist" auf .* zu setzen.
Grüße,
BioS
Gesendet von meinem XT910 mit Tapatalk
das Problem liegt woanders, das ganze hat genau einmal funktioniert. Jetzt kann ich auch nicht mehr senden. In pidgin erscheint der user auch als offline.
Wie kann man das debuggen?
Gruß
Ich habe in dem Modul noch einen Haufen debug zeilen drin, die müsstest du auskommentieren.
Fangen mit "Log 0," an. Du musst das # entfernen.
Gesendet von meinem XT910 mit Tapatalk
danke, das muß ich leider auf nächstes WE verschieben. Sonst komme ich morgen nicht raus.
Hi BioS,
ich erhalte immer folgende Meldung.
There was an error in the last call to Process that you did not check for and
handle. You should always check the output of the Process call. If it was
undef then there was a fatal error that you need to check. There is an error
in your program at ./FHEM/70_Jabber.pm line 235
Die Fehlermeldung tritt dann auf sobald ich meinen Jabber Client definiere.
define JabberFHEM Jabber jabber.de 5222 xxxx.xxxxxxxx yyyyyyyy 1 0
Kannst du dir vorstellen wo das herkommt?
Hi crazy_penguin!
Das einzige was mir einfällt ist, dass er beim Reconnect ein Problem hat, aber da du schreibst dass es direkt nach dem define kommte ich spontan auf keine andere Idee.
Hast du dich bei jabber.de registriert?
Ich hab mal testweise einen Account dort angelegt, und das geht sauber durch.
Wenn du willst schicke ich dir gern eine Modulvariante mit erweitertem Logging,
alternativ kannst du auch alle "Log 0," Einträge auskommentieren.
So könnten wir dem ganzen auf die schliche kommen..
Hi BioS,
ich habe zwei Accounts registriert und getestet. Den einen habe ich meinen SmartPhone, den anderen hatte ich erste mit Miranda IM getestet und später in FHEM eingetragen.
Damit sollte es keine Probleme geben.
Du kannst mir gerne eine variante mit erweitertem Logging zur Verfügung stellen. Ich werde dann mal sehen was im Log steht.
Cooles Modul! Danke!
Funktionierte bei mir auf Anhieb. Werde weiter testen.
Wann kann man damit im SVN-Repository rechnen?
Grüße,
Alexander
Also, das Senden aus FHEM funktioniert wunderbar.
Andersherum klappt das jedoch nicht. Mein Client zeigt FHEM auch als offline.
Die beiden Accounts liegen bei jabber.de
Ich habe noch eine Zeile gefunden:
Use of uninitialized value $authresult[0] in string ne at ./FHEM/70_Jabber.pm line 282.
Ich habe in dem Modul alle # vor Log 0 entfernt.
So folgende Fragen:
Wo wird hingeloggt?
In meinem Usernamen befindet sich ein Punkt. Ist das evtl. ein Problem?
Hi Zusammen,
ich versuche mal alles in einem Post zu beantworten ;)
Generell habe ich das Modul mal nochmal mit erweiterten Loggingfunktionen ausgestattet die man im Script nun mit der $debug Variable (oberer Teil) aktivieren kann.
Es wird in fhem.log (im FHEM log-folder) und in /tmp/jabberdebug.log geloggt.
Zitat von: crazy_penguin am 18 März 2014, 10:59:45
Ich habe noch eine Zeile gefunden:
Use of uninitialized value $authresult[0] in string ne at ./FHEM/70_Jabber.pm line 282.
Ich habe in dem Modul alle # vor Log 0 entfernt.
So folgende Fragen:
Wo wird hingeloggt?
In meinem Usernamen befindet sich ein Punkt. Ist das evtl. ein Problem?
Das ist nicht sehr gut.
Sieht aus wie wenn der sich nicht sauber authentifizieren kann wobei eigentlich
nicht "nix" zurückkommen sollte, sondern ein Fehler - zumindest laut der perl Dokumentation.. :(
Am Punkt liegts nicht, das hab ich getestet. Mein Testpasswort "/)Bk^j:`!]1h:!o@0k5=" hat er auch geschluckt. Scheint was anderes zu sein.
Bitte aktualisiere mal das Modul auf die v0.3, die ich eben hoch geladen habe und setze wie beschrieben die $debug variable auf 1, also dass da dann "my $debug = 1;" steht.
Dann schick mir kurz einen Auszug aus deiner FHEM.log sowie die File /tmp/jabberdebug.log, am besten per PM, damit wir den Post hier nicht vollspammen.
Zitat von: hexenmeister am 17 März 2014, 23:43:07
Also, das Senden aus FHEM funktioniert wunderbar.
Andersherum klappt das jedoch nicht. Mein Client zeigt FHEM auch als offline.
Die beiden Accounts liegen bei jabber.de
Hehe, da hab ich mir ganz schön den Wolf gesucht.
Ich hab da wohl beim "onlinestatus" setzen 'nen Fehler gemacht, den mein ejabberd ignoriert, jabber.de aber nicht :)
Bitte aktualisiere auch das Modul auf die 0.3.
Er sollte online gehen und deine Authorisierungsanfrage umgehend beantworten.
Zitat von: hexenmeister am 17 März 2014, 22:17:51
Cooles Modul! Danke!
Funktionierte bei mir auf Anhieb. Werde weiter testen.
Wann kann man damit im SVN-Repository rechnen?
Ich danke euch dass ihr das so super testet. Freut mich immer wieder was sinnvolles zu machen und solche Antworten geben mir immer wieder einen Ansporn, also danke dafür! ;)
Ich wollte warten bis einige "Tester" mir das Modul durchgetestet haben damit ich die Fehler noch ausbessern kann, die ich selber nicht habe. Z.b. dein jabber.de Fehler.
Bevor ich das aber ins SVN stelle, wollte ich eigentlich noch einen Fritzbox User der mir das testen könnte.
Ich habe selber keine Fritzbox, und mein Kollege meinte das es wohl ein ganz schöner graus ist dort perl-module zu installieren.
Im schlechtesten Fall würde das Modul FHEM abstürzen lassen, wenn es sein Net::XMPP und Net::Jabber auf der Fritzbox nicht findet und ich würde doch sehr ungern FHEM mit dem Modul instabil machen ;)
Danke & Grüße an euch
BioS
Hallo und danke für die schnelle Lösung!
Jetzt wird Status richtig angezeigt, auch das Senden zum FHEM funktioniert.
Was mich etwas irritiert, ist die Tatsache, dass wenn mein Handy offline ist, die gesedete Nachrichten nicht nach dem Online-Gehen nachträglich zugestellt werden. Am Plugin liegt das natürlich nicht. Weißjemand, ob das eine Jabber-Protokoll-Eigenschaft ist, oder liegt es an jabber.de?
Grüße,
Alexander
P.S. Eine FritzBix habe ich zwar... ich habe aber gerade nachgelesen, was man tun muss, um Perm-Module zu intallieren... Aua!
Bin mir da nicht so sicher, dass die Box danach nicht ganz resettet werden muss ;)
Zur Not kann ich das schon probieren, wäre mir aber liber, wenn sich ein echter Interesset finden würde...
ZitatWas mich etwas irritiert, ist die Tatsache, dass wenn mein Handy offline ist, die gesedete Nachrichten nicht nach dem Online-Gehen nachträglich zugestellt werden.
Nehme alles zurück, das funktioniert jetzt :)
Habe mir damit ein Status-Reporting und Commando-Interface gebastelt.
Nochmals danke für ein nützliches Modul ;)
Grüße,
Alexander
Hi,
ich kriege immer diesen Fehler im Log:
2014.04.03 00:49:04 0: Can't locate Net/Jabber.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/70_Jabber.pm line 41.
BEGIN failed--compilation aborted at ./FHEM/70_Jabber.pm line 41.
Wie bekomme ich den unter Linux auf meinem Raspberry net::jabber installiert?
Hab gerade noch libnet-xmpp-perl installiert, aber das ist vermutlich das falsche Paket, oder?
ciao
Martin
Moin,
installiere mal libnet-jabber-perl
Hi,
@crazy_penguin: Vielen Dank, das hat geholfen.
@hexenmeister: könntest du mal deine define commands für jabber.de posten. Hab aktuell noch einen connection error.
Danke
Martin
Hi,
habs hinbekommen.
Also für jabber.de kann man das folgende define verwenden:
define DeinNameFürDasJabberDeviceInFhem Jabber jabber.de 5222 DeinUsername DeinPasswort 1 0
State laut fhem ist jetzt connected. Auf meinem Handy wird der Account allerdings noch als offline angezeigt und die Nachrichten kamen noch nicht an und die Nachricht von meinem Handy an fhem kommen nicht an. Umgekehrt geht es.
Oder werden die von fhem empfangenen Nachrichten nicht ins log geschrieben?
Erst lesen, dann posten :)
Nachrichten kommen an. Cooles Modul, Nettozeit um es ans laufen zu bringen vielleicht 20 min.
Gibt es schon eine Wiki-Seite dazu?
ciao
Martin
Hi,
wo/wie lege ich den Notify so an?
Über die Kommandozeile in fhem kriege ich dann immer eine Fehlermeldung das my unbekannt ist.
ZitatWenn dein JabberClient "JabberClient" heißt:
Code: [Auswählen]
define jabber_test_notify notify JabberClient:Message.* {
my $lastsender=ReadingsVal("JabberClient","LastSenderJID","0");
my $lastmsg=ReadingsVal("JabberClient","LastMessage","0");
my $fhem_output=fhem(ReadingsVal("JabberClient","LastMessage","0"));
fhem("set JabberClient msg ". $lastsender . " FHEM: ".$fhem_output) ;
}
Wie ist die genaue Syntax, wenn ich die Whitelist auf ein oder zwei Accounts einschränken will?
Kommt statt dem * einfach nur der erlaubte Useraccount und wie notiere ich dann den zweiten Account?
ciao
Martin
Moin,
gerne kann aich meine Konfiguration und die Perl-Methoden (habe ich in 99_myUtils.pm abgelegt) hier posten. Allerdings erst heute abend, wenn ich wieder zuhause bin.
Grüße,
Alexander
So, meine Jabber-Definitionen:
in fhem.cfg
define jabber Jabber jabber.de 5222 <fhem_user> <pass> 1 0
attr jabber OnlineStatus available
attr jabber PollTimer 2
attr jabber RecvWhitelist <my_user>@jabber.de
attr jabber ResourceName FHEM
define Jabber_Notify notify jabber:Message.* {sendJabberAnswer();;}
define jabberstatus at *05:10:00 {sendMeStatusMsg();;}
und in 99_myUtils.pm
######################################################
# Meldung per Jabber senden
######################################################
sub
sendJabberMessage($$)
{
my($rcp, $msg) = @_;
fhem("set jabber msg $rcp $msg");
}
######################################################
# Meldung an mich per Jabber senden
######################################################
sub
sendMeJabberMessage($)
{
my($msg) = @_;
sendJabberMessage('<my_user>@jabber.de', $msg);
}
######################################################
# Statusdaten an mein Handy per Jabber senden
######################################################
sub
sendMeStatusMsg()
{
my $msg = "Status: Umwelt";
$msg=$msg."\n Vorgarten: ";
$msg=$msg."T: ".ReadingsVal("UM_VH_OWTS01.Luft", "temperature", "---")." C";
$msg=$msg."\n Garten: ";
$msg=$msg."T: ".ReadingsVal("GSD_1.4", "temperature", "---")." C,";
$msg=$msg." H: ".ReadingsVal("GSD_1.4", "humidity", "---")." %,";
$msg=$msg." Bat: ".ReadingsVal("GSD_1.4", "power_main", "---")." V";
sendMeJabberMessage($msg);
}
######################################################
# Kleines Jabber-Cmd-Interface
######################################################
sub
sendJabberAnswer()
{
my $lastsender=ReadingsVal("jabber","LastSenderJID","0");
my $lastmsg=ReadingsVal("jabber","LastMessage","0");
my @cmd_list = split(/\s+/, trim($lastmsg));
my $cmd = lc($cmd_list[0]);
# erstes Element entfernen
shift(@cmd_list);
my $newmsg;
if($cmd eq "status") {
$newmsg.= "Status: (noch) nicht implementiert";
}
if($cmd eq "umwelt") {
$newmsg.= "Umwelt";
$newmsg.="\n Vorgarten: ";
$newmsg.="T: ".ReadingsVal("UM_VH_OWTS01.Luft", "temperature", "---")." C, ";
$newmsg.="B: ".ReadingsVal("UM_VH_HMBL01.Eingang", "brightness", "---").", ";
$newmsg.="Bat: ".ReadingsVal("UM_VH_HMBL01.Eingang", "battery", "---")." ";
$newmsg.="\n Garten: ";
$newmsg.="T: ".ReadingsVal("GSD_1.4", "temperature", "---")." C,";
$newmsg.=" H: ".ReadingsVal("GSD_1.4", "humidity", "---")." %,";
$newmsg.=" Bat: ".ReadingsVal("GSD_1.4", "power_main", "---")." V";
}
if($cmd eq "system") {
$newmsg.= "CPU Temp: ".ReadingsVal("sysmon", "cpu_temp_avg", "---")." C\n";
$newmsg.= "loadavg: ".ReadingsVal("sysmon", "loadavg", "---")."\n";
$newmsg.= "Auslastung: ".ReadingsVal("sysmon", "stat_cpu_text", "---")."\n";
$newmsg.= "RAM: ".ReadingsVal("sysmon", "ram", "---")."\n";
$newmsg.= "Uptime: ".ReadingsVal("sysmon", "uptime_text", "---")."\n";
$newmsg.= "Idle: ".ReadingsVal("sysmon", "idletime_text", "---")."\n";
$newmsg.= "FHEM uptime: ".ReadingsVal("sysmon", "fhemuptime_text", "---")."\n";
$newmsg.= "FS Root: ".ReadingsVal("sysmon", "fs_root", "---")."\n";
$newmsg.= "FS USB: ".ReadingsVal("sysmon", "fs_usb1", "---")."\n";
$newmsg.= "Updates: ".ReadingsVal("sysmon", "sys_updates", "---")."\n";
}
# ggf. weitere Befehle
if($cmd eq "help" || $cmd eq "hilfe" || $cmd eq "?") {
$newmsg.= "Befehle: Help (Hilfe), Status, System, Umwelt";
}
if($cmd eq "fhem") {
my $cmd_tail = join(" ",@cmd_list);
$newmsg.=fhem($cmd_tail);
}
if($cmd eq "perl") {
my $cmd_tail = join(" ",@cmd_list);
$newmsg.=eval($cmd_tail);
}
if(defined($newmsg)) {
fhem("set jabber msg ". $lastsender . " ".$newmsg);
} else {
fhem("set jabber msg ". $lastsender . " Unbekanter Befehl: ".$lastmsg);
}
}
Es werden zwei Jabber-Accounts benötigt: <fhem_user> und <my_user>
Das ist ein Beispiel und wird nicht ohne Änderungen laufen, passt es ggf. selbt an!
Was das ganze tut:
- Jeden Morgen mir die Wetterdaten von 2 meiner Sensoren zu senden
- Mehrere Befehle per Jabber-Chat akzeptieren und beantworten:
-- System: ausgewählte System Informationen
-- Umwelt: Wetterdaten
-- perl <perl_cmd>: Perl-Befehle ausführen
-- fhem <fhem_cmd>: FHEM-Commandos ausführen.
etc.
Grüße,
Alexander
Hi Alex, sehr cool. Eine super Grundlage die man für sich anpassen kann.
Ciao
Martin
Hi Marinschm,
Zitat von: martinschm am 03 April 2014, 11:41:05
Wie ist die genaue Syntax, wenn ich die Whitelist auf ein oder zwei Accounts einschränken will?
Kommt statt dem * einfach nur der erlaubte Useraccount und wie notiere ich dann den zweiten Account?
Die Whitelist ist wird per Regular Expression ausgewertet, d.h. wenn du nur einen useraccount benutzen willst,
kannst du direkt den jabber Account in dieses Attribut setzen: user@jabberserver.de
Wenn du mehrere Accounts zulassen willst musst du dich an die regex syntax halten: (user1@jabberserver.de|user2@jabberserver.de)
Wenn man es ganz genau machen will muss man den Punkt mit einem Backslash escapen: (user1@jabberserver\.de|user2@jabberserver\.de)
Ich hoffe das hilft weiter.
@hexenmeister: Das ist wirklich sehr cool! Werde ich bei meiner Installation auch mal testen ;)
Grüße,
BioS
Hi,
habs gerade eingebunden und auch gleich meinen ersten eigenen Befehl definiert. Sehr cool.
Danke euch allen.
ciao
Martin
sehr geil ;-)
ich versuche gerade mein Android, auf dem ich eine App für einen Bewässerungscomputer für meinen Strebergarten schreibe, mit FHEM zu verheiraten. Da gibt es zwei möglichchkeiten, per WBS und/oder http request und OpenVPN (wackelig) oder halt per Google cloud (so ähnlich wie es andFHEM macht).
Für eine Bidirektionale Schnittstelle wäre aber XMPP nötig, was ja Jabber ja ist.
Ich hab mich noch nicht so richtig reingefuchst, aber wäre das Jabber modul in fhem dazu in der Lage?
gruß
swifty
Zitat von: swifty am 08 April 2014, 19:35:40
sehr geil ;-)
ich versuche gerade mein Android, auf dem ich eine App für einen Bewässerungscomputer für meinen Strebergarten schreibe, mit FHEM zu verheiraten. Da gibt es zwei möglichchkeiten, per WBS und/oder http request und OpenVPN (wackelig) oder halt per Google cloud (so ähnlich wie es andFHEM macht).
Für eine Bidirektionale Schnittstelle wäre aber XMPP nötig, was ja Jabber ja ist.
Ich hab mich noch nicht so richtig reingefuchst, aber wäre das Jabber modul in fhem dazu in der Lage?
gruß
swifty
Bestimmt, mit der ein oder anderen Anpassung.
Ich könnte vielleicht mein Modul zusätzlich als eine Art input Modul funktionieren lassen, dass quasi über xmpp andere module miteinander sprechen können, so als eine art transport layer wie das CUL modul :)
Grüße BioS
Gesendet von meinem XT910 mit Tapatalk
yepp.
das wäre super. Wenn die Android app mal ohne FHEM funzt kann ich hoffentlich mithelfen.
Jan
Hi
Ihr müsstet doch eigentlich nur den Code von Hexenmeister nehmen und anpassen. Bei gewissen "Befehlen" in der Jabber Nachrichten löst du dann die für die Bewässerung notwendigen Anweisungen aus. Jabber ist dann nichts anderes als ein Schalter.
Hi,
so wie ich das verstanden habe will er über eine Android App per XMPP FHEM steuern.
Das würde schon gehen wenn man das über notifys macht, aber wenn's bidirektional werden soll (und in einer Ausbaustufe mal ähnlich wie andFHEM werden soll) wäre es sauberer mann würde das über ein eigenständiges Modul machen.
@swifty: oder hab ich dich falsch verstanden und du willst wirklich nur per Jabber einen Befehl an FHEM senden der dann ein reply gibt?
Dann wäre es tatsächlich einfacher du würdest das über ein notify define machen.
Grüße,
BioS
ich denke schon, ev geht es natürlich auch irgendwie auch anders.
Die idee wäre dass die APP letztendlich notifys auslösen kann und bestimmte dummy defines an die App übertragen werden. So können Statusinfos geholt werden und Befehle abgesetzt.
Die Synchronisierung läuft über die Google cloud. Das Timing und asynchrone übertragen managed alles die Cloud, die App kann dadurch sehr einfach Daten empfangen und senden. Dafür wird es halt in FHEM schwieriger.
Beschrieben ist es hier: http://developer.android.com/google/gcm/ccs.html (http://developer.android.com/google/gcm/ccs.html)
Ich hab mir das mal angeschaut, leider bin ich kein Android developer, bzw hab da einfach zu wenig Zeit dazu mich da tiefer reinzugraben :(
Aber das wird wohl mit dem Modul in der jetzigen Form nicht möglich sein, da der GCS ack's erwartet und das ganze über Roh-XMPP läuft. Also ohne die ganzen Subscribe und chat Funktionen.
Das schreit förmlich nach einer Implementation wie ein CUL Connectionmodul.
Ein Modul das die Verbindung aufbaut und sich um die messageID's kümmert, und jeweils ein Modul mit der "Funktionalität" die man haben will passend zu einer deviceID.
Sowas hab ich in z.Zt in mache wegen meinen XBee's. Auf dem könnte ich Logiktechnisch aufsetzen.
Also wenn du irgendwann mal Zeit hast melde dich, da können wir mal zusammen ein wenig basteln ;)
Grüße,
bioS
prima, so machen wir es.
Hallo BioS,
ich schliesse mich Predictor an, wie kann man dein Modul auf der FB 7390 oder vll alle FBs benutzen?, was muss man installieren oder einstellen? (ist ssl auf der FB ein Problem?).
Danke, Gerhard
Zitat von: Gerhard am 10 April 2014, 09:41:42
Hallo BioS,
ich schliesse mich Predictor an, wie kann man dein Modul auf der FB 7390 oder vll alle FBs benutzen?, was muss man installieren oder einstellen? (ist ssl auf der FB ein Problem?).
Danke, Gerhard
Hallo Gerhard,
schade dass sich Predictor nicht mehr gemeldet hat zu dem Thema, da er ja eigentlich der Anstoß zu dem ganzen Modul war.
Ich selbst habe keine Fritzbox, deshalb kann ich deine Fragen auch nicht beantworten.
Aber ich hab mich mal durchs Forum und Google bequemt auf der Suche nach Antworten, da sieht es allerdings nicht allzu rosig aus.
Anscheinend wird von AVM nur ein kleiner Standartsatz an perl Modulen für das FHEM image angeboten, die meinem Modul allerdings nicht sehr viel bringen.
Ich habe nichts gefunden ob und wie man perl Module auf einer FRITZ!Box einfach nachinstallieren kann.
Grüße,
BioS
Man kann schon einiges auf der FritzBox nachinstallieren, ist jedoch recht mühsam und nicht für die Gesamtperformace förderlich. FritzBox ist nicht umsonst so 'beschnitten'...
Danke hexenmeister,
dann würde ich jetzt einfach mal in den Raum stellen dass dieses Modul wohl auf der FRITZ!Box sich nicht so einfach zum laufen bringen lässt und/oder nur mit einhergehender Ressourcenschluckerei, die ja nicht Sinn der Sache sein soll.
Ich kann leider nach wie vor nichts tun, da mir die Ressourcen zum kompilieren und testen fehlen (ich habe keine Fritzbox).
Wiederrum kann ich nur jedem der FHEM mit den neuesten Funktionen haben möchte zu einem ordentlichen debian System raten (z.b. auf dem Raspberry Pi) - da dauert das offizielle FHEM update und die Installation der benötigten Perl Module 2-5 Minuten..
Grüße,
BioS
Hi,
ich wollte das Modul, mit meinem Jabber Server, der mit OS X Server 10.8 ausgeliefert wird, nutzen beim verbinden über folgendes
define define jabber Jabber servername.domainname.de 5222 user@servername.domainname.de passwort 1 0
hängt fhem jedoch eine weile und ich erhalte im Anschluss unter Conninfo
Jabber authentication error: system SASL timed out authenticating
Der State steht im Status Disconnected
Über andere Jabber Clients kann ich mich wunderbar mit dem Server verbinden :(
Die CPAN Module Net::XMPP, Net:Jabber sowie Authen::SASL sind installiert.
In den Logs von Jabber seh ich als letzten Eintrag für den Host, der die Verbindung versucht aufzubauen, den folgeden Eintrag
Apr 10 12:43:33 servername.domainname.de jabberd/c2s[89248]: [9] [::ffff:192.168.1.xx, port=53012] is being byte rate limited
Jemand eine Idee?
Greetz
Eldrik
http://www.fhemwiki.de/wiki/Cpan_auf_Fritzbox
Zitatzu einem ordentlichen debian System raten (z.b. auf dem Raspberry Pi)
Kann mich auch nur anschließen. Ich habe den Umstieg von FB auf Rasp nicht bereut. Die Antwortzeiten sind schon deutlich besser. Jetzt spiele ich mit dem Gedanken, auf einen Cubietruck umzusteigen.
@Joachim
Die Seite habe ich mir schon mal angesehen. Genau diese Kopier-Orgie möchte ich auf meiner FB lieber nicht veranstalten :(
War ja nur ne Idee
Dankeschön, Joachim.
Gerhard: vielleicht kannst du es mal mit dem Link von Joachim probieren die Perl-Module nachzuinstallieren?
Du müsstest Net::Jabber und die abhängigkeiten davon, sowie Authen::SASL installieren.
eldrik:
Versuch mal SSL auf 1 zu setzen und TLS auf 0, hast du aber bestimmt schon probiert oder? :)
Alternativ das debugging im Modul selber einschalten und die Variable $debug von 0 auf 1 setzen, da sieht man dann recht genau was passiert.
Hey Hexenmeister,
Zitat von: hexenmeister am 10 April 2014, 13:24:05
Kann mich auch nur anschließen. Ich habe den Umstieg von FB auf Rasp nicht bereut. Die Antwortzeiten sind schon deutlich besser. Jetzt spiele ich mit dem Gedanken, auf einen Cubietruck umzusteigen.
wtf ist cubietruck? Noch nie gehört ;)
Cubietruck ist auch ein Einplatinenrechner, wie Raspberry, aber wesentlich mächtiger. :)
Hier z.b. eine Beschreibung http://www.exp-tech.de/Mainboards/ARM/Cubietruck.html
@BioS
ja wenn ich statt 1 0 im define 0 1 eingebe erhalte ich die Meldung Jabber connect error () im Log wird trotz im Modul aktivieren Debug nichts ausgegeben.
SSL ist bei meinem Jabber auf Port 5223 definiert, ich denke dies muss ich dann im define setzen? Mein Fhem verhält sich hier jedoch wie bei 5222 1 0
Im State steht nach dem define Disconnected im Log taucht in beiden Varianten aber trotzdem irgendwann:
014.04.10 14:29:46.682 0: jabber DoProcess Call
2014.04.10 14:29:46.684 0: jabber Poll End
2014.04.10 14:29:48.685 0: jabber Jabber PollMessages
2014.04.10 14:29:48.685 0: jabber DoProcess Call
2014.04.10 14:29:48.687 0: jabber Poll End
auf, für das eigentliche define wird jedoch vom Modul nichts gelogged.
Sende ich eine Nachricht über die von Hexenmeister zur Verfügung gestellten Definitionen aus fhem an meinen eigenen Jabber Benutzer erhalte ich direkt:
2014.04.10 14:32:18.998 0: jabber Connection died
2014.04.10 14:32:19.037 0: jabber Poll End
eine Nachricht kommt entsprechend bei meinem eigenen User nicht an.
Greetz
Eldrik
Zitat von: hexenmeister am 10 April 2014, 13:54:06
Cubietruck ist auch ein Einplatinenrechner, wie Raspberry, aber wesentlich mächtiger. :)
Hier z.b. eine Beschreibung http://www.exp-tech.de/Mainboards/ARM/Cubietruck.html
Boa, geiles Teil, dass muss ich mir mal reinziehen wenn ich wieder mehr "Freizeit" habe :D :D
Hätte es den ganzen mist nur 12 Jahre früher gegeben als ich noch Zeit uns lust hatte am Auto zu basteln ;D
ZitatBoa, geiles Teil...
Sag' isch ja ;D
Der kann dann auch gleich als halbwegs brauchbares NAS dienen etc.
ZitatBoa, geiles Teil
Da kann ich mich nur anschließen! Ich habe vom Raspberry Pi auf den Cubietruck gewechselt. Die Performance ist nochmal deutlich besser.
In der commandref, im Abschnitt Jabber, führt der folgende Link auf den Thread "Modul für Pushover" anstatt auf diesen hier:
ZitatDiscuss the module in the specific thread here.
Hi,
kurze Rückmeldung von meiner Seite, ich musste nachdem mich BioS auf die richtige Fährte gebracht hat (danke an dieser Stelle), einige meiner Authentificationmodule auf Seiten von Jabber deaktivieren, auch wenn ich über meinen Server mit dem Apple OpenLdap Pendanten und Kerberos für meine Benutzer arbeite, ist dies in diesem Fall ein Glück kein muss gewesen :)
Das Modul fliegt bis jetzt und dank der Vorlagen von Hexenmeister konnte ich bereits einige nützliche Umsetungen vornehmen ;)
Greetz
Eldrik
Hi,
ich bekomme folgende Fehlermeldung in CONNINFO: Jabber authentication error: error malformed-request
Hier meine config:
##################
##### Jabber #####
##################
define jabber Jabber jabber.de 5222 <fhemuser> <password> 1 0
attr jabber room Jabber
attr jabber OnlineStatus available
attr jabber PollTimer 2
attr jabber RecvWhitelist <user>
attr jabber ResourceName FHEM
Habe das Paket libnet-jabber-perl unter Debian installiert.
Ich hoffe Ihr könnt mir weiterhelfen.
Grüße
Niko
Hi nikk
Meine Definition ist identisch mit deiner bis auf den Teil mit room. Sollte eigentlich klappen, mir würde jetzt nur einfallen ob du vielleicht den Username falsch angegeben hast.
Ciao
Martin
Hi,
erstmal freut mich die response, die man hier bekommt, danke euch allen ;)
Ich muss dringend noch ne Wiki seite erstellen, es scheint doch mehr Probleme zu geben als ich gedacht habe :o
Zitat von: nikk am 11 April 2014, 09:29:15
ich bekomme folgende Fehlermeldung in CONNINFO: Jabber authentication error: error malformed-request
define jabber Jabber jabber.de 5222 <fhemuser> <password> 1 0
attr jabber room Jabber
attr jabber OnlineStatus available
attr jabber PollTimer 2
attr jabber RecvWhitelist <user>
attr jabber ResourceName FHEM
Habe das Paket libnet-jabber-perl unter Debian installiert.
Achte darauf dass du die < > tags nicht mit reinschreibst und dass dein Passwort sowie Username korrekt ist.
Auch deine RecvWhitelist darf keine < > enthalten, ausser das gehört zu deinem Usernamen.
Die andre möglichkeit die mir einfällt ist, dass das perl Modul Authen::SASL noch fehlt.
Unter debian heißt das libauthen-sasl-perl
Danke im übrigen, Nik, für den Hinweis auf den Fehler in der Doku :)
Ich versuche mal das Modul (auf überprüfung von Authen::SASL) und die Dokumentation anzupassen.
Grüße,
BioS
Danke für die Hinweise!
Zitat
achte darauf dass du die < > tags nicht mit reinschreibst und dass dein Passwort sowie Username korrekt ist.
Auch deine RecvWhitelist darf keine < > enthalten, ausser das gehört zu deinem Usernamen.
<> tags sind nicht eingetragen, hab hier nur die Notation aus der Commandref übernommen.
User und Passwort habe ich mit einem jabber-client verifiziert, da klappt die Anmeldung.
libauthen-sasl-perl werde ich heute Abend installieren und ausprobieren.
Habe noch eine generelle Frage:
Macht es einen Unterschied, ob ich fehlende Module als Debian-Pakete oder über cpan installiere?
Sind es im Endeffekt die gleichen Dateien, die installiert werden?
Grüße
Niko
Hi Niko,
im Grunde macht es keinen unterschied, die Module im CPAN sind wahrscheinlich neuer und werden nach dem herunterladen (sourcecode) erst mal compiliert wo es nötig ist.
Ich persönlich benutze lieber die debian Module, da ja APT die Abhängigkeiten zu den Paketen sucht und die gleich mitinstalliert.
Auch ist es (finde ich) einfacher die Pakete wieder loszuwerden oder sich mal einen überblick zu verschaffen was denn installiert ist.
CPAN benutze ich nur wenns ein Paket in der debian repository nicht gibt.
wenn du die installation über debian versuchst, kannst du gleich folgenden Befehl benutzen, da sollte dann alles notwendige mitinstalliert werden:
apt-get install libnet-jabber-perl libnet-xmpp-perl libxml-stream-perl libdigest-sha1-perl libauthen-sasl-perl libnet-ssleay-perl
Hi BioS,
bei mir waren schon alle Pakete bis auf libdigest-sha-perl installiert.
Status ist immer noch disconnected und der Fehler ist noch der Gleiche.
Hey niko,
Ist der Account bei jabber.de?
Gesendet von meinem XT910 mit Tapatalk
Hi BioS,
Zitat
Ist der Account bei jabber.de?
ja
Es funktioniert jetzt.
Ich dachte der username bei Jabber besteht aus username@jabber.de. Nachdem ich nur username ohne "@jabber.de" verwendet habe, hat es funktioniert.
Grüße
Niko
Zuerst einmal möchte auch ich mich herzlich für das tolle Jabber-Modul in FHEM bedanken ... echt gute Arbeit.
Mir bleiben eigentlich auch nur zwei Fragen:
1. Mein Jabber-Account für FHEM liegt auf jabme.de, ich kann Statusmeldungen rausschicken und ich kann auch Nachrichten an FHEM schicken. Nur bekomme ich den FHEM-Client nicht als online angezeigt, weder auf meinem Tablet mit Conversations noch in Thunderbird mit dem Chat, überall steht offline/abgemeldet.
Da ich in der Definition des JabberClient nicht speziell den OnlineStatus gesetzt habe, ich aber beim Aufruf in FHEM den OnlineStatus als available sehe, würde ich das als Fehlerquelle ausschließen ... muß ich in FHEM noch irgendetwas einstellen, damit der Online-Status an meinen Jabber-Account (der bei jabber.ccc.de liegt) richtig angezeigt wird? Man möge mir verzeihen, falls der Fehler in Richtung XMPP zu suchen ist, bin auf dem Gebiet noch neu und wollte es jetzt für FHEM nutzen.
2. Frage: Leider werden die Umlaute nicht richtig angezeigt, wo sollte ich deswegen am Besten auf die Suche gehen?
Danke fürs Lesen und Antworten.
Gruß
Rainer
Hi Rainer,
danke für die Rückmeldung, ich freu mich wenn ich was "sinnvolles" zu dem Projekt beisteuern kann ;)
Zu dem Umlaute Problem schau ich bei Gelegenheit mal was da los ist, wahrscheinlich ein Codepageproblem, mir ist das erst durch deine Frage aufgefallen und bei mir werden die Umlaute ebenfalls nicht korrekt dargestellt.
Da kannst du leider nicht viel machen, das muss ich im Code behandeln. Dürfte aber nicht all zu schwer sein bzw. zu lange dauern das zu richten ;D
Das 2. Thema gab es schon mal in ähnlicher Form - mein Modul hat da die falsche "ich bin da" Information an den Server gesendet.
Wenn man jemand im Jabber nicht online sieht, kann das grundsätzlich 2 Möglichkeiten haben:
1. Man hat den Onlinestatus (sog. presence) seines Partners nicht abonniert, dann sehen sich die beiden Clients nicht gegenseitig, können aber Nachrichten austauschen.
2. Mein Modul schickt den falschen "ich bin jetzt online" an den Server (da die vielen unterschiedlichen Server das nicht gleich handhaben)
Beides ist möglich und testen kannst du das relativ einfach:
Du richtest einen 2. Jabber-Client (z.b. PC) mit den Accountdaten deines FHEM Accounts ein und schaust ob du den FHEM Account auf deinem Tablet online siehst.
Wenn dem so ist, schickt mein Modul den falschen Status an den Server, das muss ich dann selber testen.
Andernfalls haben sich die beiden Clients nicht gegenseitig abonniert, dort kannst du folgendes im FHEM probieren:
set JabberClient subscribe deintabletaccount@jabber.ccc.de
Damit versucht FHEM den Onlinestatus deines Tablet-Accounts zu abonnieren.
ZitatMan möge mir verzeihen, falls der Fehler in Richtung XMPP zu suchen ist, bin auf dem Gebiet noch neu und wollte es jetzt für FHEM nutzen.
Zu verzeihen gibt es nichts ;) Lieber frägt man 5x als das ganze Teil frustriert in die Ecke zu werfen, davon haben alle mehr :o)
Grüße,
BioS
Hi BioS,
danke für die Rückmeldung ... die Frage mit dem Online-Status hat sich damit wohl geklärt ... hatte tatsächlich noch nicht die gegenseitige presence Geschichte gemacht, kannte bis dato aber auch noch nicht die Befehlsfolge von FHEM dafür , also wieder etwas gelernt ;D
Bzgl. der Umlaute warte ich dann mal einfach auf eine "Modul-Inspektion", so weit läuft jetzt auf jeden Fall alles wie gewünscht.
Hatte nur am Anfang ziemlich mit dem dämlichen "@"-Zeichen zu kämpfen, da das ja in Perl ein Sonderzeichen ist ... habe es aber letztendlich dann hinbekommen!
Soweit nochmal vielen Dank.
Gruß
Rainer
Hi Rainer,
Ich hab das UTF8 encoding nun "repariert" - sollte dann im nächsten Update, spätestens morgen mit dabei sein.
Grüße,
BioS
Hallo BioS (und Forum),
danke für die Korrektur, werde das nachher direkt testen.
Mir ist noch etwas aufgefallen. Du hast in Posting #3 in diesem Beitrag (auf Seite 1) ein paar Zeilen Code geschrieben, die es ermöglichen, eingehende Befehle an FHEM zu schicken. Das klappt auch soweit prima. Mir ist nur aufgefallen, dass, wenn der Client die Verbindung verliert (z. B. die DSL-Leitung fällt aus, so bei mir geschehen) , nach Wiederherstellung der Verbindung eine "Leermeldung" schickt. Das Gleiche kann man (wahrscheinlich, noch nicht getestet) beobachten, wenn FHEM neu startet (oder z. B. bei mir der Rasppi neu bootet).
Ist dieses Verhalten gewollt, kann man nachvollziehen, wo das herkommt? Schick wäre es natürlich, wenn der Client dann eine Message in der Art "Verbindung wurde wieder hergestellt" schickt, anstatt nur eine Leermeldung zu erhalten.
Was meint Ihr, oder habe ich nur alleine dieses Verhalten beobachtet?!?
Gruß
Rainer
Heyho ;)
Hmm also ich hab's jetzt n paar mal versucht, bei mir schickt der client die Antwort ganz normal.
In welcher situation passiert das bei dir genau?
DSL Disconnect -> Nachricht an FHEM -> DSL Reconnect -> Antwort ist "leer" ?
Oder sendet FHEM was während er einen DSL Disco hat?
Ich hab ja auch tägliche disconnects, aber das geht eigentlich ohne Probleme (ok, ich schick auch nicht die ganze Zeit was hin)
Grüße,
BioS
Hi BioS,
ich versuch es nochmal zu beschreiben. Ich bekomme immer eine leere Meldung (eigentlich 2 Meldungen) von FHEM, wenn der Client sich wieder neu verbunden hat (nach einem DSL Reconnect). Ich schicke aber keine Nachricht vorher dahin.
Das Ganze sieht in der Jabber-Nachricht dann ungefähr so aus:
17:54:48 - FHEM:
17:54:49 - FHEM:
Also schematisch ungefähr so:
DSL Disconnect - JabberClient in FHEM offline - DSL Reconnect - JabberClient FHEM online - 2x Leermeldung
Gruß
Rainer
PS: Im Log steht nichts, habe allerdings auch nirgendwo einen Debug aktiviert. Wenn die Leermeldungen kommen, sehe ich in der FHEM-Übersicht, dass die letzte empfangene Meldung von meiner JabberID (LastMessage) leer ist.
Hallo BioS,
habe einen eigenen Jabber Server am laufen, den ich aber mit den jetzigen Einstellmöglichkeit nicht erreiche oder es nicht richtig mache.
Die Sache ist, das die Domaine des Jabber Account nicht der Servername ist und wie in vielen Jabber Clients ich den Servernamen extra angeben müsste.
Ist das mit dem Modul schon möglich oder wäre es möglich so was noch ein zu bauen?
Gruß,
Oliver
Hi Rainer,
Zitat von: dora71 am 01 August 2014, 19:51:48
Also schematisch ungefähr so:
DSL Disconnect - JabberClient in FHEM offline - DSL Reconnect - JabberClient FHEM online - 2x Leermeldung
Ich schau mir das auf jeden Fall nochmal an, im Moment funktioniert es ja, bis auf die Leermeldungen.
Hi oliver,
Zitat von: oliverr am 02 August 2014, 21:26:06
Ist das mit dem Modul schon möglich oder wäre es möglich so was noch ein zu bauen?
Das habe ich mit Absicht nicht eingebaut - Jabber sucht laut der Spezifikation im DNS nach dem korrekten Server zu dem er sich verbinden muss.
Wenn sich das Modul nicht verbinden kann, ist es auch Wahrscheinlich dass dir andere leutze zu deinem Jabber Server keine Nachrichten schreiben können.
Ich baue dir das Feature gerne ein, würde dich aber vorher bitten mal zu versuchen die für Jabber nötigen DNS Einträge richtig zu setzen (sofern dein DNS Provider bzw. deine DNS Knowledge das natürlich zulässt :) )
Für Jabber benötigt man 2 extra DNS Einträge, die jeweils für andere Jabber Server und die Jabber Clients beschreiben wohin sich diese zu verbinden haben (Servername und Port).
Das heißt, genau für dein Problem: Wir benutzen fiktiv die Domain MeinHost.de, d.h. dir gehört die Domain MeinHost.de.
- Deine JabberID soll oliverr@MeinHost.de sein
- Dein Jabber Server läuft auf (fester) IP 192.168.2.90
Das sieht im DNS muss man nun folgende Einträge machen:
Alias record für die IP:
jabber.meinhost.de IN A 192.168.2.90
Jabber-Server Info (für die anderen Server):
Jabber SRV Record:
_xmpp-server._tcp.meinhost.de IN SRV 0 5269 jabber.meinhost.de
Format ist: IN SRV <prio> <port> <server-host>
Jabber-Client Info (für clients, wie z.b. FHEM, Pidgin etc.)
_xmpp-client._tcp.meinhost.de IN SRV 0 5222 jabber.meinhost.de
Format ist: IN SRV <prio> <port> <server-host>
Das wäre die korrekte Lösung für dein Problem.
Aber wie gesagt, geb mir Bescheid ob das damit geht, wenn du das aus irgendwelchen gründen nicht hinbekommst, kann ich dir da auch gerne zur Hand gehen, sofern du DNS Zugriff hast.
Grüße,
BioS
Hi Bios,
danke für die Antwort.
ZitatDas habe ich mit Absicht nicht eingebaut - Jabber sucht laut der Spezifikation im DNS nach dem korrekten Server zu dem er sich verbinden muss.
Wenn sich das Modul nicht verbinden kann, ist es auch Wahrscheinlich dass dir andere leutze zu deinem Jabber Server keine Nachrichten schreiben können.
Das ist mir schon klar.
Bin mal gespannt ob meine DNS Settings (die ich um den Client Eintrag noch ergänzt habe) bei dem großen "S" funktionieren.
Hatte den Eintrag nicht gemacht, weil ich eine automatische Konfiguration von Clients nicht wollte, denn die Clients die sich mit dem Jabber verbinden sollen, sollten die passenden Settings kennen und auch den Servernamen in der Konfig einstellen. ;-)
Grüß,
Oliver
Hallo,
ich versuche Jabber zu verwenden, das mag aber mich nicht >:(
Mein System: Raspberry Pi mit
Linux raspberrypi 3.12.34+ #1 PREEMPT Sun Dec 7 22:39:06 CET 2014 armv6l GNU/Linux
mit cpan die Module aus der Referenz installiert - scheinbar problemlos.
Die anderen Module gemäß Liste nachinstalliert - aber hier gibts Probleme:
pi@raspberrypi ~ $ sudo apt-get install libdigest-sha1-perl
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libdigest-sha1-perl
In Fhem:
CONNINFO Jabber connect error ()
DEF jabber.de 5222 xxxx@jabber.de yyyyy 1 0
NAME jabber
NR 285
STATE Disconnected
TYPE Jabber
bzw
CONNINFO Jabber authentication error: error malformed-request
DEF jabber.de 5222 xxxx@jabber.de yyyy 1 0
NAME jabber
NR 285
STATE Disconnected
TYPE Jabber
Wer hat eine Lösung dazu?
Danke im Voraus
Bernhard
Hi Bernhard, ich bin zwar gerade in der arbeit, aber probier mal das Paket "libdigest-sha-perl" zu installieren.
Hab gerade nachgesehen in der neuesten repository haben die das Paket umbenannt..
Grüße BioS
Danke,
das Paket lässt sich installieren, ändert aber nichts am Problem.
zumindest das kommt nach wie vor: Jabber authentication error: error malformed-request bei tls/ssl 1 1
bzw Jabber connect error () bei 1 0
Zusatzfragen:
- Könnte es etwas mit dem angegebenen Port zu tun haben?
- Wird Jabber neu geöffnet, wenn die DEF modifiziert wird?
Bernhard
Hi Bernhard,
Zitat von: Bernhard am 19 Dezember 2014, 10:01:03
Zusatzfragen:
- Könnte es etwas mit dem angegebenen Port zu tun haben?
- Wird Jabber neu geöffnet, wenn die DEF modifiziert wird?
Der Port muss natürlich SSL bzw. TLS authentifizierung unterstützen, wenn du dir nicht sicher bist probiere einfach mal aus beides auf 0 zu setzen.
Der "Malformed Request" error kommt teilweise wenn perl-Module fehlen (was bei dir nicht der Fall zu sein scheint) und wenn er sich dem Jabber Server gegenüber nicht ordentlich einloggen kann.
Du kannst noch folgendes testen:
- check, dass dein username auch xxx@jabber.de ist, also mit dem @jabber.de hinten dran und nicht nur der "name" vor dem @- EDIT: obiges ist falsch, es darf kein @jabber.de mit im username sein, sondern nur der Username mit "xxx"
- wenn es bei jabber.de ein Account ist sollte es mit 1= tls, 0=ssl gehen
wenn nix hilft:
- geh dann bitte in das Modul 70_Jabber.pm rein, setze in Zeile 61 "my $debug = 1"
- restarte FHEM und
- poste mir bitte einen Auszug aus deiner fhem logfile und die daraufhin ertellte /tmp/jabberdebug.log, am besten in einer PM.
Achtung, in den Files stehen deine Daten im Klartext, also vorher passwort und username unkenntlich machen..
Grüße,
BioS
Hallo,
nach
define jabber Jabber jabber.de 5222 mein_user mein_kennwort 1 0
wird nach einigen Sekunden FHEM beendet
There was an error in the last call to Process that you did not check for and
handle. You should always check the output of the Process call. If it was
undef then there was a fatal error that you need to check. There is an error
in your program at ./FHEM/70_Jabber.pm line 287
Die Module Net::Jabber, Net::XMPP, Authen::SASL, XML::Stream und Net::SSLeay sind installiert.
Kurz bevor FHEM abschmiert kommen die Log-Eintrage "myJabber Jabber PollMessages" und "myJabber DoProcess Call"
Auch nach Durchsicht dieses Thread komme ich nicht weiter. Wo hakt es hier?
jabberdebug.log füge ich mal bei.
MfG
Hi Ralf,
diesen Fehler hatte ich mal wenn etwas mit dem Modul Authen::SASL oder Digest::SHA1 von Perl nicht ganz in Ordnung ist, weil die Verbindung direkt nach dem Konvertieren hin zu SSL abbricht.
Auf welchem System betreibst du FHEM?
Ich frage weil das Logfile weniger Debuginfos enthält als die, die ich bisher gesehen hab.
Bei Fritzbox'en ist das ganze ungetestet weil es da wohl größere Probleme gibt die richtigen Module vom CPAN ordentlich zu installieren.
Määp, hab gerade gelesen dass du einen Cubietruck hast, läuft da debian?
@BioS
Hallo,
läuft auf einem Cubietruck mit Debian Wheezy (Igor-Image). libdigest-sha1-perl ist als Paket nicht vorhanden. libdigest-sha-perl ist installiert.
MfG
Hi Ralf,
ich hatte das Problem schon mal, damals war es das Problem, das Authen::SALS warum auch immer nicht funktioniert hat.
Schau die mal die installierten Pakete von deinem System an, welche Versionen die haben:
dpkg -l libauthen-sasl-perl libnet-jabber-perl libnet-ssleay-perl libnet-xmpp-perl libxml-stream-perl libdigest-sha1-perl libdigest-sha-perl
ich hab mit absicht sha1 dringelassen sollte mal jemand anders das auch nachschauen wollen.
Bei mir sieht die Ausgabe so aus:
ii libauthen-sasl-perl 2.1500-1 Authen::SASL - SASL Authentication framework
un libdigest-sha-perl <none> (no description available)
ii libdigest-sha1-perl 2.13-1 NIST SHA-1 message digest algorithm
ii libnet-jabber-perl 2.0-3.1 Perl modules for accessing the Jabber protocol
ii libnet-ssleay-perl 1.36-1 Perl module for Secure Sockets Layer (SSL)
ii libnet-xmpp-perl 1.02-1 XMPP Perl library
ii libxml-stream-perl 1.23-1 module for manipulating streaming XML data
ii libauthen-sasl-perl 2.1500-1 all Authen::SASL - SASL Authentication framewor
ii libdigest-sha-perl 5.71-2+deb7u1 armhf Perl extension for SHA-1/224/256/384/512, S
ii libnet-jabber-perl 2.0-5 all Perl modules for accessing the Jabber proto
ii libnet-ssleay-perl 1.48-1+b1 armhf Perl module for Secure Sockets Layer (SSL)
ii libnet-xmpp-perl 1.02-3 all XMPP Perl library
ii libxml-stream-perl 1.23-2 all module for manipulating streaming XML data
dpkg-query: no packages found matching libdigest-sha1-perl
MfG
Bei mir läuft FHEM auch auf Cubietruck mit Igors Image. Keinerlei Probleme mit Jabber. Dabei sind anscheinend die meisten der angesprochenen Pakete gar nicht installiert:
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-================================-=====================-=====================-======================================================================
un libdigest-sha-perl <none> (no description available)
ii libnet-ssleay-perl 1.48-1+b1 armhf Perl module for Secure Sockets Layer (SSL)
dpkg-query: no packages found matching libauthen-sasl-perl
dpkg-query: no packages found matching libnet-jabber-perl
dpkg-query: no packages found matching libnet-xmpp-perl
dpkg-query: no packages found matching libxml-stream-perl
dpkg-query: no packages found matching libdigest-sha1-perl
Danke, @hexenmeister, eventuell hast du die Perl Module schon durch depency anderer Module mal aus dem CPAN installiert?
Ich versuch die Tage mal das Problem in einer VMWare testbox nachzustellen, aber Weihnachten wird mir sicherlich dazwischenkommen.
Wenn du nicht warten willst, @Ralf, kannst du auch versuchen die debian packages zu deinstallieren und durch die entsprechenden Module aus dem CPAN zu ersetzen.
Grüße,
BioS
Hallo BioS,
ich kann morgen Mal CPAN versuchen. Ist eine bestimmte Reihenfolge einzuhalten? Ich arbeite lieber mit den .deb-Paketen.
MfG
Gesendet von meinem Lenovo B6000-H mit Tapatalk
Wenn ich etwas installiere, führe ich (meistens ;) ) einen Protokoll. Laut diesen habe ich lediglich folgendes gemacht:
sudo cpan Net::Jabber
Ich hänge die Ausgabe von cpan -l an, vielleicht kann es was nutzen...
Hallo BioS, hallo Hexenmeistr,
"Connected to jabber.de"
Ich habe mittels apt folgenden Stand erstellt:
+++-================================-=====================-=====================-======================================================================
un libdigest-sha-perl <none> (no description available)
ii libnet-ssleay-perl 1.48-1+b1 armhf Perl module for Secure Sockets Layer (SSL)
Danach mit cpan die erforderlichen Module installiert. System reboot. Bei "define myJabber ..." ist FHEM sofort abgeschmiert. In der Fehlermeldung stand, dass er die Zertifikate nicht finden kann. Recherche im Web ergab aber keine brauchbaren Ergebnisse.
Also Module wieder mittels cpanp entfernt und mit apt auf folgenden Stand:
||/ Name Version Architecture Description
+++-===================-==============-==============-===========================================
ii libauthen-sasl-perl 2.1500-1 all Authen::SASL - SASL Authentication framewor
ii libdigest-sha-perl 5.71-2+deb7u1 armhf Perl extension for SHA-1/224/256/384/512, S
ii libnet-jabber-perl 2.0-5 all Perl modules for accessing the Jabber proto
ii libnet-ssleay-perl 1.48-1+b1 armhf Perl module for Secure Sockets Layer (SSL)
ii libnet-xmpp-perl 1.02-3 all XMPP Perl library
ii libxml-stream-perl 1.23-2 all module for manipulating streaming XML data
dpkg-query: no packages found matching libdigest-sha1-perl
Bei den vorgenannten Aktionen muss aber etwas verändert worden sei, da jetzt "define myJabber ..." ohne Probleme funktionierte und die Verbindung sofort hergestellt wurde. Klappt auch nach reboot.
Etwas unbefriedigend, da nicht klar ist, wo jetzt die Fehlerursache war. Aber keine Lust und Zeit weiter danach zu suchen.
Vielen Dank für die Unterstützung.
MfG
Hm...
hatte heute mehrfach nacheinander den Fehler von oben.
There was an error in the last call to Process that you did not check for and
handle. You should always check the output of the Process call. If it was
undef then there was a fatal error that you need to check. There is an error
in your program at ./FHEM/70_Jabber.pm line 287
Watchdog hat fleißig neugestartet, bis das irgendwann gapsst hat ???
Könnte es sein, dass das durch Probleme beim der Gegenseite (also bei mit bei jabber.de) verursacht wird? Mein Handy konnte sich mit dem Server zu dieser Zeit auch nicht connecten...
So hallo die Herren,
also Perl hat schon so seine Eigenheiten :)
zu dem Problem von dir @hexenmeister:
da scheinen die Perl Module irgendwas nicht ordentlich verarbeiten zu können bezüglich Verbindungsaufbau / Verbindung halten.
Ich hab das mit allen möglichen Mitteln versucht nachzustellen, TCP Verbindung killen, IPTables DROP / Reject auf client wie auf Jabber seite, Proxy redirects, "leider" ohne Erfolg. Die Verbindung ist immer wieder ordentlich zustande gekommen.
Aber egal - diesem Process() Call, wegen dem FHEM aussteigt, habe ich noch mal eine extra Fehlerbehandlung spendiert und er *sollte* das jetzt abhaben können.
Zu deinem Problem @Weisswurstverkäufer (hast du deinen Beitrag gelöscht?):
Die neueste XML::Stream Version aus dem CPAN hat Standardmäßig ssl_verify eingeschaltet, das war in den Vorversionen nicht so.
Ich schalte das nun manuell runter.
Die neue Version des Moduls sollte heute Abend mit dem normalen FHEM Updatezyklus kommen.
Grüße,
BioS
Hallo BioS,
ja, ich habe den Beitrag gelöscht, da ich mir eigentlich sicher war, dass es ein Konfigurationsproblem auf meiner (Perl)Seite ist.
ssl_verify generell auszuschalten halte ich irgendwie für keine gute Idee. Wenn es geht soll es ja schon gemacht werden. Wie wäre es mit einem weiteren Parameter für das define?
Gruß
Vielen Dank! :)
Wie gesagt, mein Problem ist nur einmalig für weniger als 15 Minuten aufgetreten. Und ich nutze das Modul täglich und auch schon länger. Und dank neuer Absicherung wird wohl auch der Watchdog nicht mehr aufwachen müssen ;)
Hi Weisswurstverkäufer!
Ich hab das quasi nur auf den Zustand der Vorversion von XML::Stream gestellt.
Im define selber kann ich das nicht mit hinzufügen weil es bei der Vorversionen diese Parameter gar nicht gibt, und damit das Modul für alle anderen nicht mehr funzen würde.
Eventuell kannst du es mal testen ob es nun geht, dann kann ich evtl. ein Attribut mit hinzufügen, in dem man die Verifikation anschalten kann und gleichzeitig die CA Kette in Dateiform mitangeben kann, denn deshalb steigt bei dir FHEM aus, weil es diese nicht gibt.
BTW: TLS ist die neuere Methode bei Jabber sich sicher zu verbinden, weil es eben viele Probleme mit einem reinen SSL Socket gab.
Vielleicht kannst du das ja mal bei deinem Jabber server anschalten, denn reines SSL wird als best practise nicht empfohlen, weil wohl zu alt.
Grüße,
BioS
Zitat von: hexenmeister am 09 Januar 2015, 13:46:36
Wie gesagt, mein Problem ist nur einmalig für weniger als 15 Minuten aufgetreten. Und ich nutze das Modul täglich und auch schon länger. Und dank neuer Absicherung wird wohl auch der Watchdog nicht mehr aufwachen müssen ;)
Was hast du da für einen "watchdog"? und welche Absicherungen?
Bei mir steigt FHEM nämlich auch immer mal wieder wegen dem Mailcheck und manchmal wegen Hue aus, das merke ich dann daran, dass meine Frau sagt dass die Schalter mal wieder nicht gehen ;)
So ein watchdog wäre für meinen WAF ganz praktikabel :))
Zitat von: BioS am 09 Januar 2015, 13:52:17
Eventuell kannst du es mal testen ob es nun geht
Ich gebe bescheid sobald ich es testen konnte.
Zitat von: BioS am 09 Januar 2015, 13:52:17
BTW: TLS ist die neuere Methode bei Jabber sich sicher zu verbinden, weil es eben viele Probleme mit einem reinen SSL Socket gab.
Vielleicht kannst du das ja mal bei deinem Jabber server anschalten, denn reines SSL wird als best practise nicht empfohlen, weil wohl zu alt.
Mein Jabberserver erlaubt tatsächlich nur TLS. SSL (das geht ja eh über einen anderen Port) ist explizit ausgeschlossen.
Zitat von: BioS am 09 Januar 2015, 13:59:25
Was hast du da für einen "watchdog"? und welche Absicherungen?
Das ist ein relativ einfaches aber wirkungsvolles System. Hat sich schon sehr oft bewährt ;)
Parallel zum FHEM läuft ein kleines Batch, das die Alive-Meldungen von FHEM auswertet und ggf. dafür sorgt, dass 'hängendes' FHEM abgeschossen und fehlendes Prozess neugestartet wird (und sich beim Start per Jabber bei mir meldet ;) ).
Ich habe das mal hier beschrieben:
http://s6z.de/cms/index.php/homeautomation/fhem/23-fhem-watchdog
Wenn Du weitere Fragen dazu hast - immer her damit ;)
Grüße,
Alexander
Hallo,
also das 'define' läuft jetzt durch. Allerdings ist es dann so:
CONNINFO Jabber authentication error:
(nichts hinter dem Doppelpunkt).
Ich habe ein paar Seiten vorher gelesen, dass jemand Probleme hatte, wenn er den Usernamen mit "@domain" angibt. Jetzt stellt sich mir die Frage ob das wirklich so sein muss. Falls ja wäre das eigentlich nicht ganz richtig. Ich habe gesehen, das Argument für "Server" nicht über den DNS SRV Record (unter _xmpp-client._tcp.domain) aufgelöst wird, sondern direkt der A-Eintrag des Domain verwendet wird. Demnach muss man den Server direkt angeben (in meinem Fall jabber.domain.de, im Zweifelsfall sogar eine IP). Damit würde der Username aber "user@jabber.domain.de" lauten (oder eben "user@ip") und nicht mehr "user@domain.de". Dadurch kommt es dann evtl. zu dem authentication error.
Kann es sein, dass das mein Problem ist?
Gruß
Ahoi,
Zitat von: Weisswurstverkäufer am 10 Januar 2015, 09:55:06
Ich habe gesehen, das Argument für "Server" nicht über den DNS SRV Record (unter _xmpp-client._tcp.domain) aufgelöst wird, sondern direkt der A-Eintrag des Domain verwendet wird. Demnach muss man den Server direkt angeben (in meinem Fall jabber.domain.de, im Zweifelsfall sogar eine IP). Damit würde der Username aber "user@jabber.domain.de" lauten (oder eben "user@ip") und nicht mehr "user@domain.de". Dadurch kommt es dann evtl. zu dem authentication error.
Die Auflösung des Namens ist Sache von Net::Jabber (respektive Net::XMPP) , anhand von den Logs löst er schon die "_xmpp-client._tcp" auf, sonst würde das bei mir auch nicht funktionieren, da Domain A-Record und Jabber Server IP unterschiedlich sind.
Das define des Usernames sollte
ohne @domain passieren, da hatte ich einen brainloop als ich das behauptet hab :)
Mach nochmal Debug an und schick mir die Logs als PM, dann können wir mal schauen was da dein Problem ist.
Grüße
So,
das Teil sollte nun auch bei Weisswurstverkäufer funzen.
So ein mist die Perl Libararies, machen keine DNS SRV Abfrage nach dem Jabber Standard, ich frag mich ob die das Ding jemals getestet haben ;)
Mit 2 kleinen hacks behoben, d.h. wenn nun jemand von euch sonst noch den Jabber Server nicht gleich dem Domainnamen hat (bei eigenen Servern) geht das FHEM Modul nun auch und ich hab wieder gelernt das man alles selber machen muss damit es gut ist ;D
Hallo,
gab es gestern Probleme mit jabber.de ?
auf 2 Installationen (Raspi) legten jabber-Definitonen FHEM praktisch lahm, Connect nicht erfolgreich.
Heute scheinbar wieder ok.
Das Attribut "dummy" ist nicht wirksam - nicht verwendet? - Vielleicht aktivieren.
Gruß
Bernhard
Ahoi MDegelmann5455,
was kommt denn in den Statis von deinem definiertem Modul, speziell CONNINFO?
Sprich ist der Client überhaupt verbunden und funktioniert das senden von fhem aus?
Hallo zusammen,
nachdem ich das Modul längere Zeit nicht mehr genutzt hatte, will ich es nun in meiner Installation wieder reaktivieren und wieder nutzen.
Leider bekomme ich nun allerdings keine Verbindung mehr zu meinem Jabber Server.
In der CONNINFO steht als Meldung: Jabber authentication error: error invalid-mechanism
FHEM läuft auf einem BeagleBoneBlack. Perl Module, die in der Doku angegeben sind, habe ich auch alle installiert. Im Log taucht keine Meldung auf.
Beim Server handelt es sich um Prosody Version 0.9.7. Der läuft auch einwandfrei. Hier kann ich mich sowohl mit dem FHEM Account als auch mit anderen Jabber Accounts problemlos anmelden. Die FHEM Anmeldung kommt beim Server nicht an, in den Logs finde ich auch hier keine Meldung.
Jemand eine Idee, womit das zusammenhängen kann?
Vielen Dank & schöne Grüße
Daniel
Hi Daniel, die Fehlermeldung invalid-mechanism kommt vor wenn dich der Server zurückweist weil er die Authentifizierungsmethode nicht unterstützt. Du solltest mal schauen was der Server so an auth Mechanismen unterstützt (CRAM-MD5, PLAIN, etc.) und check nochmal gehen ob das Perl Modul Authen::SASL installiert ist.
Grüße
Gesendet von meinem Handy
Hi,
ich habe parallel mich nun auch noch mal mit ejabberd als Server versucht, allerdings auch ohne Erfolg.
Mittlerweile bekomme ich die Meldung bei CONNINFO: Jabber authentication error: error no-mechanism
Der Server unterstützt SASL PLAIN und SASL SCRAM-SHA-1
Perl Module sehen aus meiner Sicht auch alle okay aus:
ii libauthen-sasl-perl 2.1500-1 all Authen::SASL - SASL Authentication framework
ii libdigest-sha-perl 5.71-2+deb7u1 armhf Perl extension for SHA-1/224/256/384/512, SHA-512/224 and SHA-512/256
ii libnet-jabber-perl 2.0-5 all Perl modules for accessing the Jabber protocol
ii libnet-ssleay-perl 1.48-1+b1 armhf Perl module for Secure Sockets Layer (SSL)
ii libnet-xmpp-perl 1.02-3 all XMPP Perl library
ii libxml-stream-perl 1.23-2 all module for manipulating streaming XML data
Schöne Grüße
Daniel
Ahoi,
Zitat von: DannyP am 15 Juni 2015, 15:44:53
ich habe parallel mich nun auch noch mal mit ejabberd als Server versucht, allerdings auch ohne Erfolg.
Mittlerweile bekomme ich die Meldung bei CONNINFO: Jabber authentication error: error no-mechanism
Der Server unterstützt SASL PLAIN und SASL SCRAM-SHA-1
Mein ejabberd läuft bisher ohne Probleme.
kannst du mal in dem Modul selber bei Zeile 62 den $debug = 1 setzen und mir die fhem logfile und die /tmp/jabberdebug.log per PN zuschicken?
Ich schau mir das mal an, aber les dir die logs vorher durch und schwärze die Passwörter ;)
Hallo zusammen,
Durch klasse Unterstützung von bioS ist der Fehler gefunden und XMPP läuft wieder :-)
Falls noch jemand auf solche Probleme läuft, hier zur Doku, was zum Erfolg geführt hatte:
Der xmpp Server muss als Authentifizierungs-Methode DIGEST-MD5 anbieten. Das war bei mir zuerst nicht der Fall.
Auf Serverseite muss in der ejabberd Konfiguration daher gesetzt sein:
- der Parameter fqdn für den Hostnamen des XMPP Servers
- der Parameter auth_method muss auf internatl stehen
- der Parameter auth_password_format muss auf plain stehen. In der Vergangenheit darf er auch nie mal auf scram gestanden haben
Das war bei mir alles der Fall, trotzdem wurde kein DIGEST-MD5 angeboten. Geholfen hat letztendlich die Erweiterung der DNS Einträge für die Domain, auf der der ejabberd Server läuft. Folgnde Einträge habe ich neu hinzugefügt:
_xmpp-client._tcp.domain.tld. 86400 IN SRV 5 0 5222 domain.tld.
_xmpp-server._tcp.domain.tld. 86400 IN SRV 5 0 5269 domain.tld.
domain.tld ist natürlich durch die entsprechende Domain zu ersetzen. 5222 und 5269 sind die Standard Ports und müssen ggf. auch angepasst werden, wenn man eigene hat.
Danach klappt auch der SRV Lookup vom Jabber Modul und danach wird auch als Authentifizierungs-Methode DIGEST-MD5 angeboten.
Zwar ein Schritt weiter, aber immer noch nicht am Ziel. Nun gab es nämlich die Fehlermeldung "no-mechanism". Erster Gedanke waren veraltete Pakete auf dem FHEM Rechner. Der Rechner lief unter Debian whezzy. Also erstmal alle Pakete aktualisiert. Leider ohne Erfolg.
Im zweiten Versuch dann ein Update von whezzy nach jessie gemacht und gehofft, dass es dann aktuellere Pakete gibt. Auch kein Erfolg (ausser dass ich die lange verschobene Umstellung nach jessie nun endlich durch habe ;-) ).
Anschließend die Net::Jabber, Net::XMPP und Authen::SASL Module die ich per apt-get installiert hatte wieder runtergeschmissen. Aus dem CPAN habe ich dann die Pakete dann neu installiert. Und siehe da! Verbindung kann sofort hergestellt werden.
Im Endeffekt fehlten also die DNS Einträge und die Pakete aus dem Debian Repository haben kein DIGEST-MD5 unterstützt.
Schöne Grüße
Daniel
Hallo BioS,
ich musste mein System neu aufsetzen. Seitdem funktioniert Jabber-Modul nur zu Hälfte. Senden klappt, empfengen leider nicht mehr.
Mit aktivierten Debug sehe ich in /tmp/jabberdebug.log die Ankunft der Nachrichten mit Inhalt und scheibar allem, was dazugehört. Allerdings klappt CallBack nicht. Hast Du eine Idee, was ich dagegen tun kann?
Danke und Grüße,
Alexander
...
XMPP::Conn: Connected: (1)
XMPP::Conn: Process: timeout(1)
XML::Stream: Read: buff(<message id='8Us7l-9' type='chat' to='test2@jabber.de' from='test1@jabber.de/androidkCcF4yTq'><body>Test</body><thread>wtH2f1dVxg2a</thread><active xmlns='http://jabber.org/protocol/chatstates'/><request xmlns='urn:xmpp:receipts'/></message>)
XML::Stream: Node: _handle_element: sid(8b8d9ae4-5c34-4e12-8b65-5a32c9f4daec) sax(XML::Stream::Parser=HASH(0xe59cc0)) tag(message) att( from test1@jabber.de/androidkCcF4yTq to test2@jabber.de id 8Us7l-9 type chat )
XML::Stream: Node: _handle_element: check( -1 )
XML::Stream: Node: _handle_element: sid(8b8d9ae4-5c34-4e12-8b65-5a32c9f4daec) sax(XML::Stream::Parser=HASH(0xe59cc0)) tag(body) att( )
XML::Stream: Node: _handle_element: check( 0 )
...
XML::Stream: Node: _handle_close: check( 0 )
XML::Stream: Node: _handle_close: check2( -1 )
XMPP::Conn: CallBack: sid(8b8d9ae4-5c34-4e12-8b65-5a32c9f4daec) received(<message from='test1@jabber.de/androidkCcF4yTq' id='8Us7l-9' to='test2@jabber.de' type='chat'><body>Test</body><thread>wtH2f1dVxg2a</thread><active xmlns='http://jabber.org/protocol/chatstates'/><request xmlns='urn:xmpp:receipts'/></message>)
XMPP::Conn: CallBack: tag(message)
XMPP::Conn: CallBack: id(8Us7l-9)
XMPP::Conn: CheckID: tag(message) id(8Us7l-9)
XMPP::Conn: CheckID: we have that here somewhere...
XMPP::Conn: CallBack: a packet that no one wants... how sad. =(
XML::Stream: Process: block(0)
XMPP::Conn: Connected: (1)
...
Hi Alexander,
Zitat von: hexenmeister am 24 August 2015, 23:56:26
ich musste mein System neu aufsetzen.
Uh oh, das tut mir leid, hoffentlich muss ich das nie machen :)
Du bist mittlerweile der 2. bei dem Callback nicht geht und du benutzt auch die Debian Repository, richtig?
Bei deinem Vorposter hat es geholfen die Module, die benötigt werden, zu löschen und per CPAN nochmal frisch zu installieren.
Bevor du dass aber tust wäre ich dir dankbar wenn du mir die Versionsnummern zukommen lassen könntest, damit ich einen eventuellen Bug in den Modulen suchen und reporten kann.
Ich hoffe dass hilft dir.
Grüße BioS
Gesendet von meinem Handy
Hi!
Danke für die schnelle Meldung!
War bei mir ein typischer Fall von "Verkettung unglücklicher Umstände". Habe (selbstverschuldet) mein System zerschossen, der 20 Stunden alte Backup war (wie der Zufall so will) auch nicht brauchbar. Das neuste, was ich gefunden habe, war 3 Monate alt. Also hab ich beschlossen, neu aufzusetzen. Daten/Konfig habe ich nicht verloren, da extra nochmal gesichert :)
Leider trift die Vermutung bei meinem System nicht zu, ich habe die Module frisch per CPAN installiert :(
Grüße,
Alexander
Zitat$ sudo cpan -D Net::Jabber Net::XMPP Authen::SASL XML::Stream Net::SSLeay
Reading '/root/.cpan/Metadata'
Database was generated on Mon, 24 Aug 2015 20:17:02 GMT
Net::Jabber
-------------------------------------------------------------------------
(no description)
R/RE/REATMON/Net-Jabber-2.0.tar.gz
/usr/local/share/perl/5.20.2/Net/Jabber.pm
Installed: 2.0
CPAN: 2.0 up to date
Ryan Eatmon (REATMON)
reatmon@mail.com
Net::XMPP
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/Net-XMPP-1.05.tar.gz
/usr/local/share/perl/5.20.2/Net/XMPP.pm
Installed: 1.05
CPAN: 1.05 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Authen::SASL
-------------------------------------------------------------------------
(no description)
G/GB/GBARR/Authen-SASL-2.16.tar.gz
/usr/local/share/perl/5.20.2/Authen/SASL.pm
Installed: 2.16
CPAN: 2.16 up to date
Graham Barr (GBARR)
gbarr@pobox.com
XML::Stream
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
/usr/local/share/perl/5.20.2/XML/Stream.pm
Installed: 1.24
CPAN: 1.24 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Net::SSLeay
-------------------------------------------------------------------------
(no description)
M/MI/MIKEM/Net-SSLeay-1.70.tar.gz
/usr/local/lib/arm-linux-gnueabihf/perl/5.20.2/Net/SSLeay.pm
Installed: 1.70
CPAN: 1.70 up to date
Mike McCauley (MIKEM)
mikem@airspayce.com
Ahoi,
Zwar mach ich vor größeren Änderungen immer Snapshots und ich hab tägliche Replizierung von allen Daten zu einem externen Datenspeicher aber wenn ich mal in fhem was falsch konfiguriere bringt mir das alles nichts weil dann meistens der aktuelle (mist-)stand schon weggeschrieben wurde bis ich das merke..
Eiei, wenn ich so recht überlege ist mein letztes full backup bestimmt schon 3 Monate alt ;)
Ich glaube ich sollte da mal wieder eins machen.. hehe
Zum Thema:
Ich hab mal alle meine letzten Posts durchforstetet und es lief immer wieder mal auf diese Callbacks raus.
Das ganze findet im Modul XML::Stream statt.
Verglichen mit der Version die ich benutze (1.23), haben sich da einige Änderungen bezüglich TLS und Callbacks getan.
Bei einem User hat TLS so gut wie gar nicht funktioniert und wir mussten einige hacks basteln damit eine sichere Verbindung überhaut aufgebaut werden konnte.
Wenn du möchtest, installiere vom CPAN doch mal die 1.23 anstatt der 1.24 vom XML::Stream und versuche es dann nochmal.
Hi!
Zitat von: BioS am 25 August 2015, 10:09:53
Wenn du möchtest, installiere vom CPAN doch mal die 1.23 anstatt der 1.24 vom XML::Stream und versuche es dann nochmal.
Würde ich gerne tut, weiß Du zufällig, wo ich die ältere Version her bekomme und wie kann sie installiert werden? cpan führt scheinbar nur die letzte...
Grüße,
Alexander
So, jetzt weiß ich, wie man mit CPAN ältere Versionen installiert ;)
XML::Stream ist jetzt in der Version 1.23
sudo cpan -D XML::Stream
Going to read '/root/.cpan/Metadata'
Database was generated on Wed, 26 Aug 2015 15:41:02 GMT
XML::Stream
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
/usr/local/share/perl/5.14.2/XML/Stream.pm
Installed: 1.23
CPAN: 1.24 Not up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Genutzt hat nur leider nichts. Kannst Du mir bitte die Nummer der anderen benötigeten Module, die bei Dir funktionieren, nennen?
Danke!
Ahoi!
Sorry ich hatte gestern Kindergeburtstag meiner kleinen zu feiern, ich hatte keine Chance an den PC zu sitzen ^^
Hier sind die Versionsnummern:
- This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
- XML::Stream Installed: 1.23
- Net::XMPP Installed: 1.02
- Net::Jabber Installed: 2.0
- Authen::SASL Installed: 2.15
- Digest::SHA1 Installed: 2.13
- Net::SSLeay Installed: 1.57
Könntest du mir deine Versionen von den Modulen und perl, bevor du downgradest, auch kurz per PM vielleicht schicken?
Ich würde den Fehler gerne nachstellen, bisher geht bei mir das aber *immer* :/
Grüße,
BioS
Moin!
Danke und gar kein Problem, Familie geht vor :)
Ich werde heute abends zuhause ausprobieren.
Die Versionsnummer greife ich vorher ab und schicke Dir zu, sind aber vermutlich die gleichen, wie ich schon gepostet habe.
Grüße,
Alexander
So, ich hab das Problem jetzt nachstellen können nachdem ich alle Module einzeln up- und downgegraded hab.
Es ist also so:
- XML::Stream 1.24 mit Net::XMPP 1.05 = Verbindung OK, aber keine Callbacks (presence, message, etc.)
- XML::Stream 1.24 mit Net::XMPP 1.02 = Keine Verbindung (SSL probleme)
- XML::Stream 1.23 mit Net::XMPP 1.02 = alles gut
Die haben in der neueren Net::XMPP irgendwas mit einem "weaken" call gemacht, den ich nicht so richtig kapiere.
Auf jeden Fall hab ich das Problem rausisolieren können und einen Workaround im 70_Jabber geschrieben.
Damit solltest du also deine Versionen wieder auf aktuellen CPAN level upgraden können und mein Modul sollte dann auch laufen... endlich :D
Ich hab den fix eben eingecheckt, könnte also heute Abend mit einem fhem update schon bei dir landen.
Grüße,
BioS
Hallo!
Goil! Es geht wieder ;)
Vielen Dank, dass Du Dir so viel Mühe gibst :)
Jetzt läuft alles sauber. Allerdings nicht ganz ohne Überraschungen. Die Idee, Jessy-Version zu nehmen erwies sich als nicht besonders schlau, da ging einiges nicht, so habe ich Squeezeserver nicht zum Laufen gekriegt. Dann alles nochmal mit Wheezy - problemlos.
Grüße,
Alexander
Ist es möglich über dieses Jabber-Modul nachrichten in einen MUC (Mulit-User-Chat) zu schicken?
Hätte Vorteile - teilweise nur wenn der Server die entsprechende Erweiterung unterstützt:
- Benachrichtigung mehrerer Personen mit einer Nachricht
- Es werden keine Nachrichten verpasst wenn der Empfänger mal offline ist
Grüße
XPectIT
Wunderbar!
Probiere seit ein paar Tagen mit FHEM rum, und neben Pushover ist Jabber meine wichtigste Informationsquelle, daher ist es natürlich toll, dass ich FHEM hier entsprechend nutzen kann.
Anhand der Doku auch gleich eingerichtet, inklusive Notify.
Dabei ist mir ein kleiner Bug aufgefallen: ich weiß nicht ob es am Client (Pidgin) oder Server (Openfire) liegt, auf jeden Fall kommen am FHEM auch Statusmeldungen an - zum Beispiel, wenn ich das Chatfenster mit dem FHEM-Account wieder schließe. Was dazu führt, dass das Notify eine neue Meldung rausgibt und es wieder öffnet :D
Ich habe mal das Debugging eingeschaltet; beim Schließen des Fensters kommt folgendes (anonymisiert):
2015.09.08 10:12:27 0: MyChatServer Jabber PollMessages
2015.09.08 10:12:27 0: MyChatServer DoProcess Call
2015.09.08 10:12:27 0: MyChatServer INC_Message: mensch@jabberserver/Pidgin:
2015.09.08 10:12:27 0: MyChatServer Regex m/mensch@jabberserver/ matched
2015.09.08 10:12:27 0: MyChatServer ReadingsUpdate:
2015.09.08 10:12:27 0: MyChatServer Poll End
Das gleiche passiert übrigens auch schon, wenn ich nur tippe (daher bekomme ich auf eine Anfrage 2-3 Antworten). Vermutlich sind das Nachrichten wie die Benachrichtigung an den Client, das ein anderen zu tippen begonnen hat, oder dass der andere das Fenster geschlossen hat.
Einfacher Workaround: in 70_Jabber.pm nur das Notify auslösen, wenn die Länge der $message größer 0 ist. Wahrscheinlich in der Whitelist-Zeile... in Jabber_INC_Message (plus schließende Klammer am Ende natürlich):
#Check the Whitelist if the sender is allowed to send us.
if ($message eq "") {
Log 0, "$hash->{NAME} INC_Message: is status message\n" if $debug;
} else {
if ($senderShort =~ m/$attr{$name}{RecvWhitelist}/) {
Noch einfacherer Workaround ohne Änderung am Modul: im Notify die Message auslesen und nur bei ne "" eagieren.
Schönere Lösung: separate Notifys für Öffnen, Schließen, ...
Ahoi Morganoure und XPectIT :)
Danke für die super Ideen, ich schau mal was ich davon umsetzen kann.
@XPectIT
Das mit den MUC's muss ich mir technisch erstmal reinziehen, besonders was ich vom XMPP dafür abhandeln muss.
@Morganoure
Das Pidgin Thema ist seltsam, denn eigentlich sollte FHEM nur den Typ "Message", also wenn eine Nachricht geschrieben wird, empfangen - keine anderen Typen. Möglicherweise schickt das Pidgin und/oder Openfire in einer "Message" XML mit einem extra Tag an FHEM und da kein Text dabei ist, ist die Nachricht augenscheinlich leer.
Könntest du mir dazu mal die /tmp/jabberdebug.log (anonymisiert) zukommen lassen? Da sollten die XML Nachrichten die ich brauche drin stehen.
Grüße,
BioS
Vielen Dank dass Du reinschauen willst!
Schicke ich gleich per Forenmail hier. Usernamen, Servernamen und die Datenabschnitte (nur Avatar) rausgeschnitten (sonst wären es über 100kb).
Bei "anonymisiert" ist mir übrigens noch eingefallen, dass OTR natürlich die Krönung des ganzen wäre - selbst ein MITM-Angriff oder gestohlene Login-Daten wären dann erfolglos. Gibt sogar ein Crypt::OTR-Perl-Paket, und gängige Jabber-Clients können das auch...
Aber das ist nur ein Vorschlag - IT-Sicherheit ist leider mein Beruf, da kann ich nicht anders als das zumindest zu erwähnen ;)
Hi ihr beiden,
ich denke nächste Woche wird das fertig, MUC's und OTR.
OTR natürlich nur im 1-1 Chat ;)
Bei den Multi-User-Channeln gibt es die Möglichkeit den FHEM Client in mehrere Channels mit unterschiedlichen Nick's sowie Passwortschutz joinen zu lassen.
Dafür gibt es dann auch extra readings, whitelist und ein neues msgmuc um Nachrichten zu senden.
Bei OTR wird es auch extra readings und ein send commando geben, so kann man nur auf verschlüsselte Nachrichten von bestimmten Empfängern reagieren.
Es gibt auch ein paar trade-off's die ich bisher gefunden hab:
- Das Crypt::OTR Modul muss jeder selber compilieren wenn man diese Option benutzen will.
- Ich muss noch ein bisschen mit perl kämpfen dass ich das Modul dynamisch laden kann, sodass die bisheriger Userbase nicht ohne Jabber-Modul dasteht *gg*
- Bei mir hat es 2 Stunden gedauert bis nach der ersten Nachricht der private key für OTR generiert war. Das mag jetzt vielleicht an meiner VM liegen aber in dieser Zeit macht FHEM _nichts_ und ich hab' bisher nicht herausgefunden wie man solche keys von hand generiert.
Auf der anderes Seite: wer OTR benutzen will wartet auch gerne 2 Stunden :)
Also, danke nochmal euch für die Ideen!
Grüße,
BioS
Das klingt ja echt großartig, da freue ich mich sehr drauf. Vielen Dank :)
Ahoi zusammen,
die neue Version ist eingecheckt, d.h. ihr bekommt per update am heutigen Abend die neue Version mit MUC und OTR Unterstützung.
Have Phun :)
Zitat von: BioS am 17 September 2015, 11:30:26
Ahoi zusammen,
die neue Version ist eingecheckt, d.h. ihr bekommt per update am heutigen Abend die neue Version mit MUC und OTR Unterstützung.
Have Phun :)
Danke. Funktioniert (MUC) 1A. :)
Mahlzeit!
Ich habe folgendes Problem mit dem Modul:
Ich starte meinen "Client" und anscheinend bekommt der FHEM-Account eine "ist-jetzt-online-Meldung" gepusht....
Gefolgt von einem Absturz von Fhem folgender Meldung auf der Konsole:
Not a CODE reference at /usr/local/share/perl/5.14.2/Net/XMPP/Protocol.pm line 3537.
Jemand Vorschläge?!
Danke!
Das macht Jabber imho zur sichersten Remote-Control-Lösung :)
Leider ist Crypt::OTR etwas umständlich, da es noch Digest::SHA1 statt Digest:SHA haben will, für das es kein Debian-Paket mehr gibt.
Falls jemand wie ich länger daran hängt, was nötig ist, hier ein paar Debian-Schritte:
sudo aptitude update
sudo aptitude install libotr2-dev libyaml-perl liblog-log4perl-perl
sudo cpan Digest::SHA1
sudo cpan Crypt::OTR
Jetzt läuft die Schlüsselgenerierung (aber schon parallel, hast Du gut hinbekommen!), nachdem ich OTREnable auf 1 gesetzt habe, mehr Erfahrungsberichte wenn das soweit ist :)
Nachtrag: in unter einer Viertelstunde fertig, auf einem Raspberry Pi2.
Kontakt läuft verschlüsselt, großartig :)
Was noch schön wäre:
Wenn der Fingerprint im FHEM angezeigt würde, so dass ich im Chat-Client auch verifizieren kann, dass ich richtig verbunden bin.
Wenn es eine optionale Whitelist für Fingerprints der Clients gäbe (AdiumX macht scheinbar das mit dem Shared Secret nicht, das muss ich demnächst noch getrennt mit Pidgin testen).
@lukasbastelpeter: ohne jetzt genug Ahnung von Perl & XMPP zu haben würde ich denken, dass Typ des Clients und des Servers hilfreich wären, damit jemand mit gleicher Konstellation das Problem ggfls. bestätigen oder nicht bestätigen kann.
ich bin mit meinen accounts bei jabber.ccc.de, der "client" läuft auf meinem macbook in der iMessage-app...
und FHEm läuft auf einem rPi2...
Ich denke das es an der Verschlüsselung irgendwo hakt! Ich werde mal die ganzen Pakete via Cpan manuell installieren heute abend/nacht und gucken ob es was kann...
Ich hatte nämlich spontan gehofft die Unitymedia/IPv6 Problematik mit jabber umgehen zu können. Morgen gehts in den Urlaub und fernzugriff wäre zumindest rudimentär schon Porno 8)
Jetzt habe ich mal ein Log...
Leider hat das manuelle installieren aller Pakete auch nix gebracht...
Die genannte Zeile ist übrigens in dem "protocol.pm" folgende Methode: "callbackIQ - default callback for <iq/> packets." was macht die?!
edit: ich habe die Zeile auskommentiert, was auch immer sie macht, ich kann drauf verzichten. Jetzt funktioniert's!
Aleoha ihr beiden,
@lukasbastelpeter: da wir keine zeit zum debuggen haben (dein urlaub ruft :P) probier mal spontan per CPAN diese Modulversionen zu installieren:
Zitat von: BioS am 27 August 2015, 13:36:08
- XML::Stream 1.23 mit Net::XMPP 1.02 = alles gut
EDIT: lol, du hast es ja schon gelöst, also wenn das für dich so passt ist's erstmal OK, vielleicht kannst du mir mal nach deinem Urlaub PM'n dann kann ich evtl. fixen sofern es ein Problem bei meinen Callbacks ist.. Schönen Urlaub dann mal!
@Morganoure:
Schön, dass das OTR Addon seinen Zweck erfüllt, freut mich ;)
Das mit dem Fingerprint hatte ich schon so gut wie implementiert (hashes angepasst, notify's mit trused flag vorbereitet, etc.) bis ich dann am Schluß gemerkt hab, dass Crypt::OTR mir weder den Trust-Status gibt, noch den Fingerprint des users..
Man kann sich das auch nicht manuell holen weil die Crypt-OTR diese Funktionen von libotr nur während der Prüfung des shared secret benutzt. Hmpf >:(
Das hat mich ganz schön genervt.. Also hab ich alles wieder zurückgebaut und mach eben keinen Verify/Trust Status..
Adium kenn ich leider nicht, ich hab mal Conversations für Android und Pidgin getestet. Die Android App kann auch kein shared secret, wohl aber die Frage/Antwort: Das ist dasselbe - gib einfach dein shared secret bei der Antwort ein und irgendeine Frage.
Ich setze mal bei OTR Benutzung noch eine Prüfung auf Crypt::SHA1 auf meine TODO ;)
Cya,
BioS
Ist zwar offtopic, aber vielleicht trotzdem intressant für den ein oder anderen:
Zitat von: lukasbastelpeter am 24 September 2015, 19:16:38
Ich hatte nämlich spontan gehofft die Unitymedia/IPv6 Problematik mit jabber umgehen zu können.
nachdem ich nur 6 Stunden Unitymedia Kunde war, mir aber der IPv4/6 Problematik bekannt ist hatte ich dafür aber auch 'ne Lösung: Ich habe mit meinem (eh schon vorhandenen) V-Server, der eine feste v4 und v6 hat, eine art relay-server gebaut der Pakete von der v4 Addresse auf die v6 Unitymedia addresse gemacht und das hat eigentlich ganz gut funktioniert.
Damit konnte ich mit dem Handy über den Umweg v4/v6 auf meine FHEM Kiste zugreifen.
Kommando war damals:
socat TCP4-LISTEN:9999,fork,su=nobody TCP6:[2001:123:22:abc::2]:8083
:)
Hi, per PN kannst du gerne den Log haben,
aber jetzt muss ich langsam packen, anonymisieren werde ich den dann nach den Urlaub ;)
V-Server wird das Nach-Urlaub-Projekt....
Hey Danke für die schnelle Umsetzung mit den MUCs.
Moin,
Ich hab' das Jabber-Modul um eine Funktion die ich sehr nützlich finde erweitert: Bei der Jabber-presence kann man nämlich nicht nur den Zustand angeben (available/unavailable/away/...) sondern auch eine Freitext-Nachricht (also sowas wie "Bin grade hart am arbeiten" für away). Die wird dann in anderen Jabber-Clients in der Regel in der Nähe des Usernamens angezeigt (teilweise konfigurierbar), ich hab' mal einen Screenshot angehängt wie das bei mir auf dem Telefon mit Xabber aussieht.
In meiner Erweiterung gibt's jetzt ein "status" für set, das man benutzen kann um diese Nachricht zu setzen. Patch gegen die SVN-Version von letzter Nacht hängt an.
Mögliche Anwendungen:
- Einfacher Gesamtwohnungsstatus der immer im Blick ist
- Nicht kritische Meldungen, die nur bei Gelegenheit mal bearbeitet werden sollten (Homematic: Batterien wechseln zum Beispiel)
--
Henryk Plötz
Grüße aus Berlin
Ich habe das Modul bei meinem System jetzt auch einmal in Betrieb genommen - klappt super schnell und zuverlässig :-)
Gibt es eigentlich irgendeine Möglichkeit mit einem Android Devices vorgefertigte Jabber Nachrichten zu verschicken? Hatte mir vorgestellt mögliche Befehle als Widget zu hinterlegen und somit einfach per Knopfdruck zu verschicken...
Vielleicht benutzt ja jemand schon sowas ähnliches :-D
Gruß Firetic
Hi Henryk,
Zitat von: henryk am 07 Oktober 2015, 14:03:06
In meiner Erweiterung gibt's jetzt ein "status" für set, das man benutzen kann um diese Nachricht zu setzen. Patch gegen die SVN-Version von letzter Nacht hängt an.
Coole Idee, danke für den Patch! Ich muss den noch ein klein wenig abändern, denn einige Jabber Server mögen keinen Presence-status um den user "online" werden zu lassen.
Das hatte ich in meinen ersten Versionen drin und da gab es Probleme dass der Jabber-User einfach nicht online gehen wollte.
@Firetic:
Ich wüsste nicht dass es eine App gibt, die Jabber nachrichten vorgefertigt als Widget verschicken kann.
Eventuell kann man was mit Tasker basteln? Wäre in Verbindung mit OTR und NFC auch 'ne nette alternative für mich ;)
Beim Blick in das Log-File meines Prosody-Servers ist mir aufgefallen, dass er meckert, wenn sich FHEM als Client anmeldet:
sasl warn Client is violating RFC 3920 (section 6.1, point 7).
Hat aber offenbar auf die Funktion keinen Einfluss...
danke für das Modul :) ... Ich benutze es um meinen selbstgebastelten Android-Bilderrahmen (ausrangiertes Nexus7) zu steuern. FHEM sendet eine Jabber-Nachricht zum Android. Auf dem Android läuft Tasker, der die Nachricht auswertet und dann dementsprechend die PhotoSlideshow startet bzw stoppt (beim Stoppen dann auch das Display ausschaltet).
Hallo,
ich habe heute einen XMPP Server aufgesetzt und das Modul erfolgreich eingesetzt.
Aber insgesamt bin ich noch recht neu im Bereich FHEM.
Wie kann ich denn per Jabber eine Nachricht senden und dort eine Variable einfügen?
ich hatte es so versucht.
Zitatset JabberClient1 msg ***@voice.n-un.de {ReadingsVal("aussen.temp","state",999)}
Leider werden dann die Werte nicht eingefügt.
Wie kann ich in die Nachricht eine Variable einfügen?
Ich habe gerade festgestellt, dass das Jabber-Modul mein System zu 100% auslastet.
In der Conf habe ich
Zitatdefine jabber Jabber voice.n-un.de 5222 ABC GEHEIM 1 0
attr jabber OnlineStatus available
attr jabber PollTimer 2
attr jabber RecvWhitelist .*
attr jabber ResourceName FHEM
Wenn ich FHEM neu starte zeigt mit die Ausgabe TOP
Zitat7991 fhem 20 0 40948 34876 6592 R 94,7 1,0 2:44.90 perl
Das Jabbermodul zeigt mir:
ZitatJabber authentication error: Cannot Authenticate for an unknown reason. Connectionstatus is: 1
Das konnte ich dazu aus dem Log erkennen
Zitat2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value $sid in hash element at /usr/share/perl5/XML/Stream.pm line 1829.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value $sid in concatenation (.) or string at /usr/share/perl5/XML/Stream.pm line 2740.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value $sid in hash element at /usr/share/perl5/XML/Stream.pm line 2742.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value $sid in concatenation (.) or string at /usr/share/perl5/XML/Stream.pm line 1668.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value $sid in hash element at /usr/share/perl5/XML/Stream.pm line 1669.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at /usr/share/perl5/XML/Stream.pm line 1669.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value $sid in hash element at /usr/share/perl5/XML/Stream.pm line 1671.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value $sid in hash element at /usr/share/perl5/XML/Stream.pm line 1673.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at /usr/share/perl5/XML/Stream.pm line 1673.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value $sid in hash element at /usr/share/perl5/XML/Stream.pm line 1675.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value $sid in hash element at /usr/share/perl5/XML/Stream.pm line 1678.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value $sid in hash element at /usr/share/perl5/XML/Stream.pm line 2620.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at /usr/share/perl5/XML/Stream.pm line 1440.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at /usr/share/perl5/XML/Stream.pm line 1442.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value within %status in numeric eq (==) at /usr/share/perl5/XML/Stream.pm line 1506.
2015.12.07 22:27:31 1: PERL WARNING: Use of uninitialized value in subtraction (-) at /usr/share/perl5/XML/Stream.pm line 1507.
Hi darkness,
ohje, das scheint wieder mal ein Problem von der XML Stream Library zu sein.
Ich hab keine Ahnung was die Entwickler da gerade machen, aber die Änderungen vertragen sich nicht besonders gut mit den Verbindungen die wir für Jabber brauchen :)
Das Jabbermodul funktioniert am besten mit den Librarys XML::Stream 1.23 und Net::XMPP 1.02
Auf was für einem System hast du FHEM laufen? Fritzbox? Ein Debian auf einem Raspberry?
Könntest du mal in die Konsole gehen und mir den Output von folgenden Kommandos posten?:
sudo cpan -D XML::Stream
und
sudo cpan -D Net::XMPP
P.S.: dein kommando zum Nachrichten mit gerade abgerufenen Werten zu verschicken sollte so aussehen:
{ fhem("set JabberClient msg xxxx\@voice.n-un.de ".ReadingsVal("aussen.temp","state",999)) }
Hey,
danke für deine Antwort. Die Punkte werde ich heute Abend mal durchgehen.
FHEM läuft bei mit auf einem Ubuntu 15.10 Laptop.
Die Probleme mit der Systemauslastung konnte ich auch eingrenzen. FHEM hatte beim Verbinden mit der MySQL-DB Schwierigkeiten. Das klappt aber jetzt soweit.
Die Readings habe ich jetzt auch hin bekommen. Nutze jetzt die 99_MyUtils. Klappt soweit auch.
Ich habe Jabber gem. Wiki eingerichtet
Zitatdefine jabber Jabber voice.n-un.de 5222 <fhem_user> <passwort> 1 0
Das führt zu der angesprochenen Fehlermeldung. Wenn ich danach im Jabber die 1 und 0 tausche, also
Zitatvoice.n-un.de 5222 <fhem_user> <passwort> 0 1
erhalte ich eine Fehlermeldung (Klar, da kein SSL unterstützt wird).
Ändere ich danach aber wieder zurück auf
Zitatvoice.n-un.de 5222 <fhem_user> <passwort> 1 0
habe ich eine Verbindung und alles läuft. Bei einem Neustart von FHEM geht es aber wieder von oben los.
Mehr Infos dann heute Abend.
Ahoi,
Wenn das mit dem downgrade der Module nicht klappt, könntest du zusätzlich im Jabber Modul selber mal noch weit oben die Variable $debug auf 1 setzen und mir die FHEM Logfile sowie die /tmp/jabberdebug.log PM'n.
Damit kann ich den Fehler bei der ersten Verbindung - wenn das Modul defined wird - vielleicht eingrenzen.
Hier die Ergebnisse:
Zitatcpan -D XML::Stream
ZitatXML::Stream
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
/usr/share/perl5/XML/Stream.pm
Installed: 1.24
CPAN: 1.24 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Zitatcpan -D Net::XMPP
ZitatNet::XMPP
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/Net-XMPP-1.05.tar.gz
/usr/share/perl5/Net/XMPP.pm
Installed: 1.02
CPAN: 1.05 Not up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Paketversion von Ubuntu
Zitatii libnet-xmpp-perl 1.02-5 all XMPP Perl library
Ein Downgrade würde ich gerne vermeiden.
Hi,
in meinen vorherigen Posts hatte ich schonmal rausanalysiert:
Zitat von: BioS am 27 August 2015, 13:36:08
- XML::Stream 1.24 mit Net::XMPP 1.05 = Verbindung OK, aber keine Callbacks (presence, message, etc.)
- XML::Stream 1.24 mit Net::XMPP 1.02 = Keine Verbindung (SSL probleme)
- XML::Stream 1.23 mit Net::XMPP 1.02 = alles gut
du hast die Kombi, die bei meinen Tests überhaupt nicht funktioniert hat :)
Ich würde trotzdem mal probieren die XML::Stream auf die 1.23 downzugraden um andere Fehler am Server etc. auszuschließen.
Wenn das gut geht dann kannst versuchen du beide Pakete upzugraden, die Probleme mit den Callbacks hab ich gelöst, von daher sollte es mit XML::Stream 1.24 und Net::XMPP 1.05 auch gehen.
In der v.1.24 von XML::Stream wurde das Modul stark umgeschrieben, unter anderem wurde oft "weaken" benutzt bei dem es größere Verbindungsprobleme im Allgemeinen gibt, und es wurden viele Änderungen an dem SSL Zertifikatshandling gemacht, diese Probleme *sollte* ich alle in meinem Modul abgefangen haben, aber Garantie kann ich dir natürlich keine geben..
Guten Morgen,
ein Downgrad hat geklappt. Damit bekomme ich die Verbindung direkt. Vielen Dank für deine Hilfe.
Wird es denn noch eine Anpassung an das Modul 1.24 geben (irgendwann ) ?
Für alle die ebenfalls ein Downgrade durchführen wollen:
cpan DAPATRICK/XML-Stream-1.23.tar.gz
Hi darkness,
Zitat von: darkness am 10 Dezember 2015, 07:02:16
Wird es denn noch eine Anpassung an das Modul 1.24 geben (irgendwann ) ?
das Modul ist schon angepasst an die 1.24, aber nicht in Verbindung mit Net::XMPP 1.02.
Wenn du also nun XML::Stream auf die aktuelle 1.24 und Net:XMPP aktuelle 1.05 upgradest, sollte es auch wie vorgesehen funktionieren.
Have Phun :)
Werte FHEM-Jabber-Freunde,
gibt es eigentlich auch eine Möglichkeit, Bilder über das Jabber-Modul zu versenden bzw. ist dies für künftige Versionen geplant? Dann könnte ich mir z.B. einen Snapshot einer Kamera aufs Handy schicken lassen, wenn deren Bewegungserkennung oder ein separater Bewegungsmelder anschlägt.
Beim TelegramBot gibt es wohl sendImage|image. Allerdings nutzte ich Telegram nicht, sondern würde es gerne über meinen eigenen XMMP-Server laufen lassen.
Frohe Weihnachten und happy-FHEM´ing
alpha1974
Ahoi alpha1974,
Zitat von: alpha1974 am 24 Dezember 2015, 08:53:55
Beim TelegramBot gibt es wohl sendImage|image. Allerdings nutzte ich Telegram nicht, sondern würde es gerne über meinen eigenen XMMP-Server laufen lassen.
Ja du hast recht, bei Telegram ist diese Funktion in der API von denen schon integriert und ist quasi nur ein funktionsaufruf entfernt.
Bei Jabber ist das leider nicht standartmäßig dabei sondern eine Erweiterung des Protokolls - zumindest hat die Library keine solche Funktion.
Ich versuche mal (sobald ich wieder Zeit finde), diese Bytestream Funktionalität mit Perl mitteln nachzubilden, aber ich verspreche dir mal nichts :)
Grüße und ebenfalls frohe Weihnacht,
BioS
Aber ich
Hallo in die Runde.
Ich habe das Modul bei mir erfolgreich eingebunden und es funktioniert soweit auch gut.
Nun lasse ich mir die Temperaturen auf mein Handy schicken aber bei mir kommt alles als Einzeiler an.
Folgendes habe ich (nach WIKI) in die 99_myUtils.pm eingetragen.
sub
sendJabberAnswer()
{
my $lastsender=ReadingsVal("jabber","LastSenderJID","0");
my $lastmsg=ReadingsVal("jabber","LastMessage","0");
my @cmd_list = split(/\s+/, trim($lastmsg));
my $cmd = lc($cmd_list[0]);
# Erstes Element entfernen
shift(@cmd_list);
my $newmsg;
# Klima
if($cmd eq "klima") {
$newmsg.="Außen: \n";
$newmsg.=" ".ReadingsVal("th_outdoor", "temperature", "---")."°C, \n";
$newmsg.="Luftfeuchte: ".ReadingsVal("th_outdoor", "humidity", "---")."%, \n";
$newmsg.=" \n";
$newmsg.="Wohnzimmer: \n";
$newmsg.=" ".ReadingsVal("th_wz", "temperature", "---")."°C, \n";
$newmsg.="Luftfeuchte: ".ReadingsVal("th_wz", "humidity", "---")."%, \n";
}
# Hilfe zu den verfuegbaren Anweisungen
if($cmd eq "help" || $cmd eq "hilfe" || $cmd eq "?") {
$newmsg.= "Befehle: Help (Hilfe), Klima";
}
# Antwort senden
if(defined($newmsg)) {
fhem("set jabber msg ". $lastsender . " ".$newmsg);
} else {
fhem("set jabber msg ". $lastsender . " Unbekanter Befehl: ".$lastmsg);
}
}
Die Daten werden wie gesagt erfolgreich übertragen, jedoch als Einzeiler. Warum werden die Zeilenumbrüche ignoriert?
MfG
Hi,
Dein client interpretiert den \n wohl nicht als newliner. Probier mal anstatt \n überall \r\n zu setzen
Zitat von: BioS am 30 Dezember 2015, 16:44:53
Hi,
Dein client interpretiert den \n wohl nicht als newliner. Probier mal anstatt \n überall \r\n zu setzen
Hmm auch mit \r\n ändert sich nix. Es bleibt ein Einzeiler. Aktueller Client ist Xabber unter Android 5.0.1.
Habe aber auch schon einen anderen Client (Conversations) probiert und es bleibt das selbe Ergebnis. Muss ich mal weiter suchen.
Danke Dir.
PS: Soeben mit Pidgin auf dem PC probiert. Ebenfalls nur Einzeiler. :(
MfG
Hallo,
Android mit App "Bruno" und Pidgin am PC gleiches Problem. Habe mal in den alten Protokollen nachgesehen. Am 15.10.15 war noch alles ok. Am 04.12.15 nicht mehr ok. Dazwischen habe ich es nicht benutzt.
MfG
Zitat von: Ralf W. am 30 Dezember 2015, 19:16:00
Hallo,
Android mit App "Bruno" und Pidgin am PC gleiches Problem. Habe mal in den alten Protokollen nachgesehen. Am 15.10.15 war noch alles ok. Am 04.12.15 nicht mehr ok. Dazwischen habe ich es nicht benutzt.
MfG
OK. Also nicht nur bei mir der Fall. Brauche ich also nicht weiter nach dem Problem bei mir suchen.
Wenn ich allerdings helfen kann das Problem zu lokalisieren, bin ich gerne dabei.
MfG
Hmm, ihr habt ja recht :)
meine alte FHEM Version sendet noch das \n, meine neue nicht mehr..
Ich hab das Problem auf eine neue Funktion ReplaceSetMagic, die ab FHEM 5.7 die "set" funktion mitbedient, eingrenzen können.
Ich schreibe den Kollegen mal im zugehörigen Topic, wenn es keine Lösung gibt müssen wir mal schauen wie wir das machen..
Danke dir.
Komm gut ins Neue Jahr.
MfG
Dankeschön :)
Das Problem wird in den nächsten Updates von FHEM gefixt sein..
Have fun und rutscht gut!
Hallo & Frohes Neues.
Nach heutigem Update alles wieder hübsch bei mir.
Danke.
MfG
Hallo,
ich versuche gerade die Kommunikation mit Jabber etwas auszubauen. Allerdings habe ich ein Problem mit Regex. Wenn ich die Funktion "sendJabberAnswer" wie folgt ergänze:
if($cmd =~ m/hausstatus.*abwesend/i)
{
$newmsg.= "Ich werde den Hausstatus auf abwesend setzen.";
}
Und dann folgendes in den Chat schreibe: "Setz den Hausstatus auf abwesend", dann kommt immer die Antwort, die ganz unter in der Funktion hinterlegt ist" Unbekannter Befehl...".
Laut einem Testscript, sollte das Regex doch eigentlich greifen.
Hat sich schon erledigt. Ich habe gerade gesehen, das in $cmd ja nur das erste Wort drin steht. :-)
Nur fuer den Fall das noch jemand auf ein Problem stoesst bei Benachrichtigungen, das @ muss natuerlich escaped werden
{if (ReadingsVal("bad_temp", "battery", "-1") eq "low")
{fhem ("set JabberClient msg hillbicks\@xxx.xx Batterie im Bad bitte tauschen")}
}
Hallo zusammen,
ich habe ein kleines Probem und hoffe hier Hilfe bzw. eine Lösung zu finden. Ich nutze das Jabber Modul in einigen Szenarien und es funktioniert auch einwandfrei. In einem Fall allerdings kommt die Nachricht zwar an, aber die Variable steht nicht als das zu erwartende Ergebnis in der nachricht sondern der Aufruf an sich.
Was mach ich hier faslch?
Mein DOIF:
define TonneRaus DOIF ([18:30] and [abfallkalender:tomorrow] ne "none") (set FHEM msg name@domain Morgen kommt die Müllabfuhr! ".ReadingsVal("Abfallkalender"."tomorrow")." raus stellen!)
Die Nachricht kommt dann so an: Morgen kommt die Müllabfuhr! ".ReadingsVal("Abfallkalender"."tomorrow")." raus stellen!
Die Readings funktionieren und werden in der entsprechenden Ausgabe auch korrekt angezeigt. Nur in der Nachricht wird das Ergebnis nicht eingefügt.
Es geht um die in diesem Thread umgesetzte Müllabfuhr Visualisierung: http://forum.fhem.de/index.php/topic,32382.0.html
Es wäre nett, wenn jemand einen Hinweis für mich hätte.
Gruß, Thomas
Versuche es mal mit:
define TonneRaus DOIF ([18:30] and [abfallkalender:tomorrow] ne "none") ({fhem("set FHEM msg name\@domain Morgen kommt die Müllabfuhr! ".ReadingsVal("Abfallkalender","tomorrow","")." raus stellen!")})
Ungetestet.
MfG
Hallo spikeh1,
so hatte ich das auch schon versucht, das funktioniert aber leider nicht. Grund dafür scheint die verwendete Domainbezeichnung zu sein. Da ich das Jabber System selbst hoste sprech ic es mit direkt mit dem Hostnamen an, was per FHEM auch wunderbar funktioniert. In Perl Code leider nicht.
Es erscheint im Log:
Global symbol "@domain" requires explicit package name at (eval 44295) line 1
Selbst wenn ich direkt die IP oder einen DynDNS Namen angebe, z.B. 192.168.178.33 gibt es einen Fehler im Log:
PERL WARNING: Possible unintended interpolation of @192 in string at (eval 44409) line 1
Das Ganze erscheint auch wenn ich die Angabe per " oder ' escape.
Aber trotzdem vielen Dank für den Vorschlag.
Meine Frage zielte daher auch eher darauf ob das Jabber Modul diese Readings .ReadingsVal("Abfallkalender"."tomorrow"). überhaupt verarbeiten kann. Oder ob ich bei der Einarbeitung in den Jabber Aufruf noch etwas zusätzliches beachten muss.
Gruß, Thomas
Also bei mir funktioniert die von mir gezeigte Codezeile wunderbar.
Gerade probiert.
Allerdings hoste ich den Jabber-Server nicht selbst. Ob und wo da die Unterschiede sind kann ich dir nicht sagen.
MfG
PS: Dein @ muss maskiert werden. Also name\@domain. Steht in meinem Code aber auch so drin.
Wenn das auch nicht funktioniert, bin ich hier raus.
Hallo zusammen,
am gestrigen Abend habe ich meinen XMPP-Server fertiggestellt und FHEM dementsprechend eingerichtet. Verbindung und versenden von Nachrichten klappt soweit auch wunderbar.
Als i-tüpfelchen hätte ich gerne OTR aktiviert - nach setzen des Attributes erscheint die Meldung:
OTR_STATE: Missing perl Module Crypt::OTR, OTR disabled.
Nach Prüfung gibt mir die Ausgabe folglich aus, dass das Modul nicht installiert ist.
# cpan -D Crypt::OTR
Reading '/root/.cpan/Metadata'
Database was generated on Tue, 09 Feb 2016 22:53:58 GMT
Crypt::OTR
-------------------------------------------------------------------------
(no description)
R/RE/REVMISCHA/Crypt-OTR-0.08.tar.gz
(no installation file)
Installed: not installed
CPAN: 0.08 Not up to date
Mischa Spiegelmock (REVMISCHA)
revmischa@cpan.org
Nach Anweisung der Installation fängt die Kiste an zu rödeln und bricht dann mit einem Fehler ab.
# cpan Crypt::OTR
Reading '/root/.cpan/Metadata'
Database was generated on Tue, 09 Feb 2016 22:53:58 GMT
Running install for module 'Crypt::OTR'
Checksum for /root/.cpan/sources/authors/id/R/RE/REVMISCHA/Crypt-OTR-0.08.tar.gz ok
Configuring R/RE/REVMISCHA/Crypt-OTR-0.08.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
......
Makefile:353: recipe for target 'OTR.o' failed
make: *** [OTR.o] Error 1
REVMISCHA/Crypt-OTR-0.08.tar.gz
/usr/bin/make -- NOT OK
Vollständige Ausgabe: http://pastebin.com/R4LUw8n3
Update des Systems, fehlende Komponenten nachinstallieren haben nichts genutzt.
Meine Recherche hat leider kein Ergebnis hervorgebracht.
Habt ihr vielleicht eine Idee?
Systeminformationen
Raspberry Pi 2 - Raspbian Jessie Lite - FHEM 5.7 - Dblog
Danke und Freundlicher Gruß
Benni
EDIT 17:34 Uhr
Habe kurzer Hand eine Rapsbian Wheezy SD-Karte erstellt und die Crypt::OTR unter Wheezy kompiliert und siehe da, dort funktioniert es ohne Probleme.
Wäre ärgerlich wenn ich jetzt wieder zurück auf Wheezy müsste...
Ahoi :)
Zitat von: BamXP am 10 Februar 2016, 14:23:47
Wäre ärgerlich wenn ich jetzt wieder zurück auf Wheezy müsste...
Find ich auch.
Schau mal welche libotr version du installiert hast, unter wheezy müsste es die libotr 3.x sein - die Fehler die du gepostet hast könnten davon kommen, dass bei deinem Jessie eine neue - mit der aktuellen Crypt::OTR inkompatible version (libotr 4.x) - installiert ist.
Grüße,
BioS
Zitat von: BioS am 11 Februar 2016, 19:07:47
Ahoi :)
Find ich auch.
Schau mal welche libotr version du installiert hast, unter wheezy müsste es die libotr 3.x sein - die Fehler die du gepostet hast könnten davon kommen, dass bei deinem Jessie eine neue - mit der aktuellen Crypt::OTR inkompatible version (libotr 4.x) - installiert ist.
Grüße,
BioS
Bei Jessie ist es die libotr5-dev.
Habe heute ebenso versucht OTR zu aktivieren. Leider ohne Erfolg.
MfG
Ich hab nochmal nachgeforscht - die libotr5 ist die Version 4.xx.
Die libotr2 ist wiederum die Version 3.1.x
Da hat sich wohl grundlegend was an dem Interface geändert, scheint mehrere zu geben die damit jetzt Probleme haben.
Aber bis der/die Entwickler von Crypt::OTR nicht nachzieht muss man wohl versuchen die alte Version zu installieren..
Grüße,
BioS
Danke für die Mühe und deine Rückmeldung.
MfG
Danke für eure Rückmeldungen.
Daran habe ich nicht gedacht, einfach die alte Version zu installieren. (Dachte die wäre unter Jessie nicht lauffähig... falsch gedacht 8)
Habe die libotr2 manuell heruntergeladen: https://packages.debian.org/squeeze/libotr2
(Mit Sicherheit kann man den Vorgang auch eleganter lösen)
Kompiliert, Installiert --> Tada
CPAN:
t/Crypt-OTR.t .. ok
All tests successful.
Result: PASS
REVMISCHA/Crypt-OTR-0.08.tar.gz
/usr/bin/make test -- OK
Running make install
/usr/bin/make install -- OK
FHEM:
OTR_STATE: Generating OTR private key...
...und ein paar Minuten später
OTR_STATE: Finished generating OTR private key. OTR is now active.
Danke :)
Grüße
Benni
Dito. Kann ich bestätigen. Läuft auf Jessi.
Bin allerdings den Weg über die wheezy quelle gegangen und habe anschließend die entsprechenden Dateien vom Upgrade ausgeschlossen.
Fhem meldet: OTR enabled and active
:)
MfG
Na also freut mich, Danke für eure Rückmeldung :)
Könntest du bei folgender Zeile noch das Loglevel höher drehen oder gar ebenfalls nur bei Debug-Ausgaben?
Log 0, "$hash->{NAME} Message is empty after OTR decrypt.";
Meine Geräte zum Beispiel schalten automatisch auf OTR-Modus um. Sie senden scheinbar anfangs erst ohne OTR, was dazu führt das im Log als Begleitzeile immer erstmal "Message is empty after OTR decrypt." auftaucht.
Im Moment habe ich mir so beholfen, das ich die Zeile selber um "if $debug;" erweitert habe.
MfG
Hallo zusammen,
ich habe den Jabber Server gewechselt und habe seit dem Probleme in FHEM eine aktive Verbindung zum Server herzustellen.
CONNINFO Jabber connect error ()
Habe den Debugmodus aktiviert und die
jabberdebug.log gibt mir folgendes aus:
XMPP::Conn: Connected: (0)
XMPP::Conn: Connect: host(xmpp.trashserver.net:5222) namespace(jabber:client)
XMPP::Conn: Connect: timeout(10)
XML::Stream: Connect: srv requested
XML::Stream: Connect: srv query failed
XML::Stream: Connect: type(tcpip)
XML::Stream: Connect: Got a connection
XML::Stream: Send: (<?xml version='1.0'?><stream:stream version='1.0' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' to='xmpp.trashserver.net' from='raspberrypi' xml:lang='en' >)
XML::Stream: Read: buff(<?xml version='1.0'?><stream:stream id='' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' xmlns='jabber:client'><stream:error><host-unknown xmlns='urn:ietf:params:xml:ns:xmpp-streams'/><text xmlns='urn:ietf:params:xml:ns:xmpp-streams'>This server does not serve xmpp.trashserver.net</text></stream:error></stream:stream>)
XML::Stream: _handle_root: sid(newconnection) sax(XML::Stream::Parser=HASH(0x2e6b928)) tag(stream:stream) att( id xmlns:stream http://etherx.jabber.org/streams version 1.0 xmlns jabber:client )
XML::Stream: Node: _handle_element: sid(newconnection) sax(XML::Stream::Parser=HASH(0x2e6b928)) tag(stream:error) att( )
XML::Stream: Node: _handle_element: check( -1 )
XML::Stream: Node: _handle_element: sid(newconnection) sax(XML::Stream::Parser=HASH(0x2e6b928)) tag(host-unknown) att( xmlns urn:ietf:params:xml:ns:xmpp-streams )
XML::Stream: Node: _handle_element: check( 0 )
XML::Stream: Node: _handle_close: sid(newconnection) sax(XML::Stream::Parser=HASH(0x2e6b928)) tag(host-unknown)
XML::Stream: Node: _handle_close: check( 1 )
XML::Stream: Node: _handle_close: check2( 0 )
XML::Stream: Node: _handle_element: sid(newconnection) sax(XML::Stream::Parser=HASH(0x2e6b928)) tag(text) att( xmlns urn:ietf:params:xml:ns:xmpp-streams )
XML::Stream: Node: _handle_element: check( 0 )
XML::Stream: Node: _handle_cdata: sid(newconnection) sax(XML::Stream::Parser=HASH(0x2e6b928)) cdata(This server does not serve xmpp.trashserver.net)
XML::Stream: Node: _handle_cdata: sax(XML::Stream::Parser=HASH(0x2e6b928)) cdata(This server does not serve xmpp.trashserver.net)
XML::Stream: Node: _handle_close: sid(newconnection) sax(XML::Stream::Parser=HASH(0x2e6b928)) tag(text)
XML::Stream: Node: _handle_close: check( 1 )
XML::Stream: Node: _handle_close: check2( 0 )
XML::Stream: Node: _handle_close: sid(newconnection) sax(XML::Stream::Parser=HASH(0x2e6b928)) tag(stream:error)
XML::Stream: Node: _handle_close: check( 0 )
XML::Stream: Node: _handle_close: check2( -1 )
XML::Stream: Node: _handle_close: sid(newconnection) sax(XML::Stream::Parser=HASH(0x2e6b928)) tag(stream:stream)
XML::Stream: Node: _handle_close: check( -1 )
XML::Stream: Node: _handle_close: rootTag(stream:stream) tag(stream:stream)
Server: Prosody 0.9.10 Stable
Ein paar Posts zurück - werden TLS/SSL Probleme mit verschiedenen Versionen von XML::Stream und Net::XMPP angesprochen. Ein Downgrade beider Versionen brachte keinen Erfolg. Daher habe ich wieder die neusten Builds installiert:
# cpan -D XML::Stream
Reading '/root/.cpan/Metadata'
Database was generated on Sun, 10 Apr 2016 13:41:02 GMT
XML::Stream
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
/usr/local/share/perl/5.20.2/XML/Stream.pm
Installed: 1.24
CPAN: 1.24 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
# cpan -D Net::XMPP
Reading '/root/.cpan/Metadata'
Database was generated on Sun, 10 Apr 2016 13:41:02 GMT
Net::XMPP
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/Net-XMPP-1.05.tar.gz
/usr/local/share/perl/5.20.2/Net/XMPP.pm
Installed: 1.05
CPAN: 1.05 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Da die Verbindung auf meinem Smartphone und meinem PC ohne Probleme funktioniert, gehe ich weniger von einem Serverfehler aus.
Einen anderen Anbieter zum Testen habe ich leider derzeit nicht zur Hand.
Habt Ihr vielleicht eine Idee?
Danke und Gruß
Benni
Edit 19:16 UhrProblem gelöst :)
FQDN benutzen und nicht die Subdomain --> schon funktioniert es
Zitat
4.9.3.6. host-unknown
The value of the 'to' attribute provided in the initial stream header does not correspond to an FQDN that is serviced by the receiving entity.
(In the following example, the peer specifies a 'to' address of "example.org" when connecting to the "im.example.com" server, but the server knows nothing of that address.)
https://xmpp.org/rfcs/rfc6120.html#streams-error-conditions-host-unknown
Guten Morgen,
als erstes vielen Dank für das tolle Modul.
Ich habe mich gestern mal dran gesetzt das Modul an Google Talk / Hangout ans laufen zu bekommen.
Ergebniss es klappt mit einer kleinen Änderung:
my $connectionstatus = $hash->{JabberDevice}->Connect(
hostname=>$hash->{helper}{server},
port=>$hash->{helper}{port},
tls=>$hash->{helper}{tls},
ssl=>$hash->{helper}{ssl},
componentname=>'gmail.com'
);
Wenn der Componentname also frei einstellbar wäre und nicht wie aktuell $hash->{helper}{server} könnten man es auch mit Google nutzen.
Eine Frage habe ich noch, wie kann ich Nachrichten in eine Gruppe senden?
Hi Turbokid,
an eine Gruppe solltest du mit "msgmuc" was senden können, wenn du dem MUC vorher per
attr MucJoin channel1@server.com/mynick[:password]
beitrittst..
Deine Änderung werd ich in Form eines Attributs einbauen, danke für die Idee ;)
EDIT: Noch etwas erfolgreich ausprobiert: Wenn ich den Empfänger mit XMPP-Ressource angebe (also z.B. user@domain.net/phone) kommt eine Nachricht via "set msgotr" auf dem Handy an. Unverschlüsselte Nachrichten via "set msg" brauchen den Zusatz allerdings nicht.
[EDIT ENDE]
Hallo liebe Jabber-Fans,
OTR läuft bei mir nur einseitig vom Handy (Android mit Conversations) zu FHEM. Umgekehrt, also FHEM als Absender via "set msgotr", kommt leider nichts an. "set msg" an denselben Client läuft hingegen problemlos. Als XMPP-Server läuft hier Prosody. Grundsätzlich haben andere Clients, die sich über den Server anmelden, keine Probleme mit OTR (geht in beiden Richtungen).
Ich habe im Modul debug aktiviert. Das Logfile schreibt bei "set msgotr" folgendes:
2016.08.21 18:15:23.912 0: jabber No secure connection to xxxx@xxxxxx.xxx - establishing and sending message later...
2016.08.21 18:15:23.913 0: jabber [OTR Inject] Inject called: ?OTRv2?
<b>jabber</b> has requested an <a href="http://otr.cypherpunks.ca/">Off-the-Record private conversation</a>. However, you do not have a plugin to support that.
See <a href="http://otr.cypherpunks.ca/">http://otr.cypherpunks.ca/</a> for more information.
list device sagt:
CONNINFO Connected to xxxxxx.xxx with username xxxxxusernamexxxxxxx
DEF xxxxxxx.xxx 5222 xxxxxusernamexxxxxxx xxxxxpasswortxxxxxx 1 0
NAME jabber
NR 79
OTR_STATE OTR enabled and active
STATE Connected
TYPE Jabber
Die nicht versandten OTR-Nachrichten scheinen noch irgendwo zu "hängen", jedenfalls gibt im Device-Listing mehrere Hash-Einträge unter "waitingMsgs".
FHEM läuft in der aktuellsten Version auf einem Raspi2 unter Debian Jessie. libotr2 habe ich aus den Wheezy-Quellen kompiliert und erfolgreich installiert. Crypt::OTR ist auch installiert. In der Richtung Handy -> FHEM klappt OTR ja auch problemlos.
Mit der obigen Meldung (fehlendes Plugin) konnte ich leider nichts anfangen. Vielleicht hat ja jemand einen hilfreichen Tipp, ob noch ein Modul nachzuinstallieren ist? Oder könnte das Problem auf der Empfängersseite liegen (z.B. an der Android-App conversations)?
Gruß
alpha1974
Hi alpha1974,
ich glaube du hast dir die Antwort schon selber gegeben :)
OTR ist ja eine Ende zu Ende Verbindung und jabber bzw. XMPP definiert ein Ende als komplette JID: user@domain/ressource.
Wenn du nun mehrere Devices mit demselben User und unterschiedlichen Ressourcen hast, muss OTR das korrekte Ende wissen, also mit Ressource.
Andersherum hat dein fhem-server wahrscheinlich einen eigenen User und ist auch die einzige Ressource auf dem Username, also weiß der Jabber-Server genau wohin er mit dem halben JID Eintrag (user@domain) schicken muss.
"set msg" läuft ein bisschen anders als "set msgotr" - bei set msg sendet FHEM einfach die Nachricht an den Server und überlässt ihm das Routing an die korrekte Ressource.
"set msgotr" hingegen sucht ob er bereits eine bestehende Verbindung mit der JID hat (was bei user@domain nicht der Fall ist) und versucht eine aufzubauen wahrscheinlich dann mit einer anderen Ressource, kommt aufs Routing vom Server an.
Für was brauchst du es denn?
Wenn du immer dein Handy gezielt mit OTR ansprechen möchtest, kannst du ja die JID direkt nehmen.
Wenn du allerdings die Ressource, die im Moment online ist ansprechen möchtest wird das ziemlich komplex werden ;)
Willst jedoch nur auf eine Nachricht, zum vom Handy per OTR in einem Notify kam, benutze einfach die komplette JID, die im Notify mitgeliefert wird, als Antwortkanal.
Grüße,
BioS
Hallo BioS,
vielen Dank für die Erläuterung! Mir reicht es schon aus, das Handy mit der entsprechenden JID zu adressieren. Tatsächlich hat der User, der auf dem Handy genutzt wird, verschiedene Ressourcen, da er auch auf einem Client am PC genutzt wird bzw. wurde.
Für was ich es brauche: Ich möchte mir Statusmeldungen aus der FHEM-Welt aufs Handy schicken lasssen und wenn OTR ohnehin schon möglich ist, möchte ich es auch nutzen (was ja jetzt auch gut klappt). ;)
Gruß
alpha1974
Hallo zusammen,
vor einigen Monaten habe ich bei mir das Jabber Modul eingerichtet und nutze es zum Versand verschiedener Meldungen. Das klappt alles wunderbar. Nun wollte ich mal das Thema "interaktivität" angehen und versuche mich am in der WIKI hinterlegten Beispiel. Leider scheitere ich. :-[
Ich habe die Angaben befolgt und den Code in angepasster Form in die 99_myUtils.pm eingefügt:
# Enter you functions below _this_ line.
######################################################
# Meldung per Jabber senden
######################################################
sub
sendJabberMessage($$)
{
my($rcp, $msg) = @_;
fhem("set jabber msg $rcp $msg");
}
######################################################
# Meldung an mich per Jabber senden
######################################################
sub
sendMeJabberMessage($)
{
my($msg) = @_;
sendJabberMessage('user@domain', $msg);
}
######################################################
# Statusdaten an mein Handy per Jabber senden
######################################################
sub
sendMeStatusMsg()
{
# Hier ist der Text fuer die Statusmeldung. Z.B. Werte von Sensoren.
my $msg = "Status";
$msg=$msg."Status: ";
$msg=$msg."Antwort";
sendMeJabberMessage($msg);
}
### Ende ###
Die Angaben "user@domain" sind natürlich angepasst.
In der fhem.cfg habe ich folgendes hinzugefügt:
define Jabber_Notify notify jabber:Message.* {sendJabberAnswer();;}
Im Log erscheint nur die Info das eie Nachricht angekommen ist:
2016-08-29 11:47:20 Jabber FHEM_nnnn Message: user@domain/xt1092: Status
2016-08-29 11:47:20 Jabber FHEM_nnnn LastSenderJID: user@domain/xt1092
2016-08-29 11:47:20 Jabber FHEM_nnnn LastMessage: Status
Leider finde ich keinen Ansatz wo der Fehler liegt und wo ich ansetzen könnte.
Eventuell kann mir ja hier jemand einen Tip geben.
Gruß, Thomas
Im deinen Notify rufst du die Funktion sendJabberAnswer() auf.
Diese scheint es aber in deiner myUtils nicht zu geben.
Versuch mal die Funktion sendMeStatusMsg() aufzurufen.
Es sollte eigentlich auch entsprechende Fehler in deiner Logdatei geben.
Gruß
Hallo darkness,
vielen Dank für den Hinweis.
Das war zwar ein Fehler meinerseits, ändert aber leider nichts am Verhalten.
Ergebniss:
Nach wie vor keine Reaktion und keine (zusätzlichen) Infos im Log / Eventmonitor.
Gruß Thomas
hallo Thomas,
Du hast bei deinem DEF ein doppeltes Semikolon. Ich habe dort nur eins und es klappt alles wunderbar mit der Interaktion
define Jabber_Notify notify jabber:Message.* {sendJabberAnswer();}
Viele Gruesse,
Dirk
Hallo Devender ,
vielen Dank für deine Rückmeldung. Der Unterschied kommt daher das ich die Zeile direkt aus der fhem.cfg genommen habe und du diese direkt aus der fhem Oberfläche. ;)
In der Zwischenzeit habe ich das Ganze nochmal rückgängig gemacht und Schritt für Schritt neu aufgebaut. Nun geht es auch bei mir und die entsprechenden Nachrichten werden versendet. Wo letztlich der Fehler lag, das vermag ich nicht zu sagen, sicher ein Tippfehler oder ein "copy" / "paste" Problem. :-[
Vielen Dank an alle!
Gruß, Thomas
Hallo BioS,
vor knapp einem Jahr wurde im Verlaufe dieses Threats mal gefragt ob das Versenden von Bildern unterstützt wird.
Ist das bei dir noch immer noch auf der Liste oder hast du das aufgegeben?
Ich wäre, ähnlich wie alpha1974, nämlich an dieser Funktion interessiert.
Beste Grüße
Thomas
Hi Thomas,
ja ich hatte das auf der Liste und auch mal ein paar Wochen immer wieder versucht, aber entweder hat's das ganze connection handling von dem Modul so verhagelt und blockiert, dass FHEM quasi nicht mehr benutzbar war oder die Libraries haben von vornherein die Verbindung zu dem SOCKS Proxy mangels implementation nicht aufbauen können.
Alles in allem hab ich es aufgegeben die Bytestreams Extension zu implementieren, das hat zu immer mehr Problemen geführt..
Sorry, ich hab bestimmt 2-3 Wochen damit zugebracht, aber es wollte nicht klappen :(
@BioS hattest du schon die Möglichkeit das Attribut für meinen Vorschlag einzubauen? Ich zerlege mir zur Zeit bei jedem Update meine Änderung. Danke
Ich hab die ünderungen schon eingebaut, allerdings haben sich mittlerweile neue Entwicklungsrichtlinien ergeben auf die ich das Modul erst noch anpassen muss. Das dauert noch ein bisschen..
Danke für dieses Modul. Hervorragend!
Ich habe einige Zeit damit verbracht, den "Authentication error" aufzuspüren. Habe mir bei jaber-hosting.de einen Account registriert. Die Server sind allerdings nur unter jabber.hot-chilli.net zu erreichen und genau das war das Problem. Serverdomain und Domain im Benutzernamen müssen übereinstimmen. Also noch einen weiteren Benutzer unter jabber.hot-chilli.net registriert und siehe da, es geht.
Bezüglich des Bilduploads kann man die alte Lösung getrost ignorieren, da furchtbar.
Man sollte XEP-0363 verwenden: http://xmpp.org/extensions/xep-0363.html
Der Witz dabei ist, dass der eigentliche Bild-Up-und-Download über HTTP geschieht. Per XMPP werden nur die Links ausgehandelt.
Ist halt die Frage ob das schon jemand für Perl implementiert hat. So auf Anhieb hab ich nix gefunden. Aber das ist auf jeden Fall einfacher implementiert als die "alte" Lösung.
Auf Serverseite kann das der Ejabberd und für Prosody gibt es auch ein Modul.
Unter Android kann das Conversations, unter Win/Mac/Linux kann das Gajim und unter iOS wird Eloquence das können.
Da mache ich mal ganze nebenbei Werbung für mein OpenSource-Projekt: www.eloquence-im.org :).
Das Tolle ist: Clients, die das nicht unterstützen bekommen einfach einen Link geschickt.
Gruss farion
PS: Und Danke für dieses Modul, ohne Jabber wäre FHEM nix für mich.
Hallo!
Ich habe ein Problem mit der STARTTLS Option. Habe einen Ejabberd Server auf'm Raspberry laufen. Dort wurde die STARTTLS Funktion aktiviert:
{listen,
[
{5222, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536},
%%zlib,
starttls_required, {certfile, "/etc/ejabberd/ejabberd.pem"}
]},
Das Modul meldet immer beim Verbinden : "Jabber authentication error: Cannot Authenticate for an unknown reason. Connectionstatus is: 1"
Im Debug-Modus sagt das LogFile: Jabber connection error (Previous XMPP Process() error!)
Meine Implementierung lautet:
www.kai***.de 5222 fhem PW 1 0
Ohne tls oder startls funktioniert die Verbindung reibungslos.
Kann mir jemand sagen, was ich falsch mache??
Hallo zusammen,
in der Nachrichten.app auf MacOS bekomme ich immer den Status "offline" angezeigt obwohl ich Nachrichten senden und empfangen kann. Ein List liefert:
Internals:
CONNINFO Connected to jabber.de with username <myfhemuser>
DEF jabber.de 5222 <ihr wisst schon was hier steht>
NAME jabber
NR 115
STATE Connected
TYPE Jabber
Readings:
2016-12-20 22:20:33 LastMessage Ich maile mal zurück
2016-12-20 22:20:33 LastSenderJID <myuser>@jabber.de
2016-12-20 22:20:33 Message <myuser>@jabber.de Ich maile mal zurück
Helper:
otractive 0
password <mypassword>
port 5222
server jabber.de
ssl 0
tls 1
username <myfhemuser>
Otrjids:
Attributes:
OnlineStatus available
PollTimer 2
RecvWhitelist <myuser>@jabber.de
ResourceName FHEM
Hi,
du könntest mal versuchen das Attribut Onlinestatus zu ändern.
Wie sich das auswirkt hängt vom Jabber Server ab, aber ich würde es mal mit folgendem probieren:
attr JabberModul OnlineStatus Online
oder
attr JabberModul OnlineStatus availible
Hi BioS,
das hat leider keine Auswirkung. Vielleicht ist es nicht ganz klar, was ich gemeint habe: Es geht um den User, den ich für FHEM angelegt habe. Dessen Status steht auf Offline.
Viele Grüße
Mir ist es immer noch nicht klar ???
Der User XX dessen Konto du per Jabberclient auf deinem z.b Handy eingerichtet hast?
Oder der User XX, der bei jabber.de oder bei ejabberd (auf dem PI) eingerichtet ist?
Kannst du vielleicht zum Verständnis einen Screenshot hochladen?
OK, ich versuch's mal.
In FHEM habe ich als Device
jabber.de 5222 <user auf jabber.de für fhem>
definiert. In FHEM sehe ich:
CONNINFO
Connected to jabber.de with username <user auf jabber.de für fhem>
STATE
Connected
Das Attribut OnlineStatus dieses Devices steht auf
available
In beigefügtem Screenshot sieht man den Status dieses Users in der Messages-App auf iOS
Viele Grüße vom gent
hast du in der App, dein fhem als Kontakt eingerichtet?
Die damit sozusagen verknüpft wie bei Messangern üblich?
Ja, habe ich
dann bin ich jetzt auch Ratlos... :-X
Letzter Strohalm die App bzw. Problem iOS.
Ich nutze nur Android und die Xabber ab. Dort funktioniert der Onlinestatus so wie bei dir beschrieben.
Hast du eine Möglichkeit es unter Windows (Desktop) oder Android zu testen?
Um wirklich noch Konfigurationsfehler auszuschließen
Hi,
unter Windows evtl. muss ich morgen mal schauen, Android Geräte mit denen ich testen kann habe ich leider keine...
Viele Grüße vom gent
Hallo zusammen,
ich eine Frage die nicht direkt mit dem Jabber Modul zusammenhängt, aber ich möchte meine FHEM Bedienung per Jabber weiter ausbauen.
Meine Idee ist die "einfache" Befüllung bzw. Leerung eines Einkaufszettels unter Zuhilfenahme von Jabber.
Konkret setze ich das Modul "PostMe" https://wiki.fhem.de/wiki/Modul_PostMe (https://wiki.fhem.de/wiki/Modul_PostMe) ein und möchte die von mir erstellte Notiz "Einkauf" per Jabber füllen bzw. leeren. Da ich und meine Familie nicht jedesmal den kompletten fhem Befehl (set Notizen add Einkauf Wurst) eingeben möchten, habe ich versucht anhand der von Hexenmeister zur Verfügung gestellten Codes für die 99_myUtils.pm dies abzukürzen - leider ohnen Erfolg.
Mein Ziel ist durch Eingabe eines Codewortes den Teil "set Notizen add Einkauf" zu ersetzen und beispielsweise nur "eink+ Wurst" einzugeben. Im Hintergrund wird dann der komplette Code (set Notizen add Einkauf Wurst) ausgeführt und mene Einkaufsliste um den Artikel Wurst befüllt.
Hat hier einer die Kenntnisse in Perl wie ich mir so etwas bauen kann?
Ich bin für jeden Ansatz dankbar, da ich auch durch Tante Google nicht wirklich weiter komme und ich nur sehr, sehr geringe Perl Kenntnisse habe.
Gruß, Thomas
Hi zusammen,
@gent: du könntest eine Authorisation probieren:
set Jabbermodulname subscribe deinuser@jabber.de
@ThomasMagnum:
Ich hab mal versucht das umzusetzen in perl-code über ein Notify.
Ersetze "JabberModulName" und "PostMeName" mit dem entsprechenden Namen den du im FHEM definiert hast:
define EinkaufZettelNotify Jabbermodulname:eink.* {}
Dann da draufklicken und die zwei klammern "{}" gegen folgendes ersetzen:
{
if ($EVENT =~ /eink\+ (?<einktxt>.+)/i) {
fhem("set PostMeName add Einkauf ".$+{'einktxt'});
} elsif ($EVENT =~ /eink\- (?<einktxt>.+)/i) {
fhem("set PostMeName del Einkauf ".$+{'einktxt'});
}
}
Obiges ist aber ungetestet..
Grüße,
BioS
Hi BioS,
das subscribe führt bei mir zum gnadenlosen Absturz des fhem prozesses. ImLogfile sehe ich anschließend:
Not a CODE reference at /usr/local/share/perl/5.20.2/Net/XMPP/Protocol.pm line 3537.
und im Terminal:
pi@fhem-pi3:~ $ service fhem status
● fhem.service - LSB: FHEM server
Loaded: loaded (/etc/init.d/fhem)
Active: active (exited) since Tue 2017-01-03 21:45:58 CET; 3min 34s ago
Process: 3321 ExecStop=/etc/init.d/fhem stop (code=exited, status=0/SUCCESS)
Process: 3330 ExecStart=/etc/init.d/fhem start (code=exited, status=0/SUCCESS)
Hi gent,
Das ganze reduziert sich darauf dass man die richtigen Perl-modulversionen installiert (ist ganz schön bescheuert, ich weis..).
Versuch erstmal ein update über cpan, das hilft bei den meisten:
Modul Version checken:
sudo cpan -D XML::Stream
sudo cpan -D Net::XMPP
neueste installieren:
sudo cpan -I XML::Stream
sudo cpan -I Net::XMPP
Hi BioS,
hier mal ein Mittschnitt im Terminal:
pi@fhem-pi3:~ $ sudo cpan -D XML::Stream
CPAN: Storable loaded ok (v2.51)
Reading '/root/.cpan/Metadata'
Database was generated on Mon, 02 Jan 2017 20:17:02 GMT
CPAN: LWP::UserAgent loaded ok (v6.15)
Fetching with LWP:
http://www.cpan.org/authors/01mailrc.txt.gz
CPAN: YAML loaded ok (v1.21)
Reading '/root/.cpan/sources/authors/01mailrc.txt.gz'
CPAN: Compress::Zlib loaded ok (v2.07)
............................................................................DONE
Fetching with LWP:
http://www.cpan.org/modules/02packages.details.txt.gz
Reading '/root/.cpan/sources/modules/02packages.details.txt.gz'
Database was generated on Tue, 03 Jan 2017 20:53:42 GMT
............................................................................DONE
Fetching with LWP:
http://www.cpan.org/modules/03modlist.data.gz
Reading '/root/.cpan/sources/modules/03modlist.data.gz'
DONE
Writing /root/.cpan/Metadata
XML::Stream
-------------------------------------------------------------------------
CPAN: Module::CoreList loaded ok (v5.20161220)
(no description)
D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
/usr/local/share/perl/5.20.2/XML/Stream.pm
Installed: 1.24
CPAN: 1.24 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
pi@fhem-pi3:~ $ sudo cpan -D Net::XMPP
CPAN: Storable loaded ok (v2.51)
Reading '/root/.cpan/Metadata'
Database was generated on Tue, 03 Jan 2017 20:53:42 GMT
Net::XMPP
-------------------------------------------------------------------------
CPAN: Module::CoreList loaded ok (v5.20161220)
(no description)
D/DA/DAPATRICK/Net-XMPP-1.05.tar.gz
/usr/local/share/perl/5.20.2/Net/XMPP.pm
Installed: 1.05
CPAN: 1.05 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
pi@fhem-pi3:~ $ sudo cpan -I XML::Stream
Can't locate object method "die" via package "Log::Log4perl::Logger" at /usr/local/share/perl/5.20.2/App/Cpan.pm line 1025.
pi@fhem-pi3:~ $ sudo cpan -I Net::XMPP
Can't locate object method "die" via package "Log::Log4perl::Logger" at /usr/local/share/perl/5.20.2/App/Cpan.pm line 1025.
Sieht für mich irgendwie nicht so OK aus...
Hier noch eine Info:
Wie gesagt habe ich zwei jabber user:
"fhemgent" für FHEM und "gent" um mit FHEM zu kommunizieren
FHEM stürzt dann nachvollziehbar ab, wenn ich den Status des users "gent" in der Nachrichten app ändere. Setze ich den auf "offline", wird auch der Status von "fhemgent" auf offline gesetzt. Das ist schon mal merkwürdig. Setze ich den Status von "gent" wieder auf "Anwesend" (oder irgendeinen anderen Status), dann stürzt der FHEM Prozess unmittelbar ab.
Viele Grüße vom gent
Hi gent,
ja eigentlich gut, denn der Fehler ist Lokalisiert ;)
Es ist definitiv die Kombination aus XML::Stream und Net::XMPP - genau da stürzt FHEM ab wenn sich am Onlinestatus was ändert und die Aufrufe innerhalb der Software funktionieren nicht richtig.
Ich zitiere mal aus meinen früheren Posts:
Zitat von: BioS am 27 August 2015, 13:36:08
- XML::Stream 1.24 mit Net::XMPP 1.05 = Verbindung OK, aber keine Callbacks (presence, message, etc.) -> Absturz
- XML::Stream 1.24 mit Net::XMPP 1.02 = Keine Verbindung (SSL probleme)
- XML::Stream 1.23 mit Net::XMPP 1.02 = alles gut
Offensichtlich funktioniert bei dir CPAN wegen einem Fehler in einem anderen perl Modul auch nicht, was schon mal ein ziemlich schlechtes Zeichen ist :(
zuerst würde ich mal versuchen die zwei perl module zu deinstallieren und von Hand neu zu installieren (diesmal über debian commands):
sudo apt-get remove libnet-xmpp-perl
sudo apt-get remove libxml-stream-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
sudo dpkg -i libxml-stream-perl_1.23-2_all.deb
sudo dpkg -i libnet-xmpp-perl_1.02-3_all.deb
Hallo BioS,
vielen Dank für den Codeschnippsel. Ich versuch das mal einzubauen und gebe dann Bescheid ob und wie es geht.
Gruß, Thomas
Hi BioS,
alle Befehle wurden problemlos ausgeführt, allerdings bekomme ich in der Commandline
Cannot load module Jabber
Viele Grüße
Hat sich erledigt,
habe ein wenig zuviel deinstalliert.
Bin gerade am Testen und melde mich, wie es ausgegangen ist
Viele Grüße vom Gent
Hi BioS,
hat leider nichts gebracht. Nach wie vor gnadenloser Absturz, wenn der Status geändert wird.
Tja...
Viele Grüße vom gent
Zitat von: gent am 05 Januar 2017, 00:47:03
Hi BioS,
hat leider nichts gebracht. Nach wie vor gnadenloser Absturz, wenn der Status geändert wird.
Tja...
Viele Grüße vom gent
Hi gent,
Hast du dann nochmal den Output der Modul Versionen?
Eventuell hast Debian die falschen Module wieder installiert?
Grüße BioS
Hi, sieht so aus als wären neuere Module installiert:
XML::Stream
-------------------------------------------------------------------------
CPAN: Module::CoreList loaded ok (v5.20161220)
(no description)
D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
/usr/local/share/perl/5.20.2/XML/Stream.pm
Installed: 1.24
CPAN: 1.24 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
und
Net::XMPP
-------------------------------------------------------------------------
CPAN: Module::CoreList loaded ok (v5.20161220)
(no description)
D/DA/DAPATRICK/Net-XMPP-1.05.tar.gz
/usr/local/share/perl/5.20.2/Net/XMPP.pm
Installed: 1.05
CPAN: 1.05 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Ich versuch noch mal ein downgrade
Viele Grüße
Hi BioS,
man oh man: Ich habe natürlich vergessen, dass perl-module, die mit cpan installiert sind, auch wieder deinstalliert werden müssen. Es scheint so gewesen zu sein, dass ich beide Versionen auf dem Rechner hatte. Die richtigen mit dpkg installierten und die "falschen" neueren, die ich mit cpan installiert hatte.
Da cpan offenbar von sich aus kein uninstall mitbringt, musste ich erst cpanm installieren, konnte dann die cpan Versionen deinstallieren und habe jetzt tatsächlich die "älteren" Module aus dem *.deb Dateien.
Und siehe da, das fhem jabber modul funktioniert nun ohne fhem in den Abgrund zu reißen.
Hier nochmal kurz für alle eine Zusammenfassung , die irgendwie dieselben Probleme haben:
sudo cpan -D XML::Stream
... Installed: 1.24 -- falsche Version
sudo cpan -D Net::XMPP
--- Installed: 1.05 -- falsche Version
# cpanm installieren
sudo cpan App::cpanminus
# neue Module deinstallieren
sudo cpanm --uninstall XML::Stream
sudo cpanm --uninstall Net::XMPP
# und dann nochmal das was BioS vorher schon geschrieben hatte:
sudo apt-get remove libnet-xmpp-perl
sudo apt-get remove libxml-stream-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
sudo dpkg -i libxml-stream-perl_1.23-2_all.deb
sudo dpkg -i libnet-xmpp-perl_1.02-3_all.deb
Vielen Dank und viele Grüße vom Gent
Freut mich dass es geklappt hat :)
Ich hab das Modul ins Wiki übernommen. Korrekturen, Ergänzungen, Wünsche und weitere Beispiele sind natürlich herzlich willkommen.
Zitat von: drhirn am 11 Januar 2017, 13:20:02
Ich hab das Modul ins Wiki übernommen. Korrekturen, Ergänzungen, Wünsche und weitere Beispiele sind natürlich herzlich willkommen.
Hallo,
macht es nicht Sinn, im Wiki auf beiden Jabber-Seiten wechselweise einen Link zu setzen oder daraus eine Seite zu erstellen?
MfG
Gesendet von meinem SM-T585 mit Tapatalk
Du meinst die hier?
https://wiki.fhem.de/wiki/FHEM_spricht_jabber (https://wiki.fhem.de/wiki/FHEM_spricht_jabber)
Ja, macht Sinn. Mach ich gleich. Bzw. ist auf der "FHEM spricht Jabber" eh schon im Text die Modul-Seite verlinkt.
Zitat von: BamXP am 12 Februar 2016, 11:55:11
Habe die libotr2 manuell heruntergeladen: https://packages.debian.org/squeeze/libotr2
(Mit Sicherheit kann man den Vorgang auch eleganter lösen)
Kompiliert, Installiert --> Tada
CPAN:
t/Crypt-OTR.t .. ok
All tests successful.
Result: PASS
REVMISCHA/Crypt-OTR-0.08.tar.gz
/usr/bin/make test -- OK
Running make install
/usr/bin/make install -- OK
FHEM:
OTR_STATE: Generating OTR private key...
...und ein paar Minuten später
OTR_STATE: Finished generating OTR private key. OTR is now active.
Danke :)
Grüße
Benni
Der Beitrag ist schon ne Weile her, aber auch ich habe heute versucht, unter Jessie OTR zum Laufen zu bekommen. Bin leider kein so großer Linux-Freak. Kann mir mal jemand step by step sagen, wie ich die libotr2 runterlade (vermutlich mit wget) und wie ich die dann kompiliere und installiere?
Ich möchte dir davon abraten:
- Die CPAN crypt:otr ist seit langer Zeit nicht mehr geupdatet worden. Unter anderem aus diesem Grund brauchst du die alte libotr2. Diese ist selbst in Debian (das für seine alten Packete bekannt ist) nicht mehr enthalten.
- Mit einer alten library zerschiesst du die möglicherweise das System
- OTR ist für mobile Kommunikation nicht geeignet
Wenn du es dennoch installieren möchtest:
wget http://http.debian.net/debian/pool/main/libo/libotr/libotr_3.2.1.orig.tar.gz #runterladen
tar xfvz libotr_3.2.1.orig.tar.gz #entpacken
Anschließend in das Verzeichnis wechseln und ./configure ausführen und alle fehlenden Abhängigkeiten beheben (ich musste libgcrypt20-dev nachinstallieren) und "make" sowie "sudo make install" ausführen.
Zitat von: joshi am 21 Januar 2017, 23:14:47
Ich möchte dir davon abraten
Danke! Ich habe es dennoch versucht. Leider nicht erfolgreich. Oder doch, mein FHEM blieb nun regelmäßig nach 2 Tagen stehen und im Log stand gefühlte 1000mal irgendwas von "zu viele offene Handler" oder so etwas. Habe das letzte Backup eingespielt. So lange XMPP im FHEM kein OMEMO unterstützt, sehe ich von einer weiteren Verwendung von Jabber erst mal ab. ???
Hallo zusammen,
ich möchte aus einem Notify eine Jabber Message versenden und dann auch noch einen MP3 File via MPD abspielen.
Ich scheitere aber schon daran, einfach eine Jabber Message zu versenden aus dem Eingabefenster, wenn der Befehl mit fhem anfangen muss. Ohne fhem funktioniert es.
{ fhem("set JabberClient msg xxxx@xxxx ".ReadingsVal("aussen.temp","state",999)) }
Diesen Code habe ich angepasst und ein dummy device angelegt. Aber auch dann bekomme ich es nicht hin.
In meinem 99_myUtils.pm funktioniert das Versenden, aber in FHEM nicht.
Versuche:
{ fhem("set JabberClient msg xxxx@xxxx ".ReadingsVal("dummy1","state",999)) }
{ fhem("set JabberClient msg xxxx@xxxx Test") }
{ fhem("set JabberClient msg xxxx@xxxx 'Test'") }
Ich bekomme immer Fehler vom Jabber Modul, dass die Eingabe nicht korrekt ist oder scheint.
Was muss ich hier eingeben, damit es klappt?
Gruß
Mirko
Ich habe es selbst gefunden, nachdem ich mir die Fehlermeldung noch einmal richtig angeschaut habe.
Die Fehlermeldung war immer @jabber. Ich habe vergessen das @ zu maskieren.
Mit \@ geht es nun.
Gruß
Arminius
Ist es eventuell möglich omemo zu impementieren anstatt oder zusätlich zu otr.
https://conversations.im/omemo/
Hätte auch den Vorteil das Nachrichten verschlüsselt zu mehreren gleichzeitig gesendet werden kann. Was in OTR nicht möglich ist.
Ich habe FHEM unter Ubuntu 16.04 laufen dort gibt es zwar eine libotr5-bin im repository aber FHEM sagt immer noch Missing perl Module Crypt::OTR
!!Habe weiter hinten gelesen das dafür eine ältere libotr erforderlich ist.!!
LG Eisi
Zitat von: lukasbastelpeter am 24 September 2015, 22:41:04
Jetzt habe ich mal ein Log...
Leider hat das manuelle installieren aller Pakete auch nix gebracht...
Die genannte Zeile ist übrigens in dem "protocol.pm" folgende Methode: "callbackIQ - default callback for <iq/> packets." was macht die?!
edit: ich habe die Zeile auskommentiert, was auch immer sie macht, ich kann drauf verzichten. Jetzt funktioniert's!
Hallo lukasbastelpeter, und Hallo alle anderen Leidensgenossen,
da ich den Fehler auch habe, wollte ich mal fragen, ob Du die ganze Methode auskommentiert hast, oder nur besagte Zeile?
Ich habe nur die Zeile bearbeitet, indem ich eine Raute # davor gesetzt habe.
Das behebt den Fehler aber nicht sofort, fhem muss neu gestarten werden.
Zum Glück nicht das ganze System.
Viele Grüße
Christian...
Zitat von: eisenmann am 25 April 2017, 20:21:58
...
Ich habe FHEM unter Ubuntu 16.04 laufen dort gibt es zwar eine libotr5-bin im repository aber FHEM sagt immer noch Missing perl Module Crypt::OTR
!!Habe weiter hinten gelesen das dafür eine ältere libotr erforderlich ist.!!
...
Hallo,
FHEM läuft bei mir auf Ubuntu Server 16.04. Installiert sind die Pakete libgcrypt11-dev libgcrypt20-dev libgpg-error-dev libotr5 libotr5-dev libotr5-bin. Damit hat sudo cpan install Crypt::OTR ein Problem und bringt Fehler.
Von der Installation der älteren Version wird hier abgeraten und es wird auch von Fehlern im Betrieb berichtet.
Hat jemand noch eine Idee, wie ich OTR stabil lauffähig bekomme?
MfG
Hi zusammen,
ich installiere bei Gelegenheit mal einen Ubuntu 16.04 Server bei mir um eure Probleme nachzustellen.
Im moment hab ich aber einfach keine Zeit ich im hinteren drittel einer einer 3 Monate-langen Schulung..
Bis dahin würde ich die OTR funktion abgeschaltet lassen.
Grüße,
BioS
Hallo zusammen.
Ich verzweifle langsam an Jabber. :-\ Ich bin, wie unter https://wiki.fhem.de/wiki/FHEM_spricht_jabber angegeben vorgegangen. Das Jabber Device wird auch angelegt, allerdings verbindet es sich nicht.
Habe ich als Username "MyName@jabber.de " zeigt CONNINFO "Jabber authentication error: error malformed-request" an. Gebe ich aber nur "MyName" als Username an bekomme ich ein "Jabber authentication error: error not-authorized".
FHEM läuft bei mir
- auf einem Rechner mit Ubuntu 16.04.
- sudo cpan -D XML::Stream
Installed: 1.23 - cpan -D Net::XMPP
Installed: 1.02 - Meine DEF Zeile
jabber.de 5222 MyName@jabber.de geheim 1 0
Was mache ich falsch?
MfG
Hi!
probier mal deinen Usernamen mit \@ anstatt @:
jabber.de 5222 MyName\@jabber.de geheim 1 0
Bringt leider auch nur ein: "Jabber authentication error: error malformed-request"
Hat dein Passwort vielleicht Sonderzeichen die du mit \ escapen musst?
Nein, nur Zahlen, Groß- und Kleinbuchstaben.
Hat niemand eine Idee? Ich würde mich schon über einen Vorschlag, wo ich den Fehler Suchen kann freuen.
kannst Du Dich denn mit einem normalen Jabber-Client wie z.B. Pidgin mit diesen Nutzerdaten anmelden? Nicht, dass das Konto irgendwie nicht in Ordnung ist.
Und dann kannst Du noch mit dem "1 0" am Ende spielen, vielleicht unterstützt der Jabber-Server kein TLS oder so.
Der Account ist in Ornung, ich kann mich mit einem normale Programm damit verbinden.
Ich glaube, das Modul versucht gar nicht sich zu verbinden. Ich habe mit
my $debug = 1;
das Debugging aktiviert. Im Log finde ich aber nicht mal einen Versuch sich zu verbinden. Es steht lediglich
2017.05.26 08:11:22 0: JabberClient1 Jabber PollMessages
2017.05.26 08:11:22 0: JabberClient1 Poll End
2017.05.26 08:11:24 0: JabberClient1 Jabber PollMessages
2017.05.26 08:11:24 0: JabberClient1 Poll End
2017.05.26 08:11:26 0: JabberClient1 Jabber PollMessages
2017.05.26 08:11:26 0: JabberClient1 Poll End
2017.05.26 08:11:28 0: JabberClient1 Jabber PollMessages
2017.05.26 08:11:28 0: JabberClient1 Poll End
bis zur Unendlichkeit drin.
Hallo zusammen,
ich hab jetzt mal ein ganz frisches Ubuntu 16.04.02 LTS (64bit) - wie man es zur Zeit runterladen kann - installiert mit der neuesten FHEM deb (zu diesem Zeitpunkt 5.8)
Um das Jabber Modul mit OTR zum laufen zu bekommen hab ich folgende Befehle ausgeführt:
apt-get remove libnet-xmpp-perl
apt-get remove libxml-stream-perl
apt-get remove libotr5 libotr5-dev
apt-get install build-essential
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
apt-get install libnet-jabber-perl
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 install Digest::SHA1
cpan
cpan> notest install Crypt::OTR
Dann kurz das Modul im FHEM definiert:
define myJabber Jabber server.de 5222 user_ohne_@ passwort 1 0
Connection läuft und chat geht.
Bei einem 32 bit system muss man die unteren libotr downloads entsprechend anpassen.
Zum OTR Aktivieren:
attr myJabber OTREnable 1
und das ging auch - zumindest generiert er mir die OTR Schlüssel und will mit meinem Client einen OTR Chat anfangen.
Ich habe die ganzen Infos unter "Installation" mal hier zusammengefasst:
https://wiki.fhem.de/wiki/Jabber
Für OMEMO fehlt mir leider der Anwendungsfall und die passenden Systeme, wer aber gerne OMEMO im Modul sehen will, darf sich frei fühlen das Modul abzuändern, deshalb ist ja alles Open-Source.
Wenn mir dann jemand den Patch schickt, lade ich es gerne ins offizielle SVN.
Grüße,
BioS
Hallo BioS,
bin nach Deiner Anleitung im Wiki vorgegangen. Ich habe Ubuntu 16.04.1-Server. Ein Unterschied zu Deiner Beschreibung:
dpkg -i libotr2-dev_3.2.1-1+deb7u2_amd64.deb
brachte einen Abhängigkeitsfehler. Dieser wurde aufgelöst mit
wget http://ftp.de.debian.org/debian/pool/main/libg/libgcrypt11/libgcrypt11-dev_1.5.0-5+deb7u4_amd64.deb
apt-get install libgpg-error-dev
dpkg -i libgcrypt11-dev_1.5.0-5+deb7u4_amd64.deb
Danach
dpkg -i libotr2-dev_3.2.1-1+deb7u2_amd64.deb
cpan
cpan> notest install Crypt::OTR
apt-get install haveged
Attribut OTREnable auf 1 gesetzt und Status sprang sofort auf
OTR enabled and active
Rennt. Danke!
MfG
Hi Ralf,
danke für das ausprobieren und den fix.
Ich hab im Wiki deinen Eintrag "apt-get install libgpg-error-dev" einfach mal hinzugefügt, das tut auf einem 16.04.02 bestimmt auch nicht weh :)
Grüße,
BioS
Hallo liebe Jabber Fans,
ich bräuchte mal wieder einen kleine Hinweis.
Folgendes Vorhaben:
Ich sende mir bei bestimmten Events Nachrichten per Jabber zu. Das klappt wunderbar. Nun möchte ich diese Nachrichten ein wenig formatieren, sprich ich möchte beispielsweise Leerzeilen einfügen. Nur weiß ich leider nicht wie.
Meine Suche im Forum und im I-Net haben mir bisher auch nicht wirklich helfen können. Evtl. hat ja hier jemand einen Tipp für mich.
Versucht habe ich schon \n in allen erdenklichen Formen, hat nur nie etwas gebracht.
Vielen Dank schon mal für einen Hinweis.
Gruß, Thomas
Hallo,
hat hier keiner eine Idee? Die Tipps in folgenden Thread (https://forum.fhem.de/index.php/topic,69630.0.html (https://forum.fhem.de/index.php/topic,69630.0.html)) habe ich schon versucht, führen aber leider nicht zum Erfolg.
Hier mal der Aufbau meiner Nachricht (aus einem funktionierenden DOIF):
(set FHEM_Schichtel msg emfänger@domain.de Jabber-Nachricht-> Hier steht die Nachricht und soll zwischendurch mal einen Zeilenumbruch erhalten[Device:Reading])
Gewünscht wäre die folgende Nachricht:
Jabber-Nachricht->
Hier steht die Nachricht und soll zwischendurch mal einen Zeilenumbruch erhalten
Readingwert
Ein einfaches einfügen von \n erzeugt leider keinen Zeilenumbruch, obwohl das FHEM und Prosody auf einem Linux (Rasbian) laufen.
Thomas
Hi ThomasMagnum,
ich denke das kommt daher, dass dein DOIF das \n nicht als newline interpretiert, und die Zeichenfolge "\" und "n" mitgibt.
Du kannst mal in deinem DOIF Befehl folgendes probieren:
anstatt ein direktes
set jabberdevice empfänger@domain.de message1\nmessage2
probier mal dashier:
{ fhem("set jabberdevice empfänger@domain.de message1\nmessage2") }
damit wird der Befehl als Perl Code ausgeführt und damit auch das \n richtig interpretiert - so funktioniert das in den Tests bei mir ganz gut.
Grüße,
BioS
Hallo BioS,
vielen Dank für den Tipp, das Gute liegt manchmal so nah :-[!
Gruß, Thomas
Zitat von: joshi am 21 Januar 2017, 23:14:47
Ich möchte dir davon abraten:
- Die CPAN crypt:otr ist seit langer Zeit nicht mehr geupdatet worden. Unter anderem aus diesem Grund brauchst du die alte libotr2. Diese ist selbst in Debian (das für seine alten Packete bekannt ist) nicht mehr enthalten.
- Mit einer alten library zerschiesst du die möglicherweise das System
- OTR ist für mobile Kommunikation nicht geeignet
Wenn du es dennoch installieren möchtest:
wget http://http.debian.net/debian/pool/main/libo/libotr/libotr_3.2.1.orig.tar.gz #runterladen
tar xfvz libotr_3.2.1.orig.tar.gz #entpacken
Anschließend in das Verzeichnis wechseln und ./configure ausführen und alle fehlenden Abhängigkeiten beheben (ich musste libgcrypt20-dev nachinstallieren) und "make" sowie "sudo make install" ausführen.
Hallo liebes Forum,
ich möchte diesen Teil der Diskussion nochmal aufgreifen: OTR klappt bei mir - auf einem RPi3 mit Jessie - auch
nicht, was mir bisher egal war, weil der jabber-Server
nur cm daneben lokal auf einem separaten Pi lief. Nun möchte ich Prosody auf einen öffentlichen Server, als private Installation auf meinem uberspace, umziehen.
Verständnisfrage an die Jabber-Experten ist nun: Wie schlimm wäre dann der Verzicht auf OTR hinsichtlich der Sicherheit? Nach meinem laienhaften Verständnis wäre ja die Verbindung fhem_Pi --> (Jabber_Server auf meinem uberspace) dennoch TLS/SSL verschlüsselt.
Ein Problem gäbe es also "nur" gegenüber dem Betreiber des Servers, der ich selbst bin. Oder?
Habt vielen Dank! :)
Hallo econ_sl83,
deine Annahme ist korrekt, sofern du Prosody entsprechend konfiguriert hast (http://prosody.im/doc/security (http://prosody.im/doc/security)).
Somit wäre die Verbindung bzw. Übertragung der Daten TSL verschlüsselt.
OTR hat im praktischen Einsatz eh so seine Probleme, da dies nur funktioniert wenn beide Partner online sind, dann ist es aber nicht mehr möglich nachzuweisen wer, wann mit wem gesprochen hat.
Viel besser wäre der Eiinsatz von OMEMO, da kann auch einer der Gesprächspartner offline sein. Leider gibt es aber keine Unterstützung hierfür.
Gruß, Thomas
OMEMO wäre zwar cool, aber ist kein Killerkriterium ;)
Was schon viel interessanter wäre: Bilder verschicken zB über http_upload
drdownload,
da gebe ich dir natürlich Recht, würde ich ebenfalls begrüßen. ;)
Hallo BioS,
kann es sein, dass unter bestimmten Voraussetzungen die Kommunikation mit dem Server einseitig abbricht? Seitdem ich FHEM auf einem Pi Zero betreibe habe ich ca. alle 2 Tage einen FHEM-Absturz, und die größte Auffälligkeit sind große Mengen CLOSE_WAIT - Meldungen bei lsof (und das auch wenn gar keine Messages per Jabber geschickt wurden).
Ich habe das Problem ursprünglich hier (https://forum.fhem.de/index.php/topic,72264.msg743237.html#msg743237) beschrieben.
Meine Definition sieht so aus:
defmod IM Jabber <server> 5222 <jabberid> <passwort> 1 0
attr IM OnlineStatus available
attr IM PollTimer 4
attr IM RecvWhitelist .*
attr IM ResourceName FHEM
attr IM icon ring
Liegt es tatsächlich an diesem Modul? Wenn nicht, wo kann ich dann suchen - und wenn ja, was kann ich tun?
Hi Borsti,
ich hab nichts vergleichbares von anderen gehört, noch haben meine Systeme, auf denen ich das betreibe, in irgendeiner Art dasselbe Problem..
Aber warum nicht? Ich hab wirklich schlechte Erfahrung mit den Perl Modulen gemacht, wenn sich da bei den updates was ändert kann es sein dass ein sub-modul plötzlich rumspinnt.
Ich antworte dir auch mal in dem anderen Thread, aber deine beste Möglichkeit, das zu testen, ist mein Modul zu deaktivieren und dass ganze dann vorallem auch mal länger laufen zu lassen.
Wenn du ein Speicherleck hast und du mein Modul deaktivierst, jedoch das Problem an sich noch besteht, wird es länger dauern bis der Fehler wieder auftaucht.
Grüße,
BioS
Guten Abend,
ich habe vor ca zwei Jahren mal das Jabber Modul ausprobiert, musste es jedoch wieder raus nehmen da ich Probleme mit volllaufenden RAM(Raspi der ersten Generation mit Arch) hatte.
Inzwischen habe ich die Hardware gewechselt und die Chance genutzt das ganze FHEM zu virtualisieren, sowie auf Ubuntu gewechselt. Interessanterweise habe ich ein Problem vom damals immer noch, Jabber geht immer wieder kurz offline:
19:11:29: FHEM ist nun offline (war Online)
19:11:30: FHEM ist nun online (war Online)
19:17:02: FHEM ist nun offline (war Online)
19:17:04: FHEM ist nun online (war Online)
Damals führte damals dazu dass ich das System alle zwei drei Tage rebooten musste um es ansprechbar zu halten, heute habe ich deutlich mehr RAM(24 fache) und kann das nicht mehr nachvollziehen.
Was könnte dir Ursache sein das FHEM scheinbar ständig die Verbindung zum Jabber Server verliert?
Verbose 5 scheint keinerlei Auswirkungen auf die Anzahl der Log Einträge zu haben.
Internals:
CONNINFO Connected to jabber.at with username fhem
DEF jabber.at 5222 fhem XXXX 1 0
NAME myJabber
NR 15
STATE Connected
TYPE Jabber
helper:
otractive 0
password XXX
port 5222
server jabber.at
ssl 0
tls 1
username fhem
otrJIDs:
Attributes:
OnlineStatus available
PollTimer 1
RecvWhitelist XXX@jabber.fsinf.at
ResourceName FHEM
verbose 5
Danke!
Wünsche noch einen schönen restlichen Sonntagabend.
Pyromane
Ahoi Pyromane,
aus dem stehgreif hab ich keine Antwort was das soll, aber check auf jeden Fall mal deine Perl-Modul versionen.
Ein paar posts weiter hinten hab ich da ziemlich ausführliche Anleitungen dazu geschrieben.
Dann versuch mal das debugging im Modul zu aktivieren:
Öffne die 70_Jabber.pm und setze die Variable $debug in Zeile 69 auf 1
Restarte dann FHEM und du solltest ausführliche Informationen im FHEM log in extra viel Informationen in der Datei /tmp/jabberdebug.log finden.
Grüße,
BioS
Hallo BioS,
danke für die Hinweise, ich habe mal deine Anleitung soweit ich gekommen bin abgearbeitet, leider kann er den letzten dpkg Befehl nicht ausführen:
dpkg -i libotr2-dev_3.2.1-1+deb7u2_amd64.deb
Selecting previously unselected package libotr2-dev.
(Reading database ... 30001 files and directories currently installed.)
Preparing to unpack libotr2-dev_3.2.1-1+deb7u2_amd64.deb ...
Unpacking libotr2-dev (3.2.1-1+deb7u2) ...
dpkg: dependency problems prevent configuration of libotr2-dev:
libotr2-dev depends on libgcrypt11-dev; however:
Package libgcrypt11-dev is not installed.
dpkg: error processing package libotr2-dev (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
libotr2-dev
Gruß
Pyromane
Tante EDIT sagt:
eine Bitte hätte ich noch, wenn möglich bitte jede Zeile vom jabberdebug.log mit einer Zeitangabe versehen. Danke!
Hallo,
ZitatPackage libgcrypt11-dev is not installed.
sagt doch eigentlich alles...
Kurze Zwischenmeldung:
Zitat von: Pyromane am 07 Januar 2018, 19:33:58
Jabber geht immer wieder kurz offline:
19:11:29: FHEM ist nun offline (war Online)
19:11:30: FHEM ist nun online (war Online)
19:17:02: FHEM ist nun offline (war Online)
19:17:04: FHEM ist nun online (war Online)
ja, das habe ich auch ständig (gehabt), aber mir nichts dabei gedacht... ::)
Nachdem ich am 7. mein IM-Device auskommentiert habe, sind (natürlich) die CLOSE_WAIT beim lsof weg, und auch sonst keine Auffälligkeiten mehr zu beobachten. Aber lieber noch ein paar Tage warten, ob doch noch ein Restart kommt. ;)
Zitat von: darkness am 08 Januar 2018, 10:11:01
Hallo,
sagt doch eigentlich alles...
Guten Abend,
das hatte ich gelesen, aber nachdem in der Anleitung einige Standard per Apt installierte Anwendungen deinstalliert wurden, wollte ich nicht einfach welche installieren.
Grüße
Pyromane
Guten Abend,
nachdem dem in vorigen Beitrag beschriebenen Ablauf habe ich noch ein
sudo apt-get -f install
aufgeführt um die Abhängigkeiten wiederherzustellen, danach das ganze System neugestartet und die Verbindungsverluste seitdem kann ich an einer Hand abzählen.
An dieser Stelle ein dicke Danke für die Anleitung!
MfG Pyro
Hi,
wurde das Thema OMEMO eigentlich weiter verfolgt? Seit gestern Abend hat es mich nämlich eingeholt. Der Jabber Client Conversations unter Android hat nun den OTR Suppport entfernt und OMEMO als Standard definiert. Hat jemand einen Tipp für einen guten Android Client der noch OTR unterstützt.
Bin gerade wieder etwas frustriert was die Hausautomatisierung angeht. Ständig muss man an irgendwelchen Stellen nachjustieren werden auch wenn es nur der Jabber Client ist. Es vergeht leider kaum eine Woche in der keine Probleme auftreten :-( Irgend ein Update von irgendeinem Gerät führt fast immer zu Problemen ...
Grüße
Andreas
Hi Andreas,
ich habe leider weder eine OMEMO Implementation bisher gemacht noch kenn ich das Protokoll und im Moment fehlt mir einfach die Zeit mich da einzulesen.
Deine Frustration verstehe ich, mir geht es nicht anders aber das ist eben der Nachteil von einem offenen System und wenn man viele Produkte miteinander mischt, der Trick ist nicht sofort jedes Update mitzumachen.
Die Alternative dazu ist auf nur einen Hersteller zu setzen und all seine Produkte und Software zu verwenden - da hätte man dann Ruhe weil alles "funktioniert" bis der Hersteller ohne großes TamTam die Produktlinie einstellt und es keine Neuerungen mehr für die teuren Produkte gibt.
Dann erst fängt das Große weinen an ;) (ist einem Freund von mir so gegangen)
Danke erstmal für das Modul =)
Mein XMPP-Server läuft auf einer Subdomain und nicht auf der Domain. Daher benötige ich auch die SRV-Einträge, welche auch gesetzt sind. Sie funktionieren mit allen Clients, außer mit FHEM.
Wenn ich die Verbindung mit tcpdump mitschneide sehe ich, dass FHEM einfach den A-Record der in define eingetragenen Domain auflöst. Warum auch immer löst er den SRV-Record gar nicht auf.
In den vorherigen Beiträgen hab ich gelesen, dass das aber implementiert wurde. Muss ich noch irgendwas besonderes beachten?
Das define sieht so aus:
define xmpp Jabber domain.tld 52225 fhem fhem 1 0
Edit:
Noch ein Hinweis:
Wenn ich in der /etc/hosts die domain.tld eintrage mit der IP auf der der XMPP-Server lauscht, funktioniert es.
Zitat von: acw81 am 26 März 2018, 09:57:02
wurde das Thema OMEMO eigentlich weiter verfolgt? Seit gestern Abend hat es mich nämlich eingeholt. Der Jabber Client Conversations unter Android hat nun den OTR Suppport entfernt und OMEMO als Standard definiert. Hat jemand einen Tipp für einen guten Android Client der noch OTR unterstützt.
Also interesse an einer OMEMO Implementation hätte ich auch :)
Zitat von: igami am 27 April 2018, 15:51:55
Also interesse an einer OMEMO Implementation hätte ich auch :)
Ich wäre auch an einer OMEMO-Unterstützung unter FHEM interessiert! :P
Vielleicht hilft einem das ja weiter: Tutorial: Home-made OMEMO client (https://blogs.fsfe.org/vanitasvitae/2017/06/14/homemo/)
Ich werde mal schauen ob ich damit was basteln kann, aber eigentlich fehlt mir momentan sogar die Zeit meine eigenen Module weiter zu programmieren :'(
Zitat von: igami am 02 Mai 2018, 19:58:33
eigentlich fehlt mir momentan sogar die Zeit meine eigenen Module weiter zu programmieren :'(
Willkommen im Club :)
Ich hätte auch gerne schon lang mal in das Thema geschaut, aber es fehlt einfach die Zeit..
Mit dem Attribut
kann man ja festlegen, von welcher JID Befehle entgegengenommen werden. Ich habe keinerlei Information darüber gefunden, ob ich hier auch eine Liste an verschiedenen JIDs angeben kann und wenn ja, wie ich die Einträge in dieser Liste trenne. Kann mir dazu jemand was sagen?
Edit: Ich habe meine Antwort in dem langen Thread alleine gefunden ;-) ;D
Zitat von: BioS am 04 April 2014, 09:13:32
Die Whitelist wird per Regular Expression ausgewertet, d.h. wenn du nur einen useraccount benutzen willst,
kannst du direkt den jabber Account in dieses Attribut setzen: user@jabberserver.de
Wenn du mehrere Accounts zulassen willst musst du dich an die regex syntax halten: (user1@jabberserver.de|user2@jabberserver.de)
Wenn man es ganz genau machen will muss man den Punkt mit einem Backslash escapen: (user1@jabberserver\.de|user2@jabberserver\.de)
Danke! ;)
Hallo,
bei mir sorgt das Jabber Modul dafür dass FHEM nicht mehr funktioniert, sobald die Internetverbindung abreist. Es steht dabei nichts im Log oder im Event Monitor, das Modul scheint jedoch recht aggressiv zu versuchen die Verbindung wieder aufzubauen.
Kann man das irgendwie verhindern?
Viele Grüße
JoSHi
Du kannst mal deine Modulversionen checken:
sudo cpan -D Net::Jabber Net::XMPP Authen::SASL XML::Stream Net::SSLeay
XML::Stream 1.23 mit Net::XMPP 1.02 = alles gut
und wenn das nichts Hilft mir mal die debuglogs zukommen lassen, wenn es sich wieder aufgehangen hatte, siehe Post #253: https://forum.fhem.de/index.php/topic,18967.msg744549.html#msg744549 (https://forum.fhem.de/index.php/topic,18967.msg744549.html#msg744549)
Das Modul bringt FHEM bei mir regelmäßig zum Absturz. Folgende Zeile taucht vorher im Logfile auf:
Not a CODE reference at /usr/local/share/perl/5.24.1/Net/XMPP/Protocol.pm line 3537.
Hier ein Auszug aus der Datei an der entsprechenden Stelle:
3510 ##############################################################################
3511 #
3512 # callbackIQ - default callback for <iq/> packets.
3513 #
3514 ##############################################################################
3515 sub callbackIQ
3516 {
3517 my $self = shift;
3518 my $sid = shift;
3519 my $iq = shift;
3520
3521 $self->{DEBUG}->Log1("callbackIQ: sid($sid) iq($iq)");
3522
3523 return unless $iq->DefinedChild();
3524 my $query = $iq->GetChild();
3525 return unless defined($query);
3526
3527 my $type = $iq->GetType();
3528 my $ns = $query->GetXMLNS();
3529
3530 $self->{DEBUG}->Log1("callbackIQ: type($type) ns($ns)");
3531
3532 if (exists($self->{CB}->{IQns}->{$ns})
3533 && (ref($self->{CB}->{IQns}->{$ns}) eq 'HASH' )
3534 )
3535 {
3536 $self->{DEBUG}->Log1("callbackIQ: goto user function( $self->{CB}->{IQns}->{$ns} )");
3537 &{$self->{CB}->{IQns}->{$ns}}($sid,$iq);
3538
3539 }
3540 elsif (exists($self->{CB}->{IQns}->{$ns}->{$type})
3541 # && (ref($self->{CB}->{IQns}->{$ns}->{$type}) =~ /CODE/)
3542 )
3543 {
3544 $self->{DEBUG}->Log1("callbackIQ: goto user function( $self->{CB}->{IQns}->{$ns}->{$type} )");
3545 &{$self->{CB}->{IQns}->{$ns}->{$type}}($sid,$iq);
3546 }
3547 }
3548
3549
Die FHEM-Versionen sind:
fhem.pl 16675 2018-04-29 22:15:41Z rudolfkoenig
70_Jabber.pm 12904 2016-12-29 12:44:32Z BioS
Und hier die von Perl:
# cpan -D Net::Jabber Net::XMPP Authen::SASL XML::Stream Net::SSLeay
..
..
Net::Jabber
-------------------------------------------------------------------------
(no description)
R/RE/REATMON/Net-Jabber-2.0.tar.gz
/usr/local/share/perl/5.24.1/Net/Jabber.pm
Installed: 2.0
CPAN: 2.0 up to date
Ryan Eatmon (REATMON)
reatmon@mail.com
Net::XMPP
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/Net-XMPP-1.05.tar.gz
/usr/local/share/perl/5.24.1/Net/XMPP.pm
Installed: 1.05
CPAN: 1.05 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Authen::SASL
-------------------------------------------------------------------------
(no description)
G/GB/GBARR/Authen-SASL-2.16.tar.gz
/usr/share/perl5/Authen/SASL.pm
Installed: 2.16
CPAN: 2.16 up to date
Graham Barr (GBARR)
gbarr@pobox.com
XML::Stream
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
/usr/local/share/perl/5.24.1/XML/Stream.pm
Installed: 1.24
CPAN: 1.24 up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Net::SSLeay
-------------------------------------------------------------------------
(no description)
M/MI/MIKEM/Net-SSLeay-1.85.tar.gz
/usr/lib/i386-linux-gnu/perl5/5.24/Net/SSLeay.pm
Installed: 1.80
CPAN: 1.85 Not up to date
Mike McCauley (MIKEM)
mikem@airspayce.com
Ist das Problem bekannt? Gibt es eine Lösung dafür?
Jap ist bekannt, die neuen Modulversionen funktionieren nicht sauber zusammen, warum weis ich auch nicht genau.
Gut funktioniert alles auf jedenfall mit dieser Kombination:
XML::Stream 1.23 mit Net::XMPP 1.02
Auf Seite 3 dieses Threads findest du noch andere, die dieselben Probleme hatten und wie sie den Downgrade gemacht haben.
Moin moin,
seit kurzem legt das Jabber Modul meinen kompletten FHEM lahm. FHEM fährt nicht mehr hoch, bzw. befindet sich in einer Art Endlosschleife und ich bekomme folgende Meldung im Modul
2018.06.16 15:31:36.349 2: ZWDongle_ProcessSendStack: no ACK, resending message 0107000301020100f9
*** FATAL PROGRAM ERROR!! Unknown method 'target'
*** which the program has attempted to call for the object:
***
_xmpp-client._tcp.xxx.ddnss.de. 10 IN CNAME xxx.ddnss.de.
***
*** Net::DNS::RR::CNAME 1406 has no instance method 'target'
***
*** THIS IS A BUG IN THE CALLING SOFTWARE, which incorrectly assumes
*** that the object would be of a particular type. The type of an
*** object should be checked before calling any of its methods.
at /usr/local/share/perl/5.24.1/XML/Stream.pm line 602.
XML::Stream::Connect(XML::Stream=HASH(0x22cb970)) called at /usr/local/share/perl/5.24.1/Net/XMPP/Connection.pm line 177
Net::XMPP::Connection::Connect(Net::Jabber::Client=HASH(0x3b4d880)) called at ./FHEM/70_Jabber.pm line 565
main::Jabber_CheckConnection(HASH(0x2d283e0)) called at ./FHEM/70_Jabber.pm line 384
main::Jabber_PollMessages(HASH(0x2d283e0)) called at fhem.pl line 3112
main::HandleTimeout() called at fhem.pl line 636
2018.06.16 15:31:37.184 1: Including fhem.cfg
2018.06.16 15:31:37.219 3: telnetPort: port 7072 opened
Die Anmeldung erfolgt an meinem eigenen prosody Server, den ich sonst auch für diverse andere Clients verwende.
scheint an fehlende SRV DNS Records gelegen zu haben :)
Nun geht zumindest unverschlüsselt im Moment alles. Verschlüsselt (OTR) geht aber mit der alten Conversations Version und mit Pix-Art leider noch nichts :(
Man könnte auch eine PGP sub schreiben, die kann dann auch für Mail Verschlüsselung genommen werden und Conversations sollte das auch beherrschen.
Hallo
Ich kämpfe gerade mit der Jabber installation!
Ich bin nach dem Wiki https://wiki.fhem.de/wiki/Jabber vorgegangen
Mit dem Windows Client Gajim funktioniert es aber mit FHEM nicht.
Es schein etwas Grundsätzliches zu sein, jabber.de und jabber.ccc.de sind betroffen und zeigen das gleiche Verhalten
Bekomme leider diese Meldung auf der FHEM Oberfläche
Internals:
CONNINFO Jabber connect error (Connection timed out)
oder
CONNINFO Jabber connect error (No route to host)
defmod
defmod JabberClient1 Jabber jabberd.jabber.ccc.de 5222 user passwort 1 0
Diese beiden module sollten passen
pi@raspberrypi:~ $ sudo cpan -D Net::XMPP XML::Stream
Loading internal null logger. Install Log::Log4perl for logging messages
Reading '/root/.cpan/Metadata'
Database was generated on Wed, 22 Aug 2018 12:29:03 GMT
Net::XMPP
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/Net-XMPP-1.05.tar.gz
/usr/share/perl5/Net/XMPP.pm
Installed: 1.02
CPAN: 1.05 Not up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
XML::Stream
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
/usr/share/perl5/XML/Stream.pm
Installed: 1.23
CPAN: 1.24 Not up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Grüße
Heinz
Hi Heinz,
Zitat von: heinzfo am 22 August 2018, 18:23:01
defmod
defmod JabberClient1 Jabber jabberd.jabber.ccc.de 5222 user passwort 1 0
Grüße
Heinz
Ich denke da stimmt was in dem Zielnamen nicht, no route to host deutet auf einen nicht existenten DNS Namen hin.
ich hab bei meinen Tests immer "jabber.ccc.de" und nicht "jabberd.jabber.ccc.de" angegeben - prüfe mal den Namen nach.
Grüße,
BioS
Du hast recht, jetzt geht es.
Danke
Hallo, ich habe schon lange Zeit das Problem, dass fhem crasht, wenn ich den Gajim-Client (Linux) neu starte bzw. beim Starten. Ich muss dann auch fhem neu starten. Kann mir da jemand helfen?
Not a CODE reference at /usr/share/perl5/Net/XMPP/Protocol.pm line 3537.
Heute morgen gab es Probleme auf jabber.de (https://www.jabber.de/stoerung-durch-ru-spambot/), weswegen die Jabber-Client-Anwendungen (z.B. Conversations auf Android) Timeouts meldeten. In meinem FHEM-Log finde ich zu dieser Zeit eine ganze Reihe von Meldungen folgender Art:
2018.12.04 11:44:06 1: Perfmon: possible freeze starting at 11:43:57, delay is 9.328
2018.12.04 11:44:21 1: Perfmon: possible freeze starting at 11:44:12, delay is 9.345
2018.12.04 11:44:36 1: Perfmon: possible freeze starting at 11:44:27, delay is 9.357
2018.12.04 11:44:51 1: Perfmon: possible freeze starting at 11:44:42, delay is 9.446
2018.12.04 11:45:06 1: Perfmon: possible freeze starting at 11:44:57, delay is 9.419
2018.12.04 11:45:22 1: Perfmon: possible freeze starting at 11:45:12, delay is 10.379
...
2018.12.04 12:44:26 1: Perfmon: possible freeze starting at 12:44:16, delay is 10.073
2018.12.04 12:44:41 1: Perfmon: possible freeze starting at 12:44:31, delay is 10.115
2018.12.04 12:45:32 1: Perfmon: possible freeze starting at 12:45:01, delay is 31.486
2018.12.04 12:48:01 1: Perfmon: possible freeze starting at 12:47:39, delay is 22.266
2018.12.04 13:05:55 1: Perfmon: possible freeze starting at 13:05:42, delay is 13.728
2018.12.04 13:11:57 1: Perfmon: possible freeze starting at 13:11:42, delay is 15.365
2018.12.04 13:39:54 1: Perfmon: possible freeze starting at 13:39:40, delay is 14.282
Ich habe ein relativ stabiles System und kenne diese Meldungen eigentlich nicht. Nach dem Server-Problem sind sie auch nicht mehr aufgetreten. Es sieht deshalb für mich so aus, als würde das Jabber-Modul innerhalb der main loop von FHEM - also nicht asynchron - ausgeführt und so zur Blockade der gesamten FHEM-Verarbeitung führen. Lässt sich dieses Verhalten ändern?
- Christian
Ich habe die Meldung auch immer gehabt.
Loesung (fuer mich). Entsprechende Zeile auskommentieren und dann gehts.
Seit einem Jahr keine negativen Effekte bemerkt.
Gruesse
Dirk
Hallo zusammen.
Bei mir läuft es eigentl. stabil. Einzige Ausnahme: Wenn ich aus Pidgin heraus den fhem-Client nach Authorisierung frage, stürzt fhem sofort ab.
Letzte Message im Log ist dann auch bei mir
Not a CODE reference at /usr/share/perl5/Net/XMPP/Protocol.pm line 3537
Backend ist prosody (0.9.12) und Pidgin als Client am Notebook (2.10.12).
Ist für mich nicht weiter tragisch, aber vielleicht hilft es jmd. ;)
Viele Grüße
rob
Hi Rob,
Zitat von: rob am 19 Dezember 2018, 19:10:38
Wenn ich aus Pidgin heraus den fhem-Client nach Authorisierung frage, stürzt fhem sofort ab.
das liegt an den falschen Modulversionen, schau mal weiter oben im Thread - wenn du die Modulversionen entsprechend installierst sollte das behoben sein.
Grüße,
BioS
Salü zusammen,
ich hätte da mal eine Frage bezüglich ejabberd und dem Modul mod_http_upload für FileTransfer
Es ist zwar kein Problem mit dem 70_Jabber.pm Modul, aber vielleicht hat der ein oder andere das ja laufen und kann mir auf die Sprünge helfen.
Problem: Ich bekomme immer ein: connect to mydomain port 5443: Verbindungsaufbau abgelehnt.
Ejabberd an sich läuft Problemlos mit tls auf dem Rpi. In meiner Fritzbox habe ich den Port 5443 auch bereits freigegeben aber bekomme trotzdem die Meldung.
Ich bin diverse ejabberd Themen und Wikis schon durch und habe das Gefühl, dass das Problem an einer Konfiguration der FB Internen Firewall liegt.
Komme aber an der Stelle nicht weiter.
ejabberd.yml
port: 5443
ip: "127.0.1.1"
module: ejabberd_http
request_handlers:
"upload": mod_http_upload
tls: true
protocol_options: 'TLS_OPTIONS'
dhfile: 'DH_FILE'
ciphers: 'TLS_CIPHERS'
..........
mod_http_upload:
docroot: "/home/ejabberd/upload"
put_url: "https://@HOST@:5443/upload"
access: local
max_size: 25000000 #25 MByte
thumbnail: false
file_mode: "0644"
dir_mode: "0777"
mod_http_upload_quota:
max_days: 2
Mein @HOST ist meine DNS.
Im ejabberd Log sehe ich auch keinen Fehler, der auf eine Falsche Konfiguration des selbigen hindeutet.
Jemand eine Idee?
Danke und Grüße,
Dirk
Ich versuche gerade folgende Modulversionen auf einem Raspi mit buster zu installieren (wegen FHEM Absturzproblemen im Zusammenhang mit Gajim):
XML::Stream 1.23 mit Net::XMPP 1.02
Nachdem ich die Debian Libs für Stream und Xmpp deinstalliert habe, konnte ich mit CPAN die entsprechenden Versionen installieren. Nun fehlt mir aber Net/Jabber.pm welches sich in der Version 2.0 nicht installieren lässt, da Test nicht erfolgreich durchlaufen werden.
Wenn ich mit APT die Lib installiere, werden als Abhängigkeiten aber wieder Stream und XMPP mit installiert. Ich drehe mich also im Moment irgendwie im Kreis. Hat dieses Problem schon jemand von euch gelöst?
UPDATE: Nach fünf weiteren Installationsversuchen liefen die Tests durch und Net::Jabber konnte installiert werden. FHEM ist aber immer noch der Meinung das es fehlt:
Can't locate Net/Jabber.pm in @INC
Installierte Versionen sehen nun wie folgt aus:
Net::XMPP
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/Net-XMPP-1.05.tar.gz
/home/andreas/perl5/lib/perl5/Net/XMPP.pm
Installed: 1.02_05
CPAN: 1.05 Not up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
XML::Stream
-------------------------------------------------------------------------
(no description)
D/DA/DAPATRICK/XML-Stream-1.24.tar.gz
/home/andreas/perl5/lib/perl5/XML/Stream.pm
Installed: 1.23
CPAN: 1.24 Not up to date
Darian Anthony Patrick (DAPATRICK)
dapatrick@cpan.org
Net::Jabber
-------------------------------------------------------------------------
(no description)
R/RE/REATMON/Net-Jabber-2.0.tar.gz
/home/andreas/perl5/lib/perl5/Net/Jabber.pm
Installed: 2.0
CPAN: 2.0 up to date
Ryan Eatmon (REATMON)
reatmon@mail.com
UPDATE: mittlerweile läuft der Jabberclient unter FHEM nun wieder mit den im letzten Beitrag genannten Versionen. Leider habe ich aber immer noch das Problem das ein Gajim Client FHEM zum Absturz bringt.
Not a CODE reference at /usr/share/perl5/Net/XMPP/Protocol.pm line 3537.
Ich hab die besagte Zeile, bzw. die Schleife auskommentiert in der Protocol.pm
Seit langer Zeit keine Probleme damit gehabt
Vielen Dank!
nach ca. 20 Abstürzen und diversen versuchen, alle möglichen Felermeldungen nachzugehen bringt mich das deutlich weiter. Ich habe auf jeden Fall nun endlich einen Connect zum meinem Server... Wenn es keine Probleme verursacht, dann bleibt das so.
Besser als alles bisher...
Grüße,
Niko
Da ich mein fhem Zuhause in einen lxc-Container umgezogen habe, musste ich die Pakete entsprechend des Wikis neu im Container Debian10 installieren.
Ich hielt mich zum Großteil an den Wiki-Eintrag: https://wiki.fhem.de/wiki/Jabber
Allerdings liegt das Paket libnet-xmpp-perl_1.02-3_all.deb mittlerweile im debian-archive. Der wget Aufruf muss folglich:
wget http://ftp.de.debian.org/debian-archive/debian/pool/main/libn/libnet-xmpp-perl/libnet-xmpp-perl_1.02-3_all.deb
lauten.
Zitat von: acw81 am 16 Oktober 2019, 10:24:04
...Wenn ich mit APT die Lib installiere, werden als Abhängigkeiten aber wieder Stream und XMPP mit installiert. Ich drehe mich also im Moment irgendwie im Kreis. Hat dieses Problem schon jemand von euch gelöst?
Das passierte mir auch.
Wenn man libnet-jabber-perl nach
dpkg -i libxml-stream-perl_1.23-2_all.deb
dpkg -i libnet-xmpp-perl_1.02-3_all.deb
installiert, passiert das nicht. Dann hat er die Abhängigkeiten erfüllt.
Kurz zusammengefasst, für Debian10:
apt-get remove libnet-xmpp-perl
apt-get remove libxml-stream-perl
apt-get remove libotr5 libotr5-dev
apt-get install build-essential
wget http://ftp.de.debian.org/debian-archive/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
apt-get install libnet-jabber-perl
Hallo,
ich hab seid kurzem keine Verbindung mehr zum Server.
ich sehe nur noch bei CONNINFO Jabber connect error (Connection refused)
Auf der Server Seite (Prosody) sehe ich in den log files gar nichts.
Die Firewall und das Netzwerk hab ich schon geprüft und andere XMPP Cliens könne sich mit meinem Server verbinden.
Wo kann ich noch ansetzen?
VG Denis
Zitat von: denis.robel am 03 Dezember 2020, 22:54:49
ich sehe nur noch bei CONNINFO Jabber connect error (Connection refused)
Der Port auf dem angegebenen server ist von fhem aus nicht erreichbar. Ich denke mal das ist kein Problem des Jabber moduls, sondern eher ein lokales Netzwerkproblem.
hab das Problem gefunden. Nach einem Routerupdate hat meine DNS auflösung nicht funktioniert...
Nun funktioniert wieder alles.
Guten Tag zusammen,
heute Nacht habe ich bei einer Installation (Raspberry Pi OS, Buster, aktuell) ein fhem update gemacht. Seit dem empfängt das Jabber Modul keine MUC Nachrichten mehr:
- Direkt Nachricht senden/empfangen geht
- MUC senden geht
- MUC empfangen geht nicht
Mit "geht nicht" ist gemeint, dass die Readings
MucLastSenderJID, MucLastMessage und MucMessage unverändert bleiben (auf dem letzten Stand von gestern).
Alles Weitere sieht gut aus:
- FHEM Kontakt tritt dem MUC bei
- FHEM Kontakt wird als online im MUC dargestellt
Das einzige in den logs, was ich zu Jabber finden kann, ist folgendes, was aber schon vor dem Update angezeigt wurde:
2021.02.06 00:01:38 1: PERL WARNING: Use of uninitialized value in regexp compilation at ./FHEM/70_Jabber.pm line 755.
Eine zweite fhem Installation (Gleiche Hardware/OS wie oben; bei der das update noch nicht durchgeführt wurde) in den gleichen MUCs, empfängt die Nachrichten nach wie vor.
Ich weiß dass sich das Jabber Modul nicht geändert hat, (Vergleich 70_Jabber.pm zwischen den Installationen) trotzdem klage ich mein Leid erstmal hier und hoffe das mir jemand helfen kann.
Viele Grüße,
efelon
Mit meinem letzten Versuch konnte ich das Problem beheben.
Ich musste MucRecvWhitelist explizit auf .*
setzen. Die Whitelist "richtig" setzen geht natürlich auch. Laut Hilfe werden standardmäßig keine MUC Nachrichten akzeptiert, warum das bis Gestern trotzdem funktioniert hat weiß ich nicht. Das oben genannte Attribut MucRecvWhitelist war vorher definitiv nie gesetzt.
Auf meiner zweiten Installation konnte ich das Problem reproduzieren und die Lösung verifizieren.
Eine Erklärung für das Verhalten kann ich allerdings nicht anbieten.
Hallo zusammen,
gestern bin ich auf den FHEM Docker Container umgestiegen und wollte heute die bekannten Abhängigkeiten / Versionen isntallieren, aber irgendwie klappt das nicht.
Ich hab das in der Vergangenheit schon einige male gemacht und immer mit Erfolg.
Im Docker Container habe ich aber leider keinen Erfolg.
Was mach ich:
sudo apt-get remove libnet-xmpp-perl
sudo apt-get remove libxml-stream-perl
sudo apt-get install build-essential
wget http://ftp.de.debian.org/debian-archive/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
sudo dpkg -i libxml-stream-perl_1.23-2_all.deb
sudo dpkg -i libnet-xmpp-perl_1.02-3_all.deb
sudo apt-get install libnet-jabber-perl
Wenn ich ein nachher / vorher Vergleich mache, sind die Versionen aber unverändert.
Hat jemand einen Tipp für mich oder hat das bereits in einem Docker Container gemacht?
Gruß, Thomas
Ich muss leider nochmal an ein Problem erinnern, das ich Ende 2018 (https://forum.fhem.de/index.php/topic,18967.msg867854.html#msg867854) gemeldet habe.
Heute nachmittag war jabber.de aus unbekannten Gründen offline. Das Jabber-Modul blockierte deshalb die gesamte FHEM-Installation:
fhem | 2021.10.30 15:18:55 1: Perfmon: possible freeze starting at 15:18:45, delay is 10.179
fhem | 2021.10.30 15:19:10 1: Perfmon: possible freeze starting at 15:19:01, delay is 9.897
fhem | 2021.10.30 15:19:25 1: Perfmon: possible freeze starting at 15:19:16, delay is 9.296
fhem | 2021.10.30 15:19:40 1: Perfmon: possible freeze starting at 15:19:31, delay is 9.636
fhem | 2021.10.30 15:19:55 1: Perfmon: possible freeze starting at 15:19:46, delay is 9.346
fhem | 2021.10.30 15:20:10 1: Perfmon: possible freeze starting at 15:20:01, delay is 9.467
fhem | 2021.10.30 15:20:25 1: Perfmon: possible freeze starting at 15:20:16, delay is 9.391
fhem | 2021.10.30 15:20:41 1: Perfmon: possible freeze starting at 15:20:31, delay is 10.043
fhem | 2021.10.30 15:20:55 1: Perfmon: possible freeze starting at 15:20:46, delay is 9.464
fhem | 2021.10.30 15:21:10 1: Perfmon: possible freeze starting at 15:21:01, delay is 9.677
fhem | 2021.10.30 15:21:25 1: Perfmon: possible freeze starting at 15:21:16, delay is 9.665
fhem | 2021.10.30 15:21:40 1: Perfmon: possible freeze starting at 15:21:31, delay is 9.821
fhem | 2021.10.30 15:21:55 1: Perfmon: possible freeze starting at 15:21:46, delay is 9.667
fhem | 2021.10.30 15:22:11 1: Perfmon: possible freeze starting at 15:22:01, delay is 10.137
fhem | 2021.10.30 15:22:25 1: Perfmon: possible freeze starting at 15:22:16, delay is 9.618
fhem | 2021.10.30 15:22:41 1: Perfmon: possible freeze starting at 15:22:31, delay is 10.638
fhem | 2021.10.30 15:22:56 1: Perfmon: possible freeze starting at 15:22:46, delay is 10.255
fhem | 2021.10.30 15:23:10 1: Perfmon: possible freeze starting at 15:23:01, delay is 9.966
fhem | 2021.10.30 15:23:25 1: Perfmon: possible freeze starting at 15:23:16, delay is 9.864
fhem | 2021.10.30 15:23:41 1: Perfmon: possible freeze starting at 15:23:31, delay is 10.035
fhem | 2021.10.30 15:23:55 1: Perfmon: possible freeze starting at 15:23:46, delay is 9.883
fhem | 2021.10.30 15:24:11 1: Perfmon: possible freeze starting at 15:24:01, delay is 10.287
fhem | 2021.10.30 15:24:25 1: Perfmon: possible freeze starting at 15:24:16, delay is 9.948
fhem | 2021.10.30 15:24:38 1: Perfmon: possible freeze starting at 15:24:31, delay is 7.617
fhem | 2021.10.30 15:26:39 1: Perfmon: possible freeze starting at 15:26:29, delay is 10.315
Man kann das Jabber-Modul leider nicht deaktivieren oder inaktiv schalten. Als Workaround hat bei mir nur geholfen, das Jabber-Modul mittels delete zu entfernen.
Es wäre aus meiner Sicht sinnvoll, wenn das Modul asynchron - also nicht-blockierend - arbeiten würde, um bei solchen unvermeidbaren Ausfällen nicht die gesamte FHEM-Instanz zu blockieren. Es wäre auch hilfreich, wenn man den Verbindungsaufbau über einen Schalter temporär deaktivieren könnte, ohne das Modul entfernen zu müssen.
Hallo, den untenstehen Thread scheinen nicht die richtigen Personen zu lesen.
Deshalb hier nochmal im Allgemein-Dauerthread zu jabber.
Zitat von: Zeitisen am 22 November 2021, 11:25:25Wenn ich eine Message mit
set JabberClientfhem msg xxxx@123.xxx FHEM Briefkasten offen
sende, dann erscheint die Meldungszeile im Client immer doppelt, also
FHEM Briefkasten offen
FHEM Briefkasten offen
Ich habe nirgendwo einen Hinweis für den Grund gefunden. Ich habe auch schon unterschiedliche Clients auf dem Handy probiert. Die verhalten sich alle gleich. Dino auf Ubuntu zeigt aber nur eine Zeile an.
Gibt es so etwas wie Betreff und Body und der wird dupliziert wenn ein Teil fehlt?
Hat jemand dazu eine Idee?
Bisher habe ich die Meldungen mit dem gleichen Account abgesandt wie ich sie empfangen habe. Lediglich der ResourceName war ein anderer. Dann bekomme ich auf meinem Handy immer die doppelte Meldung.
Jetzt habe ich einen eigenen Account für fhem erstellt. Und siehe da, die Meldung kommt nur einmal. Die Gründe dafür kann ich jetzt nicht nachvollziehen. Vielleicht gibt es eine Erklärung durch XMPP von irgendwelchen Spezialisten.
Ich habe mich schon etwas eingelesen. Stand der Technik wäre auf jeden Fall eine Omemo-Unterstützung. OTR bietet keine Ende-zu-Ende Verschlüsselung.
OTR funktioniert bei mir sowieso nicht, da ich nicht die passenden uralt-Module installiert habe.
Ich halte das auch für eine Einbahnstraße. Es kann keine Dauerlösung sein, immer von Hand alte Module nachzuinstallieren.
Irgendwann ist da Schluss und es geht gar nichts mehr.
Bitte, bitte versucht, ob man da nicht etwas aktualisieren kann. Meine Perl-Kenntnisse reichen dazu leider nicht aus.
Jabber/XMPP wäre das ideale System für Push-Nachrichten, aber man müsste es auf einen aktuellen Stand bringen.
Klar omemo wäre ganz nett. Hier gibts was via python: https://lab.louiz.org/poezio/slixmpp-omemo/-/tree/master
Aber andererseits, braucht man wirklich end-to-end encryption für ein paar push notifications?
Ja, braucht man das wirklich? Den meisten Leuten ist das egal. Die veröffentlichen jeden Furz auf Facebook. Aber wenn ich etwas sicher machen kann, dann tu ich es. Es gibt noch genug andere Lücken, die ich nicht beeinflussen kann.
Das Problem beim Jabber Modul ist ja nicht nur Omemo, sondern wohl die Abhängigkeiten von alten Versionen. Das führt zwangsläufig zu Instabilitäten und sollte so oder so behoben werden.
Diese Python Library kann ich im Moment noch nicht einordnen. Das ist ja wohl ein Bruchteil dessen was ich benötige, nämlich einen Client zu XMPP/jabber, der Omemo kann. Dann müsste ich den aber extern aufrufen wie etwa beim Mail senden. Das muss ich mir mal näher anschauen.
Eine komplette Integration ist sicher einfacher zu handhaben. Für mich ist im Moment die integrierte Lösung mit 70_jabber ohne Omemo ausreichend. MIttelfristig sollte sich da aber etwas tun.
Hallo zusammen,
nachdem es ja anscheinend immer noch genügend Leute gibt, die FHEM über XMPP Nachrichten verschicken lassen (dazu gehöre ich auch wieder), möchte ich einfach mal nachhören, wie es um das Modul 70_Jabber.pm bestellt ist bzw. fange auch mal eine Liste an, was ich mir von dem Modul in Zukunft wünschen würde.
Ich weiß, dass ich hier keine "Forderungen" stellen kann, da ich selber kein Entwickler, sondern "nur" Anwender bin, aber einfach mal eine Bestandsaufnahme machen, kann ja auch nichts schaden.
Ich würde mich sehr über eine Weiterentwicklung dieses Moduls freuen! Und bedanke mich auch ganz herzlich für die schon investierte Arbeit. Testen kann ich gerne und auch Feedback geben, bei allem anderen muss ich aber leider passen.
Hier die Liste:
- Modul auf non-blocking umbauen (falls der XMPP-Server nicht erreichbar ist)
- Integration des disable Attributs
- OMEMO-Verschlüsselung integrieren
- Abhängigkeit von alten Paketen entfernen / aktualisieren
- Möglichkeit der Übermittlung von Dateien, vornehmlich Bilder
Grüße vom Rhein
Rainer
Zitat von: dora71 am 01 März 2022, 16:19:17
Hier die Liste:
- Modul auf non-blocking umbauen (falls der XMPP-Server nicht erreichbar ist)
- Integration des disable Attributs
- OMEMO-Verschlüsselung integrieren
- Abhängigkeit von alten Paketen entfernen / aktualisieren
- Möglichkeit der Übermittlung von Dateien, vornehmlich Bilder
Grüße vom Rhein
Rainer
Ich schließe mich dem Dank an und würde mich auch sehr darüber freuen oder gibt es eine alternative wie Matrix?
Wäre toll - Danke!
Gruß
Andre
Edit:
Signal ist für mich eine alternative - wenn auch nicht perfekt (Matrix oder Jabber wären meine Favoriten) aber brauchbar und ich werde es versuchen.
https://wiki.fhem.de/wiki/Signalbot
Aktuell ist jabber.de wegen eines DDoS-Angriffs (https://www.jabber.de/ddos-angriff-downtime/) nicht erreichbar. Das Modul blockiert deshalb wieder die gesamte FHEM-Installation, wie bereits in den Jahren 2021 (https://forum.fhem.de/index.php/topic,18967.msg1183459.html#msg1183459) und 2018 (https://forum.fhem.de/index.php/topic,18967.msg867854.html#msg867854) gemeldet.
Man kann das Jabber-Modul leider nicht deaktivieren oder inaktiv schalten. Als Workaround hat bei mir nur geholfen, das Jabber-Modul mittels delete zu entfernen.
Aus meiner Sicht ist es problematisch, dass das Modul blockierend programmiert ist. Hat das Modul keinen aktiven Maintainer? Ich finde es ausgesprochen unglücklich, dass eine FHEM-Installation durch externe Faktoren derart beeinträchtigt werden kann.
Es wäre aus meiner Sicht sinnvoll, wenn das Modul asynchron - also nicht-blockierend - arbeiten würde, um bei solchen unvermeidbaren Ausfällen nicht die gesamte FHEM-Instanz zu blockieren. Es wäre auch hilfreich, wenn man den Verbindungsaufbau über einen Schalter temporär deaktivieren könnte, ohne das Modul entfernen zu müssen.
Edit: Zur Diagnose habe ich die Datei jabberdebug.log angehängt. Auch wenn im Modul das Attribut verbose = 5 gesetzt ist, enthält das FHEM-Log keine anderen Einträge als
2022.08.30 07:15:55 1: Perfmon: possible freeze starting at 07:15:45, delay is 10.091
Ich habe mir mein eigenes tool go-sendxmpp (https://salsa.debian.org/mdosch/go-sendxmpp) geschrieben, das ich für diverse Benachrichtigungen nutze u.a. auch für FHEM: https://forum.fhem.de/index.php?topic=93892.0
Ich habe mir ein kleines wrapperscript geschrieben, das ich von FHEM aufrufe und das wartet bis der server erreichbar ist und dann die Nachricht raus schickt. Soweit ich das beurteilen kann blockiert der Scriptaufruf FHEM nicht, zumindest ist mir da nichts aufgefallen.
Mein wrapperscript sieht so aus:
#! /bin/bash
CONNECTIVITY=false
if nc -zw1 mdosch.de 5222
then
CONNECTIVITY=true
fi
while [ $CONNECTIVITY == false ]
do
sleep 60
if nc -zw1 mdosch.de 5222
then
CONNECTIVITY=true
fi
done
echo "$@" | go-sendxmpp EMPFÄNGER1 EMPFÄNGER2
mdosch.de und 5222 müssen natürlich durch den verwendeten server und port ausgetauscht werden.
Nachtrag:
Go-sendxmpp kann auch Bilder verschicken (flag --http-upload). OMEMO kann es leider nicht, das ist mir zu kompliziert als dass ich das einbauen würde. Das würde ich nur verhunzen. Go-sendxmpp kann aber die neue PGP-Verschlüsselung (Ox), die leider noch nicht ganz fertig ist (noch keine Ünterstützung für Dateitransfers und Gruppenchats) und bisher nur von wenigen clients unterstützt wird (profanity und Gajim).
Mein Internet funktioniert aktuell nicht und da ist mir wieder mal die Abhängigkeit aufgefallen, die ich bisher nicht auflösen konnte.
Ursache für das Blocking des kompletten FHEM ist bei mir auch das jabber-Modul. Rausgefunden habe ich es mit apptime, das ich bis eben noch nicht kannte.
Anstatt das device aber komplett zu löschen, habe ich als Workaround folgendes gesetzt:
attr xmpp PollTimer 999999999999999
Das funktioniert bisher.
Ggf. lässt sich das auch mit einem Ping-Check nach Extern automatisieren, sofern der nicht auch blockt ;-)
Hallo zusammen und allen hier im Forum ein gutes neues Jahr 2023.
Ich gebe das Jabber Modul immer noch nicht auf, da es eigentlich alle Funktionen enthält, die ich brauche.
Hauptmanko ist ja das blockierende Verhalten des Moduls.
Interessanterweise habe ich festgestellt, dass im Jabber Modul zumindest das Blocking Modul (was ja blocking verhindern soll) geladen wird, weshalb es im Wiki auch unter den Modulen gelistet ist, s. https://wiki.fhem.de/wiki/Blocking_Call#Module.2C_die_Blocking.pm_verwenden
Allerdings habe ich nirgendwo einen BlockingCall() Aufruf im Modul gefunden :o oder habe ich etwas übersehen?
Wenn man sich dieses Modul anschaut, würde es dann (im ersten Schritt) reichen, die Funktion Jabber_CheckConnection($)
mit einem BlockingCall() zu versehen?
Sehr gerne würde ich helfen, diesen Zustand zu beseitigen, habe aber sehr begrenzte Ahnung von Perl und/oder dem BlockingCall.
Bin aber gerne bereit, helfend mit dabei zu sein, falls sich mindestens noch ein "Jemand" findet, dem es genauso am Herzen liegt wie mir.
Würde mich freuen, wenn das hier ein erster (oder weiterer) Anstoß für eine Weiterentwicklung des Moduls ist.
Neujahrsgrüße
Rainer
Ist das Modul tot? Lohnt es sich nicht es zu installieren?
Zitat von: Joesky am 14 Februar 2024, 15:30:28Ist das Modul tot?
Es wird zumindest nicht mehr aktiv weiterentwickelt :(
Ich habe es aber immer noch in Nutzung und bin auch soweit zufrieden damit. Solange Dein XMPP Server stabil läuft, gibt es auch kein Problem mit dem Modul.
Es gibt noch andere Möglichkeiten, falls es nur um die Übermittlung von Nachrichten via XMPP/Jabber geht.
Zum Beispiel ein Shell-Script aufrufen, welches go-sendxmpp aufruft.
Allerdings kann das Modul ja auch auf ankommende Nachrichten reagieren.
Sich das Modul anzuschauen lohnt sich auf jeden Fall.
Ich hab das Modul gestern ausprobiert: Die Versionen der Bibliotheken ist höher als im Wiki angegeben und das FHEM startet (deswegen?) öfter von selbst neu durch. Und auch wenn mein XMPP Server stabil läuft, ist das mögliche blockieren der FHEM Instanz ein no go. Schade.