ich bin gerade eher zufällig auf diesen Beitrag gestoßen: Beitrag "Daten von ESP32 an Fritzbox senden - FTP oder SMB?" und sehe hier ein
vergleichbares Projekt zu meinem aktuellen Projekt und einen Teil meiner
Probleme beschrieben. Da besagter Beitrag zu alt ist, folge ich der Empfehlung, einen neuen Beitrag zu erstellen.
Ich bin dabei, mit einem ESP32 Modul (Arduino IDE) einen Datenlogger zu
entwickeln, der seine Messwerte periodisch an einen FTP Server
übermittelt.
Das Ganze funktioniert seit einigen Wochen ganz ordentlich, jedoch nicht
ganz so, wie ich es mir vorgestellt hatte: leider ist es mir bisher
nicht gelungen, die Daten per FTP auf meiner Fritzbox 7590 abzulegen.
Ich musste auf einen anderen FTP-Server umsteigen und benutze derzeit
meinen Webspace bei einem deutschen Provider. Natürlich wäre mir sehr
viel lieber, wenn ich meine Datenpakete im Hausnetz halten könnte, aber
dafür müsste ich ein weiteres Gerät permanent am Laufen halten, was ich
aus diversen Gründen nicht möchte. Die Fritzbox ist ohnehin da und
permanent aktiv. Nur leider funktioniert sie nicht, wie sie soll und
nach wie vor habe ich keine Lösung.
Es ist übrigens keinerlei Problem, so wie weiter oben schon
vorgeschlagen, per FTP weitere Daten an eine vorhandene Datei anzuhängen
(APPE). In meinem Projekt wird alle 12 Stunden eine neue Datei angelegt.
Nun habe ich die Frage, ob es schon jemandem gelungen ist, per FTP Daten aus einem ESP32 Modul in eine Datei auf dem NAS einer Fritzbox zu schreiben und falls ja, wie man die Fritzbox dazu bringt, das zu ermöglichen?
Was passiert denn, wenn Du Dich mit einem normalen Computer mit dem NAS auf der Fritzbox verbinden möchtest? Funktioniert das oder führt da auch zu Problemen?
Mit meinem Laptop kann ich mich problemlos mit dem NAS der Fritzbox verbinden (mit Filezilla-FTP). Ebenso kann das ESP32 Modul mit den FTP Servern auf meinem Webspace oder auf anderen PCs in unserem Hausnetz zugreifen. Einzig die Kombination ESP-Modul <--> Fritzbox-NAS via FTP geht nicht. Das Ganze läuft übrigens unverschlüsselt ab.
Heute habe ich außerdem den FTP-Zugriff auf eine andere Fritzbox (7390) getestet: identisches Problem! Außerdem habe ich einen Test mit einer anderen ESP32-FTP-Library gemacht: auch hier das identische Problem. Für mich sieht es so aus, als ob es eine Inkompatibilität zwischen den ESP-Modulen und den Fritzboxen gibt, die andere FTP Clients bzw. Server ignorieren.
Du koenntest es einmal mit ein Modeumschaltung "ACTIVE/PASSIVE"
probieren. Wie das in deiner Library geht, musst du selbst herausfinden.
Ob die FBox das unterstuetzt, kannst du mit einem PC FTP-Client
leicht herausfinden. Der Befehl ist "remotehelp".
Da sollte dann z.B. ein "PASV" in der Liste auftauchen.
Ansonsten geh halt Mal auf die Capture Seite deiner Fritzbox und schneide den Traffic in beiden Fällen mit.
Dann sollte man schnell den Unterschied rausfinden.
Damit habe ich mich schon einige Zeit beschäftigt. Leider schneidet die Fritzbox nur den Verkehr nach außen (WAN) mit, die FTP Zugriffe auf das NAS sind nicht im Datenstrom enthalten. Nun suche ich noch nach einer Lösung, wie ich den Datenverkehr zwischen desm ESP32 und der Fritzbox mitschneiden könnte. Das scheint nur direkt auf einer Leitung zwischen dem ESP und der Fritzbox zu gehen. Alle Switches dazwischen scheinen die ESP Pakete abzublocken.
Ich habe zwischen dem ESP32 und der Master-Fritzbox noch eine ältere Fritzbox (7390), doch da die im AP-Modus betrieben wird, zeichnet sie keinen IP Traffic auf. Auch Versuche, den internen Datenverkehr durch einen Laptop zu leiten, waren bisher nicht erfolgreich. Nun möchte ich noch einen Versuch mit einem Laptop und der SW 'MyPublicWiFi' und einem Wireshark machen. Allerdings wird das noch etwas dauern. Habt Ihr noch eine andere idee?
@Motopick: Dann versuche ich auch zwischen Active/Passive umzuschalten. Bisher wird alles im FTP Passive Mode gemacht. Da muss ich erst rausbekommen, wie das bei der verwendeten ESP-FTP-Lib <FTPClient_Generic.h> geht.
Bevor man da mit Wireshark und extra-Hardware dazwischen drangeht:
Einfach mal von Hand testen. FTP ist ein altes, textbasiertes Protokoll. Das kann man wunderbar mit dem telnet-client testen.
Also: Zwei Konsolen-Fenster aufmachen.
Im ersten:
telnet fritz.box 21
USER Username
PASS Password
HELP
PASV
APPE example.csv
--> Meldet per "Entering Passive Mode" wohin du verbinden sollst.
Die angegebene IP wird die der Fritz-Box sein, Portnummer ist interessant, sind die letzten beiden Zahlen (vorletzte mal 256+letzte)
Damit in der zweiten Konsole noch eine Telnet-Session aufmachen.
Alles was du da tippst, wird an example.csv angehängt.
Wenn das so "von Hand" funktioniert: Fritzbox ist nicht schuld, es ist deine FTP-Implementation auf dem ESP. Dort weitersuchen.
Den Vorschlag von @mani habe ich mal verwendet, um den Netzwerkverkehr zwischen z.B. ESP32 über einen auf dem PC laufenden Access Point umzuleiten. Dann sollte man den Netzwerkverkehr zwischen dem PC und der Fritzbox mit Wireshark mitschneiden können.
Enter:
netsh wlan show drivers
If a usable WLAN Adapter is connected you see the properties.
Create a WLAN Accesspoint on your PC:
netsh wlan set hostednetwork mode=allow ssid=VirtualWiFi key=xxxxxxxxxx keyUsage=persistent
Start the Accesspoint:
netsh wlan start hostednetwork
Dann:
Aktuell genutzten Netzwerkadapter auf Teilen der Internetverbindung einstellen
Falls Schwierigkeiten aufkommen, könnte ich noch eine hausgemachte Anleitung mit möglichen pitfalls zur Verfügung stellen.
Ich selbst bin dazu übergegangen, meine Sensordaten auf Azure Storage Tables zu speichern, das funktioniert gut und ist preiswert.
Damit habe ich mich schon einige Zeit beschäftigt. Leider schneidet die
Fritzbox nur den Verkehr nach außen (WAN) mit, die FTP Zugriffe auf das
NAS sind nicht im Datenstrom enthalten.
Unsinn. Du kannst die FB an jedem beliebigen Interface zur Protokollierung lauschen lassen. Natürlich auch am LAN- oder WLAN-Interface. Du musst ihr einfach nur sagen, welches Interface sie protokollieren soll.
Nunja, die von den Entwicklern gewählten Interface-Namen sind leider nicht unbedingt selbsterklärend. Das hätte man für ein Consumer-Produkt sicher besser lösen können.
Aber auch dann gilt: notfalls bekommt man das mit simplem Probieren sehr schnell heraus. Wenn man das tatsächlich will...
Alle Switches dazwischen scheinen die
ESP Pakete abzublocken.
Wenn das wirklich so ist, sind sie wohl falsch konfiguriert. Oder die Pakete sind schlicht kaputt und werden deshalb zu recht von den Switches gedropped.
Glaube ich aber beides nicht, weil: nach deiner eigenen Aussage hast du ja gar keine Möglichkeit gefunden, den Traffic am LAN-Interface zu loggen.
@Motopick: Dann versuche ich auch zwischen Active/Passive umzuschalten.
Bisher wird alles im FTP Passive Mode gemacht.
Und das reicht auch völlig, denn der FTP-Server der FB unterstützt nur den Passiv-Mode.
Die Switche machen genau das, wofür sie gebaut wurden - sie schicken Packe ausschließlich dort hin, wo sie auch hin sollen. Sprich auf den anderen Ports sind sie nicht sichtbar.
Man kann entweder einen alten Hub dazwischenbauen, dieser "switcht" halt nicht, sondern er schickt stumpf alle irgendwo empfangenen Pakete auf allen anderen Ports wieder raus. Oder man hat einen guten managed Switch, bei diesen gibt es oft Möglichkeiten, den Datentransfer eines Ports auf einen anderen weiterzuleiten. Dann kann man mittels Wireshark mitlauschen. Alternativ, falls es eine WLAN-Verbindung ist braucht man eine WLAN-Karte, die Monitor-Mode unterstützt, sprich alle empfangenen Pakete weiterreicht.
Ben B. schrieb im Beitrag #7709434:
Sorry für die späte Antwort, ich war gestern in Sachen Familie beschäftigt.
Die Switche machen genau das, wofür sie gebaut wurden - sie schicken
Packe ausschließlich dort hin, wo sie auch hin sollen. Sprich auf den
anderen Ports sind sie nicht sichtbar.
Man kann entweder einen alten Hub dazwischenbauen ...
Danke für die Bestätigung. Davon war ich ausgegangen. Leider habe ich keinen alten LAN Hub mit RJ45, nur noch für Coax Kabel :-)
Einen 'managed Switch' möchte ich mir deshalb (noch) nicht anschaffen.
Doch, dafür ist Wireshark da und macht er auch. Allerdings muss der gesuchte Datenverkehr auch im vorhandenen Datenstrom drin sein und genau da hapert es leider. Ich hoffe jedoch, mit den weiteren Ideen der Kollegen weiter zu kommen.
Also ich kann da auswählen was ich haben möchte (siehe Bild).
Dieter K. schrieb:
Nun suche ich noch nach einer
Lösung, wie ich den Datenverkehr zwischen desm ESP32 und der Fritzbox
mitschneiden könnte
Sollte es bei deiner FritzBox nicht gehen mach halt einen AP dazwischen.
Dann kommt es über LAN in die FB.
Danke Mani,
mir war diese Auswahlliste (Dein Screenshot) schon aufgefallen, aber ich wusste nicht, was ich damit anfangen sollte. Nun habe ich große Hoffnung, dass eine der Auswahlmöglichkeiten die Aufzeichnung dann doch ermöglicht. Ich konnte das aber heute noch nicht testen.
Das mit dem AP ist ja schon mit der zwischengeschalteten 7390 realisiert, aber ich komme mit meinem Laptop nicht an den Datenstrom zwischen den beiden Fritzboxen ran (LAN Kabel, siehe auch 'Hub' in einem früheren Beitrag). Vielleicht klappt es aber doch noch, wenn ich ein geeignetes Interface in der Master-Fritzbox (7590) finde. Sollte das nicht klappen, hoffe ich, die als AP konfigurierte FB 7390 doch noch als Router konfigurieren und dann die eingebaute Capture Funktion nutzen zu können.
Den Vorschlag von @mani habe ich mal verwendet, um den Netzwerkverkehr
zwischen z.B. ESP32 über einen auf dem PC laufenden Access Point
umzuleiten. Dann sollte man den Netzwerkverkehr zwischen dem PC und der
Fritzbox mit Wireshark mitschneiden können.
mit einem virtuellen Hotspot habe ich auch schon experimentiert und nach anfänglichen Problemen (bei meinem Laptop läuft das nicht, vermutlich ist der eingebaute WLAN Adapter nicht geeignet), aber auf einem anderen Laptop lief es, jedoch funktionierte damit mein ESP Modul nicht und ich habe das vorerst wieder zurückgestellt, ohne das Problem weiter zu untersuchen.
Sollte ich mit den anderen Lösungen nicht zum Ziel kommen, werde ich das aber nochmals angehen.
aber auf einem anderen
Laptop lief es, jedoch funktionierte damit mein ESP Modul nicht und ich
habe das vorerst wieder zurückgestellt, ohne das Problem weiter zu
untersuchen.
Soweit ich mich erinnere, war es wichtig, das Protokoll für den virtuellen Hotspot in den Adaptereinstellungen auf IPV4 festzulegen (IPV6 deaktivieren und neu booten). Ich habe dir mal einen Link auf meine damaligen Notizen als PM geschickt.
Bevor man da mit Wireshark und extra-Hardware dazwischen drangeht:
Einfach mal von Hand testen. FTP ist ein altes, textbasiertes Protokoll.
Das kann man wunderbar mit dem telnet-client testen.
Also: Zwei Konsolen-Fenster aufmachen.
Im ersten:
Hallo Ernst,
nachdem ich nun einige Zeit in dieses Problem investiert habe und zum Schluss gekommen bin, das es höchstwahrscheinlich ein Problem in der Fritzbox gibt, da ich mit dem ESP keinerlei Fileoperationen ausführen kann (auf anderen FTP-Servern sehr wohl) habe ich Deinen Vorschlag aufgegriffen und mich per Telnet (PUTTY) an der Fritzbox angemldet und bin da doch sehr schnell über Rechteprobleme gestolpert. Mit meinem User war ich nicht in der Lage irgendeine Datei anzulegen oder zu löschen. Dann habe ich weitere Versuche mit Filezilla gemacht und habe da teilweise ähnliche Beobachtungen gemacht.
Entweder ich bin zu blöd, um dieses (doch recht einfache) Protokoll zu verstehen, oder irgendetwas stimmt da nicht. Natürlich habe ich bei meinem FTP-User auf der Fritzbox diverse Einstellungen ausprobiert.
Ich werde das nun erst mal mit AVM diskutieren und hoffe, dabei der Lösung näher zu kommen.
Einen Fehler in meinem Sketch konnte ich bisher noch nicht entdecken, was mich auch wundern würde, da dieser Sketch mit einigen anderen FTP Servern problemlos zusammenarbeitet.
Ich kann übrigens inzwischen auch mit der Fritzbox den Datenverkehr mitschneiden. Da war der Hinweis von Mani und anderen doch sehr hilfreich und hat mich auf die Spur des Problems gebracht. Vielen Dank dafür!
Es gibt erneute erfreuliche Neuigkeiten: nachdem ich inzwischen annehme, dass das Problem in der Rechteverwaltung der Fritzbox bei einem FTP Zugriff liegt, habe ich Versuche mit einem FTP Server auf einem anderen PC in unserem Hausnetzwerk gemacht und nachdem die Versuche vielversprechend waren, nun auf meinem Android Smartphone einen FTP Server eingerichtet. Zu meiner Freude läuft dieser nun schon geraume Zeit ohne irgendwelche Probleme (mit dem Originalsketch). Allerdings musste ich dazu in einer Lib Datei den FTP-Port ändern, da der Port 21 auf den Android Apps offenbar nicht verwendbar ist.
Nun habe ich das Problem an den AVM Support adressiert und bin gespannt, was die dazu sagen.
Nun habe ich das Problem an den AVM Support adressiert und bin gespannt,
was die dazu sagen.
Wäre es ein generelles Problem der Fritzbox, wäre es schon Hundertfach aufgetreten.
Warum probierst du nicht erst einmal die einfachste Fehlersuche ohne Spezialsoftware und Geräte?
Mach in Windows ein DOS-Fenster auf und dann probiere mit dem Windows ftp den Dialog mit der Fritzbox. Fehlermeldungen kommen dann in Klartext. Sollte dann alles funktionieren, nimm den seriellen Monitor des ESP32 und sieh dir dort die Befehle und Rückmeldungen an.
Ich habe ja keine Ahnung, aber wenn ich versuche in der Fritzbox 7490 -> Internet -> Freigaben -> Fritz!Box-Dienste anklickere, bekomme ich folgenden Text:
1
[] Internetzugriff auf Ihre Speichermedien über FTP/FTPS aktiviert
2
3
Diese Option ermöglicht den Zugriff auf die Speichermedien an der FRITZ!Box aus dem Internet. Zugang haben alle FRITZ!Box-Benutzer, denen im Menü "System > FRITZ!Box-Benutzer" die Rechte "Zugang auch aus dem Internet erlaubt" und "Zugang zu NAS-Inhalten" eingeräumt wurden.
von Zugriff auf den Heimnetz wird da nichts geschrieben.
Und latuernich: telnet ist Dein Freund, und gerade FTP ist wunderbar zu debuggen.
Mitschnitt eines Beispiels:
C:\Users\Georg>ftp
ftp> open 192.168.2.1
Verbindung mit 192.168.2.1 wurde hergestellt.
220 FTP server ready.
530 Please login with USER and PASS.
Benutzer (192.168.2.1:(none)): Georg
331 Password required for Georg.
Kennwort:
230 User Georg logged in.
ftp> dir
200 PORT command sucessful.
150 Opening ASCII mode data connection for '/bin/ls -lgA'.
drwxrwxr-x 2 ftp ftp 312 Mar 2 2023 Bilder
drwxrwxr-x 2 ftp ftp 384 Jun 30 2023 Dokumente
drwxr-xr-x 4 ftp ftp 376 Jan 1 1970 FRITZ
drwxrwxr-x 2 ftp ftp 232 Dec 16 2011 Musik
drwxrwxr-x 2 ftp ftp 312 Dec 16 2011 Videos
226 Transfer complete.
FTP: 229 Bytes empfangen in 0.01Sekunden 45.80KB/s
ftp> cd Bilder
250 CWD command successful.
ftp> dir
200 PORT command sucessful.
150 Opening ASCII mode data connection for '/bin/ls -lgA'.
-rw-rw-r-- 1 ftp ftp 30192 Dec 1 2011 FRITZ-Picture.jpg
-rw-rw-rw- 1 ftp ftp 393252 Apr 2 2019 Show1.jpg
226 Transfer complete.
FTP: 112 Bytes empfangen in 0.00Sekunden 37.33KB/s
ftp> get show1.jpg
200 PORT command sucessful.
550 show1.jpg: No such file or directory.
ftp> get Show1.jpg
200 PORT command sucessful.
150 Opening ASCII mode data connection for 'Show1.jpg' (393252 bytes).
226 Transfer complete.
FTP: 394685 Bytes empfangen in 0.25Sekunden 1591.47KB/s
ftp>
Nun habe ich das Problem an den AVM Support adressiert und bin gespannt,
was die dazu sagen.
Wäre es ein generelles Problem der Fritzbox, wäre es schon Hundertfach
aufgetreten.
Warum probierst du nicht erst einmal die einfachste Fehlersuche ohne
Spezialsoftware und Geräte?
Mach in Windows ein DOS-Fenster auf und dann probiere mit dem Windows
ftp den Dialog mit der Fritzbox. Fehlermeldungen kommen dann in
Klartext. Sollte dann alles funktionieren, nimm den seriellen Monitor
des ESP32 und sieh dir dort die Befehle und Rückmeldungen an.
Sorry, dass ich so spät antworte. Leider hatte ich in den letzten Tagen sehr wenig Zeit für weitere Untersuchungen. Den Telnetzugang hatte ich natürlich auch ausprobiert und auch der hat bei genauerem Hinsehen im Arbeitsverzeichnis des FTP nicht funktioniert, genauso wenig wie der FTP Zugang mit Filezilla. Die Fehlermeldungen haben immer auf ein Rechteproblem hingedeutet, aber ich konnte es nicht lösen. Inzwischen ist es gelöst, aber bei Weitem nicht verstanden. Ich darf die generelle Freigabe aller NAS-Verzeichnisse nicht verwenden. Da gehen einzelne Verzeichnisse, andere nicht, z.B. geht das gewählte Arbeitsverzeichnis nicht. Erst als diese Freigabe gelöscht habe und nur gezielt nur das Arbeitsverzeichnis freigegeben habe, hat es funktioniert.
AVM hat inzwischen auch nur lakonisch festgestellt, dass ihrer Meinung nach alles bei meiner Fritzbox in bester Ordnung sei. Auf meine Fragen zu den Zugangsrechten sind sie überhaupt nicht eingegangen.
Nun bin ich zwar einen Schritt weiter, aber nach wie vor ist die FTP Funktion der Fritzbox für meine Anwendung unbrauchbar: es wird zwar eine Verbindung aufgebaut, eine Datei angelegt und kann beschrieben werden. Jedoch treten innerhalb der ersten maximal 10 Schreibvorgänge Fehler auf, die dazu führen, dass die Verbindung abbricht und der eingebaute Watchdog einen Restart des ESP auslöst. Die Ursache dieser Fehler konnte ich bisher nicht ergründen. Nach wie vor kann der ESP mit exakt dem gleichen Sketch problemlos auf dem FTP-Server auf meinem Webspace loggen oder auch innerhalb meines Hausnetzes auf dem FTP-Server auf einem meiner alten Android Smartphones.
Ich habe ja keine Ahnung, aber wenn ich versuche in der Fritzbox 7490 ->
Internet -> Freigaben -> Fritz!Box-Dienste anklickere, bekomme ich
folgenden Text:
1
> [] Internetzugriff auf Ihre Speichermedien über FTP/FTPS aktiviert
2
>
3
> Diese Option ermöglicht den Zugriff auf die Speichermedien an der
4
> FRITZ!Box aus dem Internet. Zugang haben alle FRITZ!Box-Benutzer, denen
5
> im Menü "System > FRITZ!Box-Benutzer" die Rechte "Zugang auch aus dem
6
> Internet erlaubt" und "Zugang zu NAS-Inhalten" eingeräumt wurden.
7
>
von Zugriff auf den Heimnetz wird da nichts geschrieben.
Ich glaube nicht, dass man das so eng sehen muss und gehe davon aus, dass der Fritzbox egal ist, ob man FTP von außerhalb oder vom Hausnetz aus nutzen möchte. In den meisten Fällen geht es auch problemlos, aber eben nicht mit meinen ESP Modulen. Wie schon vorher geschrieben, habe ich auch mit Telnet geabeitet, aber nennenswert weitergeholfen hat es mir leider nicht.
Wäre es ein generelles Problem der Fritzbox, wäre es schon Hundertfach
aufgetreten.
Wer nutzt schon eine FRITZ!box als ftp-Server mit einem ESP32 als
Client?
Vom PC aus hat’s ja funktioniert.
Oliver
Ich denke, das ist das Hauptproblem. Ich habe mich nun mal dafür entschieden, meine Messdaten per FTP zu loggen und sehe ja, dass es mit anderen Servern funktioniert und würde schon gerne verstehen, weshalb es mit der Fritzbox einfach nicht funktionieren will. Wie schon erwähnt, läuft das alles ja schon seit etwa einem Jahr mit dem externen FTP Server. Nur die Idee, die Daten lokal auf meiner Fritzbox zu speichern, war bisher noch nicht umsetzbar.
Ich darf die generelle
Freigabe aller NAS-Verzeichnisse nicht verwenden.
Warum nicht? Jeder andere kann das.
AVM hat inzwischen auch nur lakonisch festgestellt, dass ihrer Meinung
nach alles bei meiner Fritzbox in bester Ordnung sei.
Womit sie wohl Recht haben, da du der einzige Honk bist, der da ein Problem hat.
Auf meine Fragen
zu den Zugangsrechten sind sie überhaupt nicht eingegangen.
Da gibt's auch überhaupt kein Problem. Entweder der User hat das Recht zum Zugriff auf eine bestimmtes Medium oder er hat es nicht. Dementsprechend ist das Ergebnis.
Und das funktioniert so. Bei Millionen von Leuten. Nur bei dir nicht. Sollte dir das nicht zu denken geben?
Nun bin ich zwar einen Schritt weiter, aber nach wie vor ist die FTP
Funktion der Fritzbox für meine Anwendung unbrauchbar: es wird zwar eine
Verbindung aufgebaut, eine Datei angelegt und kann beschrieben werden.
Jedoch treten innerhalb der ersten maximal 10 Schreibvorgänge Fehler
auf, die dazu führen, dass die Verbindung abbricht und der eingebaute
Watchdog einen Restart des ESP auslöst.
Das ist natürlich ein Problem deines offensichtlich fehlerhaften ESP-Programms. Ganz egal, wie falsch sich die FB verhalten mag (tut sie nicht), ein Watchdog-Reset ist definitiv ein Hinweis auf eine schwere Fehlfunktion im Client. Denn wie auch immer der Host reagiert, darf natürlich beim Client niemals ein Reset herauskommen. Sprich: der Client ist KAPUTT.
Du kannst offensichtlich nicht wirklich programmieren. Nur zusammengeklauten Code sinnlos-mechanisch zusammenkleben. Und die FB soll dann Schuld sein...
Um das Problem zu untersuchen (falls tatsächlich Interesse daran bestehen sollte), könnte man mit Wireshark den Netzwerktraffic aufzeichnn und sich ansehen, was passiert.
Dann könnte man die Kommunikation mit einem anderen FTP-Server aufzeichnen und /vergleichen/.
Klar, dazu muss man natürlich auch das FTP-Protokoll an sich verstehen, aber das ist in RFC 959 dokumentiert.
Um das Problem zu untersuchen (falls tatsächlich Interesse daran
bestehen sollte), könnte man mit Wireshark den Netzwerktraffic
aufzeichnn und sich ansehen, was passiert.
Hatte ich auch schon vorgeschlagen:
Rahul D. schrieb im Beitrag #7709235:
Dieter K. schrieb:
Nun suche ich noch nach einer
Lösung, wie ich den Datenverkehr zwischen desm ESP32 und der Fritzbox
mitschneiden könnte.
Womit sie wohl Recht haben, da du der einzige Honk bist, der da ein
Problem hat.
Du kannst offensichtlich nicht wirklich programmieren. Nur
zusammengeklauten Code sinnlos-mechanisch zusammenkleben. Und die FB
soll dann Schuld sein...
Auch wenn Du möglicherweise Recht hast mit den technischen Ursachen, so hast Du aber kein Recht jemanden „Honk“ zu nennen, bzw. In dieser Tonart hier zu schreiben.
fritz.box/support.lua funktioniert auch mit fritz.os 7.57
Ich habe weder das eine noch das andere getestet (mein "Server" läuft auf einem Raspi mit USB-SSD), weil meine bisherige FitzBox nur USB 1.1 (oder sowas) unterstützt.
Vielleicht teste ich den ftp-Zugang mal.
Dass WireShark nicht in einem Netzwerk mit Switchen läuft, kommt nicht vom mir.
Den kann man so konfigurieren, daß er den Datenverkehr zwischen seinen Ports an einem weiteren Port in Kopie ausleitet. Und da hängt man dann den PC mit Wireshark dran.
Da hier ein ESP32 verwendet wird, ist sehr wahrscheinlich, daß da eine direkte WLAN-Verbindung zwischen ESP32 und Fritzbox genutzt wird, da hilft so ein Switch dann natürlich auch nicht.
Wenn man aber einen WLAN-fähigen PC hat, der mit einem Netzwerkkabel mit der Fritzbox verbunden ist, kann man den PC zu einem WLAN-Accesspoint machen, den ESP32 damit verbinden und somit den Netzwerkverkehr zwischen ESP32 und Fritzbox durch den PC durchleiten - und damit wird er für Wireshark sichtbar.
Ein Mitschrieb durch die Fritzbox sollte aber auch schon helfen, man muss halt nur 'rausfinden, welchen der diversen Ports in der Fritzbox man aufzeichnen muss.
Außerdem habe ich einen Test mit einer
anderen ESP32-FTP-Library gemacht: auch hier das identische Problem. Für
mich sieht es so aus, als ob es eine Inkompatibilität zwischen den
ESP-Modulen und den Fritzboxen gibt, die andere FTP Clients bzw. Server
ignorieren.
Welche ftp-clients für den ESP32 hast du denn verwendet?
Ich finde die Idee mit der Fritzbox interessant und will das auch mal ausprobieren.
Das Mitschneiden des Netzwerktraffics zwischen ESP32 und der Fritzbox über einen WLAN-AP mit Wireshark auf meinem PC habe schon wieder aufgebaut und es funktioniert (jedenfalls mit http).
ich verwende seit langem die FTP_Generic Library, nachdem ich zuerst Probleme mit der standard FTP Library aus der Arduino IDE 'ESP32_FTPClient.h' hatte. Inzwischen habe ich aber auch diese Lib nochmals getestet und auch sie lief dann problemlos. War anfangs wohl ein anderes Problem.
Ich hatte vor ein paar Wochen auch versucht, meinen PC als WLAN-AP zu konfigurieren, aber leider war das nicht zum Laufen zu bringen. Mein Laptop zickt da manchmal etwas rum. Mit einem anderen PC lief zwar der Hotspot, da dieser aber ein eigenes WLAN mit einem eigenen IP Adressraum aufgebaut hat, gab es dann andere Probleme, die ich nicht weiter untersucht habe.
Auf Grund eines Hinweises in diesem Forum habe ich mich dann auf die diversen 'Interfaces' in der Fritzbox konzentriert und alle abgeklappert und in den 8 Internet-Schnittstellen keine brauchbaren Mitschnitte gefunden aber in den 31 Netzwerk-Schnittstellen war dann eine einzige Schnittstelle (lan), die den gesuchten Datenverkehr mit meinen ESP32 Modulen beinhaltete. Ab da war der Rest kein Problem mehr. Inzwischen läuft das Logging auch mit der Fritzbox einwandfrei. Mehr dazu in meinem nächsten Beitrag.
Ich habe gestern mit dem gleichen ftp-Client experimentiert:
-https://github.com/khoih-prog/FTPClient_Generic
Mit dem WLAN Access Point (über USB WLAN Stick) auf meinem PC läuft nach den entsprechenden Einstellungen auch alles problemlos.
ESP32 und Fritzbox können auch kommunizieren, zumindest, wenn die Verbindung umgeleitet über den Ethernet Port auf meinem PC-läuft (siehe Wireshark Mitschnitt)
es gibt gute Neuigkeiten, aber zuerst noch ein paar Antworten
Wenn man den Verkehr zwischen zwei Geräten an einem Switch mit einem
dritten Gerät abhören möchte, braucht man einen "manageable switch". Ein
günstiges Beispiel dafür ist der Netgear GS308E
Danke für den Link. Leider habe ich keinen 'manageable Switch' zur Verfügung und wollte auch keinen kaufen.
Wenn man aber einen WLAN-fähigen PC hat, der mit einem Netzwerkkabel mit
der Fritzbox verbunden ist, kann man den PC zu einem WLAN-Accesspoint
machen, den ESP32 damit verbinden und somit den Netzwerkverkehr zwischen
ESP32 und Fritzbox durch den PC durchleiten - und damit wird er für
Wireshark sichtbar.
Diese Lösung hätte ich bevorzugt. Aber das hat sich dann als unnötig herausgestellt, da es mir inzwischen glücklicherweise gelungen ist, doch ein Netzwerk-Interface in der Fritzbox zu finden, in dem der gesuchte Datenstrom der ESP-Module aufgezeichnet war. Siehe dazu meine vorige Antwort an Roland
Da hier ein ESP32 verwendet wird, ist sehr wahrscheinlich, daß da eine
direkte WLAN-Verbindung zwischen ESP32 und Fritzbox genutzt wird, da
hilft so ein Switch dann natürlich auch nicht.
In meinem Netzwerk hat eine weitere Fritzbox 7390 diese Aufgabe übernommen und dient auch als AP für andere Geräte (z.B. die ESP32-Module) und Laptops, die bei Bedarf mit WOL in Betrieb genommen werden. Diese zweite FB ist per LAN Kabel mit der Master-FB verbunden. Also hätte der 'manageable Switch' durchaus geholfen. Ich hatte auch gehofft, dass die zweite FB den Netzwerk-Datenverkehr aufzeichnen könnte, doch leider ist diese Funktion nur bei einem aktivierten Router verfügbar.
Ein Mitschrieb durch die Fritzbox sollte aber auch schon helfen, man
muss halt nur 'rausfinden, welchen der diversen Ports in der Fritzbox
man aufzeichnen muss.
Genau das ist inzwischen realisiert. Im FB-Netzwerk Interface 'lan' ist der gesuchte Datenstrom der ESP Module enthalten und nachdem ich diesen analysiert habe, ist mir eine seltsame Fehlermeldung nach jedem FTP-Schreibvorgang aufgefallen, die es bei anderen FTP-Servern nicht gab:
"226- WARNING! 1 bare linefeeds received in ASCII mode File may not have transferred correctly"
In der Tat waren die Datenblöcke nur mit LF terminiert und nachdem ich die Terminierung auf CRLF geändert habe, lief plötzlich alles fehlerfrei und das nun schon seit über 20 Stunden.
Offenbar sind die anderen FTP-Server da toleranter und sind mit einem LF zufrieden und da ich den Sketch mit dem Remote FTP-Server entwickelt hatte, war mir das vorher nicht aufgefallen.
Dieser Toleranzunterschied ist der relevante Unterschied zwischen dem FB-FTP-Server und den anderen FTP-Servern, der zu dem beschriebenen Fehlerbild geführt hat. Unverständlich ist mir jedoch, dass die FB die Datenblöcke manchmal akzeptiert hat und manchmal eben nicht und die FTP Verbindung gekappt hat.
Fazit: Lösbar, wenn man denn nur will.
Stimmt und schließlich dem Fehler endlich auf die Spur kommt!
Vielen Dank an alle freundlichen und hilfsbereiten Kollegen, die mich hier in diesem Forum unterstützt haben und auch akzeptiert haben, dass ich als relativer Newbie hier vielleicht 'dumme' Fragen gestellt habe und mich auf den richtigen Weg geführt haben. Ich denke, dafür gibt es solche Foren.
Für die 'allwissenden' und weniger freundlichen Zeitgenossen bräuchte man sie sicher nicht, außer als Plattform für ihre blöden Sprüche.
"226- WARNING! 1 bare linefeeds received in ASCII mode File may not
have transferred correctly"
Du kannst Dateien auch als Binärdateien übertragen, dann sind die Zeilenumbrüche egal und es gibt keine derartigen Fehlermeldungen - einfach, weil es den FTP-Server nichts angeht, wie die Daten aufgebaut sind.
Naja, Dein Mitschnitt zeigt nur die Anmeldung, nicht aber, was passiert,
wenn Nutzdaten übertragen werden sollen (put bzw. get, oder auch dir).
Hallo Dieter,
Gratuliere, dass es jetzt klappt. Bei mir hat jetzt auch die Dateispeicherung funktioniert. Dabei ist mir aufgefallen, dass es in dem ftp-client eine
#define Kontante 'USING_VSFTP_SERVER" gibt.
Es scheint, dass die Konstante wohl für die Fritzbox auf false gesetzt werden muss.
Jedenfalls war sonst (bei einem Versuch) das übertragene Bild beschädigt.
Die Dateiübertragung funktioniert auch ohne Umleitung mittels Access Point auf dem PC.
Ich habe den getesteten Code mal in eine App (PlatformIO), die sonst eigentlich Sensordaten zu Azure Table Storage überträgt, reingeschustert (also nicht wundern, dass da vieles für ftp und Fritzbox unnötig ist).
Falls es jemanden interessiert:
https://github.com/RoSchmi/Esp32_Fritzbox_Ftp_Storage/tree/demo080824
Du kannst Dateien auch als Binärdateien übertragen, dann sind die
Zeilenumbrüche egal und es gibt keine derartigen Fehlermeldungen -
einfach, weil es den FTP-Server nichts angeht, wie die Daten aufgebaut
sind.
Das ist eine gute Idee - vielen Dank. Ich probiere das baldmöglichst aus.
Dieter
PS: Nach wie vor loggt der ESP fehlerlos, nunmehr fast 2 Tage. Damit ist für mich der Test ausreichend, meinen Daten-Logger baldmöglichst auf die Fritzbox speichern zu lassen. Allerdings hatte ich ich auch schon Fälle, wo die bisherige Lösung (remote FTP-Server) bis zu 14 Tage fehlerfrei lief und dann doch wieder der Watchdog einspringen musste ;-) Damit kann ich aber gut leben.
Gratuliere, dass es jetzt klappt. Bei mir hat jetzt auch die
Dateispeicherung funktioniert. Dabei ist mir aufgefallen, dass es in dem
ftp-client eine
#define Kontante 'USING_VSFTP_SERVER" gibt.
Es scheint, dass die Konstante wohl für die Fritzbox auf false gesetzt
werden muss.
Hallo Roland,
das freut mich, dass es bei Dir so schnell geklappt hat. Glückwunsch!
Bisher habe ich mich noch nicht mit Dateitransfers beschäftigt, da ich das in meiner Anwendung (noch) nicht brauche. Daher kann ich dazu nichts sagen. Wenn ich es aber richtig verstehe, dann schaltest Du mit dieser Konstanten 'USING_VSFTP_SERVER' den SFTP Modus ein. Ich habe keine Ahnung, ob unsere ESP-32 FTP-Lib überhaupt SFTP unterstützt, was an sich ohnehin wünschenswert wäre.
Auch das zu untersuchen, kommt auf die to-do Liste.
Warum das aber einen fehlerfreien binären Datentransfer ermöglicht, ist mir schleierhaft. An sich müsste auch das standard-FTP binäre Dateien fehlerfrei übertragen können. Vielleicht muss man irgendwo definieren, ob man die Datei im Text-Modus oder binär übertragen will?
analysiert habe, ist mir eine seltsame Fehlermeldung nach jedem
FTP-Schreibvorgang aufgefallen, die es bei anderen FTP-Servern nicht
gab:
"226- WARNING! 1 bare linefeeds received in ASCII mode File may not
have transferred correctly"
Das ist nur eine Warnung. Die ist natürlich einerseits durchaus ernst zu nehmen (hast du ja auch getan und den Fehler korrigiert), sollte aber trotzdem keinesfalls dazu führen, dass der Client per Watchdog neu gestartet wird.
Da ist also sehr wahrscheinlich noch was anderes im Argen. Und zwar nach wie vor: im Client, nicht bei der FB. Die macht, was der Standard sagt, was sie tun sollte.
Das ist nur eine Warnung. Die ist natürlich einerseits durchaus ernst zu
nehmen (hast du ja auch getan und den Fehler korrigiert), sollte aber
trotzdem keinesfalls dazu führen, dass der Client per Watchdog neu
gestartet wird.
<ob das auf eine Fehlfunktion hindeutet, hängt natürlich davon ab, ob in deiner Datei 'bare linefeeds' enthalten sind oder nicht. Sind sie tatsächlich vorhanden, hat die Warnung nichts zu sagen.
Bist du denn sicher, dass der 'Watchdog' den ESP32 resettet hat? Der SEP32 kann ja auch aus anderen Gründen resetten. Ist er in deinem Sketch von dir aktiv eingeschaltet worden? Schalte den Watchdog doch ggf. einfach einmal aus. In meinem Programm (siehe link) wird in setup() zu beginn abgefragt, aus welchem Grund der reset erfolgte. Außerdem kann man das Programm über #define entweder mit oder ohne Watchdog laufen lassen. Ich hoffe ich erzähle hier nicht lauter Sachen, die du selbst schon weißt.
// Using `false` with old style PASV answer, such as `FTP_Server_Teensy41` library
4
// 227 Entering Passive Mode (4043483328, port 55600)
Es geht also die Rueckmeldung beim PASV-Kommando (ich muss gestehen, ich mache diesen Quatsch jetzt ca. 30 Jahre, die "old style PASV answer" habe ich nie gesehen).
vsftp ist ein (very secure ftp-server) (siehe: https://en.wikipedia.org/wiki/Vsftpd) ist ein Standard-FTP-Server, ja, man kann ihn natuerlich mit Verschluesselung betreiben, completely different kettle of fish :-)
Bezüglich der #define Konstanten 'USING_VSFTP_SERVER" hast du völlig recht.
Da hab ich wohl auf die Schnelle was falsch verstanden. Meine Erwähnung von USING_VSFTP_SERVER ist unsinnig, nehme ich zurück.
Bist du denn sicher, dass der 'Watchdog' den ESP32 resettet hat? Der
SEP32 kann ja auch aus anderen Gründen resetten. Ist er in deinem Sketch
von dir aktiv eingeschaltet worden? Schalte den Watchdog doch ggf.
einfach einmal aus. In meinem Programm (siehe link) wird in setup() zu
beginn abgefragt, aus welchem Grund der reset erfolgte. Außerdem kann
man das Programm über #define entweder mit oder ohne Watchdog laufen
lassen. Ich hoffe ich erzähle hier nicht lauter Sachen, die du selbst
schon weißt.
Ja, ich bin sicher, dass der Watchdog (WD) den Reset ausgelöst hat, denn entweder der Reset wird in der Funktion ausgelöst, die der WD im Fehlerfall startet. Dabei wird im Monitor auch eine Fehlermeldung ausgegeben Das passiert, wenn unerwartet die FTP Verbindung gekappt wird (ftp.isConnected() = False) und ich die einfache Lösung gewählt habe, durch einen Reset einen sauberen Neustart zu erzwingen.
Der zweite Fehlerfall ist, dass der Fehler offenbar in der FTP-Lib in der APPE Methode auftritt und der ESP dann nicht mehr aus der APPE Methode zurückkommt, also hängt. Dafür habe ich keine andere Lösung gefunden, als einen Reset zu triggern, da kein User Code mehr läuft. Warum das passiert, weiß ich leider nicht.
Deine Informationen bezüglich WD Abfrage und Handling sind mir neu. Danke dafür! Bisher läuft der WD im Hintergrund einfach mit und schreitet ein, wenn der Heartbeat (3 Sek) über der Zeit ist und dieses Verfahren funktioniert einwandfrei. Seitdem ich es implementiert habe, läuft der Logger zuverlässig seit einigen Monaten mit gelegentlichen kurzen Unterbrechungen (1-3 Sekunden), wenn der WD einen Neustart getriggert hat. Es kommt jedoch häufig vor, dass er mehrere Restarts triggern muss, bis endlich wieder eine funktionierende FTP-Verbindung steht (sehe ich im Monitor, falls in Betrieb. Ich vermute, dass dies auf dem Weg zum Server oder im Server selbst passiert.
Danke für die Info, da hat Google mich leider etwas in die Irre geführt. Wir gesagt, war mir diese Konstante nicht bekannt.
Bezüglich der von mir benutzten FTP-Lib habe ich keine Quelle verlinkt, da diese ja in der Arduino Reference enthalten ist. In Zukunft werde ich mich jedoch bemühen, das besser zu machen.