本帖最后由 brigcn 于 2022-10-1 22:10 编辑
本人入坑不久,仍是小白一枚,目前仍然在孜孜不倦的汲取各位大神的营养,每次查阅完大量资料,在自己的设备上验证成功后都喜不自禁想要记录这一点点的进步,也分享给和我一样的小白们,或许能少走一些弯路。
本文的主要内容是:使用ONVIF Device Test Tool工具找到控制云台的方法,然后在HA中用命令行控制云台。
测试环境:x86_64 1037U小主机,4G,Linux debian 5.10.0-18-amd64,Home Assistant 2022.9.7, Supervisor 2022.09.1
使用的工具: ONVIF Device Test Tool,网上很多,请自行baidu下载。
主要参考资料:ONVIF Device Test Tool测试工具使用方法(详细)
主要使用的命令及参数:Linux curl 参数 -X 请求方法包括(PUT POST GET)-T 上传文件 强大的curl的参数很多,还有很多用法,感兴趣的可以自行查阅
手里有一个客户扔下不要的摄像头,什么资料都没有。端口扫描后发现有WEB后台但没有管理界面。没办法只好下载了他们的APP,好歹把WIFI连上了,但他们自家的APP控制不了自家摄像头的云台。。。可能是设备放太久,所有支持都没有了,这才有了用HA控制云台的想法。
具体的摸索过程就不描述,最主要的核心内容是ONVIF Device Test Tool的使用,请大家点击上面的链接阅读。我的摄像头很简单,功能单一,把自己的设置过程罗列如下:
本机与摄像头在同一网段,有线无线均可。打开ONVIF Device Test Tool,默认界面在Discovery项。
完成Discovery的检测后,我们切换到Debug,在下面的Media和PTZ选项卡进行测试,具体信息大家可以去查看原文。我的摄像头不支持,在此就略过了。
直接来到Requests项,打开PTZ:
下面是重点,在PTZ里有大量的XML文件用于控制云台,但究竟哪个对你的摄像头有作用,就要挨个进行测试:
测试方法在图里,测试成功的标准有两个:
第一、Response窗口,如果显示HTTP/1.1 200 OK,说明云台对你的发送有响应,如果是HTTP/1.1 400 Bad Request,说明此发送云台并不支持!
第二、云台有动作。
当选择到上图的XML文件时,我的云台有了反应,在Request窗口,可以直接修改其内容,我发现x是云台横向转动,y是纵向转动,最小值是1,反向动作使用负值,如x="-1"。
复制Request里的内容,我编辑了四个文件,分别是x="1",x="-1",y="1",y="-1",使其向四个方向运动。然后在Reques Files中分别选择这个四个文件测试,确实可用。
下面开始导入HA,很简单:
进入HA的目录,建立文件夹PTZ,将上述四个文件拷贝进去,
编辑configuration.yaml,加入以下内容:
shell_command:
camera_left: "curl -X POST -T PTZ/left.xml http://192.168.8.121:5000/onvif/device_service"
camera_right: "curl -X POST -T PTZ/right.xml http://192.168.8.121:5000/onvif/device_service"
camera_up: "curl -X POST -T PTZ/up.xml http://192.168.8.121:5000/onvif/device_service"
camera_down: "curl -X POST -T PTZ/down.xml http://192.168.8.121:5000/onvif/device_service"
复制代码
保存,重启HA。上面代码中发送的地址就是图中Service Address的地址。curl发送的参数有两个,分别是PUT和POST,测试后我发现我的云台对PUT没有响应,换成POST后OK。
最后就是制作卡片了,我对HA的UI仍然一知半解,所以也不知道怎么弄才方便、好看,只要能测试其功能,就凑合着用。。。
添加卡片,按钮,实体为空,名称用方向,图标瞎找一个,点击动作选择“调用服务”,然后在服务中选择刚才加入的四个命令,长按选择“没有动作”:
简单网格排列一下,成了这个样子:
好吧,不好看,但确实能用。。。点击每个按钮,云台会按照要求的方向转动一格。
我这个地方目前只有这一个摄像头进行测试,但我觉得这提供一种对于支持ONVIF协议的摄像头进行云台控制方法。大家有其它摄像头可以测试一下。