Hi zusammen,
sorry, hab zwar grad schon ein Thema am Laufen aber muss noch parallel ein zweites aufmachen
Es geht um das Thema IP-Adressen (statisch oder nicht statisch) und mDNS.
Bei allen nachfolgenden Betrachtungen soll angenommen werden, dass ein Consumer-Produkt entwickelt wird, das evtl. sogar mehrfach im gleichen Netzwerk betrieben wird.
Angenommen der Ablauf wÀre der folgende.
- Der User schaltet das GerÀt ein (ESP32 oder ESP8266 sei mal dahingestellt) .
- Der ESP baut einen Accesspoint auf (also WIFI_AP - Modus)
- Der User verbindet sich im ersten Schritt mit diesem Accesspoint und gibt seine WLAN-Zugangsdaten in ein Formular ein (Vorab: den Login-Manager von FIPS hab ich mir schon angeschaut hat mich in der Sache aber nicht wirklich weiter gebracht)
- Der User klickt auf "Verbinden"
- Der ESP wechselt in den Station-Modus (WIFI_STA) und verbindet sich mit dem Router.
Bis hierhier ist alles klar, krieg ich hin!
Nur: Wie gelangt der User nun am smartesten zu der IP-Adresse, ĂŒber die er den ESP im Netzwerk erreicht?
Möglichkeit 1:
Ich vergebe KEINE statische IP-Adresse. Die IP-Adresse wird dynamisch generiert und mir per WiFi.localIP() angezeigt. Problem hier ist aus "Anwendersicht": Diese dynamisch generierte IP-Adresse muss dem Anwender ja irgendwie mitgeteilt werden.
Mein aktueller Ansatz hier ist, dass der ESP nach Schritt 4 (siehe oben) nicht in den Station Mode geht sondern in den Mixed Mode (WIFI_AP_STA). Der Anwender kann sich dann mit dem Accesspoint des ESP verbinden und per 192.168.4.1 mit dem Frontend (also dem Webserver).
Dort wird im dann die dynamisch generierte IP-Adresse angezeigt.
NatĂŒrlich kann man mit mDNS einen Alias (Host) definieren. Aber soweit ich weiĂ, funktioniert mDNS Beispielsweise mit Android nicht.
Somit rĂŒckfolgere ich: Bei dynamisch generierter Adresse ist WIFI_AP_STA quasi erforderlich, damit der User eine Möglichkeit hat, an die IP-Adresse zu kommen, korrekt (auĂer man hat ein Display am GerĂ€t auf dem diese angezeigt wird).
Weitere Probleme, die ich hier bzgl. mDNS sehe: Wenn zwei GerĂ€te im gleichen Netzwerk betrieben werden, wĂŒrden diese beide den gleichen mDNS-Alias verwenden und es gĂ€be einen Namenskonflikt, richtig?
Möglichkeit 2:
Ich vergebe eine statische IP-Adresse. Diese kann ich dem Anwender dann gleich zu Beginn (z.B. auch schon in der Bedienungsanleitung des Produktes) mitteilen. Aber: Woher weiĂ ich denn, welche IP-Adressen ĂŒberhaupt noch frei sind.
Klar, ich kann einfach mal annehmen, dass folgendes funktioniert (völlig ins Blaue geschossen):
IPAddress staticIP(192, 168, 1, 150);
IPAddress gateway(192, 168, 1, 254);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 1, 254);
Aber weiĂ ich SICHER, dass diese IP-Adresse noch frei ist?
Und auch dann hab ich das Problem, dass - wenn ein weiteres GerÀt mit der gleichen IP-Adresse im gleichen Netzwerk betrieben wird - ein IP-Adressen-Konflikt entsteht.
Ich weiĂ, das klingt alles recht abenteuerlich und wie an den Haaren herbeigezogen
Aber mich interessiert einfach, wie man sowas am elegantesten löst, zukunftssicher und "Idiotensicher".
Ich hoffe, hier eine rege Diskussion auszulösen und bin gespannt auf eure hoffentlich produktiven und wie immer "lieben" VorschlÀge
LG