目录

Real Vrchat Switch

一个 VRChat 中常见的地图开关。

开关原作者 Lura’s Switch ,此实体版本游戏周边由 craztmkmk 设计制作。

本文档会介绍开关如何使用,包括如何接入 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

对于组装完成的开关,我们仅烧录了灯光测试固件。使用此固件的开关在开机状态下,可以通过主按键切换亮暗状态或更改灯效,此外无其他功能。如果只想将它作为按下会亮的开关使用,那么不需要查看后续的教程。

如果想使用开关控制家中的智能家居,需要用到 Home Assistant (后续简称为 HA),它是一款免费的开源软件,用于实现集中式家庭自动化。并且需要确认满足以下条件:

  • 受控设备可接入 Home Assistant。米家生态的产品有小米官方做的集成(XiaoMi/ha_xiaomi_home) ,因此满足该条件,其他品牌产品需要自行搜索集成方法。
  • HA 有互联网连接,并且可访问国际互联网。后续操作中的插件安装与更新,以及开关的 ESPHome固件生成都需要用到中国大陆直接访问受干扰的资源。因此在进行后续操作前需要先确保外网访问正常。
  • 愿意使用 HA?在进行后续步骤时很可能会遇到问题,初次使用 HA 还是需要折腾一会的,这会花费一定时间。此外 HA 需要在家中的某个设备上运行,例如 NAS/软路由/树莓派/当服务器用的电脑等。虽然正常的电脑也可以运行 HA,但并不是一个理想的选择。

在进行该步骤前,需要满足下面的两个条件,具体的安装过程在B站有很多视频教程可以参考

本文的 附录1 部分记录了我准备测试环境的步骤,仅供参考。

在完成上述步骤后,就可以开始给开关刷写 ESPHome 固件来接入 HA 了,ESPHome 的安装可以参考 Getting Started with ESPHome and Home Assistant

本文的 附录2 部分记录了我在测试环境安装 ESPHome,仅供参考。

  1. 在 ESPHome 中新建设备,并完成初始配置。这里要填写你的 2.4G wifi 名与密码, 因为开关使用的 ESP32C3 模块仅支持 2.4G WIFI 连接。

  1. 选择设备型号 ESP32C3 后,安装方式选择 Manual :

  2. 等待 ESPHome 自动下载依赖并编译固件:

  3. 编译完成后选择 Factory 固件,并打开 Open ESPHome Web 来烧录固件 下载固件 将打开开关电源后,通过 USB 连接至电脑,可以看到开关的 ESP 烧录接口,选中并连接

如果本步骤出现连接不稳定的情况,可能由于开关没有预烧录固件或是原有固件损坏。需要拆开开关外壳,在按下PCB左上角的 BOOT 按键的情况下打开电源,使其开关进入烧录模式再进行固件下载。

烧录固件 选中刚刚下载的固件并进行烧录 选中固件 烧录

  1. 完成该步操作后,应该可以看到开关已经ONLINE了,接下来可以编辑开关配置来加入镜子开关的功能: Edit

在配置中的最前部分加入以下内容来导入 开关的 ESPHome 配置

packages:
  hardware-config:
    url: https://github.com/icrazt/esphome-config
    files: [vrc-switch-base.yml]
    ref: master  # optional
    refresh: 0d  # optional,设置为 0 每次拉取最新内容,方便调试

然后再将固件类型修改为 arduinoarduino 再点击 INSTALL,等待程序编译与更新

加入配置 由于已经配置好了无线连接,后续的升级和配置都可以通过 WIFI 来进行无线完成

注意局域网内不能有同名ESPHome设备,不然会导致固件无线上传失败

HA版本固件的开关功能如下,可以通过 HA 进行更多信息的查看和调整

  • 短按 50~1000ms:切换亮/暗状态
  • 长按 1~5s: 切换开关灯效

前往 HA 的设置-设备 选项,并添加刚刚升级完固件的开关设备: 添加设备 点击 RGB Strip 的图标可以调节RGB阵列的灯效与亮度: 再通过左侧的自动化(下图)设置即可实现开关与其他设备的联动,例如:

  • 使用开关控制智能插座,来控制电控雾化镜子,模仿游戏里的镜子控制
  • 使用开关控制家里的灯光

自动化

此外,这里准备了一个名为 Switch Main Status 的虚拟传感器,它与开关当前 RGB 灯带的状态对应,方便用灯条状态来控制其他设备,例如: 设备联动


不建议用 Docker 方式安装 HA,因为 ESPHome 插件要求 Home Assistant 操作系统或者 Home Assistant Supervised 安装方式,如果像下面那样用 Docker 安装了 HA,那么 ESPHome 也需要单独使用容器安装。

使用 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

welcome 完成初始化引导后进入主界面: img 接下来安装米家集成,按照 ha_xiaomi_home/doc/README_zh.md 中的介绍,使用 HACS 来一键安装米家集成:

  1. 首先安装 HACS,由于我使用了 Docker 方式安装 HA,于是参考此部分指引先完成安装 install hacs

  2. 安装完成后记得重启 HA: restart ha

  3. 之后按照 HACS 的说明进行初始化 init config 该步骤需要你登录 Github 账号进行设备的验证。 验证 完成后可以看到侧边栏多了 HACS 选项,可以在这里安装米家集成,或是使用下一步的链接进行安装: new tab

  4. 然后点击文档中的按键(也就是下面的那个)来安装米家集成,注意打开后的 HA URL 填写你上面访问时使用的:

打开您的 Home Assistant 实例并打开 Home Assistant 社区商店内的米家集成。 hacs 在打开的页面点击右下角的 Download 进行安装: install mi 完成安装后同样需要一次 HA 的重启。

这部分同样参考 ha_xiaomi_home/doc/README_zh.md stp1 如果安装的 OAuth2 跳转失败,可以参考下面进行解决: 登录时“无法访问此页面”的问题解决办法 · XiaoMi/ha_xiaomi_home · Discussion #6

认证成功后选择需要使用的家庭: init

这里的 HA TEST 仅有一个智能插座设备,完成添加后返回首页可以看到具体的设备信息: device info

至此使用开关控制米家设备的初步准备工作就完成了

参考:Getting Started with ESPHome and Home Assistant

如果安装了 HAOS,那么直接去加载项中安装 ESPHome 即可: install

如果使用容器的方式安装了 HA,那么需要单独再运行一个 ESPHome 的容器: run the ESPHome Device Builder independently in Docker 之后可以通过单独的链接来设置 ESPHome。 容器中的esphome

services:
  esphome:
    container_name: esphome
    image: ghcr.io/esphome/esphome
    volumes:
      - .config/:/config
    network_mode: host