ESP32 und Python: WLAN-Signal messen und Gerätestandorte optimieren​

Mit einem ESP32 messen Sie die WLAN-Stärke im Haus und bestimmen den optimalen Standort für Smart-Home-Geräte. Grafana sorgt für eine schicke Daten-Auswertung.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 40 Kommentare lesen
Lesezeit: 22 Min.
Von
  • Arnd Scharpegge
  • Roxana Scharpegge
Inhaltsverzeichnis

Endlich sind die neuen, smarten Geräte eingetroffen. Sie sind schnell eingerichtet und mit dem Netzwerk verbunden. Doch dann passiert – nichts. Vielleicht ist das WLAN-Signal in dieser Ecke zwar vorhanden, aber zu schwach. Ein anderer Platz für die Geräte wäre besser, aber wo ist das Signal stark genug?

Programmieren in Python

Wir zeigen, wie jeder Smart-Home-Enthusiast die Stärke seines WLAN-Signals in der Wohnung oder im Haus messen und so die Position seiner Geräte optimieren kann. Dafür benötigt man einen ESP32-Mikrocontroller, um die Stärke zu messen. Mit MQTT, Python, Linux, PostgreSQL und Grafana werden die Daten übertragen und als schickes Diagramm aufbereitet. Als Betriebssystem verwenden wir Ubuntu-Linux, geben aber auch Hinweise, wie der ESP32 unter Windows eingebunden werden kann. Die Programmiersprache der Wahl ist Python in der Version 3.8.5, da diese Sprache sowohl einfach zu erlernen ist als auch auf jeder Ebene eines Smart-Home-Projektes genutzt werden kann:

  • zum Erzeugen und Übermitteln von Sensor-Daten auf Mikrocontrollern, etwa mit der abgespeckten Variante MicroPython,
  • für den MQTT-Broker,
  • zum Abholen der MQTT-Daten und Einlesen in eine Datenbank,
  • für das Prozessieren und Visualisieren der Daten und
  • zum Analysieren der Daten.

Los gehts mit dem Aufsetzen des Backends auf einem Server. Dafür installiert man eine PostgreSQL-Datenbank zusammen mit der Zeitreihen-Erweiterung TimescaleDB. Sie speichert Zeitreihen effizient in einem eigenen Tabellenformat namens Hypertables, die in einzelne Zeit-Partitionen unterteilt sind, in Chunks. Weitere Details zu TimescaleDB gibts in der Online-Dokumentation.