Forum: PC-Programmierung Datenübertragung ESP32 auf NAS


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mario (sodalit)


Lesenswert?

Hallo zusammen,

ich möchte mir dieses Jahr eine Wetterstation bauen und habe Fragen zur 
Datenübertragung.

Hintergrund: Ich möchte aufgenommene Messdaten alle 5 min per ESP32 und 
WLAN verschicken. Am Ende möchte ich die Daten in einer Textdatei auf 
meiner am Heimnetzwerk angeschlossenen NAS (Synology) abspeichern. Nur 
der Weg dazwischen ist mir etwas unklar. Mit Herumgooglen bin ich auf 
verschiedene Lösungsansätze gekommen, aber man sucht sich da schnell ins 
Nirvana und ich möchte ungern 10 Stunden Zeit in den falschen Weg 
investieren.

Ideen:

1) ESP32 loggt sich direkt am Router-WLAN ein und überträgt die Daten 
per FTP auf die NAS. Von Synology gibt es wohl Anleitungen dafür, sollte 
also machbar sein. Da ich den ESP gerne mit der Arduino IDE 
programmieren möchte, weiß ich allerdings nicht, ob es dort den 
entsprechenden Code gibt. Zudem müsste ich wohl am Router wieder 
entsprechende Portfreigaben einrichten und ich möchte mir eigentlich 
kein Sicherheitsproblem ins Haus holen, weil auf der NAS auch 
empfindliche Daten liegen. Außerdem müsste ich irgendwo noch einen 
korrekten Zeitstempel in die Daten kriegen.

2) Zwischenstation mit Raspberry Pi 4: Diesen könnte ich per LAN an den 
Router / Heimnetzwerk hängen und ihm einen WLAN Stick geben. Der RP4 
spannt ein eigenes WLAN Netz auf, und bekommt dort die Daten vom ESP. Ob 
das geht und einfacher / besser ist, keine Ahnung.

3) Eine mir unbekannte Lösung, die Ihr kennt.

Vielleicht kennt Ihr für mein spezielles Anliegen ja die beste Lösung. 
Ich hoffe eine eher einfach umsetzbare Lösung zu finden ohne viel 
Schnickschnack. Die Hauptarbeit bei diesem Hobby-Projekt soll eigentlich 
nicht auf der IT liegen.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Warum in einer "Textdatei"? Ist doch Kindergarten.

Auf einer Synology läuft ganz bequem (über die App-Verwaltung zu 
installieren) eine SQL-Datenbank "MariaDB 10.x" (Nachfolger/Fork von 
MySQL, 100% befehls-kompatibel).
Das bekannte Tool PHPMyAdmin kann auf dem selben Weg installiert und zur 
Erstellung und Rechte-Vergabe auf die Datenbank benutzt werden.

Man kann nun auf zwei Arten mit der Datenbank kommunizieren:

a) man lässt zusätzlich auf der Synology ein PHPSkript laufen (welches 
vom ESP32 per HTTP-Request aufgerufen wird) und das erledigt dann die 
Kommunikation bzw. Eintragung in die Datenbank

b) der ESP32 kommuniziert direkt selbst mit der DB-Engine über deren 
natives TCP-Protokoll auf Port 3306/3307. Das finde ich persönlich 
wesentlich eleganter. Mit SQL müsstest du dich so oder so beschäftigen.

Für den ESP32 gibts mehrere Libs für den direkten Kontakt, um mit 
MariaDB bzw. MySQL zu kommunizieren, das hier z.B.:

https://github.com/ChuckBell/MySQL_Connector_Arduino

Aber da gibts bestimmt noch 100 andere Varianten ...

: Bearbeitet durch User
von Helmut -. (dc3yc)


Lesenswert?

Ich habe einen RasPi direkt im Heimnetz hängen, auf dem NodeRed läuft. 
Angeschlossen eine Datenbank. Mit NodeRed kann man auch schön 
visualisieren oder zusätzlich Heimautomation betreiben.

von Mario (sodalit)


Lesenswert?

@ Frank. E:
Danke schon mal für die Infos. Ich hatte diese Version beim selber 
googlen auch schon gefunden, waren mir dann aber zuviele neue Begriffe 
(klingt kindisch, ist aber ein guter Hinweis, ob die Lösung eher schnell 
geht oder lange dauert). Deswegen das Ding mit der Textdatei, das ginge 
prinzipiell schnell und ich kann es nach Belieben öffnen.

Allerdings möchte ich später auch mal eine Wetteranzeige im Wohnzimmer 
anzeigen, und Fernzugriff wäre auch nice. Vielleicht schaue ich mir das 
doch mal noch genauer an. Zumindest wenn es gut ausformulierten Code 
gibt, den ich nur etwas anpassen müsste.

@ Helmut:
Würde das dann so laufen mit LAN/WLAN, wie ich oben gemeint hatte?

von Kevin M. (arduinolover)


Lesenswert?

Bei ESP nimm Homeassistent mit ESP Home. Das liefert all deine 
Anforderungen Out of the Box mit.

von Thomas W. (dbstw)


Lesenswert?

Moin, -

es ist erstaunlich dass noch keiner MQTT vorgeschlagen hatte: ESP32 
libraries in verschiedener Geschmacksrichtungen (auch gut dokumentiert).

@TO: Hast Du Dir die Stromversorgung ueberlegt? WLAN geht ueber 4pi, der 
Stromverbrauch der WLAN-Sender/Empfaenger beim Verbindungsaufbau ist im 
Bereich von 150-200mA.

Gruesse

Th.

von Mario (sodalit)


Lesenswert?

@Kevin M.:
Sieht interessant aus, werde ich mal einen Blick darauf werfen.

@Thomas W.:
Die Stromversorgung werde ich in der ersten Ausbaustufe per Netzteil 
bereitstellen, dann bin ich nicht limitiert. Langfristig wäre zwar 
Solarzelle nett, aber das muss richtig ausgelegt werden, speziell für 
den Winter. Und ich weiß noch nicht, was ich alles brauche, z.B. auch 
einen Lüfter für das Gehäuse zur Temperaturmessung.


Vielen Dank für die Antworten bisher. Jetzt stehe ich allerdings wieder 
vor dem gleichen Problem wie vorher. Diese Begriffe hatte ich beim 
selber googlen auch fast alle gefunden und mir war das zu 
unübersichtlich, weil ich mit keiner der Lösungen bisher zu tun hatte 
und nicht wirklich abschätzen kann, was davon für mich das richtige ist. 
Aber vielleicht muss ich da einfach durch.

von Helmut -. (dc3yc)


Lesenswert?

Mario schrieb:
> @ Helmut:
> Würde das dann so laufen mit LAN/WLAN, wie ich oben gemeint hatte?

Also bei mir hängt der Raspi per LAN am Router und die ESPs hängen per 
WLAN im Netz. Die senden ihre Daten per MQTT an NodeRed, das sie auch in 
die Datenbank weiterleitet. Da die ESPs ziemliche Stromfresser sind, 
hängen die alle per 5V-Wandwarzen an 230V. Meine außerhäusigen 
Wettersensoren, die auch Stromfresser sind (z.b. Regensensor wg. Heizung 
und ähnliche) werden mit 12V versorgt. Dann gibt's Temperatursensoren, 
die hängen an Solarzellen und LiFePO4-Akkus. Die sind mit LoRa und 
Arduino Pro-Mini ausgestattet und senden die Daten an ein zentrales 
Gateway, das die Daten per WLAN und MQTT an den RasPi weiterleitet. LoRa 
deswegen, weil die Sender sehr stromsparend sind und eine große 
Reichweite haben.
Mit NodeRed mache ich auch die Visualisierung. Da gibt es so viele 
PlugIns, dass für alle Anwendungsfälle was passendes zu finden ist.

: Bearbeitet durch User
von Mario (sodalit)


Lesenswert?

@Helmut:
Das klingt schon sehr interessant. Ich möchte aber die Daten definitiv 
auf der NAS haben und mit beliebigen Geräten (PC, Laptop, extern per 
openVPN, µC) darauf zugreifen können. Aber ich glaube, so machst du das 
nicht, oder?

von Philipp K. (philipp_k59)


Lesenswert?

Nodered ist eine Applikation von NodeJS, NodeJS ist quasi die Javascript 
Version für den Host, damit kann man zum Beispiel einen http Socket 
erstellen der Json als Post Daten annimmt und in sqlite wegspeichert.

Dazu kann man dann noch die Daten mit Charts als Browserseite 
visualisieren.

Das steckt quasi alles nur anders in node-red.

von Sebastian (Gast)


Lesenswert?

Helmut -. schrieb:
> Also bei mir hängt der Raspi per LAN am Router und die ESPs hängen per
> WLAN im Netz. Die senden ihre Daten per MQTT an NodeRed, das sie auch in
> die Datenbank weiterleitet

Helmut -. schrieb:
> Die sind mit LoRa und Arduino Pro-Mini ausgestattet und senden die Daten
> an ein zentrales Gateway, das die Daten per WLAN und MQTT an den RasPi
> weiterleitet.

So mache ich es auch. Bei mir ist die Datenbank auf dem RasPi 
Postgresql. Alle Telegramme über MQTT sind in JSON und enden in einer 
Tabelle mit zwei Spalten: Zeitstempel und Jsonb. Davon wird dann alles 
abgeleitet.

Ach, und noch ein Detail: mosquitto läuft bei mir auf dem zentralen 
Router unter OpenWRT und ist dadurch in allen VLANs erreichbar.

LG, Sebastian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.