使用CURL PUT JSON

问题描述 投票:0回答:3

使用 LinoVision POE 相机,根据 API,有一种方法可以通过发送 JSON 请求来控制它。这可以使用 CURL 或直接的 HTTP URL 来完成吗?

手册中的 JSON 示例:

常见请求格式如下

PUT /LAPI/V1.0/System/Time/NTP HTTP/1.1
{
"Enabled":1,
"AddressType":0,
"Address":"24.56.178.140",
"Port":123,
"SynchronizeInterval":60
}

当方法为 PUT/POST 时,HTTP Body 通常需要包含 JSON 数据。 请求必须发送到设备的 HTTP/HTTPS 端口。

云台控制

/LAPI/V1.0/通道//云台/云台控制

|网址 | /LAPI/V1.0/Channels//云台/云台Ctrl | |描述 |用于控制指定通道的云台。 | |方法|放置 | |输入数据| PTZ 命令信息 | |成功返回数据|无 |

这是实际提供的云台信息:

云台命令信息

Json 块 { “PTZCmd”:, “第 1 段”:, “段落2”:, “第3段”: }

附近对焦
参数 要求 类型 描述 示例
云台命令 M 无符号长 云台操作命令字: 1794(0x0702)
0x0101:停止减少光圈
0x0102:减少光圈
0x0103:停止增加光圈
0x0104:增加光圈
0x0201:停止在
0x0202:焦点靠近
0x0203:停止远焦
0x0204:焦点远
0x0301:停止放大
0x0302:放大
0x0303:停止缩小
0x0304:缩小
0x0402:打开
0x0404:调低
0x0502:右转
0x0504:左转
0x0702:转到左上方
0x0704:转向左下角
0x0802:转到右上方
0x0804:转到右下角
0x0901:停止
0x0A01:雨刮器打开
0x0A02:刮水器关闭
0x0B01:灯亮
0x0B02:灯灭
0x0C01:加热器开启
0x0C02:加热器关闭
0x0D01:红外开启
0x0D02:红外关闭

这些是我尝试激活 LED 灯的 HTTP URL,但没有成功

http://172.16.5.91/LAPI/V1.0/Channels/0/PTZ/PTZCtrl?Data={"PTZCmd":"1"}
http://172.16.5.91/LAPI/V1.0/Channels/0/PTZ/PTZCtrl?Data={"PTZCmd":"0x0B01"}

使用 HTTP URL 我得到以下响应:

{
"Response": {
    "ResponseURL": "/LAPI/V1.0/Channels/0/PTZ/PTZCtrl",
    "CreatedID": -1, 
    "ResponseCode": 0,
    "SubResponseCode": 0,
    "ResponseString": "Succeed",
    "StatusCode": 0,
    "StatusString": "Succeed",
    "Data": {
    "PTZCmd":   0,
    "ContinueTime": 0,
    "Para1":    0,
    "Para2":    0,
    "Para3":    0
}
    }
}

这些是我尝试过的 CURL 命令字符串:

curl -d '{"PTZCmd":"0x0B01"}' -X PUT http://172.16.5.91/LAPI/V1.0/Channels/0/PTZ/PTZCtrl
curl -d '{"PTZCmd":1}' -X PUT http://172.16.5.91/LAPI/V1.0/Channels/0/PTZ/PTZCtrl

这两个选项都不会激活灯光,但它们都会做出以下响应:

{
"Response": {
        "ResponseURL": "/LAPI/V1.0/Channels/0/PTZ/PTZCtrl",
        "CreatedID": -1,
        "ResponseCode": 0,
        "SubResponseCode": 0,
        "ResponseString": "Succeed",
        "StatusCode": 0,
        "StatusString": "Succeed",
        "Data": "null"
        }
}

编辑1: 使用 INT 而不是 Hex 值也不会激活光。

curl -d '{"PTZCmd":2817}' -X PUT http://172.16.5.91/LAPI/V1.0/Channels/0/PTZ/PTZCtrl
{
"Response": {
        "ResponseURL": "/LAPI/V1.0/Channels/0/PTZ/PTZCtrl",
        "CreatedID": -1,
        "ResponseCode": 0,
        "SubResponseCode": 0,
        "ResponseString": "Succeed",
        "StatusCode": 0,
        "StatusString": "Succeed",
        "Data": "null"
        }
}
json curl
3个回答
0
投票

@partofthething 这就是我最终所做的,以确认 URL 命令是否正确。伟大的头脑:-)

不管怎样,这个项目在与制造商一番来回后就被搁置了。它们确实支持手动控制 LED 灯,但前提是相机设置为“夜间模式”。不幸的是,无论如何对我们来说,夜间模式只是灰度,我们需要看到颜色来确定藻类生长的类型。

对于后代,这些是在其他人获得此相机时起作用的命令和 URL:

图像快照=

http://172.16.5.91/LAPI/V1.0/Channels/0/Media/Video/Streams/0/Snapshot

更改时区

curl -i -H 'Content-Type: application/json' --data '{"TimeZone":"GMT-10:00"}' -g --anyauth -u 'username:password' -X PUT http://172.16.5.91/LAPI/V1.0/System/Time

激活 LED 灯

curl -i -H 'Content-Type: application/json' --data '{"PTZCmd":2817}' -g --anyauth -u 'username:password' -X PUT http://172.16.5.91/LAPI/V1.0/Channels/0/PTZ/PTZCtrl

0
投票

有指定子码流或分辨率的URL吗?

此 URL 适用于 Advidia M 系列 http://cameraIP/LAPI/V1.0/Channels/0/Media/Video/Streams/0/Snapshot


0
投票

curl -X PUT http://192.168.0.10:91/LAPI/V1.0/Channels/0/PTZ/Presets/2/goto { “回复”: { "ResponseURL": "/LAPI/V1.0/Channels/0/PTZ/Presets/2/goto", “创建ID”:-1, “响应代码”:0, “子响应代码”:0, "ResponseString": "成功", “状态代码”:0, "StatusString": "成功", “数据”:“空” } }

但我仍然不知道如何使用语法从 http...anu 建议运行它?

© www.soinside.com 2019 - 2024. All rights reserved.