更新了一下,所有的配置只需要修改最开始的节点,
增加了视频录像和自动删除历史文件功能,如果视频录制失败,
请先看看是否支持ffmpeg,并在camera下新建一个video文件夹!
先看效果,微信收到后是这样的(电脑端效果)
点开后,是一个网页,这个是基于企业微信自己的服务器,理论上不会存在被屏蔽的可能,图片还是调用的自己服务器的
整个流预览一下
使用说明
Author:三木 Version:6.0 最后修改时间:2019.09.30
首先来理一下这个流的逻辑关系:
当获取到一个触发事件,先判断这个事件是否是我们需要的条件,如果是则继续下一步;
接下去根据自己的选择同时执行录像、删除无用的历史记录、循环抓图(比如要每隔0.5秒抓拍,一共抓拍20次),
同时在每次抓拍后,都会通过百度API进行人数统计,并保存抓拍的图片同时进行压缩优化处理,生成一张优化后的新图,
经过设定次数的抓拍后汇总所有的结果进行降序,并且比较第二位的数据是否大于0,
以此判断是否需要进一步的操作(这里的作用是排除掉一些误触事件)。如果是大于0,那么开始生成GIF图,
当GIF图制作完成后,发送企业微信消息,同时压缩GIF图。
当然这其中还包括了很多数据的传递过程这里就不一一说明了,有兴趣的自己一个个跟下去应该能看明白。
0、本流程的触发部分需要自己修改,流程核心是可以正常工作的。
1、我使用独立的nginx容器来实现gif图的外网访问,
跨容器间的数据共享需要映射相应的文件夹给nginx容器和iobroker容器(或者node-red的独立容器),
node-red保存的图片将写入到宿主机文件夹内,让nginx容器可以访问,实现外网访问。
例如:
宿主机(docker所在的操作系统)文件夹: /disk/camera
nginx容器映射: /config/www/camera
iobroker容器内置的node-red映射: /opt/iobroker/camera (node-red容器映射: /data/camera)
2、为了实现高效率的图像转换,需要convert支持,部分容器可能不带,需要手动安装,
在宿主机终端执行如下命令,进入容器控制台:
docker exec -it --user root iobroker(容器名字) /bin/bash
在容器控制台输入 convert -version 命令,查看是否有版本信息,
如果提示convert: not found,则需要先安装,分别执行如下命令:
sudo apt-get update
sudo apt-get -y install imagemagick
根据网络情况等待的时间不等,完成后再次执行 convert -version
如果打印版本信息则说明安装成功。
3、本流程正常工作可能需要安装的节点有:
node-red-contrib-image-output
red-contrib-time-photo-files
node-red-node-base64
如果提示缺少节点,请先安装。
那么,havefun!
flows 6.0.zip (12.2 KB)