我正在使用AT命令二进制文件(由Espresif提供)来连接我的wi-fi应用程序。为了通过网络识别设备,我将主机名更改为已知名称,但是当我扫描网络时,主机名仍为“ Espressif”,而不是“我自己的主机名”。
有人知道该如何解决吗?我实际上认为这是AT命令二进制文件中的错误。
答案 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上,除非在那里解决,否则它将无法解决。