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

 找回密码
 立即注册
查看: 6491|回复: 6

[求助] 如何重载custom_components中指定的py文件?

[复制链接]

65

主题

853

帖子

3044

积分

论坛元老

Rank: 8Rank: 8

积分
3044
金钱
2184
HASS币
40
发表于 2018-4-24 10:46:15 | 显示全部楼层 |阅读模式
RT:例如:custom_components中有一py脚本名为test.py

在ha下,如何在不重启ha服务的前提下,直接重载指定的test.py脚本?
不知有无大神研究过此类自动化控制的思路?
求交流、探讨
回复

使用道具 举报

27

主题

387

帖子

3269

积分

元老级技术达人

积分
3269
金钱
2862
HASS币
40

教程狂人

发表于 2018-4-24 11:10:19 | 显示全部楼层
你用shell_command方式載入xxx.py
然後在configutation.yaml寫入
shell_command:
  xxxx: /config/XXXX.py

XXXX.py存在HA的/config資料夾下,權限設為755
內容為
kill `ps -aux | grep XXXX | grep python | awk '{print $2}'`;sleep 3;nohup XXXX.py &

內容說明:
kill `ps -aux | grep xxxx | grep python | awk '{print $2}'` 代表砍掉系統內運作中的XXX.py
sleep 3 代表等待系統3秒
nohup XXXX.py & 代表重新執行程式

這樣只要你執行一次
就會先砍掉系統內原本的
等待三秒
執行你想要運作的XXXX.py
回复

使用道具 举报

65

主题

853

帖子

3044

积分

论坛元老

Rank: 8Rank: 8

积分
3044
金钱
2184
HASS币
40
 楼主| 发表于 2018-4-24 11:25:19 | 显示全部楼层
windgo 发表于 2018-4-24 11:10
你用shell_command方式載入xxx.py
然後在configutation.yaml寫入
shell_command:

之前也想过用shell的方式来执行xxx.py,但是不知会不会影响到ha已经自动运行的xxx.py脚本。 使用kill先杀掉已执行的脚本进程然后再通过shell调用执行。是这个意思吧? 我有空去试试,谢谢!!
回复

使用道具 举报

65

主题

853

帖子

3044

积分

论坛元老

Rank: 8Rank: 8

积分
3044
金钱
2184
HASS币
40
 楼主| 发表于 2018-4-24 14:28:57 | 显示全部楼层
windgo 发表于 2018-4-24 11:10
你用shell_command方式載入xxx.py
然後在configutation.yaml寫入
shell_command:

ha运行在docker中,ps查看没有test.py进程
回复

使用道具 举报

27

主题

387

帖子

3269

积分

元老级技术达人

积分
3269
金钱
2862
HASS币
40

教程狂人

发表于 2018-4-24 18:04:10 | 显示全部楼层
plutosherry 发表于 2018-4-24 14:28
ha运行在docker中,ps查看没有test.py进程

你要進docker ha的終端機執行test.py跟shell_command的指令
回复

使用道具 举报

65

主题

853

帖子

3044

积分

论坛元老

Rank: 8Rank: 8

积分
3044
金钱
2184
HASS币
40
 楼主| 发表于 2018-4-25 14:59:13 | 显示全部楼层
windgo 发表于 2018-4-24 18:04
你要進docker ha的終端機執行test.py跟shell_command的指令

进了docker的homeassistant容器,然后查看其中的进程,没有找到运行的test.py 进程,但可以确定的是该朋友脚本肯定是被ha加载了的。因为是放在custom_components下的,ha启动的时候会自动加载
回复

使用道具 举报

27

主题

387

帖子

3269

积分

元老级技术达人

积分
3269
金钱
2862
HASS币
40

教程狂人

发表于 2018-4-25 15:58:47 | 显示全部楼层
plutosherry 发表于 2018-4-25 14:59
进了docker的homeassistant容器,然后查看其中的进程,没有找到运行的test.py 进程,但可以确定的是该朋 ...

如果你要用shell_command的方法執行test.py
你檔案要放在docker HA內的/config下,用shell_command去執行
可以寫個自動化在home-assistant初始化時執行shell_command即可

如果你要放在custom_components下
那我就不清楚了 等你測完再上來分享吧
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-24 03:28 , Processed in 0.049788 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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