Ich habe mehrere ESP32-Staionen in meinem privaten Netz. Habe jeder ESP-Station einen eigenen Node-Namen zugewiesen. Möchte nun von einem der ESP-Stationen aus die IP-Addressen der anderen eingeloggten ESP-Stationen anhand des Node-Namens auflösen. Habe das Internet rauf und runter gesucht aber nichts vernünftiges gefunden. Weiss Jemand Rat??
Manfred H. schrieb: > Ich habe mehrere ESP32-Staionen in meinem privaten Netz. > Habe jeder ESP-Station einen eigenen Node-Namen zugewiesen. Wo genau hast du ihnen einen Namen zugewiesen? > Möchte nun von einem der ESP-Stationen aus die IP-Addressen der anderen > eingeloggten ESP-Stationen anhand des Node-Namens auflösen. > Habe das Internet rauf und runter gesucht aber nichts vernünftiges > gefunden. DNS oder MDNS hast du nicht gefunden? Kann ich kaum glauben angesichts der Tatsache, dass das seit Jahrzehnten die üblichen Methoden zur Namensauflösung in IP-Netzen sind. Wer dazu nichts gefunden haben will, kann nur ein Traffic-Troll sein.
Vermutlich is sein Problem, dass er weder die Namen noch die IP Adressen kennt, sondern eher eine Liste aller lokal erreichbaren Geräte braucht.
Bei Microchip heißt das Announce. UDP Broadcast schicken. Warten auf Antworten. Sich freuen über die Antworten wo eventuell auch eine Name/ID/Host drin steht.
c-hater schrieb: > Manfred H. schrieb: > >> Ich habe mehrere ESP32-Staionen in meinem privaten Netz. >> Habe jeder ESP-Station einen eigenen Node-Namen zugewiesen. > > Wo genau hast du ihnen einen Namen zugewiesen? > Habe im set-up der hosts jedem einen eigenen Namen zugewiesen. Beispiel:
1 | String hostname = "Mischpult-Control"; |
2 | |
3 | WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE, INADDR_NONE); |
4 | WiFi.setHostname(hostname.c_str()); //define hostname |
5 | WiFi.begin(ssid, password); |
>> Möchte nun von einem der ESP-Stationen aus die IP-Addressen der anderen >> eingeloggten ESP-Stationen anhand des Node-Namens auflösen. >> Habe das Internet rauf und runter gesucht aber nichts vernünftiges >> gefunden. > > DNS oder MDNS hast du nicht gefunden? Kann ich kaum glauben angesichts > der Tatsache, dass das seit Jahrzehnten die üblichen Methoden zur > Namensauflösung in IP-Netzen sind. Wer dazu nichts gefunden haben will, > kann nur ein Traffic-Troll sein. DNS und multicast-DNS sind mir durchaus ein Begriff, wenngleich ich nicht täglich damit umgehe. Meine ESP-hosts erscheinen in der Netzwerkliste meiner Fritz.box. Auch habe ich mir ein kleines Programm für meinen PC geschrieben. Da benutze ich eine spezielle dll, um mir alle hosts in meinem Netz samt zugehöriger IP-Addresse aufzulisten. Auch da erscheinen alle ESP32-hosts mit ihren Namen und ihrer IP-Addresse. Ich habe auch die ESPmDNS.h-Library gefunden aber leider dazu kein "Programers reference manual" und auch kein für mein Problem brauchbares Code-Beispiel. Jetzt bin ich von der stundenlangen, ergebnislosen Suche einfach nur genervt. Weil mir der detailierte Hintergrund zu der ganzen DNS-Geschicht nicht geläufig ist, dachte ich, dass mir möglicherweise hier wer einen Tip geben könnte, wie ich an die IP-Addressen meiner hosts komme.
:
Bearbeitet durch User
Manfred H. schrieb: > Meine ESP-hosts erscheinen in der Netzwerkliste meiner Fritz.box. Komisch. Bei jeden meiner Teile in der Fritzbox schreibt die Fritzbox mir die IP dahinter. Also Ping den Namen an, und er sagt die die IP. Aber ich muss zugeben das ich nicht weiß wie man ein Ping-Befehl auf ein ESP einsetzt, bez. auswertet. Und achte auf Groß+Kleinschreibung bzw. Anführungszeichen wegen den - . Einige Systeme sehen das ziemlich eng .
Schlaumaier schrieb: > Manfred H. schrieb: >> Meine ESP-hosts erscheinen in der Netzwerkliste meiner Fritz.box. > > Komisch. Bei jeden meiner Teile in der Fritzbox schreibt die Fritzbox > mir die IP dahinter. > Das macht meine Fritz.box auch. Aber, die Geschichte der Foren ist eine Geschichte voller Missverständnisse. Background: Ein Kumpel von mir hat ein paar tolle Ideen für sein Lokal. Er will da alles mögliche an Geräten (Licht, Musik, Quiz-Anlage usw) in einer indiviuellen Art steuern. Natürlich gibt es alles mögliche an "smart-home-solutions" aber leider nicht das, was er sich einbildet. Also habe ich zu ihm gesagt: "Ich entwickle dir das." Habe ich auch getan. Die einzelnen Geräte werden über ESP32 gesteuert und müssen sich untereinander unterhalten. Auch kein Problem. Die Geräte sind fertig und das machen sie schon perfekt. Das Problem ist: Bei mir hier im Labor funktioniert das mit den fest einprogrammierten IP-Addressen. Wenn sich aber die Geräte in das WiFi-Netz des Lokals meines Kumpels einwählen werden, bekommen sie andere IP-Addressen zugewiesen. Ich will aber nicht bei ihm im Lokal das einprogrammieren von IP-Addressen beginnen. Das bedeutet, die Geräte müssen sich die IP-Addressen dynamisch selbst irgendwie organsieren. Ich habe mir das so gedacht: Eines der ESP32-Geräte ist der "master" und bekommt per bluetooth und Blynk-App die SSIP und das Passwort des neuen WiFi-Netzes. Die Blynk-App ist kein Problem und "funzt" schon. Der "master-ESP32" ermittelt, welches der anderen ESP-Geräte eingewählt ist, erstellt anhand der node-names eine Liste der IP-Addressen und übergibt die IP-Liste an alle ESP32-nodes. Die richten jeder UDP ein und können sich fortan unterhalten. Ich brauche also den Code, um von einem ESP32 aus die IP-Addressen aller anderen ESP-nodes zu ermitteln. Mit der library ESPmDNS.h scheint das auflösen der IP relativ einfach zu klappen. Habe aber bisher weder eine "Programmers reference" dieser Library noch ein brauchbares Code-Beispiel gefunden. > Also Ping den Namen an, und er sagt die die IP. > > Aber ich muss zugeben das ich nicht weiß wie man ein Ping-Befehl auf ein > ESP einsetzt, bez. auswertet. Und achte auf Groß+Kleinschreibung bzw. > Anführungszeichen wegen den - . Einige Systeme sehen das ziemlich eng . Ich habe das mal untersucht. Der WiFi.ping gibt nur die ping-Zeit zurück. Genauso ist es bei diversen ping-Libraries, die ich gefunden habe. Ich habe keine gefunden, die die IP mit zurück gibt.
Die ESP bekommen ihre IP via DHCP vom Router? Und du kommst von extern nicht an die DHCP-Lease-Tabelle des Routers? Dann mach das doch selbst. Lass deine Knoten regelmässig einen UDP-Heartbeat broadcasten. Da kannst du dann auch noch den Namen mit übertragen. LG, Sebastian
Manfred H. schrieb: > Meine ESP-hosts erscheinen in der Netzwerkliste meiner Fritz.box. Schlaumaier schrieb: > Also Ping den Namen an, und er sagt die die IP. Verlasse dich nicht darauf. Ich glaube dir das deine Fritz Box die Hostnamen anzeigen kann, aber einige andere WLAN Router können es nicht. Selbst die Namensauflösung via DNS ist ein nice-to-have Feature das noch lange nicht alle WLAN Router unterstützen. Du machst dich da von einer Funktion abhängig, deren Existenz du langfristig nicht gewährleisten kannst. Ich würde es anders lösen wollen. Sebastian schrieb: > Dann mach das doch selbst. Lass deine Knoten regelmässig einen > UDP-Heartbeat broadcasten. Da kannst du dann auch noch den Namen mit > übertragen. Eventuell so. Oder erst nach Aufforderung, anstatt regelmäßig. Bedenke allerdings, dass Broadcasts normalerweise nur im eigenen Subnetz funktionieren. Wenn du z.B. für den Garten einen zweiten WLAN Router hin stellst, dann sind die Geräte in der Gartenlaube aus dem Haus heraus nicht über Broadcast erreichbar. Das ist nicht immer und zwingend so, aber oft. Die Consumer-Produkte sind diesbezüglich oft nicht so flexibel konfigurierbar, wie hierzu nötig wäre.
Manfred H. schrieb: > Das bedeutet, die Geräte > müssen sich die IP-Addressen dynamisch selbst irgendwie organsieren. Müssen sie nicht, aber wenn du willst: Alles was unter dem Begriff Zeroconf läuft. mDNS wurde schon genannt. Dann RFC 3927 alias Microsoft APiPA. Aber: > Der "master-ESP32" ermittelt, welches der anderen ESP-Geräte eingewählt > ist, Was soll dieses "einwählen" sein? Wir sind nicht mehr in den 90ern wo man Telefonmodems verwendet hat. Ich vermute mal, du meinst damit, dass sie über WLAN nicht nur mit einem AP, sondern darüber mit einem SOHO-Router verbunden sind. Es wurde eine FritzBox erwähnt. Nur, wie sollen die ESPs das machen, wenn nicht jeder einzelne ESP mit den WLAN-Zugangsdaten konfiguriert ist? > erstellt anhand der node-names eine Liste der IP-Addressen und > übergibt die IP-Liste an alle ESP32-nodes. Die richten jeder UDP ein und > können sich fortan unterhalten. Henne-Ei-Problem. Damit dein Master mit den anderen ESPs kommunizieren kann um deren IP-Networking zu konfigurieren muss er bereits funktionierendes IP-Networking zu den anderen ESPs haben. D.h. die müssen alle bereits WLAN können, im LAN eine IP-Adresse (erhalten) haben usw. Jeder der ESPs braucht eine initiale WLAN Konfiguration. Wenn sie dann damit mit dem SOHO-Router verbunden sind, dann können sie auch das DHCP (und das damit synchronisierte DNS) des Routers verwenden. Client-seitig DHCP-Option 12 setzen und zusehen/hoffen dass der Server die Option richtig abarbeitet. Eigentlich können dass praktische alles SOHO-Router, aber man hat natürlich immer mal wieder Pferde vor der Apotheke kotzen sehen. Wenn der Server Option 12 abarbeitet (und natürlich der Name nicht doppelt ist, der Router das Format mag, ...), wird der Name bei praktisch allen Routern automatisch in den DNS-Server des Routers eingetragen. Ab dem Punkt können alle anderen Hosts im LAN den ESP per Namen ansprechen (natürlich mit zwischengeschalteter DNS-Resolution um an die IP-Adresse zukommen). Wie immer lohnt es sich mit Wireshark nachzusehen was wirklich hin und her geht. > Ich brauche also den Code, um von einem ESP32 aus die IP-Addressen aller > anderen ESP-nodes zu ermitteln. Hör auf zu versuchen das Rad neu zu erfinden und am Networking rumzubiegen. Nimm was da ist. >> Also Ping den Namen an, und er sagt die die IP. >> >> Aber ich muss zugeben das ich nicht weiß wie man ein Ping-Befehl auf ein >> ESP einsetzt, bez. auswertet. Und achte auf Groß+Kleinschreibung bzw. >> Anführungszeichen wegen den - . Einige Systeme sehen das ziemlich eng . > > Ich habe das mal untersucht. Der WiFi.ping gibt nur die ping-Zeit > zurück. Schlaummaier erzählt ja auch mal wieder Scheiße. ping-Programme verwenden einen Resolver um einen Hostnamen in eine IP-Adresse aufzulösen. Der Resolver verwendet normalerweise DNS. Den ganzen ping-Quatsch kannst du dir daher in die Haare schmieren. ping weiß nicht mehr als DNS, weil es einfach DNS befragt. Das gilt auch für ping-Programme die als Service für den User zu einer IP-Adresse den Hostnamen anzeigen. Die machen eine Reverse-DNS-Resolution.
Hannes J. schrieb: > Wenn der Server Option 12 abarbeitet (und natürlich der Name nicht > doppelt ist, der Router das Format mag, ...), wird der Name bei > praktisch allen Routern automatisch in den DNS-Server des Routers > eingetragen. Leider nicht. Ich hatte gleich drei WLAN Router hintereinander, wo das nicht klappte. Einer davon konnte die Hostnamen immerhin in seiner Web GUI auflisten, aber DNS Auflösung der lokalen Hosts ging bei allen 3 nicht. Jetzt bei meinem 4. Router geht es endlich, doch inzwischen habe ich aufgegeben, mich darauf zu verlassen. Das ist so ein ähnliches Ding wie WPS - funktionierte bei mir nur mit den Geräten, wo es nicht nötig war. Der Teufel steckt im Design.
Hannes J. schrieb: > . ping weiß nicht > mehr als DNS, weil es einfach DNS befragt. Hab ich auch nix andere gesagt. Und wo ist der DNS. ??? Das Gerät meldet sich beim DNS an. Bekommt dort seine IP zugewiesen. Und wieso soll der DNS diese IP nicht raus rücken. Beim PC sieht das so aus. Ping drucker Ping wird ausgeführt für drucker.fritz.box [192.168.5.30] mit 32 Bytes Daten: Also bekomme ich die IP. Aber wie schon erwähnt wie und ob das mit den ESP geht, weiß ich nicht. Wenn man nun Manfreds Beispiel nimmt, spielt der Master-esp die Zentrale. Ich bin davon überzeugt das alle Home-Systeme genau das machen. Einen Zentrale mit DNS-Server zur Verfügung stellen. Ich weiß zwar auch nicht ob man auf einen ESP ein DNS-Server installieren kann, aber ansonsten würde ich einfach als Zentrale auf eine Beere ausweichen. Die bekommt dann noch ein Webinterface und was der Kunde sonst noch will und alles ist gut. Einfach über die Beere ein eigenes Netz aufbauen. Normal macht man das so. Ein ESP o.w.a.i. hat eine Anmelderoutine. Die wird ausgelöst und die Zentrale wird auf "abhören" gestellt. Sobald die das Signal empfängt vergibt sie den ESP die Infos die er braucht.
Stefan ⛄ F. schrieb: > Leider nicht. Ich hatte gleich drei WLAN Router hintereinander, wo das > nicht klappte. Einer davon konnte die Hostnamen immerhin in seiner Web > GUI auflisten, aber DNS Auflösung der lokalen Hosts ging bei allen 3 > nicht. Hersteller? Alter der Router? > Jetzt bei meinem 4. Router geht es endlich, doch inzwischen habe ich > aufgegeben, Es wurde die FritzBox erwähnt. Für diese ist das dokumentiert (Option 12 wird nicht erwähnt): https://avm.de/service/wissensdatenbank/dok/FRITZ-Box-7490/3453_Unbekannte-Gerate-in-der-Mesh-Ubersicht/ >>> Geräte, die ihre IP-Einstellungen per DHCP von der FRITZ!Box beziehen >>> und der FRITZ!Box dabei ihren Namen mitteilen, werden mit ihrem >>> Hostnamen angezeigt. Wenn sein Router das nicht kann, na ja. Er könnte einen anderen integrierten DHCP/DNS Server installieren. Irgendwo wird er für die ganzes ESPs sowieso einen Server haben, der könnte das mit erledigen. Fakt ist, ohne Namensauflösung wird er nicht mit ESP-Hosts per Namen kommunizieren können. Fast alle Lösungen wie DNS, mDNS, Zeroconf, oder eben einem integrierten DHCP/DNS Server wurden schon genannt. Mir fällt noch die Apple-Version von Zeroconf, Bonjour ein, WINS (ha, ha), oder Option 81. Aber letzteres ist eine ganz spezielle Sache für Dyn-DNS. > Das ist so ein ähnliches Ding wie > WPS - funktionierte bei mir nur mit den Geräten, wo es nicht nötig war. WPS ist ein Sicherheitsproblem und sollte daher sowieso ausgeschaltet werden.
Hannes J. schrieb: > WPS ist ein Sicherheitsproblem und sollte daher sowieso ausgeschaltet > werden. Man sollte seinen Besucher eh trauen, ansonsten sehe ich da noch mehr Probleme. ;) Aber WPS klappt eh nur in 40% aller Fälle meiner Erfahrung nach. Also mache ich es auf die altmodische Weise. = Netz suchen, pw eingeben, guckguck da bin ich ;) Weshalb ich es eh WPS AUS und Tastensperre EIN habe.
@c-hater "Wer dazu nichts gefunden haben will, kann nur ein Traffic-Troll sein." Was genau bezweckt man mit so einem Post? Weiteren Traffic?? Somit bist du Teil des Systems..oder solltest dir solche Kommentare einfach verkneifen
Hannes J. schrieb: > Hersteller? Alter der Router? Die Marken weiß ich nicht mehr. Einer war von Vodafone, einer von Unitymedia und einer von Saturn. Der von Saturn war mit "Trendnet" oder irgendwas mit "Link" im Namen beschriftet, soweit ich mich erinnere. Wenn für dich 4 Jahre alt ist, dann waren sie alle alt. Zwischendurch hatte ich eine Fritz-Box geliehen mit der ging es (nicht überraschend). Und mit meinem aktuellen Router von Vodafone geht es auch.
Stefan ⛄ F. schrieb: > Selbst die Namensauflösung via DNS ist ein nice-to-have Feature das noch > lange nicht alle WLAN Router unterstützen. Vollkommener Bullshit. DNS unterstützen natürlich alle WLAN-Router seit Anbeginn der Zeit. Was daran stimmt ist: Update des DNS aus dem DHCP könnten sie eventuell nicht unterstützen. Und das ist nur ein Teil des Problems. Denn selbst die, die das sicher unterstützen, sind darauf angewiesen, dass der DHCP-Client seinen Hostnamen überhaupt übermittelt. Das muß er nicht! > Du machst dich da von einer Funktion abhängig, deren Existenz du > langfristig nicht gewährleisten kannst. Ich würde es anders lösen > wollen. Naja. Die letzte Routerbox, die DHCP->DNS nicht unterstützt hat, habe ich vor ca. 10 Jahren in der Hand gehabt. Ich weiß nicht, mit was für Technik du hantierst, aber du solltest deine Beschaffungspolitik überdenken... >> Dann mach das doch selbst. Lass deine Knoten regelmässig einen >> UDP-Heartbeat broadcasten. Da kannst du dann auch noch den Namen mit >> übertragen. > > Eventuell so. Oder erst nach Aufforderung, anstatt regelmäßig. Alles vollkommener Bullshit, selbst nach ESP-Arduino-Maßstäben. Das Zeugs bringt doch vollständige MDNS-Unterstützung mit, inclusive Announces. Man muss es einfach nur benutzen. Es gibt für die üblichen Vollidioten sogar YT-Videos dazu, wie man das tut...
c-hater schrieb: > Vollkommener Bullshit. DNS unterstützen natürlich alle WLAN-Router seit > Anbeginn der Zeit. Vollkommener Bullshit, ich kann dir einen zeigen, der es nicht kann. Komm vorbei, schau ihn dir an! > Was daran stimmt ist: Update des DNS aus dem DHCP > könnten sie eventuell nicht unterstützen. Ach was, genau darum geht es hier doch! > selbst die, die das sicher unterstützen, sind darauf > angewiesen, dass der DHCP-Client seinen Hostnamen überhaupt > übermittelt. Das muß er nicht! Ja und, wo ist das problem? Die Clients programmiert der TO selbst und sie können es. Das hat er bereits verifiziert.
Stefan ⛄ F. schrieb: > Vollkommener Bullshit, ich kann dir einen zeigen, der es nicht kann. > Komm vorbei, schau ihn dir an! Typ, Modell? Vermutlich meinst du in einer geballten Inkompetenz keinen WLAN-Router, sondern einen AP. Das ist was anderes...
c-hater schrieb: >> Vollkommener Bullshit, ich kann dir einen zeigen, der es nicht kann. >> Komm vorbei, schau ihn dir an! > Typ, Modell? Da gehe ich jetzt nicht nachgucken, mein Sohn schläft schon und das Ding steht in seinem Zimmer. > Vermutlich meinst du in einer geballten Inkompetenz > keinen WLAN-Router, sondern einen AP Im Gegensatz zu dir kann ich lesen. Ich sage nur: ADC Register. Außerdem ist dir die Antwort doch Scheißegal, es sei du kannst ihr widersprechen. Warum sollte ich ausgerechnet dir diesen Gefallen tun?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.