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

 找回密码
 立即注册
查看: 23124|回复: 21

[经验分享] 让你的小方/大方摄像头在HA里不那么卡

[复制链接]

3

主题

51

帖子

805

积分

论坛技术达人

积分
805
金钱
749
HASS币
0
发表于 2019-3-6 14:48:51 | 显示全部楼层 |阅读模式
最近买了个小方摄像头,按照 https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks 以及论坛里的方式破解后,终于可以rtsp了。
于是,按照ffmpeg摄像头的接入方法,加了下面的配置:
- platform: ffmpeg
  name: DaFang3
  input: -rtsp_transport tcp -i rtsp://yourip:8554/unicast

打开HA界面一看,卡到不成人形,平均好几秒才能有一帧画面,根本没法用。
看了下小方的Web管理界面,首页的监控还是比较流畅的,这是怎么实现的呢?打开html源代码,发现一个获取静态图片的网址:
https://yourip/cgi-bin/currentpic.cgi,页面通过每秒刷新实现了相对流畅的画面。
HA里是否也可以用类似的原理,跳过ffmpeg的解码,实现相对流畅的画面呢?研究了下HA的camera组件,发现如下:
camera:
  - platform: generic
    still_image_url: https://yourip/cgi-bin/currentpic.cgi
    name: 小方
    username: root
    password: yourpasswordtocamera
    verify_ssl: false
    framerate: 1

即每秒获取1张图实现连续画面。当然,想更流畅就把framerate加大,不过网络压力和摄像头压力就更大。

PS:小方的rtsp设置建议换成MJPEG,个人感觉对摄像头CPU压力小一些。开h.264平均负载在3左右,开mjpeg则降到2.5。

评分

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

查看全部评分

回复

使用道具 举报

40

主题

2176

帖子

8288

积分

元老级技术达人

积分
8288
金钱
6097
HASS币
110
发表于 2019-3-6 16:01:17 | 显示全部楼层
官方是有这个方式接入的  framerate参数我加到多少 实际也就1秒1帧的样子
回复

使用道具 举报

40

主题

2176

帖子

8288

积分

元老级技术达人

积分
8288
金钱
6097
HASS币
110
发表于 2019-3-6 16:07:44 | 显示全部楼层
本帖最后由 ghostist 于 2019-3-6 16:11 编辑

这个办法gayhub上有说明  实际最多1秒1~2帧吧
回复

使用道具 举报

8

主题

870

帖子

5218

积分

论坛元老

Rank: 8Rank: 8

积分
5218
金钱
4348
HASS币
0
发表于 2019-3-6 17:17:55 | 显示全部楼层
学习学习,谢谢分享
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2019-3-6 17:18:25 | 显示全部楼层
HA界面看是因为你设备h.264取流后,ha又要将h.264转回 MJPEG,然后再从前端显示,当然卡。
Nero
回复

使用道具 举报

40

主题

2176

帖子

8288

积分

元老级技术达人

积分
8288
金钱
6097
HASS币
110
发表于 2019-3-6 18:57:22 | 显示全部楼层
本帖最后由 ghostist 于 2019-3-6 18:59 编辑
neroxps 发表于 2019-3-6 17:18
HA界面看是因为你设备h.264取流后,ha又要将h.264转回 MJPEG,然后再从前端显示,当然卡。 ...

大佬,我在你关于大方的一个帖子下咨询了下,借地再问下:大方的各种传感器(mqtt进来的),如果不用自动发现,用你的配置即可
还有两个cover传感器不知道怎么手动配置,求教

或者怎么获取到这些mqtt节点的配置?原作者好像只说了自动发现...
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2019-3-6 19:38:59 | 显示全部楼层
ghostist 发表于 2019-3-6 18:57
大佬,我在你关于大方的一个帖子下咨询了下,借地再问下:大方的各种传感器(mqtt进来的),如果不用自动 ...

你看他的手机mqtt 脚本啊,他是用mqtt命令来发布的。
Nero
回复

使用道具 举报

1

主题

176

帖子

2266

积分

金牌会员

Rank: 6Rank: 6

积分
2266
金钱
2090
HASS币
0
发表于 2019-3-7 08:15:24 | 显示全部楼层
这个破解固件能直接输出http的mjpeg就好了
回复

使用道具 举报

40

主题

2176

帖子

8288

积分

元老级技术达人

积分
8288
金钱
6097
HASS币
110
发表于 2019-3-7 10:39:59 | 显示全部楼层
neroxps 发表于 2019-3-6 19:38
你看他的手机mqtt 脚本啊,他是用mqtt命令来发布的。

在\scripts\mqtt-autodiscovery.sh下找到这个

# Motor up/down/left/right

/system/sdcard/bin/mosquitto_pub.bin -h "$HOST" -p "$PORT" -u "$USER" -P "$PASS" -t "$AUTODISCOVERY_PREFIX/cover/$DEVICE_NAME/motor_up_down/config" ${MOSQUITTOPUBOPTS} ${MOSQUITTOOPTS} -r -m "{"name": "$DEVICE_NAME move up/down", "unique_id": "$MAC_SIMPLE-move-up-down", "device": {"identifiers": "$MAC_SIMPLE", "connections": [["mac", "$MAC"]], "manufacturer": "$MANUFACTURER", "model": "$MODEL", "name": "$MANUFACTURER $MODEL", "sw_version": "$VER"}, "set_position_topic": "$TOPIC/motors/vertical/set", "position_topic": "$TOPIC/motors/vertical", "command_topic": "$TOPIC/motors/vertical/set", "payload_close": "down", "payload_open": "up", "optimistic": "false", "value_template": "{{ ((value|int)/($MAX_Y/$STEP))|round }}", "set_position_template": "{{ ((position|int)*($MAX_Y/$STEP))|round }}"}"

/system/sdcard/bin/mosquitto_pub.bin -h "$HOST" -p "$PORT" -u "$USER" -P "$PASS" -t "$AUTODISCOVERY_PREFIX/cover/$DEVICE_NAME/motor_left_right/config" ${MOSQUITTOPUBOPTS} ${MOSQUITTOOPTS} -r -m "{"name": "$DEVICE_NAME move left/right", "unique_id": "$MAC_SIMPLE-move-left-right", "device": {"identifiers": "$MAC_SIMPLE", "connections": [["mac", "$MAC"]], "manufacturer": "$MANUFACTURER", "model": "$MODEL", "name": "$MANUFACTURER $MODEL", "sw_version": "$VER"}, "set_position_topic": "$TOPIC/motors/horizontal/set", "position_topic": "$TOPIC/motors/horizontal", "command_topic": "$TOPIC/motors/horizontal/set", "payload_close": "right", "payload_open": "left", "optimistic": "false", "value_template": "{{ ((value|int)/($MAX_X/$STEP))|round }}", "set_position_template": "{{ ((position|int)*($MAX_X/$STEP))|round }}"}"



结合google 到的资料,配置如下:
cover:
  - platform: mqtt
    name: "dafang move up/down"
    set_position_topic: "myhome/dafang/motors/vertical/set"
    position_topic: "myhome/dafang/motors/vertical"
#    state_topic: "myhome/dafang/motors/vertical"
    command_topic: "myhome/dafang/motors/vertical/set"
#    qos: 1
    payload_close: "down"
    payload_open: "up"
#    state_open: "up_endstop"
#    state_close: "down_endstop"
    optimistic: false
    value_template: "{{ ((value|int)/7.3)|round }}"
    set_position_template: "{{ ((value|int)/7.3)|round }}"

  - platform: mqtt
    name: "dafang move left/right"
    set_position_topic: "myhome/dafang/motors//horizontal/set"
    position_topic: "myhome/dafang/motors//horizontal"
#    state_topic: "myhome/dafang/motors/horizontal"
    command_topic: "myhome/dafang/motors/horizontal/set"
#    qos: 1
    payload_close: "right"
    payload_open: "left"
#    state_open: "left_endstop"
#    state_close: "right_endstop"
    optimistic: false
    value_template: "{{ ((value|int)/27)|round }}"
    set_position_template: "{{ ((position|int)/27)|round }}"


其中的value_template和set_position_template下的参数是google到的(貌似记得是启动日志里的)
然后关闭自动发现,重启HA,水平不能控,垂直能控但是有问题...

回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2019-3-7 11:00:19 | 显示全部楼层
ghostist 发表于 2019-3-7 10:39
在\scripts\mqtt-autodiscovery.sh下找到这个


哦 你要控制电机???

/cgi-bin/action.cgi?cmd=motor_PTZ'&x_axis=100&y_axis=400


直接get 这个连接就好了。
Nero
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 02:54 , Processed in 0.060119 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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