使用Webhook同步配置文件,gitlab ide编辑配置
因为从树莓派
迁移到 n1
上面, n1
啥都好就是存储空间太小。一开始直接上 docker
,奈何 hass.io
装好之后系统就只剩 1.2G
的空间大小了。后面又换回到直接安装homeassistant
,参考文章如下:
【暗度陈仓】如何在斐讯N1上安装homeassistant
有兴趣装 docker
的,可以参考下面文章:n1 ubuntu18.04内置到emmc后部署docker,portainer.io,ha
使用过hass.io cloud9 ide
之后就不想配置文件传来传去的编辑,最好我直接在线编辑,当时的想法就直接安装 cloud9
在 n1
上面,尝试了各种方法编译不过去,有查找了n个web ide
,感觉都不咋的 ,只好放弃。
后面想到我可以使用个git 服务提供的web ide
,唯一我要做的事情就是把文件同步做好就行,我还是在网页上编辑配置文件,git 互相同步我修改的文件即可,最后选定了gitlab web ide
。
原因如下:
- 免费的私有项目存储,保证信息的安全性
- 友好的web ide 环境,方便使用
环境准备
需要技能:
- 对git常规操作理解
- node 环境熟悉
- gitlab 了解
初始化git项目
配置git
git config --global user.name "孙善明"
git config --global user.email "[email protected]"
初始化项目
cd /home/homeassistant/.homeassistant
git init
git remote add origin [email protected]:yaming116/homeassistant.git
git add .
git commit -m "Initial commit"
git push -u origin master
Node 环境安装
参考搭建Node.js环境
注意
n1 需要选择 arm64版本的,我用的是这个 https://nodejs.org/dist/v9.9.0/node-v9.9.0-linux-arm64.tar.xz
安装pm2
npm install pm2 -g
启动项目
npm install
pm2 start index.js
开机启动
pm2 save
pm2 startup
WebHook
项目地址:https://coding.net/u/yaming/p/WebHook/git
主要功能:
- gitlab webhook事件监听,在有
push
操作的时候进行拉去线上配置文件
- 文件同步,每
30
秒进行本地文件检查是否存在修改,修改即提交配置文件到gitlab
定时任务 index.js
function scheduleCronstyle(){
schedule.scheduleJob('30 * * * * *', function(){
console.log('scheduleCronstyle:' + new Date());
runPush()
});
}
webhook 逻辑 handdle.js
function design_handle() {
let handler = createHandler({
path: '/hass',
token: 'mytoken' // tooken,用于校验请求
})
handler.on('error', err => {
console.error('Error:', err.message)
})
handler.on('push', event => {
console.log('handler push event')
runUpdate()//更新本地代码
})
return handler
}
脚本文件
- update_webhook 更新配置
- commit_change 检查本地配置否有变化,如果有就提交
缺点
- 更新有一点点延迟(可以调正同步时间)
- home-assistant_v2.db 一直有变化(可以忽略此文件解决)