
MeshCore room-server-v1.17.0
一种新的轻量级混合路由网状协议,适用于分组无线电台
关于 MeshCore
MeshCore 是一个轻量级、可移植的 C++ 库,为使用 LoRa 和其他分组无线电的嵌入式项目提供多跳数据包路由功能。它专为希望创建无需互联网即可运行的弹性去中心化通信网络的开发者而设计。
🔍 什么是 MeshCore?
MeshCore 现在支持多种 LoRa 设备,无需手动编译固件即可轻松刷写。用户可以使用 Adafruit ESPTool 等工具刷写预构建的二进制文件,并通过串行控制台与网络交互。 MeshCore 提供了创建无线网状网络的能力,类似于 Meshtastic 和 Reticulum,但专注于为嵌入式项目提供轻量级多跳数据包路由。与面向休闲 LoRa 通信的 Meshtastic 或提供高级网络功能的 Reticulum 不同,MeshCore 在简单性和可扩展性之间取得平衡,使其成为自定义嵌入式解决方案的理想选择,其中设备(节点)可以通过中间节点中继消息来进行远距离通信。这在传统通信基础设施不可用的离网、紧急或战术情况下尤为有用。
⚡ 主要特性
- 多跳数据包路由
- 设备可以跨多个节点转发消息,将范围扩展到单个无线电的覆盖范围之外。
- 支持可配置的跳数上限,以平衡网络效率并防止过度流量。
- 节点使用固定角色,其中“Companion”节点完全不重复消息,以防止使用不利的路由路径。
- 支持 LoRa 无线电 – 兼容 Heltec、RAK Wireless 和其他基于 LoRa 的硬件。
- 去中心化且具有弹性 – 无需中央服务器或互联网;网络具有自愈能力。
- 低功耗 – 非常适合电池供电或太阳能供电的设备。
- 部署简单 – 预构建的示例应用程序让入门变得轻松。
🎯 你可以用 MeshCore 做什么?
- 离网通信:即使在偏远地区也能保持连接。
- 应急响应与灾难恢复:在基础设施瘫痪的地方快速搭建网络。
- 户外活动:徒步、露营和探险比赛的通信。
- 战术与安全应用:军事、执法和私人安保用例。
- IoT 与传感器网络:从远程传感器收集数据并将其中继回中心位置。
🚀 如何开始
- 观看 The Comms Channel 的 MeshCore 快速入门播放列表
- 观看 Liam Cottle 的 MeshCore 技术演示。
- 阅读我们的常见问题解答和文档。
- 在受支持的设备上刷写 MeshCore 固件。
- 使用受支持的客户端进行连接。
面向开发者:
- 在 Visual Studio Code 中安装 PlatformIO。
- 克隆并在 Visual Studio Code 中打开 MeshCore 仓库。
- 查看你可以修改和运行的示例应用程序:
- Companion Radio - 用于通过 BLE、USB 或 Wi-Fi 与外部聊天应用配合使用。
- KISS Modem - 用于主机应用程序的串行 KISS 协议桥接。(协议文档)
- Simple Repeater - 通过中继消息扩展网络覆盖范围。
- Simple Room Server - 用于共享帖子的简单 BBS 服务器。
- Simple Secure Chat - 设备之间基于安全终端的文本通信。
- Simple Sensor - 具有遥测和警报功能的远程传感器节点。
Simple Secure Chat 示例可以通过 Visual Studio Code 中的串行监视器进行交互,也可以在 Android 上使用串行 USB 终端进行交互。
⚡️ MeshCore 刷写工具
我们准备了可在受支持设备上刷写的预构建固件。
- 打开 https://meshcore.io/flasher
- 选择受支持的设备
- 刷写其中一种固件类型:
- Companion、Repeater 或 Room Server
- 刷写完成后,你可以使用下面其中一个 MeshCore 客户端进行连接。
📱 MeshCore 客户端
Companion 固件
根据你刷写的固件类型,Companion 固件可以通过 BLE、USB 或 Wi-Fi 进行连接。
- Web:https://app.meshcore.nz
- Android:https://play.google.com/store/apps/details?id=com.liamcottle.meshcore.android
- iOS:https://apps.apple.com/us/app/meshcore/id6742354151?platform=iphone
- NodeJS:https://github.com/liamcottle/meshcore.js
- Python:https://github.com/fdlamotte/meshcore-cli
Repeater 和 Room Server 固件
Repeater 和 Room Server 固件可以通过 USB 在 Web 配置工具中进行设置。
它们也可以通过移动应用中的远程管理功能经由 LoRa 进行管理。
🛠 硬件兼容性
MeshCore 专为 MeshCore 刷写工具 中列出的设备而设计
📜 许可证
MeshCore 是根据 MIT 许可证发布的开源软件。你可以自由地将其用于个人和商业项目,并进行修改和分发。
贡献
请使用 'dev' 作为基础分支提交 PR! 对于较小的更改,只需提交你的 PR,我们会尝试进行审查,但对于任何更具“影响力”的更改,请先打开一个 Issue 并开始讨论。最好先探讨你想要实现的目标,并尝试就最佳方案达成共识,尤其是当它影响到此代码库的结构或架构时。
以下是你应该尽量遵循的一些通用原则:
- 保持简单。请不要像高级语言程序员那样思考。要以嵌入式的思维思考,保持代码简洁,不要有任何不必要的层次。
- 除 setup/begin 函数期间外,不要进行动态内存分配。
- 使用核心源模块中相同的花括号和缩进风格。(可能很快就会添加 .clang-format,但请不要追溯性地重新格式化现有代码。这只会产生不必要的差异,使查找问题变得更加困难)
帮助我们确定优先级!请为你最关心的问题/PR 点赞。我们在规划工作时会参考点赞数。
运行单元测试
要运行单元测试,请运行以下命令:
pio test --environment native --verbose
路线图 / 待办事项
目前有若干相当重要的功能正在筹备中,但尚未附上具体的时间框架。按大致的时间顺序排列:
- Companion 无线电:UI 重新设计
- Repeater + Room Server:添加 ACL(就像 Sensor Node 那样)
- 标准化中继器的 Bridge 模式
- Repeater/Bridge:标准化用于分区/过滤的 Transport Codes
- Core + Repeater:增强的零跳邻居发现
- Core:往返手动路径支持
- Companion + 应用:支持多个子网(以及“离网”客户端中继模式)
- Core + 应用:支持 LZW 消息压缩
- Core:针对弱跳与强跳的动态 CR(编码率)
- Core:用于在一个物理设备上托管多个虚拟节点的新框架
- V2 协议规范:围绕 V2 数据包协议进行讨论并达成共识,包括路径哈希、新的加密规范等
📞 获取支持
- 在 GitHub Issues 页面上报告错误并请求功能。
- 在我的网站上查找更多指南和组件。
- 加入 MeshCore Discord 与开发者聊天并从社区获取帮助。