『瀚思彼岸』» 智能家居技术论坛
标题: 基于摄像头的中控面板人来亮屏人走灭屏方案 [打印本页]
作者: hzw1199 时间: 2023-11-7 15:01
标题: 基于摄像头的中控面板人来亮屏人走灭屏方案
本帖最后由 hzw1199 于 2023-11-8 17:33 编辑
硬件这两天花一百多,捡垃圾淘了一块带刷脸支付的安卓13寸单屏机,因为带摄像头,又不带电池,准备拿来当智能家居中控屏。配置还行,rk3399,4G RAM。
屏幕上方有四个摄像头样子的传感器,本身估计是带传感器能识别人靠近的,但是刷机之后,驱动不了,唯一能驱动的是那个1080p的主摄像头。所以很自然的想到使用这一枚摄像头来做人来亮屏。
需求作为智能家居中控屏,人来亮屏,人走息屏是必备功能。同时在捡垃圾群里看到有人收到的同款屏幕有严重烧屏痕迹,所以不做息屏的话,也担心烧屏。
具体需求是人出现在摄像头画面中,并不要马上亮屏,而是需要人足够靠近屏幕时,再亮屏。等人离开屏幕足够远后再息屏。
思路安卓屏上的摄像头推RTSP流,工控机中的Frigate拉流,并对流做Person识别。在HomeAssistant中添加Frigate插件,并对该摄像头创建自动化,在person count从0变为任意值时,触发发送MQTT的topic。安卓屏上再安装MQTT Client APP,订阅该topic。安卓屏上再安装Tasker,与MQTT Client联动,在收到该topic时,触发点亮屏幕的动作。人走息屏同理,只是把触发条件,改为person count从任意值变为0,把Tasker中的触发动作变为熄灭屏幕。
注意点- 安卓屏上摄像头推流,推荐使用IP Webcam这个APP。下载地址为 https://play.google.com/store/apps/details?id=com.pas.webcam ,免费版也够用了,可以将摄像头的流以RTSP推出去,而且同时具备RTSP server的功能,意味着不需要再在工控机中额外搭建一个simple-rtsp-server这样的服务,可以直接获取到RTSP地址,填入Frigate中。
- 安卓屏的摄像头推荐在上述APP中设置推流分辨率为最低(我配置的是320*240),作为TensorFlow Lite的person识别够用了,并且低分辨率能降低Frigate的CPU占用。但是如果你想将这个摄像头同时作为Frigate中的监控摄像头来用的话,倒是可以考虑将分辨率调高。
- 由于中控屏挂在客厅中,所以只要人在客厅活动,大概率就是能识别出person的,但是我们的目标是人足够靠近屏幕时才点亮屏幕。做法是在Frigate中,控制min_score和min_area,使得确定是人,并且人的方框面积足够大时,才触发事件。min_area可以在Frigate中的debug模式下,点击show options,再打开Bounding box,然后人走到你认为可以亮屏的位置,看画面中你身上的方框上显示的面积是多大,取一个整作为min_area就可以。注意当摄像头的分辨率变化的时候,这个值需要重新取。
- 需要提前在工控机中安装HomeAssistant。
- 需要提前在工控机中安装Frigate作为NVR,并在HomeAssistant中添加了Frigate插件。
- 需要提前在工控机中安装mosquitto作为MQTT broker,并在HomeAssistant中添加了MQTT插件。
- 安卓屏上的MQTT Client APP使用 https://play.google.com/store/apps/details?id=in.dc297.mqttclpro ,可以直接跟Tasker联动,生成Tasker中的配置。
- 对于像我这样,碰到安卓屏的ROM把锁屏息屏功能给删了,导致通过adb发送power按键事件、通过Tasker息屏锁屏,都无动于衷的情况,可以下载 https://play.google.com/store/ap ... narybox.blackscreen 这个APP,在Tasker触发亮屏的时候,将屏幕亮度改为255,并跳转到HomeAssistant面板,在Tasker触发息屏的时候,将屏幕亮度改为0,并跳转到该APP,模拟息屏效果。
实操环节
IP Webcam
分辨率取最低,降低Frigate的物体识别功耗。由于我的摄像头方向不对,所以同时设置了竖屏上下颠倒。
将音频禁用,接着开启服务器,就可以看到摄像头画面了。
接着电脑打开http://安卓的ip:8080,可以进入web控制台,能看到RTSP地址:
FrigateFrigate中该摄像头的配置(在cameras节点下)如下,创建了一个名为panelcamera的摄像头,path设置为上述安卓摄像头的推流地址。重点是打开detect功能,设置只识别person,并配置min_score和min_area减少误操作。
- panelcamera:
- ffmpeg:
- inputs:
- # 摄像头地址
- - path: rtsp://192.168.66.223:8080/h264.sdp
- roles:
- - detect
- detect:
- # 开启检测
- enabled: True
- width: 320
- height: 240
- fps: 10
- # 不检测的区域,可降低计算负载,可以先不设置,在Frigate的debug模式下获取后再复制过来
- # motion:
- # mask:
- # - 1198,134,1243,299,1552,289,1530,0,0,0,0,145
- # - 482,1440,457,408,0,416,0,1440
- # 区域,可降低计算负载,可以先不设置,在Frigate的debug模式下获取后再复制过来
- # zones:
- # zone_0:
- # coordinates: 766,1440,1103,591,1241,442,1616,535,1697,193,1802,1440
- objects:
- track:
- - person
- # 定制过滤器减少误报
- filters:
- person:
- # 检测到的对象的边框的最小面积,宽度*高度(默认:0)
- min_area: 20000
- # 检测到的对象的边框的最大面积,宽度*高度 (默认: 24000000)
- #max_area: 100000
- # 启动跟踪的对象的最低分数 (默认: 0.5)
- min_score: 0.7
复制代码
这样当人出现在摄像头画面中,置信度大于0.7且方框面积大于20000时,就会触发Frigate的event。
Frigate的HomeAssistant插件在HomeAssistant中Frigate插件中的摄像头设备中创建人来亮屏自动化:
- alias: panel人来亮屏
- description: ""
- trigger:
- - platform: state
- entity_id:
- - sensor.panelcamera_person_count
- from: "0"
- to: null
- condition: []
- action:
- - service: mqtt.publish
- data:
- qos: 0
- retain: false
- topic: mqtt_panel_screen_on
- mode: single
复制代码
对应的UI操作是:
再创建人走灭屏自动化:
- alias: panel人走灭屏
- description: ""
- trigger:
- - platform: state
- entity_id:
- - sensor.panelcamera_person_count
- from: null
- to: "0"
- condition: []
- action:
- - service: mqtt.publish
- data:
- qos: 0
- retain: false
- topic: mqtt_panel_screen_off
- mode: single
复制代码
对应的UI操作是:
含义是当panelcamera摄像头检测到的person的数量从0变为其他任意数时,通过MQTT发送mqtt_panel_screen_on这个topic,当panelcamera摄像头检测到的person的数量从任意数变为0时,通过MQTT发送mqtt_panel_screen_off这个topic。
MQTT Client安卓屏上安装MQTT Client这个APP,先添加broker,连接的是工控机中启动的MQTT broker
再绑定亮屏和灭屏这两个MQTT Topic
TaskerTasker可以接收MQTT Client传递过来的事件,来触发安卓屏幕的开关。
先在“配置文件”tab页,点击右下角的加好,选择创建
选择事件-插件-MQTT Client-Message Arrived
点配置右边那根笔
此时会跳入MQTT Client的界面,
Broker默认选择之前创建的那个,Topic选择之前绑定的亮屏事件mqtt_panel_screen_on,varmessage和varmqtttopic随便输入,例如aaa,点左上角返回按钮回到Tasker,为该配置文件创建亮屏任务。由于我这块安卓屏无法锁屏和灭屏,所以我使用Black Screen APP来模拟灭屏。所以亮屏的时候将屏幕亮度调整为255,并跳转到浏览器显示HomeAssistant界面。
同理,在Tasker的配置文件中再创建一个灭屏用的配置文件,绑定MQTT Client中的灭屏事件mqtt_panel_screen_off,创建的灭屏任务,就是灭屏时将屏幕亮度调整为0,并跳转到Black Screen APP来模拟灭屏。
最终Tasker中的配置文件和任务如下:
作者: slwl 时间: 2023-11-7 15:59
还有这种垃圾屏幕捡吗
作者: hzw1199 时间: 2023-11-7 16:26
我看还能找到,小黄鱼搜rk3399 4+x
作者: bugensui 时间: 2023-11-7 16:43
这种摄像头长时间24小时运行,平板会不会很烫?我是买了人体传感器来识别的,。
作者: jey0722 时间: 2023-11-7 16:55
高级,我是老ipad通过摄像头出发ssh命令实现的
作者: hzw1199 时间: 2023-11-7 16:59
平板背部金属部分还挺烫
作者: hzw1199 时间: 2023-11-7 17:01
是iPad自带摄像头吗?物体识别是在iPad上做的吗?
作者: xiejianwsx 时间: 2023-11-7 20:09
技术贴必须顶
作者: jole 时间: 2023-11-7 20:48
识别速度怎么样??
作者: jey0722 时间: 2023-11-8 07:56
不是,我ipad放在入户位置,客厅有个摄像头能照到
作者: a_dongde 时间: 2023-11-8 09:52
大佬,膜拜下!
感觉能把屏幕上的距离传感器调用起来,就不用你摄像头24小时工作了,直接距离传感器触发亮屏。
作者: hzw1199 时间: 2023-11-8 10:03
由于有置信度和方框面积阈值在,所以什么时候算是满足条件,比较主观,所以不好量化。主观感觉是一秒内的延迟吧,我觉得延迟主要来自物体识别的帧率比较低。
作者: xiaobao 时间: 2023-11-8 11:32
牛呢,可以用这种办法让屏幕有人回来自动播报,
作者: hzw1199 时间: 2023-11-8 12:19
哈哈这是最完美的方案,就是没资料,不知道怎么调用
作者: hzw1199 时间: 2023-11-8 12:20
对,做物体识别后,能做的事情就很多了
作者: home_assistant 时间: 2023-11-9 15:46
本帖最后由 home_assistant 于 2023-11-9 16:04 编辑
1、买个人体传感器,接到power key上,有人来就拉低一下power key。2、或者打开ADB功能,通过WIFI ADB,人体传感器->有人->ADB Command->亮屏
作者: hzw1199 时间: 2023-11-9 19:52
安卓屏的ROM彻底移除了灭屏锁屏,试过用adb灭屏或者用adb发送power按键,都无效
作者: yhwl8888 时间: 2023-11-9 20:36
199+摄像头50 249元有点忐忑 这个买回来还要刷机么 看系统7.12
作者: hzw1199 时间: 2023-11-9 21:48
为啥我才170
我当时那个需要刷机,自带的系统好像是不让装APP的
作者: home_assistant 时间: 2023-11-10 09:01
Android系统,如果是带电池的,一般连接适配器下不会进入深度休眠,不带电池的项目可能会做深度休眠,深度休眠后可能就无法唤醒。一般的方法就是加锁(wake_lock),不知道你是否有adb的root权限,一般路径echo wake_lock > /sys/power/wake_lock
作者: hzw1199 时间: 2023-11-10 09:57
进入休眠的前提是屏幕关掉,现在这个安卓机器,不管是用adb直接灭屏还是用adb发送power按键事件,都没有反应
作者: home_assistant 时间: 2023-11-10 10:10
adb灭屏是怎么操作的?有没有可能你灭屏后机器进入休眠了?
1.先将机器设置为永不休眠。
2.再进行adb command灭屏。
如果有root权限也可尝试(adb shell echo 0 > /sys/class/leds/lcd-backlight/brightness)只关背光。
作者: hzw1199 时间: 2023-11-10 18:13
额我觉得我们理解有误,我指的是我无论用什么方法,都无法让机器灭屏或者锁屏,包括用adb发送power key、用Tasker的灭屏或者锁屏动作
作者: allenjwb 时间: 2023-11-13 21:35
我用Fully 里面可以直接设置接近亮屏
作者: lishaowen 时间: 2023-11-14 02:09
厉害厉害,
作者: yybl 时间: 2023-11-14 09:54
小白问题:
系统再拿下的?通用系统吗?我收上有一个门禁专用的平板,芯片是联发科的。不知道能不能刷成普通的安卓。 百度搜索不知道用怎么关键词。
作者: xiangboshi 时间: 2023-11-14 09:56
只是想知道有没有ipad air的方案
作者: hzw1199 时间: 2023-11-14 11:22
看到有人反馈Fully做接近亮屏,久了之后会卡顿或者失去响应,不知道是不是真的。
作者: hzw1199 时间: 2023-11-14 11:24
系统不是通用的,我是卖家组的群里下载的。同一个芯片方案的不同机器,因为分辨率或者其他模块不同,系统一般都不通用,所以需要比较精准的去找你那款设备能用的系统
作者: demacia 时间: 2023-11-17 16:53
我原来有个监控也是安卓的软件做IP camera的,但是手机发热,经常被杀应用。后面放弃花钱买了家用摄像头。
作者: bd0831 时间: 2023-11-20 21:37
来学习学习,,看看还有的捡吗
作者: hasssc 时间: 2023-11-28 08:54
学习了,大神厉害
作者: [email protected] 时间: 2023-12-3 09:30
给力 点赞
欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) |
Powered by Discuz! X3.5 |