Visual Studio Code调试Home Assistant代码(SSH版)

Visual Studio Code在WSL或容器远程调试,需要在本地安装相应的WSL或者Docker Desktop,如需要尽量保持本地环境的简洁,采用SSH方式是一个更好的选择。


0.环境

  • Win10 + OpenSSH
  • Ubuntu 18.04 + Docker CE 19.03.1
  • Visual Studio Code 1.38.0

1.方法简介

SSH方式通过远程到Linux主机上,使用Linux主机环境实现代码调试,实际上VS Code官方文档已有很完整教程,有疑问可以多翻翻。为了隔离测试环境,在此使用容器部署Linux环境。


2.准备

2.1.Windows

  • 安装OpenSSH客户端,Win10 1809 和 Windows Server 2019后系统默认安装好,其它版本下载Win32-OpenSSH解压后加入PATH环境变量即可,或看官方教程安装。

  • 创建SSH钥匙对,会提示保存目录直接回车确认即可。

    1
    ssh-keygen -t rsa -b 4096
  • %USERPROFILE%\.ssh\目录下生成的id_rsa.pub(公匙)复制出来,将id_rsa(私匙)更名为id_rsa-hass-dev。

    INFO:更名的目的是作为专用的钥匙。

2.2.Linux

  • 下载Dockerfile,将上一步骤的id_rsa.pub放进同一个目录,然后上传至Docker宿主机。

  • 进入Dockerfile文件所在目录,构建镜像。

    1
    2
    3
    cd hass-dev
    # PIP_SOURCE指定pip源,HA_VERSION指定版本号
    docker build -t hass-dev:0.98.0 --build-arg PIP_SOURCE="http://mirrors.aliyun.com/pypi/simple/" --build-arg HA_VERSION="0.98.0" .

    INFO:PIP_SOURCE建议用阿里的,比较新。

  • 启动容器。

    1
    docker run -d -v ~/hass-dev-config:/usr/src/homeassistant/config -p 8022:22 -p 8456:8123 hass-dev:0.98.0

    INFO:把配置目录映射出来方便备份;需要映射容器22端口;可以不设置映射HA的8123端口,后续在VS Code设置映射到本地访问。


3.VS Code操作

  • 配置SSH连接信息。

    1
    2
    3
    4
    5
    Host hass-dev                             # 主机名,自定义
    User root # 登录用户,不需要改动
    HostName 192.168.1.10 # 宿主机IP,根据实际调整
    IdentityFile ~/.ssh/id_rsa-hass-dev # 本地私钥文件
    Port 8022 # 容器映射的端口,根据实际调整

    INFO:配置文件中应删掉注释。

  • 连接远程主机(容器)。
  • 在远程主机(容器)上安装Python插件,代码调试需要。
  • 打开主目录,开始调试。

4.小结

  • 官方的HA镜像貌似没有给Dockerfile,只得自己写,顺便精简了一些文件。
  • VS Code的三种远程调试方法整体上操作流程都一样,难点都是远程主机环境的搭建。