米系可视门铃、猫眼、摄像头(看家助手)本地化存储方案
step1: 设备接入miot auto
跳过。。。。
step2: 实现自动化存储
首先我们在/config目录里,新建一个文件xiaomi_video_autosave.sh,将如下代码贴入。复制过程注意window与Linux换行符差异,否则会造成执行失败。也就是最好不要用samba操作,而是直接ssh登入后,将代码贴入。
#! /bin/bash
## setting section
path="/media/xiaomi_video/"
video_limit=500
if [ ! -d $path ];then
mkdir $path
fi
current_file_size=`ls $path|wc -l`
video_url=$1
raw_file_name=`echo $2|sed 's/[^0-9]//g'`
file_name=$path$raw_file_name".mp4"
if [ $current_file_size -ge $video_limit ]; then
ls $path -tr|head -n $(($current_file_size-$video_limit+1))|sed "s/^/${path//\//\\\/}/g"|xargs rm
fi
ffmpeg -i $video_url -acodec copy -vcodec copy -f mp4 $file_name
path:就是存放目录,根据情况修改,格式为/media/xxxxxx/,不要省略结尾的“/”。可以在NAS或其他设备上存储,通过NFS挂载到/media下,见step4
video_limit:是存储上限,我存的视频大概不到1M一个,所以我设定了500个存储上限。你可以根据实际情况调整。
(另外需要注意的是,如果你播放的视频不全,比如就有1-2秒,请参考35楼的方案(已置顶)。)
保存退出后,别忘赋予可执行权限哦
chmod a+x /config/xiaomi_video_autosave.sh
再之后,我们在/config/configuration.yaml中将下述shell脚本加入到shell_command里:
shell_command:
xiaomi_autosave: '/bin/bash /config/xiaomi_video_autosave.sh "{{state_attr("camera.lumi_wbmcn1_8a41_lock","stream_address")}}" "{{state_attr("camera.lumi_wbmcn1_8a41_lock","motion_video_time")}}" '
##注意将以上两个camera实体换成你自己的!
最后,我们搞个HA自动化就完成视频本地存储了,放在automation.yaml里,或者自己通过HA前端手动写一个!
- id: '1678104080023'
alias: door_video_autosave
description: ''
trigger:
- platform: state
entity_id:
- camera.lumi_wbmcn1_8a41_lock ## 将此处修改为你的camera实体
attribute: motion_video_time
condition: []
action:
- service: shell_command.xiaomi_autosave
data: {}
step3: 生成HA视频查看卡片
除了用HA存储,我也要用HA查看!我从HACS里找了一个视频播放卡片,并为可视门铃的竖屏视频做了简单适配,有兴趣的朋友可以试一试:
首先,通过HACS安装前端卡片。依次点击HACS-》前端-》右上角三个点-》自定义存储库,类别选择lovelace,存储库贴入https://github.com/louisslee/gallery-card,并点击添加。添加后,就可以找到Custom Gallery Card,直接安装即可。
接下来,我们生成个HA视频卡片。你可以选择在HA lovelace页面建一个panel或者只是一个单卡片的view,来展示存储的视频。这里我们为新手朋友简单介绍在原有lovelace添加单卡片的view的方法。
在概览页面,点击右上角三个点-》编辑仪表盘-》左侧”+“号 添加视图-》标题随便起,视图类型选择视图(单张卡片)。点击添加卡片,拉到最后选择Custom Gallery Card,并点选代码编辑器,并将以下内容贴入:
type: custom:custom-gallery-card
entities:
- media-source://media_source/local/xiaomi_video ##如果你存储位置也在HA主机/media目录下,直接将xiaomi_video换成你自己定义的文件夹
file_name_format: '%YYY%m%d%H%M%S'
caption_format: '%YYY %m/%d %H:%M %p'
show_reload: true
menu_alignment: vertical #如果你的视频是横屏视频,请将此处换为responsive或直接使用未修改的gallery-card
这样就搞定了,你可以自己在门外走走,生成几个视频试试!!
step4: 使用NAS储存视频文件(非必须)
不少朋友HA的系统存储空间分配不足,或者使用倾向与使用NAS存储。毕竟NAS作为更专业的文件存储方式,不仅可使用的空间大,可使用raid 1等方式加强存储安全性。
比较常用的方式是使用NFS、CIFS(SAMBA)。大部分NAS系统都可以通过前端操作来创建一个NFS或CIFS(SAMBA)共享文件夹(简单百度一下,每家都不一样,我就不介绍了),并赋予好读写权限(非常重要!!!!!)。我们再将该共享文件夹挂载在HA系统上即可。
## cifs (samba) 挂载
mount -t cifs //192.168.3.49/cctv_storage /media/xiaomi_video -o user=xxx,pass=xxx
## 或使用nfs挂载
mount -t nfs4 192.168.3.49:/cctv_storage /media/xiaomi_video
## 注意修改以上IP、共享文件名称,并根据情况修改挂载点位置(与前文视频存储路径保持一致)。
## 如果挂载点位置的文件夹未创建,请首先创建相应的文件夹!!!
但是大部分朋友使用的HAOS、docker容器等方式安装,这意味着mount 操作无法持久化。那么我们可以建立一个自动化,HA每次启动,就做一次挂载操作。
首先请将下列内容加入configuration.yaml中:
shell_command:
video_storage_mount: 'mount -t cifs //192.168.3.49/cctv_storage /media/xiaomi_video -o user=xxx,pass=xxx '
## 如果使用nfs挂载,请按照前面的命令对应改一下
然后请做一个自动化,HA启动,执行该shell_command。以下放在automation.yaml里,或者自己通过HA前端手动写一个!
- id: '1680100015058'
alias: video_storage_mount_when_ha_start
description: ''
trigger:
- platform: homeassistant
event: start
condition: []
action:
- service: shell_command.video_storage_mount
data: {}
mode: single
米系可视门铃、猫眼、摄像头(看家助手)视频推送
这个简单,以下放在automation.yaml里,或者自己通过HA前端手动写一个!
- id: '1678104080026'
alias: door_video_push
description: ''
trigger:
- platform: state
entity_id:
- camera.lumi_wbmcn1_8a41_lock ##换成你的!
attribute: motion_video_time
condition: []
action:
- service: notify.mobile_app_****_iphone ##换成你的!
data:
title: 家门有人推送
message: 点击可查看视频
data:
url: '{{state_attr(''camera.lumi_wbmcn1_8a41_lock'',''stream_address'')}}' #换成你的!