Назначение статического IP-адреса и имя хоста
Я пытаюсь назначить статический IP-адрес своему ESP32, а также задать имя хоста. Я могу заставить того или другого работать, но не могу заставить их работать вместе.
Попытался обойти WiFi.имя хоста и WiFi.config в коде, попробовал WiFi.начать, а затем установить имя хоста и IP
#include <WiFi.h>
void setup() {
IPAddress local_IP(192, 168, 1, 100);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(208, 67, 222, 222);
IPAddress secondaryDNS(208, 67, 220, 220);
WiFi.mode(WIFI_STA);
WiFi.hostname("ESP");
WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS);
WiFi.begin("xxxx", "yyyy");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
вопрос в вопросе: WiFi.config, который дает мне статический IP-адрес, имеет формат local_IP, шлюз, подсеть, первичные, вторичные, но документация для WiFi.config 2 (а также просмотр кода библиотеки WiFi.h) - это ip, dns, шлюз, подсеть.
и согласно документации это также должно работать, но не работает WiFi.config (ip)
@user80062, 👍0
Обсуждение1 ответ
Не существует такого понятия, как имя хоста, связанное с конкретным устройством.
- Когда вы запрашиваете IP-адрес у своего маршрутизатора с помощью DHCP, у ESP32 есть опция (которую он использует), чтобы сообщить маршрутизатору, как он хотел бы называться. Маршрутизатор может, если захочет, принять решение ввести это имя в запросы DNS, выполняемые через маршрутизатор, чтобы разрешить этот выделенный IP-адрес.
- Вы можете вручную "рекламировать" имя с помощью протокола mDNS, который требует включения и использования другой библиотеки и дополнительной конфигурации в вашем скетче, а также поддержки mDNS в устройствах и приложениях, выполняющих поиск имени (он становится все более универсальным, но ни в коем случае не обязательно будет доступен).
Поскольку вы не используете DHCP для получения своего IP-адреса и не используете MDNS для рекламы своего имени, не существует механизма, который волшебным образом мог бы придать вашему устройству "имя" в вашей сети.
Самый простой способ "обойти" проблему-просто использовать DHCP и позволить вашему маршрутизатору выполнять всю работу. Если вам действительно нужен статический IP-адрес, настройте свой маршрутизатор так, чтобы он предоставлял статический IP-адрес вашему устройству.
Что ж, это, безусловно, объяснило бы мою проблему. Но что не добавляет, так это то, что другие устройства в моей сети (принтеры, NAS и т. Д.) Имеют статические IP-адреса и отображают пользовательские имена хостов, @user80062
Это потому, что эти устройства используют DHCP, чтобы сообщить маршрутизатору свое имя. Точно так, как описал Майенко. Для статических IP-адресов: возможно, вы установили для устройств статические IP-адреса в настройках маршрутизатора. В этом случае они все равно получают свой IP-адрес от маршрутизаторов DHCP, каждый раз одинаково. Или они не используют DHCP, и вы установили IP-адрес на устройстве, надеясь при этом убедиться, что ни одно другое устройство не может иметь такой же IP-адрес, @chrisl
Более вероятно, что они рекламируют свои имена с помощью MDN. Например, MyPrinter.local., @Majenko
Ни одно из устройств, о которых я говорю, не использует DHCP. Все они имеют статические IP-адреса и пользовательские имена хостов в самом устройстве. У принтеров есть MDN, у NAS-нет, но я все еще вижу его пользовательское имя. Я собираюсь попробовать добавить MDNS в ESP32 завтра и посмотреть, поможет ли это, @user80062
NAS, вероятно, использует SMB, который включает собственное разрешение сетевых имен., @Majenko
Я думаю, ты справился с этим. NAS действительно использует SMB., @user80062
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
- ESP32 - "Детектор Браунаута был активирован" при запуске Wi-Fi
- Питание esp32cam от аккумулятора
- Контакты RX и TX на esp32
- ESP32: отключить детектор отключения питания
Как вы определяете, работает "имя хоста" или нет? Понятие "имя хоста" существует только в области DHCP (который вы не используете), DNS (который не контролируется ESP32, и вы все равно не используете) или MDNS (которые вы снова не используете)., @Majenko