本帖最后由 花落花空 于 2024-12-13 20:53 编辑
不知道大伙有没有在HAOS中进行安装加载项或者更新的时候,提示no host internet的错误。这个时候用curl测试网络又都是正常的。
我个人遇到很多次了。
解决方案就是命令行执行
ha jobs options --ignore-conditions internet_host
这条命令是忽略对网络的检测。然后就可以进行跟新和安装啥的操作了。在你重启整个系统之前,是一直生效的。但有时候重新又是必不可少操作,比如对OS进行更新。
这意味着后续遇到这个问题又要去命令行执行一次,很不优雅。
那么有没有直接ui上一点就能解决的方法呢。经过对文档的研究,发现使用shell_command配合Advanced SSH & Web Terminal加载项 运行SSH命令可以实现。
不同于常规的liunx,HAOS必须使用密钥才能登陆ssh,那么我们就先要生成ssh密钥。接下来说操作。
首先,我们打开命令行,冬瓜的HAOS可以访问IP:7681,其它的HOAS,可以安装 Advanced SSH & Web Terminal加载项。
7681端口进去需要先输入login
然后输入docker exec -it homeassistant bash 进入homeassistant容器
然后输入ssh-keygen这个命令输入后,会询问你一些问题,我们只需要理第一个,密钥的保存路径默认。它是在/root/.ssh/id_ed25519。
我们需要修改一下,
我选择保存在/config/.ssh/id_ed25519下面。因为默认的root路径会在ha更新后重置。
然后输入cat /config/.ssh/id_ed25519.pub查看公钥,复制下来。
红框中的,然后回到加载项Advanced SSH & Web Terminal的设置页面
保存启动加载项后,我们再回到命令行测试一下命令是否生效
ssh -i /config/.ssh/id_ed25519 hassio@你ha的ip sudo -i ha jobs options --ignore-conditions internet_host
上面的命令/config/.ssh/id_ed25519这部分,如果按着我的操作,不需要修改。你ha的ip请按实际修改。然后回车。
以我的为例是这样的。ssh -i /config/.ssh/ha [email protected] sudo -i ha jobs options --ignore-conditions internet_host
出现Command completed successfully.就表示运行成功。
接下来就可以编辑configuration.yaml了
添加如下内容
# 自定义命令
shell_command:
disable_detection: "ssh -i /config/.ssh/id_ed25519 hassio@你ha的ip sudo -i ha jobs options --ignore-conditions internet_host" #忽略工作条件-网络检测
enable_detection: "ssh -i /config/.ssh/id_ed25519 hassio@你ha的ip sudo -i ha jobs reset" #恢复工作条件
再编辑scripts.yaml文件,添加如下,这个也可在网页中操作,看个人习惯
disable_detection:
alias: 忽略网络检测
sequence:
- action: shell_command.disable_detection
metadata: {}
data: {}
description: 忽略工作条件检测
icon: mdi:network-off
enable_detection:
alias: 恢复工作条件
sequence:
- action: shell_command.enable_detection
metadata: {}
data: {}
description: 恢复工作条件检测
icon: mdi:network-outline
保存后重启ha。然后你就自动化与场景/脚本里面发现两个脚本了,执行它就可以了,当然也可以加到ui里更快操作。
|