Real Vrchat Switch
一个 VRChat 中常见的地图开关。
开关原作者 Lura’s Switch ,此实体版本游戏周边由 crazt 与 mkmk 设计制作。
本文档会介绍开关如何使用,包括如何接入 Home Assistant 来控制包括米家产品在内的智能家居产品。
基本信息:
- 控制器:ESP32C3
- 灯珠:22 颗 WS2812B-B/T ,黑色雾化版本
- USB:300 mA 充电,程序烧录
- 电池:默认 600mah ,续航约 5h 此开关主要在连接 Type-C 供电的场景下使用,在灯光亮度较高时电池续航会严重缩短
更多此开关的资料:Github icrazt/Real-VRChat-Switch
基础固件:Github icrazt/real-vrchat-switch-esp
开关的 ESPHome 配置:Github icrazt/esphome-config
1. 刚刚拿到开关实体周边?
对于组装完成的开关,我们仅烧录了灯光测试固件。使用此固件的开关在开机状态下,可以通过主按键切换亮暗状态或更改灯效,此外无其他功能。如果只想将它作为按下会亮的开关使用,那么不需要查看后续的教程。
如果想使用开关控制家中的智能家居,需要用到 Home Assistant (后续简称为 HA),它是一款免费的开源软件,用于实现集中式家庭自动化。并且需要确认满足以下条件:
- 受控设备可接入 Home Assistant。米家生态的产品有小米官方做的集成(XiaoMi/ha_xiaomi_home) ,因此满足该条件,其他品牌产品需要自行搜索集成方法。
- HA 有互联网连接,并且可访问国际互联网。后续操作中的插件安装与更新,以及开关的 ESPHome固件生成都需要用到中国大陆直接访问受干扰的资源。因此在进行后续操作前需要先确保外网访问正常。
- 愿意使用 HA?在进行后续步骤时很可能会遇到问题,初次使用 HA 还是需要折腾一会的,这会花费一定时间。此外 HA 需要在家中的某个设备上运行,例如 NAS/软路由/树莓派/当服务器用的电脑等。虽然正常的电脑也可以运行 HA,但并不是一个理想的选择。
2. 如何将开关接入 HA
在进行该步骤前,需要满足下面的两个条件,具体的安装过程在B站有很多视频教程可以参考
本文的 附录1 部分记录了我准备测试环境的步骤,仅供参考。
- 在局域网内的设备上安装了 HA,可参考 HA 官方文档 Installation - Home Assistant
- 待控设备接入 HA。米家设备可参考 ha_xiaomi_home/doc/README_zh.md
在完成上述步骤后,就可以开始给开关刷写 ESPHome 固件来接入 HA 了,ESPHome 的安装可以参考 Getting Started with ESPHome and Home Assistant
本文的 附录2 部分记录了我在测试环境安装 ESPHome,仅供参考。
- 在 ESPHome 中新建设备,并完成初始配置。这里要填写你的 2.4G wifi 名与密码, 因为开关使用的 ESP32C3 模块仅支持 2.4G WIFI 连接。
-
选择设备型号 ESP32C3 后,安装方式选择 Manual :
-
等待 ESPHome 自动下载依赖并编译固件:
-
编译完成后选择 Factory 固件,并打开 Open ESPHome Web 来烧录固件
将打开开关电源后,通过 USB 连接至电脑,可以看到开关的 ESP 烧录接口,选中并连接
如果本步骤出现连接不稳定的情况,可能由于开关没有预烧录固件或是原有固件损坏。需要拆开开关外壳,在按下PCB左上角的 BOOT 按键的情况下打开电源,使其开关进入烧录模式再进行固件下载。
选中刚刚下载的固件并进行烧录
- 完成该步操作后,应该可以看到开关已经ONLINE了,接下来可以编辑开关配置来加入镜子开关的功能:
在配置中的最前部分加入以下内容来导入 开关的 ESPHome 配置
packages:
hardware-config:
url: https://github.com/icrazt/esphome-config
files: [vrc-switch-base.yml]
ref: master # optional
refresh: 0d # optional,设置为 0 每次拉取最新内容,方便调试
然后再将固件类型修改为 arduino
:
再点击 INSTALL,等待程序编译与更新
由于已经配置好了无线连接,后续的升级和配置都可以通过 WIFI 来进行无线完成
注意局域网内不能有同名ESPHome设备,不然会导致固件无线上传失败
3.在 HA 中使用开关
HA版本固件的开关功能如下,可以通过 HA 进行更多信息的查看和调整
- 短按 50~1000ms:切换亮/暗状态
- 长按 1~5s: 切换开关灯效
前往 HA 的设置-设备 选项,并添加刚刚升级完固件的开关设备:
点击 RGB Strip 的图标可以调节RGB阵列的灯效与亮度:
再通过左侧的自动化(下图)设置即可实现开关与其他设备的联动,例如:
- 使用开关控制智能插座,来控制电控雾化镜子,模仿游戏里的镜子控制
- 使用开关控制家里的灯光
此外,这里准备了一个名为 Switch Main Status
的虚拟传感器,它与开关当前 RGB 灯带的状态对应,方便用灯条状态来控制其他设备,例如:
附录1 HA与米家集成安装
不建议用 Docker 方式安装 HA,因为 ESPHome 插件要求 Home Assistant 操作系统或者 Home Assistant Supervised 安装方式,如果像下面那样用 Docker 安装了 HA,那么 ESPHome 也需要单独使用容器安装。
运行 HA 与安装米家集成
使用 Docker 方式安装 HA 并接入米家设备,完成安装后访问 http://设备IP:8123 可以看到初始化界面,在我这里是 http://192.168.10.120:8123
services:
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
volumes:
- .config/:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
restart: unless-stopped
privileged: true
network_mode: host
完成初始化引导后进入主界面:
接下来安装米家集成,按照 ha_xiaomi_home/doc/README_zh.md 中的介绍,使用 HACS 来一键安装米家集成:
-
安装完成后记得重启 HA:
-
之后按照 HACS 的说明进行初始化
该步骤需要你登录 Github 账号进行设备的验证。
完成后可以看到侧边栏多了 HACS 选项,可以在这里安装米家集成,或是使用下一步的链接进行安装:
-
然后点击文档中的按键(也就是下面的那个)来安装米家集成,注意打开后的 HA URL 填写你上面访问时使用的:
在打开的页面点击右下角的 Download 进行安装:
完成安装后同样需要一次 HA 的重启。
连接米家
这部分同样参考 ha_xiaomi_home/doc/README_zh.md
如果安装的 OAuth2 跳转失败,可以参考下面进行解决:
登录时“无法访问此页面”的问题解决办法 · XiaoMi/ha_xiaomi_home · Discussion #6
认证成功后选择需要使用的家庭:
这里的 HA TEST 仅有一个智能插座设备,完成添加后返回首页可以看到具体的设备信息:
至此使用开关控制米家设备的初步准备工作就完成了
附录2 ESPHome 安装
参考:Getting Started with ESPHome and Home Assistant
ESPHome 安装至HA
如果安装了 HAOS,那么直接去加载项中安装 ESPHome 即可:
在容器中单独运行 ESPHome
如果使用容器的方式安装了 HA,那么需要单独再运行一个 ESPHome 的容器:
run the ESPHome Device Builder independently in Docker
之后可以通过单独的链接来设置 ESPHome。
services:
esphome:
container_name: esphome
image: ghcr.io/esphome/esphome
volumes:
- .config/:/config
network_mode: host