物联网后端前端【免费下载链接】ValetudoCloud replacement for vacuum robots enabling local-only operation项目地址https://gitcode.com/gh_mirrors/va/Valetudo点击查看免费下载Valetudo Companion 是 Valetudo 生态中的一款可选 Android 辅助应用它的核心价值在于自动监听局域网内的 BonjourmDNS/zeroconf广播把网络中所有 Valetudo 实例以列表形式呈现免去手动配置静态 DHCP 租约或登录路由器后台查 IP 的麻烦同时内置轻量配置向导可帮助新实例完成网络初始化provisioning。读完本文你将理解 Companion 应用的定位边界、它在 Valetudo 端对应的广播机制源码级、安装渠道差异以及配置向导背后的前端与后端实现原理。它是什么自动更新的书签 一个向导根据 valetudo_companion.md 的官方定位Valetudo Companion 是一个完全可选的应用只为了让 Valetudo 更容易被访问。它不会在正常使用过程中提供任何操作 Valetudo 的界面——也就是说你仍然需要通过浏览器打开实例的 Web UI 来完成清扫、地图、设置等全部操作。简言之你可以把它理解为一个会自动更新的书签加上一些向导功能。它做的事情只有两件自动发现监听网络中近期2021.07.0 及更新版本Valetudo 实例发出的 Bonjour 广播并将每个实例显示在列表中方便一键访问。简化配置允许对全新实例进行快速 provisioning无需在手机上折腾移动数据/热点的切换设置。为什么需要它解决找 IP与首次配置两大痛点在多设备家庭网络中Valetudo 实例的地址通常由路由器 DHCP 动态分配。传统做法要么为每个机器人手动配置静态 DHCP 租约要么频繁登录路由器管理界面查询地址——这两者都繁琐且容易出错。Companion 应用通过被动监听 Bonjour 广播让发现实例变成零配置行为。而在首次部署场景例如刚刷好 Valetudo、尚未接入 Wi-Fi 的机器人Companion 的向导能力让用户不必在手机系统设置中反复切换热点和移动网络直接在应用内完成网络的扫描与接入显著降低上手门槛。值得强调的是能被发现这一能力并非应用单方面实现而是依赖 Valetudo 后端主动广播服务二者缺一不可。底层原理Valetudo 端如何广播自己Companion 之所以能列出所有实例前提是 Valetudo 在嵌入式设备上持续发布 Bonjour 服务。这一机制在仓库中由 NetworkAdvertisementManager.js 实现。该类的注释明确写道This class handles advertisement via both SSDP (UPnP) and zeroconf/mdns/bonjour即 Valetudo 同时通过 SSDPUPnP与 zeroconf/mDNSBonjour两个协议广播自己的存在。其中 Bonjour 部分使用bonjour-service库并发布两类服务见 NetworkAdvertisementManager.js服务名称类型用途Valetudo 系统ID Webhttp面向通用 mDNS 浏览器的 Web 服务发现Valetudo 系统IDvaletudo自定义服务类型供 Companion 等应用定向监听每个服务携带一组 TXT 记录用于向发现方描述实例身份源码位置id人类可读的系统 ID见下文model机器人型号名来自robot.getModelName()manufacturer制造商来自robot.getManufacturer()versionValetudo 版本号来自Tools.GET_VALETUDO_VERSION()name可选当配置了friendlyName时附加来自 ValetudoHelper.js 的getFriendlyName()未配置时默认格式为Valetudo 型号 系统ID人类可读系统 ID 与 zeroconf 主机名从 Tools.js 可以看到一套完整的身份生成逻辑GET_SYSTEM_ID()基于本机网卡 MAC 地址集合用 UUID v5 生成稳定的实例 IDLinux 下优先从 sysfs 读取 MACGET_HUMAN_READABLE_SYSTEM_ID()默认由系统 ID 通过zooIDs.generateId()生成便于人读的短 ID也可通过环境变量覆盖源码注释指出这是有意半隐藏的能力配置错误可能破坏功能因此未放进配置文件GET_ZEROCONF_HOSTNAME()拼接为valetudo-系统ID小写.local即实例在局域网内的 mDNS 主机名。也就是说Companion 列表项背后的每一个 ID、型号、版本字段都来自上面这套真实运行的广播数据而不是应用端猜测的。广播的启用条件与配置Bonjour 广播并非无条件开启。查看 NetworkAdvertisementManager.js 的setUp()仅当config.get(embedded) true即运行在嵌入式设备上时才会启动广播且配置项networkAdvertisement.enabled必须为true默认配置即开启见 default_config.json。广播期间管理器每 30 秒检查一次本机 IP 地址集合NETWORK_STATE_CHECK_INTERVAL 30 * 1000一旦检测到网络状态变化如切换了 Wi-Fi、获得了新 IP会自动重启 SSDP 与 Bonjour 服务以保证广播与真实地址一致源码位置。面向管理员的 REST 接口如需查看或调整广播配置NetworkAdvertisementManagerRouter.js 提供了相应接口GET /config返回{ enabled: boolean }PUT /config接受{ enabled: boolean }更新配置非布尔值返回 400GET /properties返回{ port, zeroconfHostname }即 Web 端口与 mDNS 主机名。这解释了文档中2021.07.0 及更新版本的限制Bonjour 广播机制是自该版本起引入并稳定存在的Companion 只对广播了自身存在的实例生效。Companion 的配置向导provisioning 的前端与后端文档特别提到Companion 能在不用折腾移动数据设置的前提下完成新实例的 provisioning。仓库前端代码印证了这一体验是如何实现的。在 RouterChoice.tsx 中前端会查询当前实例的 Wi-Fi 状态若wifiConfiguration.state not_connected渲染 ProvisioningPage.tsx即进入配置向导若已connected则跳过向导直接进入主应用。ProvisioningPage.tsx 中则包含完整的 Wi-Fi 扫描与选择体验通过useWifiScanQuery()触发扫描并拉取结果按 SSID 去重Map结构并按信号强度降序排列源码位置结果列表以SCAN_RESULT_BATCH_SIZE 5分批展示点击更多结果逐批展开避免长列表卡顿源码位置信号强度通过SignalStrengthIcon组件映射为不同档位图标直观呈现 Wi-Fi 质量。从后端能力看向导依赖 WifiConfigurationCapability.js 提供的getProperties()其中provisionedReconfigurationSupported字段标志着实例是否支持已配置状态下的重新配置。这些接口与前端向导共同构成无需切换手机热点的体验——一切扫描、连接操作都直接经由应用与实例间的 HTTP API 完成。需要说明的是Companion 应用本身的源码不在本仓库内其源码以 Apache-2.0 许可另行发布上文分析的是它交互的 Valetudo 侧实现应用侧的界面细节请以官方仓库为准。如何安装官方推荐的首选渠道是F-Droid应用 ID 为cloud.valetudo.companion这是因为它不包含任何跟踪代码且更新流程完全开放、透明。其次也可以从Google Play 商店同一应用 IDcloud.valetudo.companion获取。官方文档明确提醒尽管应用本身不含跟踪组件但Play Store 渠道本身会收集匿名使用数据——这一提醒适用于所有从该商店下载的应用并非 Valetudo Companion 特有问题。应用源码以 Apache-2.0 许可发布允许自由查看、修改与再分发。透明度Play Store 渠道会收集哪些数据这是官方文档专门用一节讨论的话题。即使应用本身干净经由 Google Play 分发时商店后台仍会向开发者提供聚合统计下图即官方文档展示的 Play Store 后台仪表盘截图此外用户对应用的评论会包含你的全名、你正在使用的设备型号、以及设备语言。官方对此的结论是整体上没有严重问题但用户有权知道这些数据确实在被收集——这正是选择 F-Droid 渠道可以获得更纯粹体验的原因。使用建议多实例家庭如果你有多台机器人且未配置静态 DHCPCompanion 的列表式发现体验远比翻路由器后台高效首次部署新实例刷机后直接用 Companion 完成网络配置无需在手机设置中反复切换热点隐私敏感用户优先通过 F-Droid 安装避开 Play Store 的匿名数据收集正常使用仍需 Web UICompanion 只负责找到并打开清扫、地图、设置等操作仍需浏览器访问实例的 Web 界面地址形如valetudo-系统ID.local。理解 Valetudo 端的 Bonjour 广播机制NetworkAdvertisementManager.js与前端配置向导ProvisioningPage.tsx之后你就能清楚地知道 Companion 应用的能力边界它是一个称职的发现器 配置助手而真正的控制中枢始终是 Valetudo 自身的 Web UI。赞分享物联网后端前端【免费下载链接】ValetudoCloud replacement for vacuum robots enabling local-only operation项目地址https://gitcode.com/gh_mirrors/va/Valetudo点击查看免费下载相关推荐Teleport Azure VM 自动发现实战基于 Terraform 的 azure-setup 配置与排障指南Teleport Azure VM 自动发现实战基于 Terraform 的 azure setup 配置与排障指南 Teleport 的 Auto Disc网络安全认证鉴权运维后端Bonjour 零配置网络服务发现完整指南轻松实现设备自动发现 Bonjour 零配置网络服务发现完整指南轻松实现设备自动发现 在当今物联网和智能家居时代设备间的自动发现和通信变得尤为重要。Bonjour 零配置网pg_ivm性能测试增量更新VS全量刷新谁才是赢家pg_ivm性能测试增量更新VS全量刷新谁才是赢家 在PostgreSQL数据库的日常运维中物化视图的刷新性能一直是影响系统响应速度的关键因素。 pg_数据库后端上一篇Laravel ER Diagram Generator 终极快速入门指南3分钟生成数据库关系图下一篇Milkdown 文档生成系统深度解析class.md 模板与 builddocs API 参考流水线创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考