Настройка получения показаний с датчиков
Ескерту
Работа через 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 соответстуют параметрам- temp1–- temp8, а номера от 8 до 11 — параметрам- hp_temp1–- hp_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
            }
        }
    ]
}