Настройка получения показаний с датчиков

Примечание

Работа через API доступна только пользователю с ролью Администратор в сервисе Маршрутизации.

Данные с датчиков нужно передавать на сервер b2bgeo-flex-proxy.maps.yandex.net, порт 6000.

При планировании для автомобиля должен быть указан IMEI-номер GPS-трекера, к которому привязан температурный датчик.

Проверка доступности

Перед началом работы проверте доступность функциональности датчиков в вашей компании.

GET https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/features

В ответе проверьте значение параметра sensors.

Проверить, что данные с датчиков поступают в сервис Мониторинга, можно в разделе GPS-трекеры.

Диапазон значений

Для датчика можно задать диапазон допустимых значений. Один диапазон можно использовать для нескольких датчиков одной функциональности (например, для всех датчиков температуры в отсеке для замороженных продуктов).

POST https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/sensor-ranges

В теле запроса передаются параметры диапазона значений:

  • number — название диапазона значений;
  • min, max — допустимый диапазон значений (минимальное и максимальное значения);
  • threshold_time — максимальное время нахождения за пределами допустимого диапазона в секундах. Если показания датчика находятся за пределами допустимого диапазона дольше указанного времени, график показаний отобразится красным цветом. Также можно настроить отправку уведомления для этого события.

Пример

Допустимый диапазон температур в кузове автомобиля — от 0 до 10 градусов. Уведомление нужно отправлять, если температурный режим нарушается дольше 10 минут.

Запрос:

POST https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/sensor-ranges

Тело запроса:

[
    {
        "number": "temp_range",
        "min": 0,
        "max": 10,
        "threshold_time": 600
    }
]

Запрос вернет код ответа 200 и тело ответа, где параметр id — это уникальный идентификационный номер диапазона значений.

Тело ответа:

[
    {
        "id": "78",
        "number": "temp_range",
        "min": 0,
        "max": 10,
        "threshold_time": 600
    }
]

Привязка датчика к маршруту

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

PUT https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/routes/<id-маршрута>/sensors

При привязке датчика к маршруту задаются:

  • sensor_number — номер поля в протоколе FLEX, в котором передаются показания датчика (номера от 0 до 7 соответстуют параметрам temp1temp8, а номера от 8 до 11 — параметрам hp_temp1hp_temp4);
  • sensor_name — название датчика, которое будет отображаться в интерфейсе;
  • sensor_range_id — уникальный идентификационный номер диапазона значений.

Примечание

При добавлении датчика на маршрут в запросе нужно указывать также все привязанные ранее датчики.

Пример 1. Привязка первого датчика

Пусть маршрут route_id = 12 выполняет автомобиль с датчиком температуры кузова sensor_number = 34. Для датчика указывается определенный ранее диапазон значений sensor_range_id = 78.

Запрос:

PUT https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/routes/12/sensors

Тело запроса:

[
    {
        "sensor_number": "34",
        "sensor_range_id": "78",
        "sensor_name": "Температура в кузове"
    }
]

Пример 2. Добавление еще одного датчика

Для автомобиля на маршруте route_id = 12 добавляется еще один датчик температуры sensor_number = 56 с тем же диапазоном значений sensor_range_id = 78.

Запрос:

PUT https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/routes/12/sensors

Тело запроса:

[
    {
        "sensor_number": "34",
        "sensor_range_id": "78",
        "sensor_name": "Температура в кузове"
    },
    {
        "sensor_number": "56",
        "sensor_range_id": "78",
        "sensor_name": "Температура в прицепе"
    }
]

Отключение датчиков от маршрута

PUT https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/routes/<id-маршрута>/sensors

Тело запроса должно быть пустым.

Пример

От маршрута route_id = 12 нужно отвязать датчики.

Запрос:

PUT https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/routes/12/sensors

Тело запроса:

[]

Настройка отправки уведомлений

Для настройки отправки уведомлений укажите массив alerts. Каждый элемент массива задает событие, при наступлении которого будет отправляться уведомление в Рабочее место логиста.

Для каждого элемента массива alerts укажите параметры:

  • type — тип события. Возможные значения:
    • range — показания датчика выходят за пределы допустимого диапазона и остаются вне диапазона указанное время;
    • no_data — показания датчика не поступают в течение указанного времени или дольше.
  • threshold_time — период времени, по истечении которого событие считается наступившим. Указывается в секундах. Например, максимальное время нахождения показаний датчика за пределами допустимого диапазона или максимальное время отсутствия показаний с датчика.
  • scope — дополнительное ограничение. Необязательный параметр. Возможное значение: while_not_empty — событие фиксируется, только если в автомобиле есть груз.
  • repeat — настройки повторной отправки уведомлений:
    • period — время между повторными уведомлениями. Указывается в секундах. Уведомление будет отправляться повторно, только если событие все еще продолжается.

Пример

В автомобиле установлен температурный датчик sensor_number = 56. Уведомление нужно отправлять, если показания датчика выходят за пределы допустимого диапазона и это состояние сохраняется дольше 1 минуты. Уведомление отправляется только в том случае, если в кузове автомобиля есть груз. Уведомления нужно повторять каждые 10 минут. Такие же настройки применяются для уведомлений об отсутствии показаний с датчика.

Запрос:

PUT https://courier.yandex.ru/api/v1/companies/<id-вашей-компании>/features/sensors

Тело запроса:

{
    "alerts": [
        {
            "type": "range",
            "threshold_time": 60,
            "scope": "while_not_empty",
            "repeat": {
                "period": 600
            }
        },
        {
            "type": "no_data",
            "threshold_time": 60,
            "scope": "while_not_empty",
            "repeat": {
                "period": 600
            }
        }
    ]
}
Написать в службу поддержки