gpt4 book ai didi

lua - 使用 nodeMCU 的 Wifi 网状网络

转载 作者:行者123 更新时间:2023-12-04 02:15:36 32 4
gpt4 key购买 nike

我有 2 个 nodeMCU 模块,我想连接到 MQTT 代理并每 5 秒发送一些数据。

我试图实现的拓扑结构类似于 [router]<==[nodeMCU#1]<==[nodeMCU#2]

看起来 [nodeMCU#1] 是一个 wifi 扩展器,但在工作中我们计划使用多个 nodeMCU 以类似网格的方式用于物联网应用。

在他们两个上,我使用 nodeMCU-flasher 刷新了我从这里 https://github.com/nodemcu/nodemcu-firmware/releases/tag/0.9.6-dev_20150704 下载的最新( float )版本。

为此项目编写了 2 个 lua 脚本,我已使用 ESPlorer 将它们上传到模块。

对于第一个模块,它以 STATIONAP 模式连接到我的工作 wifi,并使用 SSID nodeMCUwifi 创建自己的网络,基本密码为 10 个字符“1234567890”。连接后,脚本将随机值发送到 MQTT 主题。

对于第二个模块正确连接到nodeMCUwifi,它被分配了一个IP地址,但它无法连接到MQTT代理。

当我尝试使用我的智能手机连接到 nodeMCUwifi 时(只是为了测试连接,我无意将此系统用于繁重的互联网负载,只有 MQTT 消息)我收到一条消息“发生身份验证错误”,即使我有正确输入密码,或者(在极少数情况下)它连接但立即断开连接。

如果有任何解决此问题的想法,我将不胜感激。谢谢。

编辑:在 AP 配置中,我将 auth 参数设置为 3,我在下面粘贴了一部分代码。

cfg.ssid="ESP8266_"..node.chipid(); 
cfg.pwd="1234567890"
cfg.auth=3
wifi.ap.config(cfg);

现在我的笔记本电脑和智能手机连接到模块创建的 wifi,但仍然无法连接到互联网。我可以 ping 通模块,但无法 ping 通 8.8.8.8 或 MQTT 代理 IP 或其他任何内容。

最佳答案

据我所知,[nodeMCU#1] 创建了一个名为 nodeMCUwifi 的 wifi 网络。然后其他人正在尝试连接到 nodeMCUwifi。正如您所说:

Now my laptop and my smartphone connect to the wifi created by the module, but still have no connectivity to the internet. I can ping the module, but I can't ping 8.8.8.8 or the MQTT broker IP or anything else.

我假设您的笔记本电脑和智能手机连接到 nodeMCUwifi 网络。现在您希望此 [nodeMCU#1] 充当第 2 层交换机或路由器之类的东西(因为 SOFTAP 创建了自己的 ip 网络)。

根据手头的所有这些信息,我可以说使用 esp 无法实现您想要达到的目的。由于 esp 没有足够的资源来充当 switch 或类似的角色。此外(目前)esp 中没有实现该功能的软件。

但是;如果只希望系统通过特定协议(protocol)(例如 UDP)传输特定类型的流量(例如 MQTT),则可以中继 消息像网状结构,但这只能单向工作。在这种配置中,节点将更像中继器,但位于 OSI 的上层。对于这个想法,我无法提供示例代码,但我将在下面提供伪代码:

配置

> 必须配置每个节点以构建链结构。这意味着每个 SOFTAP 节点都应该有不同的 SSID 或 TCP 设置。例如:

router(192.168.0.0)<----[NODE#1(SOFTAP0)]<----[NODE#2(SOFTAP1)]<---...
...
...
...<----[NODE#n(STATION)]

> 根据设置,每个节点都必须有一个TARGET IP 地址。这意味着每个节点都会将 MQTT 消息发送到该地址。

>>如果一个节点配置为 SOFTAP,这意味着这个系统是一个 TARGET 并且必须监听一个特定的端口。

> 如果 SOFTAP 节点在正在监听的端口上接收到一些数据,它应该立即(或缓冲)将数据发送到它的TARGET 节点。

>>作为这种链式操作的结果,无论源是什么,消息都将到达链的末端。

代码: SOFTAP

...soft ap config...
listento.port: udp.965
on("receive"):
create.conn:TARGET
send(DATA_RECEIVED)
close.conn:TARGET

代码: 车站

...station config...
...Do some logic...
data=gather.data()
create.conn:TARGET
send(data)
close.conn:TARGET

关于lua - 使用 nodeMCU 的 Wifi 网状网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34130536/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com