我正在构建一个 IoT 解决方案,我将多个设备连接到我的本地网络,我想将这些设备连接到控制我的解决方案的集线器。
连接新设备后,我想将其与集线器连接并为其命名以进行识别。我想以自动方式实现检测(所以我不必手动输入 IP 地址)。例如,当网络中存在 Chromecast 时,我可以在手机的流媒体应用程序中看到它。所以我想做一些类似的事情来将集线器与设备连接起来。
到目前为止,我的想法是有两种方法可以做到这一点:
这些方法中的任何一种是否比另一种更受欢迎,在这种情况下为什么?
进行扫描时,无论我选择哪个方向,最有效的扫描方式是什么?我正在使用 Java 进行实现,到目前为止我所拥有的是:
int timeout = 100;
for (int i = 1; i < 255; i++)
{
String host = subnet + "." + i;
if (InetAddress.getByName(host).isReachable(timeout))
{
String hostname = InetAddress.getByName(host).getHostName();
String canonicalHostName = InetAddress.getByName(host).getCanonicalHostName();
System.out.println(host + " is reachable. Hostname: " + hostname + ", CanonicalHostName: " + canonicalHostName);
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里看到的是,对于我网络中的大多数内容,返回的主机名只是 IP 地址,而不是我在路由器中看到的主机名。我想我可以使用主机名作为识别器来检测特定设备并了解它们的位置 - 但是这个小 poc 似乎不起作用。那么如何才能很好地识别设备呢?
是否有任何适用于 Java(或 Javascript)和 ESP8266 的库/解决方案可以做到这一点?(如果实施“智能家居”设备,感觉就像一个常见问题)。
我正在尝试将 ESP8266 连接到另一个 ESP8266 托管的 WiFi 网络。问题是 ESP8266 在 WiFi 扫描期间显示 WiFi 网络,但无法连接到它并出现错误:no espnetwork found, reconnect after 1s。
ESP8266 托管网络的代码:
#include <osapi.h>
#include <user_interface.h>
void ICACHE_FLASH_ATTR user_init(void) {
// Delays 1 second for my serial monitor to catch up
for (int i = 0; i < 200; i++) os_delay_us(5000);
gpio_init();
uart_init(115200, 115200);
wifi_softap_dhcps_stop();
wifi_set_opmode(SOFTAP_MODE);
struct softap_config softAPConfig = {
.ssid = {0},
.password = {0},
.ssid_len = sizeof("espnetwork"),
.authmode = AUTH_OPEN,
.max_connection = 4,
.beacon_interval = 100,
}; …Run Code Online (Sandbox Code Playgroud) 如何使用汇编对 ESP32 或 ESP8266 模块进行编程?我不想使用arduino ide。我想出了一种用汇编对 atmel 芯片进行编程的方法。我想学习如何用汇编语言对 esp32 和 esp8266 进行编程。