用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

12

主题

13

帖子

5840

积分

论坛元老

Rank: 8Rank: 8

积分
5840
2019-9-5 16:04:13 三木 论坛元老 楼主 4395
本文为三木原创文章,未经许可,严禁转载!
如经许可转载时务必注明原作者三木及原始链接,并注明“发表于ioBroker中国”,转载不得对作品进行修改。 https://bbs.iobroker.cn/thread-326-1-1.html
本帖最后由 三木 于 2019-9-30 14:35 编辑

更新了一下,所有的配置只需要修改最开始的节点,
增加了视频录像和自动删除历史文件功能,如果视频录制失败,
请先看看是否支持ffmpeg,并在camera下新建一个video文件夹!

先看效果,微信收到后是这样的(电脑端效果)

微信截图_20190905154148.png

点开后,是一个网页,这个是基于企业微信自己的服务器,理论上不会存在被屏蔽的可能,图片还是调用的自己服务器的

微信截图_20190905154204.png

整个流预览一下

微信截图_20190930141331.png


使用说明

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.25 KB, 下载次数: 28

使用道具 举报 回复
小白设置失败了
使用道具 举报 回复 支持 反对
怒赞
使用道具 举报 回复

你会设置了吗?教教我呗
使用道具 举报 回复 支持 反对
a164162007 发表于 2019-9-13 22:40
你会设置了吗?教教我呗

我只是来get怎么合成gif的,前置触发条件各有各的不同
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册