MQTT - RFID - Reader

Begonnen von gloob, 12 Januar 2019, 18:56:40

Vorheriges Thema - Nächstes Thema

Frank_Huber

Zitat von: betateilchen am 24 Mai 2019, 13:42:05
Die Daten für den MQTT Server und seinen Port sind nicht hardcoded... und die für WLAN auch nicht.
Wer richtig lesen kann ist klar im Vorteil.
Hattest ja nur von User/Pass geschrieben. mein Fehler. sorry.

gloob

Na dann bin ich ja froh, dass es jetzt geht mit der V1.5.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

betateilchen

#77
Falls Dich interessiert, wie die Sache mit SSL Verbindungen funktionieren kann, hier ein paar Gedanken dazu.


//#include <WiFiClient.h>
#include <WiFiClientSecure.h>

...

//WiFiClient wifi;
WiFiClientSecure wifi;



1558723239: New connection from 79.xxx.yyy.zzz on port 8883.
1558723240: New client connected from 79.xxx.yyy.zzz as RFID_Reader (p2, c1, k10, u'uuu').


Da mein bei Amazon Web Services laufender mqtt Server ein Zertifikat von letsencrypt benutzt, brauche ich das CA-Zertifikat nicht im Sketch selbst zu hinterlegen.

Problem dabei: Mit dieser Methode funktionieren dann Verbindungen ohne SSL nicht mehr. Man sollte also bei der Konfiguration der mqtt Verbindung noch einen Parameter "use SSL" ergänzen, der dann für eine Entscheidung sorgt, welches WiFiClient Objekt instanziiert bzw. verwendet werden soll. Vermutlich kann man sich nicht darauf verlassen, dass immer nur port 1883 oder 8883 verwendet wird, sonst könnte man die Entscheidung schon am port festmachen.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

gloob

Neue Firmware im ersten Post.

Durch gleichzeitiges Drücken und Halten der 3 Buttons kann der Reader auf Werkseinstellungen zurück gesetzt werden.
MQTT und Wifi Parameter müssen/können danach neu eingestellt werden.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

CarstenF

Hi zusammen,
Vielen Dank für das Projekt, ist für mich wieder ne schöne Idee zum nachbauen. Leider bekomme ich den mqtt Teil nicht hin....
Habe die Firmware problemlos geflasht. Der Wemos ist im Wlan, Die Buttons geben im Serial Monitor auch an, das sie ihren Dienst verrichten. Soweit so gut. (RFID Reader habe ich noch nicht dran, ist noch unterwegs, ist aber vermtl. erstmal o Bedeutung oder?)

Mein MQTT Server läuft auf den Fhem-PI unter Port 1883. User o. Passwort habe ich nicht eingerichtet (ok, sollte man....aber ist jetzt grad so)
Meine anderen mqtt Devices (tasmota und Konsorten) liefern artig ihre messages ab. Sowohl im mqtt-Programm auf dem Mac, als auch in FHEM.
ich habe jetzt schon bei der Einrichtung die Benutzer und PW Felder frei gelassen und auch mal was eingetippt. Den Server und port habe ich korrekt eingegeben. Beide Optionen liefern keine Werte. Auch die Groß / Kleinschreibung bei RFID_Reader / rfid_reader habe ich bei den Subscribes bzw. den Topics jetzt schon verändert. Jetzt sehe ich gerade den Wald vor lauter Bäumen nicht. Wo könnte mein Fehler liegen? Gruß Carsten
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

gloob

Zitat von: CarstenF am 28 Mai 2019, 08:50:36
Hi zusammen,
Vielen Dank für das Projekt, ist für mich wieder ne schöne Idee zum nachbauen. Leider bekomme ich den mqtt Teil nicht hin....
Habe die Firmware problemlos geflasht. Der Wemos ist im Wlan, Die Buttons geben im Serial Monitor auch an, das sie ihren Dienst verrichten. Soweit so gut. (RFID Reader habe ich noch nicht dran, ist noch unterwegs, ist aber vermtl. erstmal o Bedeutung oder?)

Mein MQTT Server läuft auf den Fhem-PI unter Port 1883. User o. Passwort habe ich nicht eingerichtet (ok, sollte man....aber ist jetzt grad so)
Meine anderen mqtt Devices (tasmota und Konsorten) liefern artig ihre messages ab. Sowohl im mqtt-Programm auf dem Mac, als auch in FHEM.
ich habe jetzt schon bei der Einrichtung die Benutzer und PW Felder frei gelassen und auch mal was eingetippt. Den Server und port habe ich korrekt eingegeben. Beide Optionen liefern keine Werte. Auch die Groß / Kleinschreibung bei RFID_Reader / rfid_reader habe ich bei den Subscribes bzw. den Topics jetzt schon verändert. Jetzt sehe ich gerade den Wald vor lauter Bäumen nicht. Wo könnte mein Fehler liegen? Gruß Carsten

Hallo,

Kannst du bitte mal ein Log von der Arduino Console hier rein stellen?
Vielleicht finden wir so den Fehler.

Wenn du kein Username und Passwort für MQTT hast sollten die Felder beim Einrichten der WLAN Verbindung auf jeden Fall leer bleiben.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

CarstenF

#81
Hi,
also den ersten Fehler habe ich gefunden. Die voreingestellte IP vom mqtt Server war noch im hochgeladenen Sketch. Meine Änderung ein der Anmeldung hat er nicht übernommen. Das habe ich im Sketch jetzt geändert und meinen Server eingetragen. Hochgeladen. Jetzt wird mir das auch so angezeigt. Kommt aber immer noch nichts. Hier mal die Konsole...

0:08:42.904 -> *WM: Handle root
10:08:48.315 -> *WM: Scan done
10:08:48.315 -> *WM: Ubiqiti
10:08:48.315 -> *WM: -42
10:08:48.315 -> *WM: CelenoInitialAP74057C
10:08:48.315 -> *WM: -56
10:08:48.315 -> *WM: Avantar
10:08:48.315 -> *WM: -60
10:08:48.315 -> *WM: ASUS
10:08:48.315 -> *WM: -62
10:08:48.315 -> *WM: UPC71F8457
10:08:48.315 -> *WM: -65
10:08:48.315 -> *WM: CelenoInitialAPA438A3
10:08:48.315 -> *WM: -66
10:08:48.315 -> *WM: Unitymedia WifiSpot
10:08:48.315 -> *WM: -71
10:08:48.351 -> *WM: FRITZ!Box 7490
10:08:48.351 -> *WM: -74
10:08:48.351 -> *WM: WLAN-317125
10:08:48.351 -> *WM: -92
10:08:48.351 -> *WM: Sent config page
10:09:12.726 -> *WM: WiFi save
10:09:12.726 -> *WM: Parameter
10:09:12.726 -> *WM: server
10:09:12.726 -> *WM: 192.168.1.50
10:09:12.761 -> *WM: Parameter
10:09:12.761 -> *WM: port
10:09:12.761 -> *WM: 1883
10:09:12.761 -> *WM: Parameter
10:09:12.761 -> *WM: user
10:09:12.761 -> *WM:
10:09:12.761 -> *WM: Parameter
10:09:12.761 -> *WM: pass
10:09:12.761 -> *WM:
10:09:12.761 -> *WM: Parameter
10:09:12.761 -> *WM: device_name
10:09:12.761 -> *WM: RFID_Reader
10:09:12.761 -> *WM: Sent wifi save page
10:09:14.763 -> *WM: Connecting to new AP
10:09:14.763 -> *WM: Connecting as wifi client...
10:09:18.437 -> *WM: Connection result:
10:09:18.437 -> *WM: 3
10:09:18.510 -> Should save config
10:09:18.510 -> wifi connected
10:09:18.510 -> saving MQTT config
10:09:18.510 -> failed to open config file for writing
10:09:18.510 -> {"mqtt_server":"192.168.1.50","mqtt_port":"1883","mqtt_user":"","mqtt_pass":"","mqtt_device_name":"RFID_Reader"}setup buttons
10:09:18.510 -> setup mqtt
10:09:18.510 -> MQTT IP: 192.168.1.50
10:09:18.510 -> MQTT Port: 1883
10:09:18.510 -> MQTT device name: RFID_Reader
10:09:18.543 -> MQTT user name:
10:09:18.543 -> MQTT password:
10:09:18.577 -> setup rfid
10:09:32.480 -> button1 pressed


Update: Mist, muß jetzt zur Arbeit. Werde morgen mal weiterfrickeln. Vielen Dank trotzdem schon mal für den Tip. Werde Weiterberichten.
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

betateilchen

Zitat von: CarstenF am 28 Mai 2019, 10:16:48
Die voreingestellte IP vom mqtt Server war noch im hochgeladenen Sketch. Meine Änderung ein der Anmeldung hat er nicht übernommen.

10:09:18.510 -> failed to open config file for writing

Das dürfte auf ein Konfigurationsproblem Deiner IDE zurückzuführen sein, deshalb wurden Deine eingegebenen Daten nicht gespeichert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Frank_Huber

kein SPIFFS eingestellt?

CarstenF

So, mal kurz von der Arbeit,
erstmal mußte ich mal schauen was SPIFFS ist.  *schäm* Sei´s drum.
Also der Flash Vorgang hatte reibungslos funktioniert. Dort wurde in der IDE kein Fehler angezeigt. Das Log ist vom Serial Monitor beim (NEU)Start des Wemos.
Wo ich SPIFFS in der IDE einstelle muß ich später, wenn ich wieder zu Hause bin, mal nachschauen. Hatte die Einstelllungen eigentlich so wie im ersten POST von gloob übernommen. Vorher hatte ich auch ein paar ArduinoNanos geflasht, ohne das ich dort irgendwas in Sachen SPIFFS einstellen mußte. Denke mal, es ist nur ne blöde Kleinigkeit die ich übersehe.
Freu mich aber über Eure Hilfe.

Gruß C.
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

Frank_Huber

ich bin auch nicht der Profi, aber der SPIFFS ist der Speicher worin Einstellungen gespeichert werden können.
stellst Du zusammen mit der Flash Größe des ESP ein. (ist auch im Screen im ersten Post so sichtbar.)

gloob

Zitat von: CarstenF am 28 Mai 2019, 13:00:15
So, mal kurz von der Arbeit,
erstmal mußte ich mal schauen was SPIFFS ist.  *schäm* Sei´s drum.
Also der Flash Vorgang hatte reibungslos funktioniert. Dort wurde in der IDE kein Fehler angezeigt. Das Log ist vom Serial Monitor beim (NEU)Start des Wemos.
Wo ich SPIFFS in der IDE einstelle muß ich später, wenn ich wieder zu Hause bin, mal nachschauen. Hatte die Einstelllungen eigentlich so wie im ersten POST von gloob übernommen. Vorher hatte ich auch ein paar ArduinoNanos geflasht, ohne das ich dort irgendwas in Sachen SPIFFS einstellen mußte. Denke mal, es ist nur ne blöde Kleinigkeit die ich übersehe.
Freu mich aber über Eure Hilfe.

Gruß C.

SPIFFS gibt es auch nicht beim Arduino Nano. Das gibt es nur beim ESP/Wemos.
Wie Frank_Huber schon richtig gesagt hat, ist es unter "Flash_Size" einzustellen.

Warum MQTT trotzdem nicht funktioniert können wir gerne danach nochmal anschauen. Eine Verbindung zum MQTT Server kann er allerdings aufbauen, ansonsten würdest du nur Punkte in der Console sehen.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

betateilchen

Das beschriebene Verhalten ist mit einem mosquitto reproduzierbar.

Zitat von: gloob am 28 Mai 2019, 09:04:02
Wenn du kein Username und Passwort für MQTT hast sollten die Felder beim Einrichten der WLAN Verbindung auf jeden Fall leer bleiben.

Diese Empfehlung ist vermutlich der Fehler.

Mit Leerstrings in mqtt_user und mqtt_pass wie hier:

Zitat von: CarstenF am 28 Mai 2019, 10:16:48

10:09:18.510 -> {"mqtt_server":"192.168.1.50","mqtt_port":"1883","mqtt_user":"","mqtt_pass":"","mqtt_device_name":"RFID_Reader"}


passiert genau das hier beschriebene: keine Fehlermeldung bezüglich der mqtt-Verbindung, keine Kommunikation. Wobei ich nicht weiter geforscht habe, ob das ein Problem des Servers ist oder ein Problem mit der verwendeten mqtt-Library im Arduino-Sketch. Mein Bauchgefühl geht eher in Richtung Client.

Abhilfe im Sketch: bei leeren Feldern die beiden Variablen mqtt_user und mqtt_pass beim Verbindungsaufbau gar nicht mitgeben oder vor der Übergabe mit irgendwas füllen. Beide Varianten habe ich erfolgreich ausprobiert.

@CarstenF hast Du mal getestet, die vorgegebenen Werte "username" und "passwort" einfach stehenzulassen und zu verwenden? Bei mir funktioniert die Übertragung dann auch bei "allow_anonymous true" auf mosquitto problemlos.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CarstenF

Zitat von: betateilchen am 28 Mai 2019, 18:54:00
Das beschriebene Verhalten ist mit einem mosquitto reproduzierbar.

Diese Empfehlung ist vermutlich der Fehler.

Mit Leerstrings in mqtt_user und mqtt_pass wie hier:

passiert genau das hier beschriebene: keine Fehlermeldung bezüglich der mqtt-Verbindung, keine Kommunikation. Wobei ich nicht weiter geforscht habe, ob das ein Problem des Servers ist oder ein Problem mit der verwendeten mqtt-Library im Arduino-Sketch. Mein Bauchgefühl geht eher in Richtung Client.

Abhilfe im Sketch: bei leeren Feldern die beiden Variablen mqtt_user und mqtt_pass beim Verbindungsaufbau gar nicht mitgeben oder vor der Übergabe mit irgendwas füllen. Beide Varianten habe ich erfolgreich ausprobiert.

@CarstenF hast Du mal getestet, die vorgegebenen Werte "username" und "passwort" einfach stehenzulassen und zu verwenden? Bei mir funktioniert die Übertragung dann auch bei "allow_anonymous true" auf mosquitto problemlos.
Friste mein Dasein immer noch auf der Arbeit :-) Werde aber gleich noch mal ein paar Tests fahren. Danke für den Hinweis.


Gesendet von iPad mit Tapatalk
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

gloob

#89
Zitat von: betateilchen am 28 Mai 2019, 18:54:00
Das beschriebene Verhalten ist mit einem mosquitto reproduzierbar.

Diese Empfehlung ist vermutlich der Fehler.

Mit Leerstrings in mqtt_user und mqtt_pass wie hier:

passiert genau das hier beschriebene: keine Fehlermeldung bezüglich der mqtt-Verbindung, keine Kommunikation. Wobei ich nicht weiter geforscht habe, ob das ein Problem des Servers ist oder ein Problem mit der verwendeten mqtt-Library im Arduino-Sketch. Mein Bauchgefühl geht eher in Richtung Client.

Abhilfe im Sketch: bei leeren Feldern die beiden Variablen mqtt_user und mqtt_pass beim Verbindungsaufbau gar nicht mitgeben oder vor der Übergabe mit irgendwas füllen. Beide Varianten habe ich erfolgreich ausprobiert.

@CarstenF hast Du mal getestet, die vorgegebenen Werte "username" und "passwort" einfach stehenzulassen und zu verwenden? Bei mir funktioniert die Übertragung dann auch bei "allow_anonymous true" auf mosquitto problemlos.

Kann ich so nicht stehen lassen. Ich nutze auch einen Mosquitto Server und habe keinen Benutzernamen und Passwort vergeben. Beim Einrichten des Readers habe ich die Felder leer gemacht/gelassen.
Die Bilder zeigen schön, dass trotzdem die Messages in FHEM ankommen.

Bei allen Versionen vorher, wo man Benutzername und Passwort nicht einstellen konnte, wurde auch ein leerer String genutzt und an die Connect Funktion übergeben.
Ich habe keine Beschwerden darüber bisher gelesen/gehört.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway