MESH组网情况下,数据收发疑问,请帮忙解答,多谢
MESH组网情况下,数据收发疑问,请帮忙解答,多谢
Postby forever » Tue Dec 06, 2016 6:54 pm
Alen,你好:
因公司项目需要,目前正在使用8266做MESH组网开发。考虑到产品实际应用场景,计划采用一个8266作为AP+Server模式(后称为Master节点),其余节点接入到该Master节点,并自组Mesh网络。在Master节点使用mesh库接口完成mesh数据包的封装,使用espconn_send接口进行发送。其余节点自可完成自组网功能,在进行数据收发测试时出现一些问题,主要如下:
1、当root节点下只有一级时,从Master节点发送数据给任意节点时,几乎不出现问题,但是当root下节点达到两级或者三级时,第二级及以下级很难收到数据,并有类似一下打印
pkt-idx:0, cidx:-1, usr:1, txing[0]:1
pkt-idx:1, cidx:-1, usr:1, txing[0]:1
pkt-idx:2, cidx:-1, usr:1, txing[0]:1
pkt-idx:3, cidx:-1, usr:1, txing[0]:1
pkt-idx:4, cidx:-1, usr:1, txing[0]:1
pkt-idx:5, cidx:-1, usr:1, txing[0]:1
2、今天看到如果不使用单独路由器,可以将节点初始化成MESH_SOFTAP模式,今天测试了下,将原来的Master节点初始化成MESH_SOFTAP模式后,其他的节点可以正常连接到Master节点,可以看到mesh网络可以组网(根据各个节点分配的IP地址)。问题来了,我使用espconn_accept接口开启TCP Server的侦听,返回码是-15,也就是已经链接,使用espconn_get_connection_info接口却无法获得对端的连接信息。使用espconn_send函数发送失败,返回值是-12(找不到数据连接),如果使用
espconn_mesh_sent接口发送,返回值是-4(路由问题),发送失败....
请Alen帮忙给出解决思路,盼回..,多谢
因公司项目需要,目前正在使用8266做MESH组网开发。考虑到产品实际应用场景,计划采用一个8266作为AP+Server模式(后称为Master节点),其余节点接入到该Master节点,并自组Mesh网络。在Master节点使用mesh库接口完成mesh数据包的封装,使用espconn_send接口进行发送。其余节点自可完成自组网功能,在进行数据收发测试时出现一些问题,主要如下:
1、当root节点下只有一级时,从Master节点发送数据给任意节点时,几乎不出现问题,但是当root下节点达到两级或者三级时,第二级及以下级很难收到数据,并有类似一下打印
pkt-idx:0, cidx:-1, usr:1, txing[0]:1
pkt-idx:1, cidx:-1, usr:1, txing[0]:1
pkt-idx:2, cidx:-1, usr:1, txing[0]:1
pkt-idx:3, cidx:-1, usr:1, txing[0]:1
pkt-idx:4, cidx:-1, usr:1, txing[0]:1
pkt-idx:5, cidx:-1, usr:1, txing[0]:1
2、今天看到如果不使用单独路由器,可以将节点初始化成MESH_SOFTAP模式,今天测试了下,将原来的Master节点初始化成MESH_SOFTAP模式后,其他的节点可以正常连接到Master节点,可以看到mesh网络可以组网(根据各个节点分配的IP地址)。问题来了,我使用espconn_accept接口开启TCP Server的侦听,返回码是-15,也就是已经链接,使用espconn_get_connection_info接口却无法获得对端的连接信息。使用espconn_send函数发送失败,返回值是-12(找不到数据连接),如果使用
espconn_mesh_sent接口发送,返回值是-4(路由问题),发送失败....
请Alen帮忙给出解决思路,盼回..,多谢
Re: MESH组网情况下,数据收发疑问,请帮忙解答,多谢
Postby mtv » Wed Dec 07, 2016 11:32 am
你好, 我有再做esp_mesh 组网产品,对esp_mesh 组网架构很多疑惑,而官方文件说明非常简单。
我的理解是, 根节点加入路由,组建mesh 网,然后其他节点加入mesh网,所有下面节点通过根节点到路由然后再出去到外部网络server.
而 外网server发命令先到 路由,然后到 根设备, 最后到目的 的节点设备。
也就是说根节点是mesh网内各个节点和路由之间的一个总网关,所有外网到节点的信息必须通过根节点转发,
所谓mesh只是各个节点自己的网络,对于路由和外网server ,只能看见 根设备, 不知道这样理解是否正确,或者还有其他方式,希望大家给予指点。
另外如果路由挂了, mesh网络是否保持原状? 比如有开关节点和灯节点, 路由掉电的情况下,开关节点还是可以通过mesh去控制灯节点?
我的理解是, 根节点加入路由,组建mesh 网,然后其他节点加入mesh网,所有下面节点通过根节点到路由然后再出去到外部网络server.
而 外网server发命令先到 路由,然后到 根设备, 最后到目的 的节点设备。
也就是说根节点是mesh网内各个节点和路由之间的一个总网关,所有外网到节点的信息必须通过根节点转发,
所谓mesh只是各个节点自己的网络,对于路由和外网server ,只能看见 根设备, 不知道这样理解是否正确,或者还有其他方式,希望大家给予指点。
另外如果路由挂了, mesh网络是否保持原状? 比如有开关节点和灯节点, 路由掉电的情况下,开关节点还是可以通过mesh去控制灯节点?
Re: MESH组网情况下,数据收发疑问,请帮忙解答,多谢
Postby forever » Wed Dec 07, 2016 11:55 am
mtv wrote:你好, 我有再做esp_mesh 组网产品,对esp_mesh 组网架构很多疑惑,而官方文件说明非常简单。
我的理解是, 根节点加入路由,组建mesh 网,然后其他节点加入mesh网,所有下面节点通过根节点到路由然后再出去到外部网络server.
而 外网server发命令先到 路由,然后到 根设备, 最后到目的 的节点设备。
也就是说根节点是mesh网内各个节点和路由之间的一个总网关,所有外网到节点的信息必须通过根节点转发,
所谓mesh只是各个节点自己的网络,对于路由和外网server ,只能看见 根设备, 不知道这样理解是否正确,或者还有其他方式,希望大家给予指点。
另外如果路由挂了, mesh网络是否保持原状? 比如有开关节点和灯节点, 路由掉电的情况下,开关节点还是可以通过mesh去控制灯节点?
我的理解和你一样,mesh网络对外只有一个连接,也就是root节点和服务器之间的连接,所有的数据包都需要通过root节点进行转发,对外来说,服务器只能看到root这个节点,这个和官方文档说的是一样的。
按照官方文档说法,如果路由器挂了,原来的root节点就会变为local模式,demo也是这样实现的,和服务器的TCP链接也就断开了,自然各个mesh节点就失控了,只能靠内部管理算法实现本地管理,远程管理不可用。
现在的问题是,数据传输不可靠,怎么解决?
Re: MESH组网情况下,数据收发疑问,请帮忙解答,多谢
Postby mtv » Wed Dec 07, 2016 1:33 pm
“如果路由器挂了,原来的root节点就会变为local模式,demo也是这样实现的,和服务器的TCP链接也就断开了,自然各个mesh节点就失控了,只能靠内部管理算法实现本地管理,远程管理不可用。”
如果路由挂了,不需要远程管理,只希望mesh保持完整不变可以实现本地管理,如此说来各个mesh节点失控,已经不能保证正常网络通信,如何实现本地管理呢?这个非常重要。
我看见mesh_demo 有个server_ip 设置, 如果这个server通过无线连接 和根节点入网同一个路由,mesh中非根节点通过mesh API 可以和无线server直接通信吗?还是要经过根节点通信?还是 通过根节点,无线路由再连接无线server?
如果server 是外网IP 则必须通过路由才能连接server,而路由通过mesh_api 控制节点, 那么这个server 有什么意义?
而按照我们的理解的mesh 组网方式,官方提供一套从路由到根节点的 API 和 实例, mesh网内各个节点通信的API 和实例,层次分明,简单明了。 这个server ip让人困惑,mesh 组网也让人困惑。
我现在也很彷徨 官方mesh 组网是否完善可靠?感觉官方,文档,实例很少,比如mesh_demo 更新到 11月,而mesh_api 还是2月份的。邮件,论坛咨询,很难有什么回应。担心花了较多时间精力搞到最后达不到使用要求。
如果路由挂了,不需要远程管理,只希望mesh保持完整不变可以实现本地管理,如此说来各个mesh节点失控,已经不能保证正常网络通信,如何实现本地管理呢?这个非常重要。
我看见mesh_demo 有个server_ip 设置, 如果这个server通过无线连接 和根节点入网同一个路由,mesh中非根节点通过mesh API 可以和无线server直接通信吗?还是要经过根节点通信?还是 通过根节点,无线路由再连接无线server?
如果server 是外网IP 则必须通过路由才能连接server,而路由通过mesh_api 控制节点, 那么这个server 有什么意义?
而按照我们的理解的mesh 组网方式,官方提供一套从路由到根节点的 API 和 实例, mesh网内各个节点通信的API 和实例,层次分明,简单明了。 这个server ip让人困惑,mesh 组网也让人困惑。
我现在也很彷徨 官方mesh 组网是否完善可靠?感觉官方,文档,实例很少,比如mesh_demo 更新到 11月,而mesh_api 还是2月份的。邮件,论坛咨询,很难有什么回应。担心花了较多时间精力搞到最后达不到使用要求。
Re: MESH组网情况下,数据收发疑问,请帮忙解答,多谢
Postby forever » Wed Dec 07, 2016 2:30 pm
mtv wrote:“如果路由器挂了,原来的root节点就会变为local模式,demo也是这样实现的,和服务器的TCP链接也就断开了,自然各个mesh节点就失控了,只能靠内部管理算法实现本地管理,远程管理不可用。”
如果路由挂了,不需要远程管理,只希望mesh保持完整不变可以实现本地管理,如此说来各个mesh节点失控,已经不能保证正常网络通信,如何实现本地管理呢?这个非常重要。
-- 个人理解,这个需要在本地节点实现最基本的管理算法,不是ESP官方提供,这个需要根据具体的产品需求去实现
我看见mesh_demo 有个server_ip 设置, 如果这个server通过无线连接 和根节点入网同一个路由,mesh中非根节点通过mesh API 可以和无线server直接通信吗?还是要经过根节点通信?还是 通过根节点,无线路由再连接无线server?
所有的非root节点通信都是通过root节点转发,Server和Mesh网络只有一个连接,即和Root节点之间有一个连接。所以,非root节点不能喝Server直接通信,按照官方说法,Server和非root节点间只存在虚链接。
如果server 是外网IP 则必须通过路由才能连接server,而路由通过mesh_api 控制节点, 那么这个server 有什么意义?
而按照我们的理解的mesh 组网方式,官方提供一套从路由到根节点的 API 和 实例, mesh网内各个节点通信的API 和实例,层次分明,简单明了。 这个server ip让人困惑,mesh 组网也让人困惑。
这个Server的意义是指Mesh网络,如Light网络,需要通过mesh外部节点进行控制,例如Server/手机APP等。所以这个Server IP就是设置这个mesh网外部节点,如果不需要的话,我理解应该可以不设置,Mesh节点间通过P2P消息进行通信即可,这点还没有验证,需要官方确认
我现在也很彷徨 官方mesh 组网是否完善可靠?感觉官方,文档,实例很少,比如mesh_demo 更新到 11月,而mesh_api 还是2月份的。邮件,论坛咨询,很难有什么回应。担心花了较多时间精力搞到最后达不到使用要求。
这个也是我最最最最担心的了,对于MESH我是很推荐的,就是担心最后不可商用,大把的时间花费在这个地方,很是担心。官方的资料太少,回复好慢....
Who is online
Users browsing this forum: No registered users and 57 guests
Login
Newbies Start Here
Are you new to ESP8266?
Unsure what to do?
Dunno where to start?
Start right here!
Latest SDK
Documentation
Complete listing of the official ESP8266 related documentation release by ESPRESSIF!
Must read here!
- All times are UTC+08:00
- Top
- Delete all board cookies
About Us
Espressif Systems is a fabless semiconductor company providing cutting-edge low power WiFi SoCs and wireless solutions for wireless communications and Internet of Things applications. We are the manufacturer of ESP8266EX.