AI-аналитика телематических данных автопарка
Телематика автопарка генерирует терабайты данных ежедневно. Ценность не в сборе данных, а в извлечении actionable insights: кто из водителей создаёт риски, какие маршруты неэффективны, какие автомобили нуждаются в обслуживании. ML-аналитика превращает GPS-трек в инструмент операционного управления.
Данные телематики
GPS и движение:
- Координаты с частотой 1-30 секунд
- Скорость, азимут движения
- Геозоны: въезд/выезд из зон (клиенты, склад, заправки)
Данные автомобиля (через CAN/OBD):
vehicle_telemetry = {
'engine_rpm': 'обороты',
'vehicle_speed': 'скорость из ECU (точнее GPS)',
'fuel_consumption_instant': 'мгновенный расход л/100км',
'fuel_level': 'уровень топлива %',
'coolant_temp': 'температура охлаждающей жидкости',
'dtc_codes': 'коды неисправностей',
'odometer': 'пробег',
'ignition_status': 'включено/выключено',
'harsh_events': 'резкое ускорение/торможение/поворот' # ±0.3-0.4g пороги
}
Водительские события:
- Превышение скорости: > лимит + 10 км/ч, > лимит + 20 км/ч
- Резкое ускорение / торможение / поворот (harsh events) — из акселерометра
- Простой с включённым двигателем > 5 минут
- Использование мобильного телефона (если датчик есть)
Скоринг водителей (Driver Scoring)
Composite Driver Score:
def calculate_driver_score(driver_events, distance_km):
"""
Нормализованная оценка на 100 км пробега
"""
per_100km = lambda count: count / distance_km * 100
score = 100 # начальная оценка
# Превышения скорости
score -= per_100km(driver_events['speeding_minor']) * 2 # > +10 км/ч
score -= per_100km(driver_events['speeding_major']) * 5 # > +20 км/ч
# Harsh driving
score -= per_100km(driver_events['harsh_acceleration']) * 3
score -= per_100km(driver_events['harsh_braking']) * 4 # опаснее ускорения
score -= per_100km(driver_events['harsh_cornering']) * 2
# Холостой ход
idle_minutes = driver_events['idle_minutes']
score -= max(0, idle_minutes - 10) * 0.5 # > 10 минут = штраф
return max(0, min(100, score))
ML-коррекция условий: Простое правило не учитывает: пробки (не вина водителя), плохая дорога (harsh events на колдобинах), ночная смена (усталость). ML-модель корректирует raw score с учётом контекста:
# Фичи контекста
context_features = {
'traffic_congestion_index': here_maps_traffic[route],
'road_quality_index': osm_road_type,
'weather_conditions': weather_api['conditions'],
'time_of_day': hour,
'trip_duration_hours': trip_hours
}
# Скорректированный score = raw_score / context_adjustment_factor
Применение:
- Рейтинг водителей → обучение отстающих
- Insurance telematics: скидки за безопасное вождение (UBI — Usage-Based Insurance)
- Геймификация: еженедельные/месячные лидерборды
Оптимизация маршрутов и расхода топлива
Fuel Efficiency Analysis:
def analyze_fuel_efficiency(trips_df):
"""
Удельный расход vs. норматив для данного типа авто и маршрута
"""
# Ожидаемый расход: LightGBM на основе дистанции, нагрузки, рельефа
expected_consumption = fuel_norm_model.predict(trips_df[route_features])
actual_consumption = trips_df['fuel_consumed_liters']
efficiency_ratio = actual_consumption / expected_consumption
# Ratio > 1.15 → водитель тратит на 15% больше нормы
over_consumers = trips_df[efficiency_ratio > 1.15]
return over_consumers, efficiency_ratio
Idle Time Reduction: Простой с заведённым двигателем — прямые деньги. Детекция шаблонов: где и когда происходит лишний простой:
- Утреннее "прогревание" (в современных авто не нужно > 1 минуты)
- Ожидание у объектов клиентов
- Обеденный перерыв с включённым мотором
ETA и оптимальные окна: ML ETA prediction (учитывает пробки, историческую скорость на сегменте дороги) → планировщик окон доставки.
Предиктивное обслуживание из телематики
Паттерны деградации:
def detect_component_stress(vehicle_id, telemetry_window_days=30):
telemetry = get_telemetry(vehicle_id, days=telemetry_window_days)
stress_indicators = {
# Тормозная система
'brake_stress': telemetry['harsh_braking_per_100km'].mean(),
# Двигатель
'engine_overrev': (telemetry['rpm'] > 4500).mean(),
'coolant_spikes': (telemetry['coolant_temp'] > 100).sum(),
# Трансмиссия
'high_load_hours': (
(telemetry['engine_load'] > 80) & (telemetry['speed'] < 40)
).sum() / 60, # часы
# Подвеска (из G-сенсора)
'road_roughness_index': telemetry['vertical_acceleration'].std()
}
risk_score = component_stress_model.predict([list(stress_indicators.values())])
return stress_indicators, risk_score
Аналитика парка
Fleet Utilization:
- Asset utilization: % времени в движении vs. в простое vs. off-shift
- Revenue per vehicle: для транспортных компаний
- Ghost vehicles: зарегистрированы, но практически не используются → кандидаты на списание
Route Compliance: Водители должны следовать одобренным маршрутам (плановые vs. фактические). Отклонения → несанкционированное использование авто.
Total Cost of Ownership (TCO): По каждому автомобилю: топливо + ТО + штрафы за нарушения → сравнение с budget. Outliers → отдельный анализ.
Сроки: GPS-интеграция + базовый driver scoring + fleet utilization dashboard — 3-4 недели. ML-корректированный scoring, fuel efficiency analysis, predictive maintenance из телематики, route compliance — 2-3 месяца.







