Open API Ivideon: первые шаги


    Как же быстро время пролетело: наш предыдущий пост вышел на Хабре 2 года назад. Когда молчишь так долго, ты либо мертв, либо усердно работаешь, чтобы в один момент взорваться новостями и поведать что-то стоящее.

    Если вы не знаете, кто мы, то объясним в четырех словах: сервис видеонаблюдения через Интернет. За остальными подробностями отсылаем к самой первой статье.

    Вот и в Ivideon занимались стоящим проектом – Open API. Да, это открытый API, позволяющий нашим клиентам и партнерам упростить и автоматизировать взаимодействие с нашим сервисом. И даже создавать новые продукты!

    Проект пока что находится на стадии бета-тестирования, но вы, если желаете, можете попробовать API. Подробнее об этом расскажем в конце статьи.



    Как мы пришли к Open API

    К идее начать разработку мы пришли самым простым способом – клиенты просили предоставить возможность управлять Ivideon’ом как сервисом: самостоятельно подключать и отключать камеры видеонаблюдения, менять тарифные планы, управлять настройками камер, изменять качество и расписание записи, увеличивать или уменьшать громкость, воспроизводить запись в приложении клиента или на сайте.

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

    Структура

    Параллельно с API шло развитие наших интеграционных компонентов SDK, отвечающих за воспроизведение: это Web SDK, написанный на Javascript, и Mobile SDK. В основе обоих SDK лежит модифицированный видеоплеер из проекта VLC, используемый для воспроизведения live-видео и архивного видео на веб-странице или в мобильном приложении. То есть это fork непосредственно VLC библиотеки с достаточно большим количеством дополнений, и оптимизаций, которые мы сделали сами.

    Алгоритм действий нашей системы подразумевает появления некоторых задержек, но на камерах у нас реализован предбуфер, записывающий видео за несколько секунд до того, как непосредственно произошло событие. Предбуфер позволяет компенсировать всякие сетевые задержки.

    Предбуфер хранит последние 5 секунд (примерно) живого видео, но при этом камера его никуда не отправляет. Если приходит запрос, камера начинает запись, берет последние 5 секунд и также их отправляет. Поэтому в любой запрос мы включаем чуть более раннее видео, чем отмечено самим запросом.

    Возможности

    С помощью Open API вы можете создать собственную альтернативу личному кабинету Ivideon. Вы можете экспортировать видео по запросу, настроить регулярное событие, которое будет раз в день запрашивать видео за определенный промежуток времени, получать ссылку на видео и скачивать его себе. Мы стремимся к тому, чтобы все доступные компоненты могли быть настроены клиентом под свои нужды. Это касается цветов, картинок, кнопок, внешнего вида, стиля и так далее, чтобы всё визуально вписалось в любую клиентскую систему.

    Отдельная ветка функций связана с событиями. Суть такая: в сторонней системе пользователь может создавать события, публиковать его в нашем API, и камера по этому событию будет производить запись видеоклипа. Сейчас она производит запись исключительно короткого клипа, в районе 10 – 30 секунд. Развитие этой функции дает возможность записывать клипы по каким-то внешним событиям, не связанным непосредственно с камерами – например, открылась дверь, сработал датчик движения и так далее. Мы также прорабатываем функцию, которая либо заменит эти клипы, либо станет дополнением к ним – это запись от начала до конца.

    Типы использования



    Есть две схемы, как всё работает: для личного использования и когда клиент выступает в роли реселлера.

    Первая схема подходит для обычных пользователей, которые просто хотят что-то автоматизировать, а также для крупных компаний, использующих возможности Open API для себя. Так как на наших камерах есть детектор движения и детектор звука, с помощью API вы можете интегрировать систему в свою умный дом: получать SMS при каком-то событии, запрашивать live-видео и т.д.

    По второй схеме бизнес-партнер, который с нами интегрирован, может создавать других пользователей, то есть перепродавать услуги своим клиентам.

    Примеры использования



    Один наш крупный партнер установил себе сотни камер и стал искать способ, как упростить передачу прав доступа на камеры. Стандартно Ivideon через веб-интерфейс позволяет передавать права на просмотр онлайна, передавать права на просмотр архива и передавать права на управление камерами (двигать камеры, включать и выключать). Однако все эти права нужно было передавать вручную: выбрать камеру, выбрать e-mail пользователя, указать, какие права ему передать. Когда у вас 10 камер, с этим справится один человек. Когда у вас сотни камер, разбросанных по всей России, и десятки пользователей – начинается сильная боль.

    Как вы понимаете, очень неудобно учитывать все передачи прав. С помощью технологии, которая получила название «Группировка камер», появится возможность указать иерархию: например, крупный регион, город в регионе, отдельные районы в городе и так далее. Камеры можно распределить по всему дереву, и давать человеку доступ (или забирать доступ) сразу к определенной группе камер.



    Следующий пример использования Open API будет интересен и обычным пользователям, поскольку затрагивает функциональность умного дома. Среди наших клиентов есть несколько компаний, занимающихся технологиями умного дома. Например, в США работает команда, разрабатывающая систему, которая позволяет открывать гараж или какое-то отдельное помещение, передавая одноразово сгенерированный код доступ третьим лицам.

    Ваш дом сам примет за вас посылку, пока вы находитесь в отъезде. Курьер приезжает с грузом, получает одноразовый код, открывающий гараж, кладет туда посылку, после чего дверь закрывается и блокируется.

    Этой системе не хватало самого главного – видеонаблюдения. А что если курьер украдет из гаража велосипед? В идеале нужно было видеть, что курьер пришел, занес посылку и ушел, ничего с собой не забрав. Для этого можно опубликовать событие в приложении непосредственно в нужный момент, и при этом записать клип. Можно также все время вести live-трансляцию прямо в мобильное приложение. Такую систему легко реализовать с помощью подходящего микроконтроллера и любой камеры с Ivideon на борту.

    Когда происходит какое-то событие, за которым должна следовать запись видео, на центральном контроллере умного дома нужно установить идентификацию события – оно отправится нам, после чего нашего облако отправит на камеру команду «запиши». Затем вы отправляете к нам запрос и получаете ссылку, по которой можно скачать видеоклип, куда-то отправить или встроить.



    Допустим, вы получаете образование удаленно, и все лекции обрабатываете на дому, но на экзамены все равно вынуждены приходить. В тоже время, сдавать экзамены можно и с помощью системы видеонаблюдения. В присутствии проктора происходит компьютерное тестирование знаний учащегося. Сначала происходит идентификация, например, демонстрация паспорта. Затем происходит выдача заданий, интервьюирование с конкретным человеком. Преподавателю в процессе транслируется видео с веб-камеры и с экрана. Запись хранится какое-то время в облаке и в случае возникновения спорных вопросов предоставляется сторонам конфликта.



    Мы и раньше интегрировались с корпоративными и бизнес-приложениями (СКУД, ОПС, кассовыми аппаратами), но развитие API позволяет к видеонаблюдению добавить видеоаналитику – простор для введения новых фич огромный. Трудно сейчас предположить, сможете ли вы искать покемонов с помощью камер видеонаблюдения, но вы точно узнаете о зарегистрированном камерой потенциально опасном событии.

    Для малого и среднего бизнеса одно из самых уязвимых мест (в финансовом плане) расположено сразу у кассы. Выявление шаблонных алгоритмов действий кассира помогает определить воровство или нарушение дисциплины (когда кассир не обслуживает клиентов, а занят своими делами). Система видеонаблюдения отслеживает кассовые события параллельно с фиксируемой камерой видеозаписью, позволяя наглядно определить факт мошенничества. Самый простой пример: в случае, если покупатель не забрал чек, значит его не обязательно «закрывать» или фискализировать — кассир отменяет чек и деньги забирает себе.

    Мониторинг событий у кассовых терминалов – это лишь один из возможных вариантов. Если кто-то захочет в будущем поставить камеры наблюдения на пляж и найти всех людей с родинкой в форме пятиконечной звезды – Ivideon подключится к решению. :-)

    DIY пример использования Open API

    Один из интересных примеров использования Open API приходится на область автоматизации дома. Например, некто трезвонит вам в дверь, камера реагирует и делает запись, а затем отправляет вам уведомление о событии.

    Ivideon API использует OAuth 2.0 для авторизации, запросы поступают на сервер openapi-alpha.ivideon.com. Для работы по протоколу Oauth 2.0 нам понадобится access_token.

    POST /auth/oauth/token HTTP/1.1
    Host: openapi-alpha.ivideon.com
    Content-Type: application/x-www-form-urlencoded
    Authorization: Basic S2V5cmRwbHk6YjhmQzRkYTMxZTQwZWZkMTkxZDAwMzETM2FkZDcwZGU=
    Cache-Control: no-cache
     
    grant_type=password&username={user_name}&password={user_password}
    
    
    {
        "api_host": "openapi-alpha-eu01.ivideon.com",
        "access_token": "100-U6c3d3e17-c845-4d13-bf57-6fd99ea7807a",
        "expires_in": 3600,
        "token_type": "Bearer",
        "scope": "archive attachment_tokens cameras_list cloud_recording get_events live manage_events manage_groups mute_camera_alerts servers_management shared_archive shared_live subscribe_events turn_off_camera user_info        users_management voice-messaging",
        "owner_type": "user",
        "refresh_token": "e95bed0c5fb2413b8d6e55d8dcf16630",
        "owner_id": 100001043052
    }
    


    Чтобы получить token вам необходимо указать имя пользователя (user_name в примере) и пароль (user_password в примере) и client_id и client_secret в заголовке HTTP Basic Authorization.

    Для использования SDK вам необходимо передать ему access_token и ID камеры. Плеер получит видео с Ivideon Cloud. Получив доступ, вы сможете настроить все компоненты SDK: цвет, текст, язык и многое другое.



    Создание события: запись видео и отправка уведомления.

    POST /events?op=CREATE&access_token={access_token} HTTP/1.1
    Host: openapi-alpha-eu01.ivideon.com
    Content-Type: application/json
    Cache-Control: no-cache
    
    {
        "type":"eventType",
        "time": 1464263172,
        "clip_settings":{
            "duration":60
        },
        "notify": true,
        "device_id":"100-6a18e46fc9ab4219261bee3bfb6cda35:0",
        "device_type":"camera"
    }
    {
      "result": {
        "status": "new",
        "delivered": true,
        "preview": null,
        "clip": null,
        "type": "eventType",
        "user": 100001043052,
        "device_type": "camera",
        "time": 1464263172,
        "clip_duration": null,
        "_id": "Xl3149lugdmF8sO4.1",
        "data": null,
        "id": "Xl3149lugdmF8sO4.1",
        "device_id": "100-6a18e46fc9ab4219261bee3bfb6cda35:0"
      },
      "success": true
    }
    


    В случае использования событий нужно еще раз повторно запросить статус события.

    {
        "result": {
            "status": "new",
            "delivered": true,
            "preview": "https://msk88.ivideon.com/preview/motion/2016-07-21/gAS0dis1gsvLsf3REn0eTQWbRwkHAkN1.jpeg",
            "clip": "https://msk98.ivideon.com/events/clips/2016-07-21/H1xyCDXSsRl4TqBkWQUfHDTHIQlfDMS1.mp4",
            "type": "motion/started",
            "user": "4005500726931",
            "device_type": "camera",
            "time": 1469096014,
            "clip_duration": 4,
            "data": null,
            "id": "8cgclg2IFQYo4hFv.21",
            "device_id": "100-b6251a97fa9d26c8952f786ecefa9551:0"
        },
        "success": true
    }
    

    В preview – фотка, в clip – видео. Как только они там появляются – можно забирать.

    Остальные примеры запросов вы сможете увидеть в нашем гайде по интеграции, когда он будет опубликован.

    Как связаться и получить доступ

    У нас пока всего несколько тестовых проектов, т.е. мы принимаем заявки в индивидуальном порядке и с каждым лично находим способы взаимодействия. Пока мы в бета-тестировании вам нужно будет написать нам и мы вышлем вам интеграционный комплект: SDK, логин/пароль к API, документацию, и т.д. В дальнейшем все это будет доступно «из коробки».

    Сейчас API полнофункционально, то есть все функции, которые необходимы для полноценной работы, там присутствуют. Вы можете подать заявку (integration_support@ivideon.com) и потестировать работу на примере своего умного дома, стартапа или готового бизнеса.
    • +14
    • 9,9k
    • 7
    Ivideon
    70,93
    Облачное видеонаблюдение и видеоаналитика
    Поделиться публикацией

    Комментарии 7

      0
      А будет сервер для ARM Linux? Для всяких вещей вроде Raspberry Pi (у меня поскромнее — C.H.I.P.)?
      В open-source, как я понимаю, проект не перейдёт.
        0
        В ближайшее время в опенсорс не перейдёт. По Raspberry никаких планов у нас сейчас нет, хотя в теории это и возможно.
          0
          Просто, как по мне, это самое удобное и дешёвое решение. Купил какой-нибудь [имя-фрукта] Pi (каких их только нет) за 10-15$, вебку и настроил 24/7 сервер с малым потреблением энергии. Использовать ноутбук или ПК, ИМХО, нерационально. Или это чисто коммерческое решение, чтобы продавать свои камеры? (Вы не подумайте, что я пытаюсь кого-то в чём-то уличить, труд неимоверный и проделано очень много и качественно). Успехов вашей компании!
        +1
        Давно пользуюсь вашим сервисом.
        Рад видеть что не стоите на месте и постоянно развиваетесь.
        Успехов в запуске Open API, ждем новых устройств.
          0
          Привет! Вы поддeрживаетe Wi-Fi-камeры tp-Link? Еcли нет, то есть ли плaны? Спасибo!
            0
            Встроенного сервиса нет, но можно подключить через ivideon server.
            0
            Остальные примеры запросов вы сможете увидеть в нашем гайде по интеграции, когда он будет опубликован.

            и когда он будет опубликован?

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое