本帖最后由 chaobt 于 2019-5-2 05:41 编辑
本文设置的前置条件:
需要你有一点Linux的基础,知道如何SSH登陆,添加Shell脚本并修改脚本执行权限
经过一段时间的使用,发现Home Assistant系统的健壮性不是很高,尤其是在频繁的版本更新之后,经常出现服务程序假死的情况。
而HA作为智能家居的中枢,其稳定性是要求却是最高的,试想报警系统无法正常开启,可能导致家庭安全受到影响。
于是我想到常用的系统心跳(Heartbeat)的方法来确定系统可用。
简单来说,就是通过命令访问HA的Web Console页面,如果页面可以访问,说明服务正常,否则就重启HA服务。
我是用群晖来部署HA的,作为家用NAS,群晖的稳定性已经能完全满足我的需求,所以我在群晖上跑了一个类似Crontab的定时检测。
设置方法如下:
1. 群晖控制面板(高级模式) -- 计划任务
2. 点击上面的新增 -- 计划的任务 -- 用户定义的脚本
3. 任务名称可以随便起,好记就行,在计划页面进行相关设置
我选择的是每10分钟一次检查,注意最后运行时间要设置到当天结束,这个设置相当于crontab的功能
4.运行命令填上heartbeat.sh脚本的相应目录,这个脚本我会在下面提供给大家下载。
因为我用的是群晖,所以这里写的是: bash /volume1/homeassistant/heartbeat.sh
至此,群晖部分的设置就完成了。
至于脚本,需要你有一点Linux的基础,知道如何打开群晖的SSH,添加Shell脚本并修改脚本执行权限。
heartbeat.sh脚本内容
#!/bin/sh
url="http(s)://你HA的IP:8123"
content="$(curl -skIL --connect-timeout 2 "$url" | grep HTTP/1.1 | tail -1 | awk {'print $2'})"
DATE="date '+%Y-%m-%d %H:%M:%S'"
if [ ! -z $content ] && [ $content -eq 405 ]
then
echo "Home Assistant is running"
else
echo "Restarting hass at $(date '+%Y-%m-%d %H:%M:%S').">>auto_restart.log
/volume1/homeassistant/hass-daemon restart
fi
url修改成你的Home Assistant 所在的IP就可以了。之后将脚本拷贝到你的Home Assistant主目录,并且使用chmod +x heartbeat.sh命令给脚本加上可执行权限。
需要注意的几点:
|