『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 1913|回复: 9

[求助] Home Assistant Operating System 安装方式下如何找componets目录?

[复制链接]

213

主题

568

帖子

4136

积分

论坛元老

Rank: 8Rank: 8

积分
4136
金钱
3568
HASS币
0
发表于 2022-10-12 12:07:49 | 显示全部楼层 |阅读模式
本帖最后由 newspaper 于 2022-10-12 12:39 编辑

用的树莓派4安装的官网的Home Assistant Operating System .
微信截图_20221012124042.png

如何找到上面的文件路径呀?我要替换里面的文件。
回复

使用道具 举报

23

主题

137

帖子

712

积分

高级会员

Rank: 4

积分
712
金钱
575
HASS币
0
发表于 2022-10-12 12:13:10 来自手机 | 显示全部楼层
图片没显示出来
回复

使用道具 举报

213

主题

568

帖子

4136

积分

论坛元老

Rank: 8Rank: 8

积分
4136
金钱
3568
HASS币
0
 楼主| 发表于 2022-10-12 12:40:30 | 显示全部楼层
Brewer 发表于 2022-10-12 12:13
图片没显示出来


                               
登录/注册后可看大图
回复

使用道具 举报

13

主题

540

帖子

5638

积分

论坛元老

Rank: 8Rank: 8

积分
5638
金钱
5098
HASS币
10
发表于 2022-10-12 13:49:08 | 显示全部楼层
componets目录? 这个里面放的内置的集成,你手动改的,下次更新ha,还会被自动覆盖变回去。而且hassos里面找这个目录,也要先进去homeassistant的容器里面,在hassos的命令里面 docker exec -it homeassistant /bin/bash    进入容器的shell之后,就能找到了/usr/src/homeassistant/homeassistant/components
回复

使用道具 举报

213

主题

568

帖子

4136

积分

论坛元老

Rank: 8Rank: 8

积分
4136
金钱
3568
HASS币
0
 楼主| 发表于 2022-10-12 14:00:11 | 显示全部楼层
mars.z 发表于 2022-10-12 13:49
componets目录? 这个里面放的内置的集成,你手动改的,下次更新ha,还会被自动覆盖变回去。而且hassos里面 ...

有没有可以图型化的解开这个容器,比如add-one下安装一个类似node-red插件来管理呢。
回复

使用道具 举报

13

主题

540

帖子

5638

积分

论坛元老

Rank: 8Rank: 8

积分
5638
金钱
5098
HASS币
10
发表于 2022-10-12 17:37:55 | 显示全部楼层
newspaper 发表于 2022-10-12 14:00
有没有可以图型化的解开这个容器,比如add-one下安装一个类似node-red插件来管理呢。 ...

图形化的add_on插件这个就不知道了,没用过这种。不过其实也可以在github上面把官方这个集成的文件夹down下来,然后把你要手动改的那个集成,文件改好了直接放在自定义集成文件夹里面,直接当自定义集成用,不过缺点就是插件不会随官方的更新而更新了
回复

使用道具 举报

45

主题

452

帖子

1639

积分

金牌会员

Rank: 6Rank: 6

积分
1639
金钱
1187
HASS币
0
发表于 2022-10-13 08:58:16 | 显示全部楼层
Home Assistant有几钏安装方式
回复

使用道具 举报

18

主题

587

帖子

4287

积分

元老级技术达人

积分
4287
金钱
3665
HASS币
182
发表于 2022-10-14 13:34:41 | 显示全部楼层
本帖最后由 louis_lee 于 2022-10-14 13:35 编辑

我刚做过类似的,不过我是替换iCloud组建有关文件。

step1. 添加 SSH & Web Terminal,或者其他方式打开HAOS instance 的 ssh。
step2. 进入webUI或者putty SSH上后,利用docker cp (你想拷贝的文件) homeassistant:/usr/src/homeassistant/homeassistant/components/*.py 复制过去
step3. 为了防止更新后被覆盖,你可以写个shell 脚本,利用HA shell_command,每次启动后执行docker cp命令,当然你也可以写的复杂些,不如复制前先与原有的比较等等逻辑,覆盖成功或者失败notify等等。
回复

使用道具 举报

213

主题

568

帖子

4136

积分

论坛元老

Rank: 8Rank: 8

积分
4136
金钱
3568
HASS币
0
 楼主| 发表于 2022-10-15 09:36:27 | 显示全部楼层
louis_lee 发表于 2022-10-14 13:34
我刚做过类似的,不过我是替换iCloud组建有关文件。

step1. 添加 SSH & Web Terminal,或者其他方式打开HA ...

非常感谢!shell 脚本有参考的例子吗? 自动执行复制命令就可以。
回复

使用道具 举报

18

主题

587

帖子

4287

积分

元老级技术达人

积分
4287
金钱
3665
HASS币
182
发表于 2022-10-17 10:03:47 | 显示全部楼层
本帖最后由 louis_lee 于 2022-10-17 10:12 编辑

由于配置目录不随版本更新,你可以把要替换的文件放在/config,替换前的命名成XX-original.py,替换后的是XX.py,然后在新建一个文件LAST_ROLL_BACK_HA_VERSION,用于记录更新时的版本。在/config下写一个shell脚本。参考如下:
cp /original_path/original_file.py /config/XX-new.py
diff_version=$(diff /config/.HA_VERSION config/LAST_ROLL_BACK_HA_VERSION|wc -l)

if [ $diff_version -eq 0 ]
then
  message="no_version_changed"
else
  diff_length=$(diff base-new.py base-original.py|wc -l)
  echo $diff_length
  if [ $diff_length -eq 0 ]
  then
    cp XX.py /original_path/original_file.py
    cp /config/.HA_VERSION /config/LAST_ROLL_BACK_HA_VERSION
    message="roll_back_success"
  else
    message="new_version_for_XXXX"
  fi
fi

curl -X POST -H "Content-Type: application/json"  -d '{"message": "'$message'"}' http://homeassistant:8123/api/webhook/XXX_web_hook
exit 0


修改configuration.yaml,增加配置,用于执行shell脚本,再添加一个webhook用于接受回传信息。
shell_command:
  roll_back_XXX: /config/XXX.sh
  
template:
  - trigger:
      - platform: webhook
        webhook_id: XXX_web_hook
    sensor:
      - name: "XXXX_roll_back_message"
         state: "{{ trigger.json.message }}"


最后利用HA自动化,每次HA启动后,执行shell_command service; 在加一个webhook自动化,用于提醒是否替换成功

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 09:33 , Processed in 0.113219 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表