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

 找回密码
 立即注册
查看: 66558|回复: 69

[新奇玩法] 【大方】HA自动化控制大方云台

  [复制链接]

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
发表于 2018-5-25 18:26:31 | 显示全部楼层 |阅读模式
本帖最后由 neroxps 于 2018-7-31 17:55 编辑

1.png

理论上兼容新旧大方设备(新的没有限位传感器),但我没有旧大方测试,而也不知道不同的大方电机是不是步长不一样,希望有设备的同学使用后反馈下谢谢

前言

在囧帅发了破解小米大方摄像头接入HASS 这个帖子,我就第一时间下单买了大方,并且接入 HA。

但发现 DAFANG_HACK 的云台控制有点不合理,另我也希望设置预置点,例如有人打开家里的门后云台立即对准家里的门,触发自动化发送视频流给手机。

所以就开始研究 DAFANG_HACK 的 motor 这个电机命令。

电机归零问题

源码:https://github.com/EliasKotlyar/Xiaomi-Dafang-Software/blob/master/motor/motor.c

这个是基于君正 T20 的电机驱动编写的一个控制程序,可以控制电机的步长和返回电机的步长信息。

[root@DAFANG:~]# cd /system/sdcard/bin/
[root@DAFANG:bin]# ./motor -d u -s 0
y_max: 0
y_min: 0
x_max: 0
x_min: 0
x_steps: 1420
y_steps: 430

max 和 min 其实是大方早期版本会在电路板上安装一个摇摆限位开关,通过 gpio 来获得限位开关状态,当max 或者 min 为 1 的时候,证明电机已经移动到最大或者最小位置。

但很不幸新版的大方已经阉割了这两个限位开关,我观察小米的固件开机的时候会移动到右侧尽头再移动回左侧尽头,右侧尽头的时候明显电机还是会继续移动不会停(大概2秒),可能是小米使用了新的电机驱动,可以反馈电机的电流(我也不太懂)还是电压?能得知目前电机是否已到尽头。

研究多番无果后,我只能修改电机命令,加入了 f 参数,让电机强制左移和下移最大的步数,最后强制归零。

代码见:https://github.com/neroxps/Xiaomi-Dafang-Software/commit/de4e4dfd3303f1f407a7d86a9252306bffadc05c

对于一个不会C语言的小白来说,我也只能做到这样了。

如何使用?

以下操作建立在你已经破解了小米大方的基础上,如果没有破解,请参考破解小米大方摄像头接入HASS 这个帖子。

  1. 下载 New_Dafang.zip
  2. 备份原破解大方 TF 卡内容。
  3. 解压后将 firmware_mod 里面的所有文件复制到 TF 卡根目录中。
  4. 恢复之前备份的 config 内容至 TF 卡中(注意:osd.conf)除外,否则界面没有坐标轴看
  5. 插入 TF 卡到大方开机即可。

配置 homeassistant (以下代码仅供参考,附件中有最新的配置)

input_number:
  dafang_ptz_x:
    name: X
    initial: 0
    min: -1250
    max: 1250
    step: 10
  dafang_ptz_y:
    name: Y
    initial: 0
    min: -400
    max: 400
    step: 10

# http://username:password@DAFANG_IP/cgi-bin/action.cgi?cmd=motor_PTZ&x_axis=1250&y_axis=400
# http://username:password@DAFANG_IP/cgi-bin/action.cgi?cmd=motor_PTZ&x_axis={{ states("input_number.dafang_ptz_x") | int }}&y_axis={{ states("input_number.dafang_ptz_y") | int }}

shell_command:
  set_dafang_ptz: 'wget --output-document=/dev/null "http://root:[email protected]/cgi-bin/action.cgi?cmd=motor_PTZ&x_axis={{ states("input_number.dafang_ptz_x") | int }}&y_axis={{ states("input_number.dafang_ptz_y") | int }}"'
  open_door_set_ptz: 'wget --output-document=/dev/null "http://root:[email protected]/cgi-bin/action.cgi?cmd=motor_PTZ&x_axis=1070&y_axis=400"'

group:
  dafang_ptz:
    name: 大方云台控制
    view: yes
    entities:
      - camera.home_cctv
      - input_number.dafang_ptz_x
      - input_number.dafang_ptz_y

automation:
  - alias: set_dafang_ptz
    trigger:
      - platform: state
        entity_id: input_number.dafang_ptz_x
      - platform: state
        entity_id: input_number.dafang_ptz_y
    action:
      service: shell_command.set_dafang_ptz
  - alias: open_door_set_ptz
    trigger:
      - platform: state
        entity_id: binary_sensor.door_window_sensor_158d0001f9e7ad
        from: 'off'
        to: 'on'
    action:
    - service: shell_command.open_door_set_ptz

其中 root:ismart12 为登陆大方http的账号密码

关于 MQTT 报错问题

这个报错是因为自动发现的脚本云台控制部分是用窗帘组件,这个组件本身限制了行程最大是100,而电机的坐标步数是超过一百,故此不用mqtt自动发现功能就不会报错。
我上传了我的配置文件,可供参考。也可以参考 https://raw.githubusercontent.com/neroxps/home-assistant-config/master/packages/CCTV/dafang.yaml 我的配置文件,这边会是最新的。





dafang.yaml

9.05 KB, 下载次数: 145

评分

参与人数 3金钱 +50 收起 理由
lidicn + 20 我来瀚思就为看你!
windgo + 10 膜拜大神!
+ 20 终于成功了!

查看全部评分

Nero
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
 楼主| 发表于 2018-5-25 23:21:56 | 显示全部楼层
apple4105 发表于 2018-5-25 22:48
楼主厉害。。新旧大方怎么区别啊?

以前大方有这个摇摆开光来做限位功能的,分别由两个 GPIO 来反馈电机 MAX 和 MIN 的状态。

IMG_6969.JPG

现在的大方这两个限位器都没有了。

IMG_6966.JPG
IMG_6967.JPG
Nero
回复

使用道具 举报

62

主题

581

帖子

6041

积分

论坛元老

Rank: 8Rank: 8

积分
6041
金钱
5385
HASS币
240

教程狂人论坛风云人物

发表于 2018-5-25 18:35:20 来自手机 | 显示全部楼层
楼主牛逼啊!
回复

使用道具 举报

30

主题

412

帖子

1997

积分

金牌会员

Rank: 6Rank: 6

积分
1997
金钱
1585
HASS币
0
发表于 2018-5-25 20:41:46 | 显示全部楼层
大神,这个会一直报 Payload is not True, False, or integer (0-100): 874 错误吗?
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
 楼主| 发表于 2018-5-25 21:13:44 | 显示全部楼层
wpl820213 发表于 2018-5-25 20:41
大神,这个会一直报 Payload is not True, False, or integer (0-100): 874 错误吗?

你是说  rtsp还是我的程序?
Nero
回复

使用道具 举报

30

主题

412

帖子

1997

积分

金牌会员

Rank: 6Rank: 6

积分
1997
金钱
1585
HASS币
0
发表于 2018-5-25 21:14:56 | 显示全部楼层
neroxps 发表于 2018-5-25 21:13
你是说  rtsp还是我的程序?

看了囧大的帖,大方接入 HA ,可以运行,但是错误日志一直报这个错误。我等会用你这个试试
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
 楼主| 发表于 2018-5-25 21:18:44 | 显示全部楼层
wpl820213 发表于 2018-5-25 21:14
看了囧大的帖,大方接入 HA ,可以运行,但是错误日志一直报这个错误。我等会用你这个试试 ...

不要设置 1080
rtsp 配置要默认,1080有bug
Nero
回复

使用道具 举报

30

主题

412

帖子

1997

积分

金牌会员

Rank: 6Rank: 6

积分
1997
金钱
1585
HASS币
0
发表于 2018-5-25 21:25:14 | 显示全部楼层
neroxps 发表于 2018-5-25 21:18
不要设置 1080
rtsp 配置要默认,1080有bug

原来是这样,thanks
回复

使用道具 举报

123

主题

4626

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16009
金钱
11298
HASS币
45
发表于 2018-5-25 22:02:09 | 显示全部楼层
楼主越来越牛逼了!
回复

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11135
金钱
8028
HASS币
182
 楼主| 发表于 2018-5-25 22:08:20 | 显示全部楼层
Jones 发表于 2018-5-25 22:02
楼主越来越牛逼了!

有空帮我试试众筹版不是有两个限位开关。如果有测一下我的版本步长是否一样。

PR给老外,老外说有新版驱动,但他没空适配~我这个归零方法也是权宜之计。
Nero
回复

使用道具 举报

6

主题

388

帖子

2043

积分

金牌会员

Rank: 6Rank: 6

积分
2043
金钱
1655
HASS币
0
发表于 2018-5-25 22:48:46 | 显示全部楼层
楼主厉害。。新旧大方怎么区别啊?
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-19 16:03 , Processed in 0.173409 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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