[gelöst] OpenWRT und MQTT via fhem

Begonnen von Dlay, 02 April 2017, 20:18:38

Vorheriges Thema - Nächstes Thema

Dlay

Hallo zusammen,

ich habe das MAX! System und bin von FHEM einigermaßen begeistert da es MAX! quasi out-of-the-box unterstützt.
Darüber hinaus habe ich so einige Sonoff (ESP8266) Devices mit denen ich so rumspiele. Die nutzen nach dem umflashen auf ESPurna allerdings MQTT.

OpenWRT ist auf meinem Router installiert, FHEM auch und Mosquitto auch.

Schon allein wenn ich den Broker bekannt geben will, via "defince MQTT MQTT 127.0.0.1:1883 bekomme ich die Meldung das das MQTT Perl Modul fehlt.

Versuche dieses über CPAN nachzuinstallieren scheitern allerdings weil es kein gcc,make etc. gibt.

Also daher meine Frage:

Wie komme ich an das Net::MQTT:Simple Modul ran welches von FHEM offenbar verwendet wird, sich aber nicht im "Lieferumfang" befindet ?

Gruß
Dlay


Thorsten Pferdekaemper

Hi,
verschieb das am Besten mal in den neuen MQTT-Bereich. Dort könnte Dir geholfen werden.
Gruß,
    Thorsten
FUIP

Rince

Hi,

ich denke das es eher eine openWRT Sache ist.

Aber egal. Schau mal, ob das weiter hilft:

http://search.cpan.org/~juerd/Net-MQTT-Simple-1.13/lib/Net/MQTT/Simple.pm#MANUAL_INSTALLATION

Da steht:
Zitat
MANUAL INSTALLATION ^

If you can't use the CPAN installer, you can actually install this module by creating a directory Net/MQTT and putting Simple.pm in it. Please note that this method does not work for every Perl module and should be used only as a last resort on systems where proper installers are not available.

To view the list of @INC paths where Perl searches for modules, run perl -V. This list includes the current working directory (.). Additional include paths can be specified in the PERL5LIB environment variable; see perlenv.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Thorsten Pferdekaemper

@Rince: Warum packt ihr MQTT-Begeisterten denn nicht einfach das bisschen Coding in FHEM mit rein? So viel ist es ja nicht, oder?
Gruß,
   Thorsten
FUIP

eisler

Net::MQTT:Simple wird von den FHEM MQTT Modulen nicht benötigt.
Was benötigt wird ist Net::MQTT und das wird mit FHEM ausgeliefert: https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/Net/MQTT

Grüße
Stephan

Rince

Das habe ich mich schon immer gefragt:
Wieso kann ein Modul nicht seine Abhängigkeiten einfach selber besorgen und installieren?
Schlimmstenfalls muss man halt sein Admin-passwort eingeben.

Für Linux ist es eh easy, und für Windows gäbe es Chocolatey als Paketmanager. Damit wäre es auch easy. Wer das nicht will, kann immer noch händisch installieren.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Dlay

#6
Also wenn ich die aktuelle Version 5.8 entpacke und dann folgendes define absetze:

define MQTTBroker MQTT 127.0.0.1:1883

dann kommt unter dem Eingabefeld die Meldung:

Cannot load module MQTT

Das Logfile teilt dann folgendes mit:

2017.04.03 18:59:58 1: reload: Error:Modul 00_MQTT deactivated:
Can't locate Module/Pluggable.pm in @INC (you may need to install the Module::Pluggable module) (@INC contains: . /usr/lib/perl5/5.22 ./FHEM ./FHEM/lib) at FHEM/lib/Net/MQTT/Message.pm line 9.
BEGIN failed--compilation aborted at FHEM/lib/Net/MQTT/Message.pm line 9.
Compilation failed in require at ./FHEM/00_MQTT.pm line 74.
BEGIN failed--compilation aborted at ./FHEM/00_MQTT.pm line 74.

2017.04.03 18:59:58 0: Can't locate Module/Pluggable.pm in @INC (you may need to install the Module::Pluggable module) (@INC contains: . /usr/lib/perl5/5.22 ./FHEM ./FHEM/lib) at FHEM/lib/Net/MQTT/Message.pm line 9.
BEGIN failed--compilation aborted at FHEM/lib/Net/MQTT/Message.pm line 9.
Compilation failed in require at ./FHEM/00_MQTT.pm line 74.
BEGIN failed--compilation aborted at ./FHEM/00_MQTT.pm line 74.

Also funktioniert MQTT nicht out-of-the-box.. :-(

Was also kann ich tun ?
Wo ist dies Pluggable.pm ?

Ich habe schon versucht es aus den Sourcen einfach in eine Pluggable.pm Datei zu kopieren aber es wird weiterhin behauptet die Datei sei nicht zu finden.

Also in fhem-5.8/FHEM/lib ein touch Pluggable.pm gemacht.
Den Quelltext von hier hineinkopiert:

http://cpansearch.perl.org/src/SIMONW/Module-Pluggable-5.2/lib/Module/Pluggable.pm

fhem neu gestartet und wieder ein

define MQTTBroker MQTT 127.0.0.1:1883 abgesetzt ergibt folgendes:

2017.04.03 19:07:21 0: Server shutdown
2017.04.03 19:07:22 1: Including /mnt/sda2/fhem-5.8/fhem.cfg
2017.04.03 19:07:22 3: telnetPort: port 7072 opened
2017.04.03 19:07:23 3: WEB: port 8083 opened
2017.04.03 19:07:23 3: WEBphone: port 8084 opened
2017.04.03 19:07:24 3: WEBtablet: port 8085 opened
2017.04.03 19:07:24 2: eventTypes: loaded 0 events from ./log/eventTypes.txt
2017.04.03 19:07:24 1: Including ./log/fhem.save
2017.04.03 19:07:24 1: usb create starting
2017.04.03 19:07:26 1: usb create end
2017.04.03 19:07:26 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth. telnetPort has no associated allowed device with password/globalpassword. Running with root privileges. Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2017.04.03 19:07:26 0: Featurelevel: 5.8
2017.04.03 19:07:26 0: Server started with 9 defined entities (fhem.pl:13447/2017-02-19 perl:5.022001 os:linux user:root pid:6709)
2017.04.03 19:08:28 1: reload: Error:Modul 00_MQTT deactivated:
Can't locate Module/Pluggable.pm in @INC (you may need to install the Module::Pluggable module) (@INC contains: . /usr/lib/perl5/5.22 ./FHEM ./FHEM/lib) at FHEM/lib/Net/MQTT/Message.pm line 9.
BEGIN failed--compilation aborted at FHEM/lib/Net/MQTT/Message.pm line 9.
Compilation failed in require at ./FHEM/00_MQTT.pm line 74.
BEGIN failed--compilation aborted at ./FHEM/00_MQTT.pm line 74.

2017.04.03 19:08:28 0: Can't locate Module/Pluggable.pm in @INC (you may need to install the Module::Pluggable module) (@INC contains: . /usr/lib/perl5/5.22 ./FHEM ./FHEM/lib) at FHEM/lib/Net/MQTT/Message.pm line 9.
BEGIN failed--compilation aborted at FHEM/lib/Net/MQTT/Message.pm line 9.
Compilation failed in require at ./FHEM/00_MQTT.pm line 74.
BEGIN failed--compilation aborted at ./FHEM/00_MQTT.pm line 74.

Was nun ?

In der besagten Zeile 74 steht übrigens folgendes:

use Net::MQTT::Message;

Nun bin ich ganz verwirrt, da Message ja bei Fhem enthalten ist.. :-/


Dlay

#7
Hallo zusammen,

ich habe gemerkt das der Fhem Net/MQTT Ordner leer war. Obwohl ich das Archiv grad frisch entpackt habe.

Also den Fhem Net/MQTT Pfad nochmal aus dem Archiv aufgefüllt.

Danach meldet sich dann das Log mit Fehlern in:

Pluggable.pm (hab ich dann  in der Perl Installation von OpenWRT nachgerüstet)

Dann noch eine Object.pm (im Pluggable Unterverzeichnis)
Dann noch eine InnerPackage.pm (im Devel Unterverzeichnis)

Sowie eine if.pm (im Perl Hauptverzeichnis)

Und siehe da MQTT läuft..

Also die Pfade:

/usr/lib/perl5/5.22/Module/Pluggable.pm
/usr/lib/perl5/5.22/Module/Pluggable/Object.pm
/usr/lib/perl5/5.22/Devel/InnerPackage.pm
/usr/lib/perl5/5.22/if.pm

befüllt und schon geht es. Hat ja nur viele Stunden gedauert.

Jetzt muss ich nur noch FHEM und MQTT verstehen dann kann es losgehen.. :-D

Gruß
Dlay



Rince

Toll  :)
Du könntest den Titel noch editieren und ein [gelöst] vor den Titel schreiben. Dann haben es User später leichter mit der Suche.
Dazu deinen 1. Thread editieren. Dann hast du Zugriff auf das Thema.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Dlay

Tja also letzten Endes hab ich mir dann doch einen Raspberry Pi gekauft.

Fhem in vollem Umfang auf OpenWRT zum laufen zu bringen hat bei mir leider nicht geklappt.
Ich habe es wirklich lange und ausgiebig versucht. Aber einige Perl Module gibt es leider nicht oder sie lassen sich nicht kompilieren.

Das ist schade, eigentlich war die Idee das der Router alles zusammen macht. Dafür hatte ich extra einen sehr performanten Router gekauft und umgeflasht.

Naja der Raspi macht es halt besser.. verbraucht aber leider auch mehr Strom..