Страница 1 из 2

Работаем с API Hikvision

Добавлено: 13 апр 2022, 10:24
REX
Доброе время суток Уважаемые!
Есть вопрос, но вкратце опишу тему.
Итак, есть локальная сеть, состоящая для простоты из Mikrotik и подключенной к нему видеокамеры Hikvision. К приборам сети есть удалённый доступ. Организован(наличие "белого" IP, проброс портов и т .д.) удалённый просмотр онлайн видеокамеры через приложение на смартфон tinyCam Monitor PRO. Также ведётся видеозапись на регистратор и карту памяти в видеокамере.
Помимо этого, средствами WebUI видеокамеры определена "зона вторжения", при попадании в которую на смартфон приходит уведомление и фото.Всё замечательно работает, однако :-): как то раз гуляющая собака :-) зашла в "зону вторжения", а т.к. был приятный солнечный денёк, прилегла отдохнуть в этой "зоне", то потянется, то почешется, то пардон, яйца полижет :-) ну а мне соответственно на мобильник приходят уведомления с фото, так продолжалось пару часов. Ну и другие аналогичные ситуации, когда хотелось бы оперативно выключить этот режим и затем обратно иметь возможность включить. Следует сказать, что данный режим сейчас включен по расписанию, средствами WebUI видеокамеры.Оперативно включать/отключать через WebUI крайне неудобно, хотя там и нужно снять/поставить "галочку"
У камер Hikvision есть открытый API, чем я собственно и решил воспользоваться для этой цели, а возможности API и применения конечно намного больше.
Покурив "буквари", с помощью скрипта и использовании в нём fetch, я получил необходимые .xml файлы при снятой и установленной "галке".
/tool fetch keep-result=yes url="http://admin:password@xxx.xxx.xxx.xxx:xx/ISAPI/Smart/FieldDetection" mode=http dst-path="DetectionOFF.xml"
аналогично и для DetectionOFF
Изображение
Изображение
видим (обвёл красной рамочкой) состояние этой самой "галочки" в WebUI.
А вот теперь и собственно вопрос :-)
Предполагается, что при необходимости, я буду выполнять соответствующий скрипт через бота Telegram, но не совсем понимаю, мне необходимый .xml файл заливать в камеру через опцию src-path в fetch или использовать PUT ?
это фрагмент "букваря" API Hikvision
Изображение
:-)

Re: Работаем с API Hikvision

Добавлено: 13 апр 2022, 10:37
REX
p.s. или PUT из "букваря" предполагает изменение переменных в /ISAPI/Smart/FieldDetection ?
но их там много,если перечислять в скрипте все, крайне легко ошибиться, а относительно одной, не совсем пока понимаю, как её одну описать.Кроме того, что нужно изменить всего одну, остальные в моей задаче не меняются, координаты зоны например и т.д.потому кажется, что проще залить нужный .xml проще....

Re: Работаем с API Hikvision

Добавлено: 15 апр 2022, 10:16
REX
насколько я понимаю, "букварь" мне "говорит", что "установить параметры" я могу методом http=put , т.к. по умолчанию в fetch http=get , менял уже....
сейчас есть два .xml файла, один с true ,другой с false надо как-то "закидывать" их в камеру, потому как если менять одну переменную, то вообще непонятно становится....

Изображение
курю https://forum.mikrotik.com голова уже пухнет :)

Re: Работаем с API Hikvision

Добавлено: 15 апр 2022, 10:44
Sertik
А нельзя получить весь этот XML в переменную с помощью [/tool fetch ... as-value] ?
Или может быть HIKVISION умеют отдавать данные в JSON ? Для Микротик скрипт есть прекрасный парсер JSON в многомерный массив ...

Re: Работаем с API Hikvision

Добавлено: 15 апр 2022, 10:50
REX
Sertik писал(а): 15 апр 2022, 10:44 А нельзя получить весь этот XML в переменную с помощью [/tool fetch ... as-value] ?
Или может быть HIKVISION умеют отдавать данные в JSON ? Для Микротик скрипт есть прекрасный парсер JSON в многомерный массив ...
да можно наверно и в переменную получить, умеет и в JSON отдавать.....суть то в том, я вижу, какая переменная true.false в этих .xml(ях), остальное ничего не меняется....и эта переменная, насколько я понял, отвечает за "галочку" в WebUI. По крайней мере я считывал эти файлы со снятой и установленной "галкой"....
есть пример, как человек делает, там правда не с mikrotik и не fetch, а использует curl -T для записи того или иного .xml(я)

Изображение
суть одна, человек управляет просто другим датчиком, их там разные есть....ну и есть ещё варианты, когда на потоковое видео накладывают свою информацию....всё тоже самое по сути....

Re: Работаем с API Hikvision

Добавлено: 15 апр 2022, 11:28
Sertik
Если умеет в JSON отдавать то с XML и не надо связываться. Получите все параметры в JSON, потом с помощью парсера https://github.com/Winand/mikrotik-json-parser вытащите нужные параметры, измените их и зашлите обратно. Для "засылания" обратно API камеры должно иметь какой-то "нормальный механизм", который позволит через /tool fetch это сделать.
Или уж если связываться с XML менять параметр в файле - это геморрой, надо считать всё в переменную или массив, изменить там, а уж потом записать в файл и послать его на камеру

Re: Работаем с API Hikvision

Добавлено: 15 апр 2022, 11:39
REX
Для "засылания" обратно API камеры должно иметь какой-то "нормальный механизм", который позволит через /tool fetch это сделать.
GET-получить PUT- изменить....именно так в "букваре" сказано....
в примере, собственно и делается, засылается curl -T необходимый файл....человек сам его редактировал, а мне и этого делать не нужно, т.к. я считал(получил) их с установленной и снятой "галкой".....
вопрос наверно звучит так: как пользоваться http-method=put потому как из wiki я понять не могу :)
неплохо бы конечно на forum.mikrotik.com спросить, но я пожалуй не смогу....правильно вопрос свой задать :)
с помощью GET, я получил....

Re: Работаем с API Hikvision

Добавлено: 15 апр 2022, 11:47
Sertik
/tool fetch вроде как put не умеет не помню точно ... post не подойдет ?

Re: Работаем с API Hikvision

Добавлено: 15 апр 2022, 11:50
REX
/tool fetch вроде как put не умеет не помню точно ...
ну почему же? просто нужно явно указывать, что http-method=put , по умолчанию http-method=get , в wiki это то есть....
вот походу, нужно указывать http-data нужный файл....+ к тому, что указываем http-method=put

Re: Работаем с API Hikvision

Добавлено: 15 апр 2022, 11:52
Sertik
Ну а в чём тогда дело ? Сформируйте строку с put и файл измененный прицепите.
А какая модель камеры ?