add code
This commit is contained in:
127
obd2_client/README.md
Normal file
127
obd2_client/README.md
Normal file
@@ -0,0 +1,127 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user