Was ist eine MAC-Adresse?
Die MAC-Adresse (Media Access Control Address) ist eine einzigartige Identifikationsnummer, die jedem netzwerkfähigen Gerät von seinem Hersteller zugewiesen wird. Sie besteht aus 48 Bit, aufgeteilt in sechs Gruppen von jeweils zwei hexadezimalen Ziffern, zum Beispiel 24:0A:C4:7D:9F:3B
. Diese Adresse dient dazu, Geräte in einem Netzwerk eindeutig zu identifizieren und die Kommunikation auf der niedrigsten Ebene des Netzwerkprotokolls zu ermöglichen.
- Herstellerkennung: Die ersten drei Bytes (24:0A) identifizieren den Hersteller des Geräts.
- Gerätespezifischer Teil: Die letzten drei Bytes (7D:9F:3B) sind spezifisch für das individuelle Gerät.
Warum brauchen wir die MAC-Adresse im ESP?
1. Eindeutige Identifikation in der Kommunikation
In Netzwerken, in denen mehrere Geräte miteinander kommunizieren, ist es essentiell, jedes Gerät eindeutig zu identifizieren. Bei der Verwendung von ESP-NOW kommunizieren Geräte direkt miteinander, ohne einen Router oder Access Point. Hierbei dient die MAC-Adresse als Zieladresse für die Nachrichtenübertragung.
2. Adressierung in ESP-Now
ESP-NOW nutzt die MAC-Adresse, um Nachrichten an spezifische Geräte zu senden. Wenn du eine Nachricht von einem ESP an einen anderen senden möchtest, musst du die MAC-Adresse des Empfängergeräts kennen und in deinem Code angeben.
3. Sicherheitsaspekte
Durch die Kenntnis der MAC-Adressen kannst du die Kommunikation auf autorisierte Geräte beschränken. Dies erhöht die Sicherheit Ihres Netzwerks, da unbekannte oder unerwünschte Geräte nicht ohne Weiteres Nachrichten empfangen oder senden können.
4. Netzwerkverwaltung
In komplexeren Netzwerken, insbesondere bei One-to-Many oder Many-to-One-Kommunikationsszenarien, ist die Verwaltung der MAC-Adressen wichtig, um den Datenfluss effizient zu steuern und Kollisionen oder Interferenzen zu vermeiden.
Praktisches Beispiel
Angenommen, du möchtest ein Sensornetzwerk aufbauen, bei dem mehrere ESP32-Module Temperaturdaten an ein zentrales ESP32-Gateway senden (Many-to-One). Damit jedes Sensorgerät seine Daten korrekt an das Gateway senden kann, musst du die MAC-Adresse des Gateways kennen und in den Sensorgeräten konfigurieren.
Umgekehrt muss das Gateway die MAC-Adressen aller Sensorgeräte kennen, wenn es beispielsweise Bestätigungen oder Steuerbefehle zurücksenden soll.
Um die MAC-Adresse eines ESP32 oder ESP8266 auszulesen, kannst du den folgenden Code verwenden. Dieser Code gibt die MAC-Adresse im seriellen Monitor aus.
#include <WiFi.h> void setup() { Serial.begin(115200); // Warten, bis die serielle Verbindung hergestellt ist while (!Serial) { ; } // MAC-Adresse auslesen String macAddress = WiFi.macAddress(); Serial.print("Die MAC-Adresse des ESP32 ist: "); Serial.println(macAddress); } void loop() { // Nichts zu tun hier }
#include <ESP8266WiFi.h> void setup() { Serial.begin(115200); // Warten, bis die serielle Verbindung hergestellt ist while (!Serial) { ; } // MAC-Adresse auslesen String macAddress = WiFi.macAddress(); Serial.print("Die MAC-Adresse des ESP8266 ist: "); Serial.println(macAddress); } void loop() { // Nichts zu tun hier }
Erläuterung:
- Bibliotheken einbinden: Für den ESP32 verwenden wir <WiFi.h>, während für den ESP8266 <ESP8266WiFi.h> verwendet wird.
- Serielle Kommunikation starten: Serial.begin(115200); initialisiert die serielle Kommunikation mit einer Baudrate von 115200.
- MAC-Adresse auslesen: Mit WiFi.macAddress(); wird die MAC-Adresse des jeweiligen ESP-Moduls ausgelesen und als String gespeichert.
- Ausgabe auf dem seriellen Monitor: Die MAC-Adresse wird mit Serial.println(macAddress); auf dem seriellen Monitor angezeigt.
Hinweis:
- Stelle sicher, dass die Baudrate im seriellen Monitor mit der im Code übereinstimmt (115200 Baud).
- Bei Verwendung der Arduino IDE wähle das richtige Board unter Werkzeuge > Board aus (ESP32 oder ESP8266).
- Wenn du mehrere ESP-Module im Netzwerk verwendest, ist es hilfreich, deren MAC-Adressen zu kennen, um sie eindeutig identifizieren zu können, insbesondere bei der Verwendung von ESP-Now.