Neues Modul: 70_Jabber.pm

Begonnen von BioS, 18 Januar 2014, 11:51:20

Vorheriges Thema - Nächstes Thema

spikeh1

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

ThomasMagnum

#166
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

spikeh1

#167
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.

BamXP

#168
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...
RPi 3b+ - Raspbian Stretch Lite  - FHEM 5.7 - DBlog - Selbstbau CUL (FS20) - JeelinkClone für LaCrosse -  mySensors GW

BioS

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
FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung

spikeh1

#170
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

BioS

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
FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung

spikeh1

Danke für die Mühe und deine Rückmeldung.

MfG

BamXP

#173
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
RPi 3b+ - Raspbian Stretch Lite  - FHEM 5.7 - DBlog - Selbstbau CUL (FS20) - JeelinkClone für LaCrosse -  mySensors GW

spikeh1

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

BioS

Na also freut mich, Danke für eure Rückmeldung :)

FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung

spikeh1

#176
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

BamXP

#177
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 Uhr
Problem 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


RPi 3b+ - Raspbian Stretch Lite  - FHEM 5.7 - DBlog - Selbstbau CUL (FS20) - JeelinkClone für LaCrosse -  mySensors GW

Turbokid

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?

BioS

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 ;)
FHEM auf Debian in ESXi5 VM
Homematic mit HMLAN
Raspi mit Pilight für Relais der Heizung