要在会上回答「这里到底要不要再加一个 AP」,你需要的东西其实只有三样:一张平面图、一个比例尺、一套能算出信号强度的算法。市面上把这三样凑齐的工具,要么按年授权,要么先把图纸传到别人的服务器上;中间那档——本地运行、不联网、又不必先读一本手册——几乎是空的。
勘波 WaveScout 补的就是这个空档。它是一个 Windows 桌面程序:把平面图拖进窗口,标一下比例尺,画上墙,把 AP 摆上去,屏幕上立刻出现每个位置的信号强度、盲区位置和覆盖率。这套东西是我自己一行行写完的,业务代码六千多行,没有用任何前端框架。
先把最重要的一句放在前面:它是估算工具,不是仿真引擎,也不能替代现场实测。这句话写在软件界面上,也写在文档里。愿意把边界写清楚的工具,通常比把边界藏起来的工具更值得信。
一、AP 该放几个,为什么总是靠拍脑袋
办公室要装 WiFi,或者旧网络要改造,绕不开一个问题:AP 放在哪、放几个。最常见的做法是拍脑袋——走廊尽头放一个,会议室放一个,大办公室再来一个。装完往往有两种结局:角落还是连不上,或者会议室里两个人同时开视频就开始卡。
想认真一点,就得用专业无线规划软件。那类工具按年授权,价格动辄上万,学习成本也不低。它们真正贵的地方不全是授权费,而是「要先学会它」这件事。另一条路是在线服务,功能不算差,但前提是先把公司平面图传上去——对不少单位来说,这一条就直接出局。
| 做法 | 典型形态 | 主要问题 |
|---|---|---|
| 拍脑袋估 | 走廊一个、会议室一个 | 装完才知道漏在哪,返工成本高 |
| 专业规划软件 | 按年授权的商业套件 | 授权费高、学习曲线陡,为一次改造买一年不值 |
| 在线覆盖服务 | 浏览器里上传图纸 | 图纸离开内网,敏感项目不能这么做 |
卡住方案阶段的其实不是能不能算,而是算一次要多久。方案阶段要试的从来不是一个点位,而是十几种组合:这台放走廊还是放房间、吸顶还是壁挂、5G 打 80M 还是 40M、门限按 -65 还是 -67。如果每改一次都要等半小时出图,方案就会退化成经验,最后又回到谁嗓门大听谁的。
所以一个够用的工具,门槛应该低到随手试一下不心疼。这也是 WaveScout 整个设计里最核心的取舍:宁可少做几项高级功能,也要让改一个参数到看见结果之间的延迟接近零。
二、它是什么:一句话与几个硬指标
一句话:在平面图上做无线覆盖估算,并把结果画出来。导入建筑平面图,标定比例尺,画上墙体和门窗,摆上 AP,就能得到一张带色阶的热力图、一份覆盖率统计和一份设备清单。
| 项目 | 情况 |
|---|---|
| 运行平台 | Windows 10 / 11 64 位,免安装目录版,双击 exe 即可 |
| 是否联网 | 不需要,程序不发任何网络请求,也没有账号体系 |
| 数据位置 | 全部留在本地;项目文件是纯 JSON,底图以 base64 内嵌,单个文件即可完整传递 |
| 安装体积 | exe 约 180 MB,绝大部分是 Electron 运行时;整个目录约 270 MB |
| 代码规模 | 业务代码六千多行,无 React、无打包器、无图表库 |
| 输出格式 | 热力图 PNG、设备清单 CSV、项目文件 JSON |
除了桌面版,它还带一个网页版入口,双击 index.html 就能在浏览器里打开,功能与桌面版完全一致。桌面版多出来的只是更像本地软件的那部分:导出时弹系统对话框自己选路径、有未保存修改时关窗口会拦一下、重复双击不会开出第二个进程覆盖自动备份、记住上次的窗口位置。
这个顺序有点反常识。多数同类工具会先做网页版,因为不用打包、更新方便。这里反过来,是因为使用者往往要拿着图纸在会议室里当场改方案,断网能用、U 盘拷走、双击就跑,这三点比打开网页就能用更实在。
导入图纸时,超过 4000 像素的长边会自动等比缩到 4000,底图还会做一次体积压缩,转成质量 0.95 的 WebP,约 53 dB,黑白线稿通常能减 15% 到 20%。尺寸不变,所以后面的坐标和比例标定完全不受影响。

三、从图纸到成图:完整流程
流程分两个模式:平面编辑管图纸、比例尺和墙体,设备编辑管 AP。右上角两个按钮切换,按 Tab 也行。切模式时图层会自动跟着变,切到平面编辑会关掉热力图和设备图层,让你专心画墙;切回设备编辑再只打开设备图层。
1. 导入图纸
三种方式都行:左侧的选择平面图图片、顶栏的导入底图、直接把图片拖进画布。支持 JPG、PNG、BMP、WEBP、GIF。首次打开会看到欢迎页,点载入示例能立刻看到一个完整的办公区样例,四台 AP、441 平方米有效覆盖,先看懂效果再动手。
建议就从示例开始。示例里墙、门、窗、AP 都摆好了,拖动任意一台 AP,松手就能看到热力图跟着变,比自己从空白画布摸索快得多。
2. 标定比例尺
这一步必做,否则算出来的距离全是错的。两种方式:按图幅宽度标定,填入整张图纸的实际宽度(米);或者两点标定,在图上点一段已知长度的两端,比如一面 6 米的墙,然后输入真实米数。
标定完成后,左侧会常驻显示 3.62 cm / px 这样的换算关系,状态变成已标定,画布左下角的比例尺条也会跟着更新。比例尺条是给自己核对的:量一下图上已知的走廊宽度,对不上就说明标歪了。
3. 画墙、门、窗
选中工具后按住左键拖一条线段,松开即完成。四种预设材质,穿透损耗按 2.4G 和 5G 分别设定:
| 工具 | 2.4 GHz | 5 GHz | 默认厚度 | 适用 |
|---|---|---|---|---|
| 砖墙 | 4 dB | 7 dB | 120 mm | 普通砖砌隔墙、轻质隔墙 |
| 混凝土 | 25 dB | 30 dB | 240 mm | 承重墙、剪力墙、立柱 |
| 玻璃窗 | 8 dB | 10 dB | 80 mm | 普通玻璃、玻璃幕墙 |
| 木门 | 3 dB | 4 dB | 40 mm | 木门、玻璃门、普通门洞 |
注意混凝土那一行:240 mm 承重墙在 2.4G 是 25 dB。这是个很大的数字,一堵混凝土墙基本能把一个房间的信号拦死,方案阶段看到这种墙,要么绕开,要么在墙两侧各放一个 AP。
新建的墙默认是自动模式,穿透损耗等于材质衰减率乘厚度。120 mm 砖墙按 33 dB/m 算是 4 dB,改成 240 mm 立刻变 8 dB,不用手算。遇到特殊材质,比如金属货架、防爆墙,切到手动模式自己填,那种情况建议直接填 30 dB 以上。

画墙最磨人,所以这里堆了不少手感上的东西。端点会吸到附近已有墙的端点、延长线交点和墙上的最近点;手抖画歪 9.1 度以内会自动拉平;线画到画布边缘 56 像素内,视图自己平移,一条长墙不用松手。三个开关和两条强度滑条都能调,拖到最左就等于关掉。
4. 放 AP
三种安装方式各有各的天线方向图:吸顶全向,水平 360 度、垂直 78 度,默认 20 dBm;壁挂定向,水平 76 度、垂直 62 度,前后比 20 dB;面板入墙,水平 112 度、垂直 82 度,默认 17 dBm。
这三种的差别不只是画个扇形。方向图是真的参与 RSSI 计算的,所以壁挂 AP 背后几乎没信号,面板 AP 隔一堵墙就掉进盲区,热力图上都能直接看出来。
选中设备后外侧会出现一个圆形手柄,拖动它调朝向,按住 Shift 按 15 度步进。右侧面板可以精调名称、功率、增益、水平与垂直波瓣、前后比、安装高度和朝向。参数旁边给了参考值,比如全向天线增益 2 到 5 dBi、定向 6 到 10 dBi,吸顶安装高度 2.6 到 3.5 米。

信道和频宽按频段给选项:2.4G 是 20 或 40 MHz,5G 是 20、40、80、160 MHz。频宽决定占用哪段频率,Ch.36 打 80M 占用 5170 到 5250 MHz。频宽不参与传播损耗计算,只影响占用频段和重叠判定,这一点文档里写得很直白。
射频区域可以在中国 SRRC 和澳大利亚 ACMA 之间一键切换。两者的 EIRP 上限差得很远,2.4G 一个是 20 dBm,一个是 36 dBm。切换时会自动把超限的功率压回合规值,并在提示条里说明收了几台。澳洲开放 5.5 GHz 段的 DFS,中国不开放,信道列表会跟着变。
5. 看结果
热力图分五档加盲区:红是极强,不低于 -50 dBm;橙 -50 到 -60;黄 -60 到 -67;绿 -67 到 -75;紫 -75 到 -85;再往下是淡灰盲区。
这里有个设计值得说一下。门限默认 -65 dBm,2.4G 和 5G 可以分开设。低于门限的档位仍然会画出来,只是颜色变淡。这样你能同时看到哪里有信号、哪里不达标,而不是被一刀切掉什么都看不见。
统计栏给四个数:AP 数量、有效覆盖面积、良好覆盖不低于 -67 的面积占比、弱信号与盲区占比。工程上通常说的覆盖达标率,看的是第二个。门限为什么默认 -65 而不是更低?因为 -65 dBm 是判断这个点位能不能支撑正常办公的常用线,再低的信号虽然连得上,速率和稳定性都不够用,TP-LINK 官方规划工具取的也是 -65。
鼠标在画布上移动,左下角实时显示坐标、该点计算出来的 RSSI、到最近 AP 的直线距离。拖动 AP 或墙体期间热力图不重算,而是保持上一次结果并整体淡显。以 2481×3508 图纸、115 段墙、6 台 AP 的项目为例,一次草稿质量计算是 237 ms,精细质量 779 ms;拖动时每 70 ms 重算一次,一次拖动就烧掉 1.4 秒 CPU,画面还一直在抖。改成松手再算之后,拖动本身是零计算。
6. 导出
三个出口:热力图 PNG,带标题、图例和比例尺,可以直接贴进方案;设备清单 CSV,含名称、安装方式、功率、增益、朝向、高度和坐标;项目文件 JSON,下次接着改。
项目文件是纯 JSON,底图以 base64 内嵌,一个文件就是一整个项目,发出去也不会丢图。编辑过程每 1.5 秒自动保存到本机,意外关闭重开能恢复,但只保留最近一份,正式成果还是要手动存成文件。
四、三个不太好做的细节
功能清单谁都能列,真正拉开差距的是几个地方:一个是手感,一个是判定逻辑,一个是数据怎么放。这三件事都返工过好几轮。
吸附不能把墙拽歪
画墙时,吸附到已有墙体和画出水平线经常打架。你正画一条水平墙,往左延伸去接一堵竖墙,结果端点一吸,整条墙被拽歪了。
问题出在两处。一是代码里写着只要吸附命中就无条件采用吸附点,直线修正被完全跳过;二是更隐蔽的,交点吸附是按鼠标方向求交的,鼠标比水平线高 3 像素,算出来的交点就高 3 像素。
现在的做法是先定正交轴,再在约束内吸附。端点垂直偏移超过阈值就跳过,宁可吸不到也不破坏正交;交点改用约束线去求交,画水平时就是 y 等于起点 y 这条无限长的线;垂足先把光标投影到约束轴上,离开轴就放弃。

代价写在文档里:贴着一条平行但不同高的墙时,两者无法兼得,此时正交优先、不吸附。确实要吸那条墙,把直线修正滑条拖到 0。这个取舍不是修不好,是两个目标本身互斥,只能选一个说清楚。
同频重叠不是两个圆相交
判断两台 AP 的信号有没有重叠,直觉是看覆盖圆有没有交。工程上不是这样。
第一,两台 AP 必须频率区间相交。不只看中心信道,还要看频宽。Ch.36 打 80M 和 Ch.44 打 20M 中心信道不同,但频带是重叠的,会互相干扰;Ch.36 打 20M 和 Ch.44 打 20M 就不相交。
第二,在该点上两台的信号都得高于干扰阈值,默认 -67 dBm。一台 -40、另一台已经衰减到 -70,就几乎不构成干扰。只要有一侧弱到听不见,重叠就不成立。
判定逐点做,然后把结果提成矢量轮廓,用 marching squares 求等值线,画成黑色闭合边框加 45 度斜线。不用像素描边,是因为图纸放大到 400% 时像素描边会糊成一片,而矢量线始终锐利;斜线密度按屏幕像素恒定,不会随缩放变密变疏。

计算用的是独立的中等分辨率网格,约 4.5 万格。重叠是区域概念,不需要热力图那种精细度,所以打开这一层只多花 0.1 到 0.2 秒。轮廓每帧绘制实测 0.245 ms,开与不开对帧率没有可测量的影响。
一栋楼多层怎么存
一层存一个文件是最容易乱的做法:不知道哪几个文件属于同一栋楼,项目名和楼层名混在一起,自动保存也只覆盖最后打开的那层。
现在的结构是项目、楼宇、楼层三级。每层有自己的底图、标定、墙体、AP 和覆盖率统计,撤销记录也是每层独立的,切回来还能接着撤销。

新增楼层时会继承当前楼层的射频设置,区域、频段、信道、门限、层高,但不继承几何。楼上楼下的图纸不一样,把墙复制过去只会产生错位的假数据,这一点是刻意的。
旧版单层项目文件可以直接打开,自动包成 A 栋 / 1F,原来的墙体、AP、底图、标定原样保留,不需要手动处理。反向不兼容,新文件在 1.7.2 及更早版本里打不开,这一条也写进了说明。
五、模型说清楚,边界也写清楚
信号强度按这个式子算:RSSI = 发射功率 + 天线增益 + 方向图增益 − 路径损耗 − 穿墙损耗。五项拆开看,每一项都有明确的取值口径:
| 项 | 取值方式 |
|---|---|
| 发射功率 | 射频口输出功率,室内 AP 通常 17 到 23 dBm |
| 天线增益 | 峰值方向增益,全向 2 到 5 dBi,定向 6 到 10 dBi |
| 方向图增益 | 按水平与垂直波瓣宽度、下倾角、前后比计算 |
| 路径损耗 | 10·n·lg(d) + 20·lg(f) − 27.55,室内对数距离模型 |
| 穿墙损耗 | 视线与各段墙体求交后累加,单点封顶 80 dB |
环境衰减指数 n 默认 2.4G 取 2.8、5G 取 3.1。开阔办公和大厅建议 2.6 到 2.9,多隔断办公和教室 3.0 到 3.4,密集货架仓库和机房 3.5 到 4.0。这个参数比功率更影响结果:同一张图把 n 从 2.8 调到 3.4,三四十米外的边缘区域能多掉 10 dB 上下,颜色直接跳两档。
方向图按半功率波瓣宽度建模成 cos 的 n 次方,n 由波瓣宽度反解。垂直面峰值按安装方式定朝向,吸顶朝正下方,壁挂和面板按设定的下倾角;水平面全向视为常数,定向前后分离,后瓣按前后比压制。多台 AP 之间取最大值合并。
接下来这段是全文最该划重点的地方。没有射线追踪、没有多径、没有菲涅尔区、没有邻频抑制、没有 SINR,也不模拟人体遮挡和金属货架散射。它回答的是点位和数量问题,不是覆盖效果问题。
| 不做的事 | 原因 |
|---|---|
| 射线追踪与多径 | 建模复杂度和计算量是另一个量级 |
| SINR 与邻频抑制 | 频宽只参与占用与重叠判定,不参与损耗计算 |
| 现场勘测 | 不读网卡、不收 RSSI 样本,是纯规划工具 |
| 人体与家具遮挡 | 模型里没有这类随机因素 |
| 云同步与协作 | 没有账号体系,数据只在本地 |
高密度场馆那种每层几十台 AP 的场景,需要真正的仿真引擎,这个工具帮不上。射频区域的数值是公开法规整理的参考值,只作规划参考,不替代当地的合规认证;实际部署以最新法规为准,这句话不是免责套话,是使用前提。
六、工程上的几个选择
Electron 加原生 JavaScript,零运行时依赖。没有 React、没有打包器、没有图表库。core.js 管数据模型和传播算法,render.js 管 Canvas 绘制,ui.js 管交互和项目读写,主进程 359 行。三个文件的边界是清的,改算法不会碰坏界面。
性能是量出来的,不是猜的。2481×3508 的图纸、188 段墙、26 台 AP,完整热力图计算约 1.9 秒,草稿质量约 0.5 秒。关掉热力图时,放一台 AP 的耗时从 1.9 秒降到 2 毫秒,因为不可见的图层本来就不该算。
201 条自动断言,用真实的鼠标和键盘事件在无头浏览器里跑,跑的是打包前的同一份代码。里面包括这种:画水平墙撞到垂直墙时,端点吸附后 y 坐标必须与起点完全相同。这种断言不好写,但正是它挡住了后面几轮改动带来的回归。
安全上也没省。渲染进程开了 contextIsolation 和 sandbox,关了 nodeIntegration,CSP 只允许 self 脚本,preload 只暴露三个方法,没有任意文件读写。导出 CSV 时,名称以等号、加号、减号、@ 开头的单元格前面会垫一个单引号,防的是 Excel 公式注入。这类问题平时想不起来,出事就是别人的表格替你跑了一遍宏。

有些限制是明写在文档里的:热力图按整张图纸计算,AP 多时开图会有一次可感知停顿;吸附是坐标对齐而不是拓扑绑定,接好的两堵墙之后单独拖一堵,另一堵不会跟着动;热力图在 90 米外不再计算。这些不是待修的 bug,是权衡后留下的边界,写出来比藏着好。
七、适合谁,不适合谁
把话说到这个份上,适用边界其实已经清楚了。下面这张表可以直接拿去对照自己的需求:
| 适合 | 不适合 |
|---|---|
| 办公室、门店、教室、仓库的点位与数量估算 | 高密度场馆,比如每层几十台 AP 的报告厅 |
| 旧网络改造前,对比几种方案的覆盖差异 | 需要 SINR 与容量仿真的项目 |
| 给客户的覆盖示意、投标文件里的附图 | 需要签字盖章的正式勘测报告 |
| 验证吸顶、壁挂、面板三种安装方式的实际差别 | 需要多径与菲涅尔区建模的精密场景 |
| 教学与演示,参数改完立刻看到结果 | 要求与商业套件逐项对标的验收场景 |
对做弱电、做系统集成、做企业 IT 的人来说,它的位置很清楚:方案阶段画点位,给客户看覆盖示意,投标前估设备数量。省下的不只是软件授权费,更值钱的是反复推倒重来的那部分时间。
对写教程、做培训的人来说,它还有个附带价值:所有参数都能改,改完立刻看到结果。讲清楚吸顶和壁挂到底差在哪,一张图比十句话管用。
八、最后:一张有依据的图
这个工具解决的问题很具体:在开会讨论「这里要不要再加一个 AP」的时候,能拿出一张有依据的图,而不是靠谁嗓门大。
它的定位也就到这里。不是仿真平台,不是勘测工具,不是云服务,也没打算做多径和 SINR。把边界守住,把方案阶段的效率提上去,这件事就算做完了。
判断标准可以很简单:如果你现在做无线方案还在用经验加直觉,并且愿意花二十分钟标一次比例尺,那它大概率能帮上忙;如果你需要的是一份能签字盖章的勘测报告,那你要的不是它。软件目前是个人项目,没有上架任何应用商店,也没有下载入口,想试用或者对吸附、重叠判定、传播模型这些细节有想法,可以在评论区留言交流。
九、软件下载
分享内容:无线地勘工具软件:勘波 WaveScout,在平面图上算清 WiFi 覆盖与 AP 点位 分享链接:https://ug.link/xiaozou/filemgr/share-download/?id=e34c707f3fe04112b2c8e961fc2ba539 访问密码:aRgs
如果你觉得这篇文章不错,有用的话可以点击下面的“赞赏”支持作者,你的支持是我更新的动力(饿饿吃饭)。


Comments NOTHING