ifruit官网下载安卓,unifi下载

  

  家里用了智能家居系统后,经常被设备断线或者操作延迟困扰。通过UniFi控制器可以看到,无线网络的质量评价往往低于70%,许多设备都有高延时、高重试获取网络地址失败 ,这就是设备断开连接或操作延迟的原因,尤其是通过Wi-Fi和米家Aqara网关连接的灯泡。连接质量差会严重影响操作。当一个吊灯的灯泡一个一个亮或者六个灯泡中有三个亮的时候,会让你觉得智能家居系统的投资不值得。   

  

  

造成原因

  

  

  设备网络质量差的主要原因是设备经常没有连接到最近的AP。我的房子是带地下室的平层住宅,完全覆盖13个AP。图为2.4GHz的覆盖。   

  

  左边是地,右边是地。为了方便管理,贴了两张平面图。   

  

  当AP更新其固件或改变其配置时,由于重启服务或设备,相应的AP将断开所有现有设备并停止广播SSID一段时间。此时,连接到该AP的设备将寻求与同一SSID下的其它AP连接。当AP重新联机时,只要没有断开连接,设备就不会重新连接。这会导致设备连接到较远的接入点,从而导致信号不佳。一旦信号变差,不仅会影响设备本身的连接质量,还会使设备使用更多的电力进行线路通信,重新发送失败的数据包。当多个设备进入这个状态后,会导致周边电磁情况劣化,影响其他设备的通讯。   

  

  

对应策略

  

  

  我尝试在UniFi Web UI中手动断开重新连接设备。在设备被AP踢出线路后,它被重新连接,并且有一定的机会被重新连接到正确的AP。不过,在图形界面中操作有点麻烦,如果设备数量很大,会让人怀疑智能家居的意义。好在UBNT提供了命令行访问Uni-Fi API的Shell脚本,可以用来自动化一些工作,让生活更美好。   

  

  这个脚本可以在UniFi博客的版本发布更新中找到,对应每个版本。在撰写本文时,最新的5.9.29发布日志地址:Unifi SDN Controller 5.9.29 stable已经发布——Ubiquiti Networks社区,相应脚本的下载地址在https://dl.ubnt.com/unifi/5.9.29/unifi_sh_api.   

  

  在本地下载脚本后,创建一个unifi_sh_env的副本,其内容为:   

  

  Username=ubnt #登录用户名   

  

  Password=ubnt #登录密码   

  

  基本URL=3359 $ Server:8443 #访问控制器的URL   

  

  Site=默认#站点名称。如果控制器中只有站点,则为默认值。   

  

  之后,线源。/unifi_sh_api可以加载脚本中的命令,然后执行unifi_login完成登录,后续操作即可进行。由于脚本返回的数据都是JSON,所以需要安装一个jq工具来处理JSON。大多数Linux发行版可以用内置的包管理器直接安装。   

  

  假设要与80:2 a 3360 a 833608633601933609 f AP的MAC地址连接的设备的名称有Bedroom关键字(您可以在Web世界中重命名该设备),那么下面的命令   

  

  ' unifi_list_sta | jq '。数据|选择(has(' name ')|选择(。姓名|   

  

  包含('卧室')|选择(。ap_mac!=' 80:2 a : a 8:863:19:9 f ')| ' name : \(。名称)MAC: \(。mac) AP_MAC: \(。ap_mac)' '   

  

  你可以列出所有没有按预期连接到这个AP的设备以及它们对应的mac地址,然后执行下面的命令(MAC对应的设备的MAC地址)。   

  

  unifi_reconnect_sta mac   

  

  

又遇到问题...

  

  

  可以强制该设备重新连接。我天真的以为把这样的脚本完全自动化,放到crontab中定期执行就可以解决问题,然后现实还是那么残酷。当智能家居设备大部分采用 ESP8266 的解决案连接 Wi-Fi,由于固件内集成的 Wi-Fi 驱动非常基础,在多个 AP SSID 相同的线网络中常会出现直接连接上一个 AP 的情况,也就是连接之前连接过的 AP 而非同一个 SSID 中信号最强的那个。中已连接的AP升级其固件或重启时,并且在一段时间内空间中没有该AP的信标,则设备将尝试在同一SSID中寻找其它AP连接。一旦连接上,重新启动后就不会再连接原来的AP了。也就是说,除了用户重启当前设备连接的AP停止BSSID的广播,否则设备很难切换回最高信号。   

好的 AP。

  

这个情况使得设备在连接 AP 的策略上变得不可控,利用脚本踢掉设备后让设备重连的方案在多次尝试后发现效果并不理想,只有 Apple TV、安卓设备等操作系统相对完整的设备才能在一次断开后连回正确的 AP。大部分采用 ESP8266 方案的设备可能要经过数十次的重连才可能连接到正确的 AP,使得这个解决方案非常的低效。

  

新方案... 在绝望之际,我又想到了一个更原始的方法来解决这一问题,那就是给每个 AP 开设一个独的 SSID,与现有 SSID 共存。位置相对固定不需要时常移动的设备就连接到这个 AP 各自独立的 SSID 下。这个法虽然看起来很蠢,但也许非常有效,当然这一方法也会随之带来不少问题,到底值不值得,只有试下才知道了。

  

我着手准备实践这个方案的时候就遇到了第一个问题:UniFi Controller 并不支持这样的设置,每个 AP 都只能给一个频段设置个 Wi-Fi Group,每个 Group 共享配置,并不能对 AP 区别对待,好在 UniFi 论坛上已经有人找到了解决方法。

  

我的 2.4GHz 网络和 5.8GHz 网络使了不同的 SSID,ESP8266 设备都是2.4GHz 网络因此只需要在 2.4GHz 的网络中进行这样的配置。首先在 Controller 的设置界中找到 Wireless Networks 项,选择 2.4GHz 网络所在的 WLAN Group 进编辑,点击下方的 Create New Wireless Network 创建一个新的,这可以选择个临时的 SSID比如 Per-AP-SSID 之类,然后设置好对应的密码,其他配置建议采用默认配置。

  

  

络创建完毕后配置会下发到每个 AP,之后到 AP 的管理界面中可以对这个 SSID 进行配置覆盖,在设备管理界面中逐一点开需要配置的 AP,在 Config 板中展开 WLAN 配置,可以看到刚才配置的 Per-AP-SSID 已经出现在列表中,点击右边 Actions 列表中的按钮就可以覆盖配置。

  

  


  

我在这选择使用和 AP 同名的 SSID 来便于区分,对每个 AP 都进行这样的配置后网络的调整就算做好了,这是你在家中搜索网络可以发现除了主 SSID 外还能发现多个 AP 独立的 SSID,场度十分混乱,这是这样配置带来的问题之一。问题之二就是之前配过网络的设备需要重新配,作量可能很大,米家的设备可以利 python-miio 工具包中的配网命令直接修改连接的网络,这里简单提及一下,安装配置 python-miio,按照档获取设备的控制 token,然后执行下的命令:

  

miio tokens update <设备IP> --token <设备 Token>

  

miio configure <设备IP> --ssid <新的 SSID> --passwd <网络密码>

  

第命令配置设备的 Token,第二条命令改写设备的 Wi-Fi 配置,执行完成后可能提示执行失败,这是由于设备已经重新联网没有返回配置成功的数据,过一会观察设备是否重新联网。

  

成功即可,有的时候可能设备需要断电后配置才会生效,同时米家 App 会收到条推送,内容是设备网络配置更新成功,所以使用米家 App 控制的设备都可以采这个式重新配网。

  

  

完成配置后网络的性能提升明显,所有绑定 AP 的设备控制响应都得到了提升,截图中还有一个 AP 下的设备没有调整,重试率偏高,可以通过这些指标来判断还有那些设备需要调整,进一步优化网络,根据出现问题的 AP 查看该 AP 连接设备的列表,可以看到主卧的一个智能插座连接到了门外楼梯通道 AP。

  

  

通过下的操作将其 ESSID 从统一的 SSID 改为 AP 独立的 SSID 后问题解决。

  

  

将统计时间改为1小时,可以看到修改国货网络质量也得到了持续好转。

  


  

  


  

  


  

总结 首先,我不认为这种解决方式是一个很好的解决方法,如果设备能对多 AP 的 SSID 支持得更好就不会存在这样的问题,但是在现阶段想要获得良好的智能家居体验,良好的 Wi-Fi 覆盖和正确的连接关系是前提。

  

本文描述的这个方式并不优雅,但问题得到了解决,体验获得了提升。当然从 Uni-Fi Controller 的角度也许可以更优雅的解决问题,比如通过控制 SSID Beacon 来实现某个设备绑定某个 AP 其实也是可能的,但是在大规模的网络中可能会引发更多的问题,也许只能期待 ESP8266 的网络驱动进一步优化,并且厂商后续能提供后续升级,才能彻底解决这一问题。

相关文章