# OBD2 Client для Skoda Kodiaq 2021 на RPi5 Python приложение для чтения OBD2 данных через WaveShare 2-CH CAN HAT. ## Установка ```bash pip install -r requirements.txt ``` ## Конфигурация RPi5 ### /boot/config.txt ``` dtparam=spi=on dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=23 ``` ### Инициализация CAN интерфейса ```bash sudo ip link set can0 up type can bitrate 500000 sudo ifconfig can0 txqueuelen 65536 ``` ## Использование ### Запуск с реальным авто ```bash python -m src.main --interface can0 ``` ### Только сканирование PID ```bash python -m src.main --interface can0 --scan-only ``` ### Тестирование с виртуальным CAN ```bash # Создание виртуального интерфейса sudo modprobe vcan sudo ip link add dev vcan0 type vcan sudo ip link set up vcan0 # Запуск клиента python -m src.main --interface vcan0 --virtual ``` ### Параметры командной строки | Параметр | Описание | |----------|----------| | `-i, --interface` | CAN интерфейс (can0, vcan0) | | `-c, --config` | Путь к config.json | | `-v, --virtual` | Использовать виртуальный CAN | | `--scan-only` | Только сканировать PID | | `--debug` | Включить отладочный вывод | ## Поддерживаемые PID | PID | Параметр | Единицы | |-----|----------|---------| | 0x04 | Engine Load | % | | 0x05 | Coolant Temp | °C | | 0x0C | Engine RPM | RPM | | 0x0D | Vehicle Speed | km/h | | 0x0F | Intake Air Temp | °C | | 0x10 | MAF Rate | g/s | | 0x11 | Throttle Position | % | | 0x2F | Fuel Level | % | | 0x5C | Oil Temperature | °C | ## Конфигурация Файл `config.json`: ```json { "can": { "interface": "can0", "bitrate": 500000, "virtual": false }, "obd2": { "request_id": "0x7DF", "response_id": "0x7E8", "timeout": 0.1 }, "polling": { "interval_fast": 0.1, "interval_slow": 1.0, "fast_pids": ["0x0C", "0x0D", "0x11"], "slow_pids": ["0x05", "0x2F", "0x5C"] } } ``` ## Переменные окружения - `OBD2_CONFIG_PATH` - путь к config.json - `OBD2_CAN_INTERFACE` - CAN интерфейс - `OBD2_CAN_BITRATE` - битрейт - `OBD2_CAN_VIRTUAL` - использовать виртуальный CAN (true/false) - `OBD2_TIMEOUT` - таймаут ответа ## Структура проекта ``` obd2_client/ ├── src/ │ ├── __init__.py │ ├── main.py # Точка входа, CLI │ ├── config.py # Конфигурация │ ├── logger.py # Логирование │ ├── can/ │ │ ├── frame.py # CAN фрейм dataclass │ │ └── interface.py # Абстракция CAN шины │ ├── obd2/ │ │ ├── pids.py # Определения PID │ │ ├── protocol.py # OBD2 запросы/ответы │ │ └── scanner.py # Автодетект PID │ └── vehicle/ │ ├── state.py # Состояние авто │ └── poller.py # Циклический опрос ├── config.json ├── requirements.txt └── README.md ```