最新消息:

树莓派3-家庭监控软件Zoneminder的API

Raspberry Pi 少儿编程 1701浏览 0评论
树莓派3家庭监控

API说明

本文档将提供ZoneMinder的API概述。这是正在进行中的工作。

概述

为了进一步“打开”ZoneMinder,一个API是必要的。这将允许快速整合和发展ZoneMinder。

API在/API目录在CakePHP构建。它提供了一个RESTful服务和支持CRUD(创建、检索、更新、删除)显示器,事件框架功能区和配置。

安全

API连接到Zoneminder现有的安全模型。这意味着,如果你有OPT_AUTH启用,您需要登录到Zoneminder使用您计划使用的API从相同的浏览器。如果你正在开发一个应用程序依赖于API,在你可以访问API前,你需要POST一个登录后到ZoneMinder。

然后,您需要重新使用随后的登录名(返回为“cookie状态”)的身份验证信息,以进行身份验证信息流到所需的验证信息的验证信息。

这意味着如果你打算使用CURL来访问,你首先需要做的是

curl -d "username=XXXX&password=YYYY&action=login&view=console" -c cookies.txt  http://yourzmip/zm/index.php

分别用你的用户名和密码更换XXXX和YYYY。

请确保你在这个目录有写权限,否则cookies.txt不会创造和命令会悄悄地失败。

“-c cookies.txt” 是存储cookie的状态表明你已经登录到ZM。您现在需要将该饼干状态应用到所有后续的应用接口中。你用一个“-b cookies.txt”后续的API,如果你使用CuRL像这样:

curl -b cookies.txt http://yourzmip/zm/api/monitors.json

这将返回一个列表的监控和通过认证信息对ZM API层。

所以记住,如果你使用的是认证,请添加-b cookies.txt下面每一命令,如果你使用的是CuRL的。如果你不使用CuRL,并编写自己的应用程序,你需要确保你通过在你的应用程序的后续请求的cookies 。

实例(请阅读以上的安全公告)

你会看到每个URL的结尾在XML或JSON。这是请求的格式,它决定了将返回给您的任何数据的格式。我喜欢JSON,但是如果愿意的话你可以使用XML。

(在所有的例子中,取代“服务器”的IP地址或主机名和端口,确保ZoneMinder运行)

API 版本

获取API版本

curl http://server/zm/api/host/getVersion.json

返回所有监视器的列表

curl http://server/zm/api/monitors.json

获取监视器1

curl http://server/zm/api/monitors/1.json

监测器1的变化状态

这个API的变化监测1 modect和启用

curl -XPOST http://server/zm/api/monitors/1.json -d "Monitor[Function]=Modect&Monitor[Enabled]:true"

增加监视器

这命令增加新的http监视器

curl -XPOST http://server/zm/api/monitors.json -d "Monitor[Name]=Cliff-Burton 
&Monitor[Function]=Modect 
&Monitor[Protocol]=http 
&Monitor[Method]=simple 
&Monitor[Host]=usr:pass@192.168.11.20 
&Monitor[Port]=80 
&Monitor[Path]=/mjpg/video.mjpg 
&Monitor[Width]=704 
&Monitor[Height]=480 
&Monitor[Colours]=4"

编辑监视器1

这命令更改监视器1的名称为test1

curl -XPUT http://server/zm/api/monitors/1.json -d "Monitor[Name]=test1"

删除监视器1

curl -XDELETE http://server/zm/api/monitors/1.json

警报/接触警报监视器1

此命令将迫使监视器1上的发送警报:

curl http://server/zm/api/monitors/alarm/id:1/command:on.json

此命令将迫使监视器1解除警报:

curl http://server/zm/api/monitors/alarm/id:1/command:off.json

此命令将报告监视器1警报状态

curl http://server/zm/api/monitors/alarm/id:1/command:status.json

获取事件列表

http://server/zm/api/events.json

请注意,事件列表可以相当大,这个API(如所有其他API在ZM)使用分页。每个页面返回一组特定的条目。默认是25,关系到在ZM选项菜单web_events_per_page。

因此,遍历所有的事件的逻辑应该是这样的(伪):(不幸的是没有办法不让第一页得到总页数)

data = http://server/zm/api/events.json?page=1 # this returns the first page
# The json object returned now has a property called data.pagination.pageCount
count = data.pagination.pageCount;
for (i=1, i<count, i++)
{
  data = http://server/zm/api/events.json?page=i;
   doStuff(data);
}

获取ID为1000的事件

curl -XGET http://server/zm/api/events/1000.json

编辑事件1

此命令将更改事件1的“名称”字段,以“寻找并销毁”

curl -XPUT http://server/zm/api/events/1.json -d "Event[Name]=Seek and Destroy"

删除事件1

此命令将删除事件1,和任何取决于它的帧。

curl -XDELETE http://server/zm/api/events/1.json

返回一个特定的监视器标识= 5的事件列表

curl -XGET http://server/zm/api/events/events/index/MonitorId:5.json

注意如果列表太长,同样的分页逻辑应用

在一个特定日期/时间范围内返回一个特定监视器的事件列表

http://server/zm/api/events/events/index/MonitorId:5/StartTime >=:2015-05-15 18:43:56/EndTime <=:2015-05-16 18:43:56.json

要尝试这个在CuRL,你需要的网址CuRL这样的空间:

curl -XGET  "http://server/zm/api/events/index/MonitorId:5/StartTime%20>=:2015-05-15%2018:43:56/EndTime%20<=:2015-05-16%2018:43:56.json"

在一个指定的日期/时间范围内返回所有监视器的事件列表

curl -XGET "http://server/zm/api/events/index/StartTime%20>=:2015-05-15%2018:43:56/EndTime%20<=:208:43:56.json"

基于时间和条件的返回事件计数

该接口还支持一个方便的机制来返回一段时间的事件计数。

这个返回每个监视器的事件记录在最后一个小时内

curl "http://server/zm/api/events/consoleEvents/1%20hour.json"

这个返回的记录中的最后一天,至少有10帧,每监测报警”事件数

curl "http://server/zm/api/events/consoleEvents/1%20day.json/AlarmFrames >=: 10.json"

配置APIs

该API允许您访问所有的配置参数ZM你通常设置在Web控制台。返回的配置参数的完整列表:

curl -XGET http://server/zm/api/configs.json

每个配置参数都有一个身份证、名称、值和其他字段。机会是你可能只会专注于这3个。

该脚本编辑功能目前API有点古怪。它的格式偏离了其他蜜蜂的通常的编辑流程。这将是固定的,最终。现在,改变“价值”zm_x10_house_code从A到B:

curl -XPUT http://server/zm/api/configs/edit/ZM_X10_HOUSE_CODE.json  -d "Config[Value]=B"

要验证更改已取得:

curl -XGET http://server/zm/api/configs/view/ZM_X10_HOUSE_CODE.json

运行状态的API

ZM API可用于启动/停止/启动/列表状态ZM以及实例:

curl -XGET  http://server/zm/api/states.json # returns list of run states
curl -XPOST  http://server/zm/api/states/change/restart.json #restarts ZM
curl -XPOST  http://server/zm/api/states/change/stop.json #Stops ZM
curl -XPOST  http://server/zm/api/states/change/start.json #Starts ZM

创建一个区域

curl -XPOST http://server/zm/api/zones.json -d "Zone[Name]=Jason-Newsted 
&Zone[MonitorId]=3 
&Zone[Type]=Active 
&Zone[Units]=Percent 
&Zone[NumCoords]=4 
&Zone[Coords]=0,0 639,0 639,479 0,479 
&Zone[AlarmRGB]=16711680 
&Zone[CheckMethod]=Blobs 
&Zone[MinPixelThreshold]=25 
&Zone[MaxPixelThreshold]= 
&Zone[MinAlarmPixels]=9216 
&Zone[MaxAlarmPixels]= 
&Zone[FilterX]=3 
&Zone[FilterY]=3 
&Zone[MinFilterPixels]=9216 
&Zone[MaxFilterPixels]=230400 
&Zone[MinBlobPixels]=6144 
&Zone[MaxBlobPixels]= 
&Zone[MinBlobs]=1 
&Zone[MaxBlobs]= 
&Zone[OverloadFrames]=0"

PTZ 控制 APIs

云台控制与监测相关的存储在控制表而不是监控表在ZM。这意味着当你得到一个监控的细节,你只知道它是可控的(是可控的:真)和控制ID可以检索相关信息,控制云台的ID,你需要使用控件API

返回所有的控制定义:

curl http://server/zm/api/controls.json

此返回一个特定的控制标识= 5的控制定义

curl http://server/zm/api/controls/5.json

主机APIs

ZM的API有不同的API,帮助你确定主机(又名ZM)守护状态、负荷等的一些例子:

curl -XGET  http://server/zm/api/host/daemonCheck.json # 1 = ZM running 0=not running
curl -XGET  http://server/zm/api/host/getLoad.json # returns current load of ZM
curl -XGET  http://server/zm/api/host/getDiskPercent.json # returns in GB (not percentage), disk usage per monitor (that is,   space taken to store various event related information,images etc. per monitor) 

您必须 登录 才能发表评论!