ESP32设置wifi主机名失败

时间:2019-02-27 14:43:06

标签: esp32

我正在使用AT命令二进制文件(由Espresif提供)来连接我的wi-fi应用程序。为了通过网络识别设备,我将主机名更改为已知名称,但是当我扫描网络时,主机名仍为“ Espressif”,而不是“我自己的主机名”。

有人知道该如何解决吗?我实际上认为这是AT命令二进制文件中的错误。

4 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。

代码如下:

#include <Arduino.h>
#include "WiFi.h"

void setup() {
    // Start the Wifi connection ...
    WiFi.enableSTA(true);
    WiFi.begin(ssid, password);

    // TODO Hostname setting does not work. Always shows up as "espressif"
    if(WiFi.setHostname("myHostname")) {
        Serial.printf("\nHostname set!\n");
    } else {
        Serial.printf("\nHostname NOT set!\n");
    }
}

答案 1 :(得分:1)

乐鑫代码中存在错误。解决方法是在设置主机名和启动 WIFI 之前 重置 WIFI:

WiFi.disconnect(true);
WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE);     
WiFi.setHostname(hostname);

另请注意,OTA 可能会使问题更难解决。如果使用MDSN和OTA,请添加以下代码(在WIFI-stuff之后)以确保主机名得到正确设置:

MDNS.begin(hostname);
ArduinoOTA.setHostname(hostname);
ArduinoOTA.begin();

有关详细信息,请阅读乐鑫 GitHub 存储库中的 issue 2537

答案 2 :(得分:0)

尝试等待Wifi设置。 Delay(150)最简单(永远不是最好)。

答案 3 :(得分:0)

经过十多个小时的研究,试图以一种或另一种方式查明,分析和/或解决问题,我放弃了,接受了解决方法。您可以找到它here

简而言之,我所做的和对我有用的是:

WiFi.disconnect();
WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE);  // This is a MUST!
if (!WiFi.setHostname("myFancyESP32")) {
  Serial.println("Hostname failed to configure");
}
WiFi.begin(ssid, password);

这确实令人沮丧,但目前看来,问题出在ESP IDF上,除非在那里解决,否则它将无法解决。