Wieso bekomme ich bei define mqtt MQTT 127.0.0.1:1883
die Fehlermeldung "Cannot load module MQTT"?
Die Dateien liegen auf dem Server und die Rechte sehen gut aus:
christian@fhem:/opt/fhem/FHEM$ ls -l 00_MQ*
-rw-r--r-- 1 fhem dialout 16549 Okt 23 08:08 00_MQTT2_SERVER.pm
-rw-rw-rw- 1 fhem dialout 31171 Sep 19 09:13 00_MQTT.pm
Moin,
Note: this module is based on Net::MQTT which needs to be installed from CPAN first.
dran gedacht?
LG
Andreas
fehlende perl-module ?
schau mal hier
https://forum.fhem.de/index.php?topic=90547.0 (https://forum.fhem.de/index.php?topic=90547.0)
Darüber nachgedacht, statt mqtt mqtt2_client zu nutzen?
Dürfte manches vereinfachen...
Zitat von: Beta-User am 10 November 2018, 17:29:41
Darüber nachgedacht, statt mqtt mqtt2_client zu nutzen?
Dürfte manches vereinfachen...
Kannte ich noch nicht, klingt besser.
Dort bekomme ich aber auch eine Fehlermeldung, wenn ich es definieren möchte:
define MQTT2_SERVER MQTT2_SERVER 1883
.
Dann kommt "MQTT2_SERVER: Can't open server port at 1883: Address already in use"
Ich habe mal die fhem.cfg durchsucht, ich finde keinen Eintrag der auf den Port 1883 verweist.
Woher kann das kommen? Auf Port 1884 läuft er.
Auf Port 1883 läuft vermutlich noch der "richtige" MQTT-Server ...
Achtung, bitte folgendes im Hinterkopf behalten:
Für mqtt2 entweder
- mosquitto + mqtt2_client + mqtt2_Device oder
- mqtt2_Server + mqtt2_device
Zitat von: OdfFhem am 11 November 2018, 10:26:20
Auf Port 1883 läuft vermutlich noch der "richtige" MQTT-Server ...
Ich bekomme folgndes angezeigt:
christian@fhem:~$ sudo apt-get remove mosquitto mosquitto-clients
[sudo] password for christian:
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:
libc-ares2 libev4 libmosquitto1 libwebsockets8
Verwenden Sie »sudo apt autoremove«, um sie zu entfernen.
Die folgenden Pakete werden ENTFERNT:
mosquitto mosquitto-clients
0 aktualisiert, 0 neu installiert, 2 zu entfernen und 0 nicht aktualisiert.
Nach dieser Operation werden 467 kB Plattenplatz freigegeben.
Möchten Sie fortfahren? [J/n]
Was ist denn da noch installiert?
Und was muß beim mqtt2_server bei "autcreate" drin stehen?
autocreate
If set, MQTT2_DEVICES will be automatically created upon receiving an unknown message.
1, on, enable, true?
Steht bei mir auf 1.
Mosquitto-clients kannst du installiert lassen; das enthält mosquitto_sub, und damit kann man auch den mqtt2-server "abhören", was manchmal nützlich ist.
Ich habe Mosquitto jetzt erst mal doch deinstalliert.
Dann in fhm den Server auf 1883 gestellt und zur Sicherheit mal neu gestartet.
Internals:
DEF 1883
FD 23
NAME MQTT2_SERVER
NR 458
PORT 1883
STATE Initialized
TYPE MQTT2_SERVER
READINGS:
2018-11-11 17:12:18 nrclients 0
2018-11-11 17:12:18 state Initialized
clients:
retain:
Attributes:
autocreate 1
Aber es wird keiner der bis jetzt 2 Clients gefunden.
Die esp's hast du nach der Einrichtung des mqtt2-Servers mal neu gestartet?
Pw usw. passen?
Zitat von: Beta-User am 11 November 2018, 17:25:58
Die esp's hast du nach der Einrichtung des mqtt2-Servers mal neu gestartet?
Pw usw. passen?
Ja, die starten sich nach einer Änderung der MQTT Config automatisch neu.
Wo stelle ich die ein? Ich dachte rein intern bräuchte ich keins.
Na ja, einheitlich halt. Habe nur die Punkte gesehen...
Nein, ich meinte muß ich was am Server einstellen?
In der Commandref steht: to set user/password use an allowed instance and its basicAuth feature (set/attr)
Wie richte ich DAS ein? Meine WEB Instanz ist nur intern verfügbar, also nicht geschützt.
Allowed wird für mqtt2 eingerichtet wie für FHEMWEB auch. Hat nix miteinander zu tun, web und mqtt2. Kann aber gleich sein, das user/Passwort-Paar; dann einfach den mqtt2-Server mit als Instanz in das betr. allowed aufnehmen...
Ich habe damals über folgende Seite mein fhem eingerichtet und abgesichert: https://www.meintechblog.de/2016/05/fhem-server-auf-dem-raspberry-pi-in-weniger-als-einer-stunde-einrichten/ (https://www.meintechblog.de/2016/05/fhem-server-auf-dem-raspberry-pi-in-weniger-als-einer-stunde-einrichten/)
Dort steht zum Thema Absicherung:
ZitatSofern man auch außerhalb des eigenen Netzwerks auf FHEM zugreifen möchte, sollte man den Zugriff per Passwort sichern. Dazu zählt der klassische Webzugriff, der standardmäßig per Port 8083 erreichbar ist.
Als erstes muss man per Terminal einen Benutzernamen-Passwort-String im Base64-Format erzeugen. Das sieht dann bspw. so aus (jay ist der Benutzername und meintechblog das Passwort):
echo -n jay:meintechblog | base64
Als Ergebnis wird der String
amF5Om1laW50ZWNoYmxvZw==
ausgespuckt, welcher gleich in FHEM benötigt wird.
Im FHEM-Interface gelangt man über den Menüpunkt Everything und WEB zu den Parametereinstellungen des betreffenden Zugriffselements, welches den Webservice auf Port 8083 zur Vefügung stellt.
Hier wählt man das Attribut basicAuth (1) und trägt im nachfolgenden Textfeld den ermittelten base64-String ein (2).
Bestätigt wird die Eingabe über einen Druck auf den Button attr (3). Jetzt wird man bereits nach den gerade hinterlegten Logindaten gefragt, welche nun eingegeben werden müssen.
Das Attribut "basicAuth" finde ich beim MQTT2_Server aber nicht.
Warum nimmt du nicht die infos aus dem wiki? Raspberry pi und quick-start...
Da steht dann auch was von allowed!
Wer veraltete externe Quellen nutzt, braucht sich nicht zu wundern, wenn es nicht funktioniert.
Und warum nimmt du nicht einfach das Stichwort für die sufu, das steht einen (!) Beitrag weiter oben????
Ich habe fhem schon VOR dem verlinkten Artikel genutzt und den Server dann irgendwann als der Artikel raus kam neu aufgesetzt.
Keine Ahnung ob zum damaligen Zeitpunkt der Artikel schon veraltet war, aber ich denke nicht. Er weiß ja eigentlich was er schreibt.
Seitdem ist meine Config immer wieder umgezogen, aber ich habe nie wiederetwas komplett neu aufgesetzt.
Also wieso sollte ich dann bis jetzt die "allowed" Funktion hätte nutzen oder kennen sollen?
Seis drum: allowed ist eingerichtet, der MQTT2 Server findet trotzdem kein Gerät.
Internals:
NAME allowedWEB
NR 459
STATE validFor:MQTT2_SERVER
TYPE allowed
validFor MQTT2_SERVER
Helper:
DBLOG:
state:
logdb:
TIME 1542017242.69561
VALUE validFor:MQTT2_SERVER
READINGS:
2018-11-12 11:07:22 state validFor:MQTT2_SERVER
Attributes:
basicAuth { "$user:$password" eq "christian:MEINPW" }
validFor MQTT2_SERVER
Den Basic habe ich geschaltet, der POW schickt sowieso eigentlich pausenlos Werte...
Wie dem auch sei...
Habe ich das jetzt dahingehend richtig verstanden: es gibt 2 esp's, von denen nur einer als mqtt2-device per autocreate angelegt wird?
Was sagt das fhem-log dazu, was siehst du bei mosquitto_sub, wenn du den mqtt2-server damit abhörst? (Nicht irritieren lassen, dieser client spricht auch mit anderen Servern...)