『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 35930|回复: 6

[基础教程] 树莓派安装motion和motioneye,对接ha

[复制链接]

11

主题

53

帖子

325

积分

论坛分享达人

积分
325
金钱
262
HASS币
70
发表于 2020-7-9 23:05:06 | 显示全部楼层 |阅读模式
本帖最后由 zhanghy 于 2020-7-11 22:33 编辑

树莓派安装motion和motioneye,对接ha

我昨天刚拿到摄像头,今天装motioneye的时候,从b站看了个motioneye的安装教程,视频唯一没有讲的就是安装motion后台的过程,导致了好几个人在下面问他们的motioneye启动之后没有local remote的选项.
我看了一下,可能是那个全自动脚本出问题了,没法安装motion.也可能是up主忘讲了.
总之,现在网上的教程都是不完整的,这篇文章没有什么技术含量,只是给大家排了下坑.
PS:昨天写的systemd居然上榜了,受宠若惊,今天再记一篇.暂时还有点问题,正在解决中,解决后会更新文档,重启以后motion找不到设备

硬件准备

  1. 一个淘宝14块钱的号称官方的摄像头,也可以是一个普通的usb摄像头,我只测了14排线的摄像头
  2. 需要一个树莓派

注意事项

  1. 一定要先修改好树莓派的显存,我分配了256M,可以改到512,3的话就256吧
  2. 安装排线摄像头,一定不要开机装,据说会烧排线摄像头3. 设备载入问题,不管是外接设备还是官方组件,开机自启动顺序和相机设备载入顺序不一致,会导致motion第二次开机灰屏,这个问题网上答复很少,查找这个答案费了2个多小时,因此需要在启动motion服务的时候强制加载设备,具体操作见下文开机自启动

前置动作

  1. 安装摄像头,使用
  2. 开启树莓派的摄像头功能
  3. 测试摄像头行不行,下面是行的样子(排线摄像头)
    pi@raspberrypi:~ $ vcgencmd get_camera
    supported=1 detected=1

安装命令

bash <(curl https://sumju.net/motioneye.sh)
sudo apt-get install ffmpeg v4l-utils (脚本里有安装,保险起见再来一次)
sudo apt-get install libmariadbclient18 libpq5 (脚本里有安装,保险起见再来一次)
sudo apt-get install python-pip python-dev libssl-dev (脚本里有安装,保险起见再来一次)
sudo apt-get install motion

参数配置

sudo nano /etc/default/motion
#no修改成yes:
start_motion_daemon=yes

sudo nano /etc/motion/motion.conf
daemon off 改成 on
stream_localhost on 改成 off ,其它电脑就可以访问摄像头了
sudo service motion start
sudo motion

配置登录

  1. 打开浏览器,输入树莓派的ip地址 -》 http://localhost:8765,用admin登录,不需要密码,
  2. 登录成功后,进入界面点击添加摄像头
  3. 添加成功后左侧会有一个调整摄像头参数的界面,具体看下面的截图

自启动服务情况

  1. motion的自动化脚本需要自己书写
  2. 之前试了rc.local,systemd的各种启动方式,都不能实现自启动,最后用了及其脑残又暴力的方法解决了,就是在rc.local文件的exit 0前面加一个motion就可以了
motion
exit 0

motioneye的自启动脚本已经生成了,但是需要修改,让其在motion启动之后再启动3. 设置motion自启动脚本加载设备,参考,永久加载设备的脚本不管用,用另一种

所有sudo service motion start 这种 service ... start的一般来说在/etc/init.d/下面是有一个启动脚本的,修改这里,具体命令看下面的图片

具体书写方式和demo请跳转到我写的system自动化中,跳转链接

配置自动抓拍脚本,比如上传云盘什么的

修改/etc/motion/motion.conf,可以看看这篇,然后书写upload.sh,脚本我这没有合适的,自己实现

#下面这个是指定照片保存的文件夹:
target_dir /root/camimg
quiet on
#下面这句是说一旦有照片被拍下来,则执行/root/upload.sh命令,
#其中%f参数会自动转化为当前图片文件的路径,传给upload.sh:
on_picture_save /root/upload.sh %f

对接homeassistant

在configuation.yaml里面添加:

# 还没有测试
camera:
  - platform: generic
    name: 摄像头  
    still_image_url: http://127.0.0.1:8765/picture/1/current/
    stream_source: http://127.0.0.1:8081

binary_sensor:
  - platform: ffmpeg_motion
    input: http://127.0.0.1:8081
    #changes: 3 //这个参数调整移动侦测灵敏度,值越小越灵敏。
    name: 移动侦测

对接homekit

见文献一

后话

  1. 这个motioneye应该是可以添加很多个摄像头的,具体效果我想象不到,有条件可以试试
  2. 描述不清楚的地方,就看下面三篇文献,靠谱
  3. 我还没到对接,明天会更新文档
  4. motion是不是开机自启动还没有试,如果没有自启动,后期会加上systemd脚本,昨天刚刚写了一篇systemd的基础教程,可以参考
  5. 这个motion很吃性能,据说树莓派3b要占60%的系统资源,我的机器是2g版本的树莓派4b,之前装了mysql,ha,网易云音乐的node版本,emby服务器,samba服务器,还有一个docker程序,docker里面只有一个frp代理的客户端,自动重连wifi,pwm风扇脚本等等 这些只用了400M内存,cpu大概稳定低于4%装了motion之后,温度从35度到了41度,然后cpu涨了大概15%,慎重安装...(后来我发现如果开着观看网页的话,也不怎么吃性能,温度温度在37度)

参考文献

https://sumju.net/?p=836,up主的文章,自动脚本有点过时了,不过还能用,后面还有对接ha的教程
https://blog.csdn.net/qq_39500821/article/details/80647600,这篇很古老,安装motion取了这
https://shumeipai.nxez.com/2016/09/01/raspberry-pi-motion-cameras-for-remote-monitoring.html,这篇的配置参数挺全,但是我们不需要,因为我们可以通过前端配置

下面是安装的shell执行过程:

安装过程:
pi@raspberrypi:~ $ bash &lt;(curl https://sumju.net/motioneye.sh)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   781  100   781    0     0    182      0  0:00:04  0:00:04 --:--:--   182
获取:1 http://mirror.tuna.tsinghua.edu.cn/raspberrypi stretch InRelease [25.4 kB]
获取:2 https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian stretch InRelease [15.0 kB]
命中:3 http://raspbian.raspberrypi.org/raspbian buster InRelease
命中:4 https://download.docker.com/linux/raspbian buster InRelease
命中:5 https://deb.nodesource.com/node_9.x buster InRelease
命中:6 http://archive.raspberrypi.org/debian buster InRelease
已下载 40.3 kB,耗时 3秒 (12.7 kB/s)
正在读取软件包列表... 完成
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
注意,选中 'python-pil' 而非 'python-pillow'
python-pil 已经是最新版 (5.4.1-2+deb10u1)。
python-pycurl 已经是最新版 (7.43.0.2-0.1)。
ffmpeg 已经是最新版 (7:4.1.6-1~deb10u1+rpt1)。
python-pip 已经是最新版 (18.1-5+rpt1)。
下列软件包是自动安装的并且现在不需要了:
  gyp libjs-inherits libjs-is-typedarray libnode-dev libnode64 libuv1 libuv1-dev nodejs-doc rpi-eeprom-images
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 10 个软件包未被升级。
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
E: 无法定位软件包 moiton
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
注意,选中 'zlib1g-dev' 而非 'libz-dev'
注意,选中 'python-pil' 而非 'python-pillow'
注意,选中 'python-pil' 而非 'python-pillow'
libcurl4-openssl-dev 已经是最新版 (7.64.0-4+deb10u1)。
libjpeg-dev 已经是最新版 (1:1.5.2-2)。
libpq5 已经是最新版 (11.7-0+deb10u1)。
python-dev 已经是最新版 (2.7.16-1)。
python-pil 已经是最新版 (5.4.1-2+deb10u1)。
python-pycurl 已经是最新版 (7.43.0.2-0.1)。
v4l-utils 已经是最新版 (1.16.3-3)。
zlib1g-dev 已经是最新版 (1:1.2.11.dfsg-1)。
libmariadbclient18 已经是最新版 (10.1.44-0+deb9u1)。
ffmpeg 已经是最新版 (7:4.1.6-1~deb10u1+rpt1)。
libssl-dev 已经是最新版 (1.1.1d-0+deb10u3+rpt1)。
python-pip 已经是最新版 (18.1-5+rpt1)。
下列软件包是自动安装的并且现在不需要了:
  gyp libjs-inherits libjs-is-typedarray libnode-dev libnode64 libuv1 libuv1-dev nodejs-doc rpi-eeprom-images
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 10 个软件包未被升级。
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: setuptools in /usr/lib/python2.7/dist-packages (40.8.0)
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: motioneye in /usr/local/lib/python2.7/dist-packages (0.42.1)
Requirement already satisfied: tornado&lt;6,&gt;=3.1 in /usr/local/lib/python2.7/dist-packages (from motioneye) (5.1.1)
Requirement already satisfied: pillow in /usr/lib/python2.7/dist-packages (from motioneye) (5.4.1)
Requirement already satisfied: jinja2 in /usr/lib/python2.7/dist-packages (from motioneye) (2.10)
Requirement already satisfied: pycurl in /usr/lib/python2.7/dist-packages (from motioneye) (7.43.0.2)
Requirement already satisfied: backports-abc&gt;=0.4 in /usr/local/lib/python2.7/dist-packages (from tornado&lt;6,&gt;=3.1-&gt;motioneye) (0.5)
Requirement already satisfied: singledispatch in /usr/local/lib/python2.7/dist-packages (from tornado&lt;6,&gt;=3.1-&gt;motioneye) (3.4.0.3)
Requirement already satisfied: futures in /usr/local/lib/python2.7/dist-packages (from tornado&lt;6,&gt;=3.1-&gt;motioneye) (3.3.0)
Requirement already satisfied: six in /usr/lib/python2.7/dist-packages (from singledispatch-&gt;tornado&lt;6,&gt;=3.1-&gt;motioneye) (1.12.0)
pi@raspberrypi:~ $ apt-get install ffmpeg v4l-utils
E: 无法打开锁文件 /var/lib/dpkg/lock-frontend - open (13: 权限不够)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),请查看您是否正以 root 用户运行?
pi@raspberrypi:~ $ sudo apt-get install ffmpeg v4l-utils
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
v4l-utils 已经是最新版 (1.16.3-3)。
ffmpeg 已经是最新版 (7:4.1.6-1~deb10u1+rpt1)。
下列软件包是自动安装的并且现在不需要了:
  gyp libjs-inherits libjs-is-typedarray libnode-dev libnode64 libuv1 libuv1-dev nodejs-doc rpi-eeprom-images
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 10 个软件包未被升级。
pi@raspberrypi:~ $ sudo apt-get install libmariadbclient18 libpq5
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
libpq5 已经是最新版 (11.7-0+deb10u1)。
libmariadbclient18 已经是最新版 (10.1.44-0+deb9u1)。
下列软件包是自动安装的并且现在不需要了:
  gyp libjs-inherits libjs-is-typedarray libnode-dev libnode64 libuv1 libuv1-dev nodejs-doc rpi-eeprom-images
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 10 个软件包未被升级。
pi@raspberrypi:~ $ sudo apt-get install python-pip python-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libz-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
注意,选中 'zlib1g-dev' 而非 'libz-dev'
libcurl4-openssl-dev 已经是最新版 (7.64.0-4+deb10u1)。
libjpeg-dev 已经是最新版 (1:1.5.2-2)。
python-dev 已经是最新版 (2.7.16-1)。
zlib1g-dev 已经是最新版 (1:1.2.11.dfsg-1)。
libssl-dev 已经是最新版 (1.1.1d-0+deb10u3+rpt1)。
python-pip 已经是最新版 (18.1-5+rpt1)。
下列软件包是自动安装的并且现在不需要了:
  gyp libjs-inherits libjs-is-typedarray libnode-dev libnode64 libuv1 libuv1-dev nodejs-doc rpi-eeprom-images
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 10 个软件包未被升级。
pi@raspberrypi:~ $ sudo apt-get install motion
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
  gyp libjs-inherits libjs-is-typedarray libnode-dev libnode64 libuv1 libuv1-dev nodejs-doc rpi-eeprom-images
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  libmariadb3
建议安装:
  default-mysql-client postgresql-client
下列软件包将被【卸载】:
  libmariadbclient18
下列【新】软件包将被安装:
  libmariadb3 motion
升级了 0 个软件包,新安装了 2 个软件包,要卸载 1 个软件包,有 10 个软件包未被升级。
需要下载 433 kB 的归档。
解压缩后将会空出 2,881 kB 的空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.neusoft.edu.cn/raspbian/raspbian buster/main armhf libmariadb3 armhf 1:10.3.22-0+deb10u1 [158 kB]
获取:2 http://mirrors.neusoft.edu.cn/raspbian/raspbian buster/main armhf motion armhf 4.1.1-1.1+b2 [274 kB]
已下载 433 kB,耗时 7秒 (60.7 kB/s)
正在预设定软件包 ...
(正在读取数据库 ... 系统当前共安装有 163588 个文件和目录。)
正在卸载 libmariadbclient18:armhf (10.1.44-0+deb9u1) ...
正在选中未选择的软件包 libmariadb3:armhf。
(正在读取数据库 ... 系统当前共安装有 163576 个文件和目录。)
准备解压 .../libmariadb3_1%3a10.3.22-0+deb10u1_armhf.deb  ...
正在解压 libmariadb3:armhf (1:10.3.22-0+deb10u1) ...
正在选中未选择的软件包 motion。
准备解压 .../motion_4.1.1-1.1+b2_armhf.deb  ...
正在解压 motion (4.1.1-1.1+b2) ...
正在设置 libmariadb3:armhf (1:10.3.22-0+deb10u1) ...
正在设置 motion (4.1.1-1.1+b2) ...
正在添加组"motion" (GID 120)...
完成。
警告:您指定的主目录 /var/lib/motion 已存在。
正在添加系统用户"motion" (UID 113)...
正在将新用户"motion" (UID 113)添加到组"motion"...
主目录"/var/lib/motion"已经存在。没有从"/etc/skel"复制文件。
adduser:警告:主目录 /var/lib/motion 不属于您当前创建的用户。
正在添加用户"motion"到"video"组...
正在将用户“motion”加入到“video”组中
完成。
正在处理用于 systemd (241-7~deb10u4+rpi1) 的触发器 ...
正在处理用于 man-db (2.8.5-2) 的触发器 ...
正在处理用于 libc-bin (2.28-10+rpi1) 的触发器 ...
pi@raspberrypi:~ $ sudo nano /etc/default/motion
pi@raspberrypi:~ $ sudo nano /etc/default/motion
pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf
pi@raspberrypi:~ $ sudo service motion start
pi@raspberrypi:~ $ sudo motion
[845448:motion] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
[845448:motion] [NTC] [ALL] motion_startup: Motion 4.1.1 Started
[845448:motion] [NTC] [ALL] create_path: creating directory /var/log/motion
[845448:motion] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion/motion.log)
pi@raspberrypi:~ $

















成果图

成果图

cpu状态图

cpu状态图

安装图

安装图

评分

参与人数 1金钱 +20 HASS币 +20 收起 理由
+ 20 + 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

11

主题

53

帖子

325

积分

论坛分享达人

积分
325
金钱
262
HASS币
70
 楼主| 发表于 2020-7-9 23:23:07 | 显示全部楼层
好吧,关了html页面cpu就回来了,性能又回来了,不查看的时候也没有占性能,哈哈哈
回复

使用道具 举报

75

主题

1976

帖子

8183

积分

元老级技术达人

积分
8183
金钱
6157
HASS币
430

活跃会员教程狂人

发表于 2020-7-11 00:18:58 | 显示全部楼层
本帖最后由 咸味土豆 于 2020-7-11 00:20 编辑

论坛的markdown需要切换纯文本,然后文章前加  [md],  结尾加   

  [/md]
所有过往,皆为序章。
回复

使用道具 举报

11

主题

53

帖子

325

积分

论坛分享达人

积分
325
金钱
262
HASS币
70
 楼主| 发表于 2020-7-11 07:51:46 | 显示全部楼层
咸味土豆 发表于 2020-7-11 00:18

论坛的markdown需要切换纯文本,然后文章前加  [md],  结尾加   

  [/md] ...

懂了,我这篇还没有完全写完,自启动需要补充,顺便改一改
回复

使用道具 举报

3

主题

36

帖子

216

积分

中级会员

Rank: 3Rank: 3

积分
216
金钱
180
HASS币
0
发表于 2021-3-10 10:14:19 | 显示全部楼层
请问一下延迟太高怎么设置啊?
回复

使用道具 举报

11

主题

53

帖子

325

积分

论坛分享达人

积分
325
金钱
262
HASS币
70
 楼主| 发表于 2021-5-1 18:36:24 | 显示全部楼层
chunchu 发表于 2021-3-10 10:14
请问一下延迟太高怎么设置啊?

你试试给树莓派更大的gpu内存,或者降低一下画质。。。
回复

使用道具 举报

0

主题

5

帖子

66

积分

注册会员

Rank: 2

积分
66
金钱
61
HASS币
0
发表于 2021-6-27 08:50:07 | 显示全部楼层
zhanghy 发表于 2021-5-1 18:36
你试试给树莓派更大的gpu内存,或者降低一下画质。。。

原来的自动脚本中在安装motion时将motion 错拼成了moiton导致无法安装,改正过来一切顺利。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 06:26 , Processed in 0.077342 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表