[Raspberry Pi]如何利用docker執行motioneye,並利用Line Notify取得即時通知和照片?

本文主要是介绍[Raspberry Pi]如何利用docker執行motioneye,並利用Line Notify取得即時通知和照片?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[Motioneye]How to setup motion detection and send message/image for Line Notify

無意間,翻了一本關於樹莓派的書籍,除了樹莓派的簡介和應用外,也包含初階和高階的Linux運作邏輯,書籍結構相當完整,也因此需要花時間細細體會其內容。其在樹莓派的應用內容,提及一款開源影像監視軟體motioneye,motioneye具備運動偵測,即時拍攝照片和錄影,以及發送警報通知等功能,同時其可在瀏覽器上直接設定和管理攝像頭,相當方便。

利用docker將motioneye安裝在Ubuntu作業系統的樹莓派上,並搭配一個USB Camera,就是一個簡易型的家用監控設備。

安裝環境:

1.Ubuntu 22.04 LTS Desktop
2.已安裝opencv和docker

Docker拉取鏡像和啟動:

1.docker拉取motioneye,arm架構:armhf
docker pull ccrisan/motioneye:master-armhf
2.docker啟動motioneye
sudo docker run -d --name=motioneye --restart=always \
-p 8765:8765 \
--device=/dev/video0 \
-v /etc/localtime:/etc/localtime:ro \
-v $HOME/docker-service/motioneye:/etc/motioneye \
-v /var/lib/motioneye:/var/lib/motioneye \
ccrisan/motioneye:master-armhf

其中/var/lib/motioneye:/var/lib/motioneye的意義為將容器的/var/lib/motioneye映射到宿主機的/var/lib/motioneye,主要用意是讓影像和圖片可以儲存到該路徑,便於讓run a command可將影像和圖片上傳到line notify。

3.在瀏覽器開啟網頁,並輸入http://<宿主機IP地址>:8765 來訪問 MotionEye 的界面。
首次登錄時,使用預設的用戶名和密碼(admin/空白)登錄。

Motioneye設定:

1.設置Admin和Surveillance帳號密碼
2.vedio device 設置frame rate=30fps
3.Movies設置
  • Maximum Movie Length=0 seconds,定義影片長度為無限制
  • Preserve Movies: for one day, 定義影片保存一天後會自動刪除
4.Motion detection設置
  • Motion Gap=60 seconds,當影片偵測60秒無出現移動事件,即作為該移動事件的結束。
  • Captured Before=30 frame, 定義影片檔案由移動事件前的30 frame開始錄製,若設定frame rate =30fps, 則影片檔案由移動事件前的一秒鐘開始錄製。
  • Captured After=30 frame, 定義影片檔案錄製到移動事件結束後的30 frame,若設定frame rate =30fps, 則影片檔案錄製到移動事件結束後的一秒鐘。
5.Motion Notification設置
  • 當移動事件一被偵測到,立即run a command,command即是執行路徑中的.sh檔案,該.sh檔案即是利用line token上傳即時訊息給line notify,如圖一所示。
data/script/linenotifypush_msg.sh "motion detected %Y-%m-%d/%H-%M-%S”
  • 當移動事件結束後,立即run a end command,command即是執行路徑中的.sh檔案,該.sh檔案即是利用line token上傳即時訊息給line notify,如圖一所示。
data/script/linenotifypush_msg.sh "motion detected end %Y-%m-%d/%H-%M-%S”

其中,linenotifypush_msg.sh是利用curl post function來處理,如下:

#!/bin/bash 
curl -k -X POST -H 'Authorization: Bearer your line notify token' -F "message=$1" https://notify-api.line.me/api/notify

圖一、Motion Notification設置
圖一、Motion Notification設置
6.除了上傳message之外,同時上傳一開始移動事件的圖片
  • 在Still image設置中,將Capture Mode設置為Motion triggered(one picture),如圖二所示。
  • 在file stroage設置中,開啟run a command,並輸入下列command,其中%f為motioneye設定的路徑占位符,用以描述接續/var/lib/motioneye/Camera的不同日期時間的檔案,如圖三所示。。

data/script/linenotifypush_msg_img.sh "motion detected %Y-%m-%d/%H-%M-%S" %f

其中,linenotifypush_msg_img.sh如下:

#!/bin/bash 
curl -k -X POST -H 'Authorization: Bearer your line notify token' -F "message=$1" -F "imageFile=@$2" https://notify-api.line.me/api/notify

圖二、Still Image設置
圖二、Still Image設置

圖三、File Storage設置
圖三、File Storage設置

这篇关于[Raspberry Pi]如何利用docker執行motioneye,並利用Line Notify取得即時通知和照片?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122881

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

一文详解Java Condition的await和signal等待通知机制

《一文详解JavaCondition的await和signal等待通知机制》这篇文章主要为大家详细介绍了JavaCondition的await和signal等待通知机制的相关知识,文中的示例代码讲... 目录1. Condition的核心方法2. 使用场景与优势3. 使用流程与规范基本模板生产者-消费者示例

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P