Skip to content

feat(obd): standart J1979 dizel/emisyon PID genişlemesi (PR-PID-1)#21

Merged
selimmujdeci merged 1 commit into
mainfrom
feat/standard-pid-expansion
Jul 9, 2026
Merged

feat(obd): standart J1979 dizel/emisyon PID genişlemesi (PR-PID-1)#21
selimmujdeci merged 1 commit into
mainfrom
feat/standard-pid-expansion

Conversation

@selimmujdeci

Copy link
Copy Markdown
Owner

Konu

Standard J1979 PID expansion for diesel/emission telemetry — DPF/Renault Trafic için değerli standart PID'ler + genişletilmiş keşif aralığı. Native katmana, hot-poll listesine, poll frekansına, Renault DID'lere, DTC servislerine, SQL/Supabase'e DOKUNULMADI. PR #11'e dokunulmadı.

Değişen dosyalar (3)

  • src/platform/obd/StandardPidRegistry.ts — 6 yeni standart skaler PID (76 → 82).
  • src/platform/obd/extendedPidService.ts — discovery aralığı +80/A0/C0/E0.
  • src/__tests__/obdCoreV2.pidExpansion.test.ts (yeni) — 11 kilit.

Eklenen PID grupları (hepsi non-core → yalnız EXTENDED keşif, hot-poll'a girmez)

PID Ad Decode (destek-baytı sonrası 1. sensör)
0x6B EGR sıcaklığı (Banka 1) B − 40 °C
0x78 Egzoz gazı sıcaklığı (EGT Banka 1) (256B+C)/10 − 40 °C
0x79 Egzoz gazı sıcaklığı (EGT Banka 2) (256B+C)/10 − 40 °C
0x7C DPF sıcaklığı (Banka 1) (256B+C)/10 − 40 °C
0x83 NOx konsantrasyonu (Sensör 1) 256B+C ppm
0x8E Motor sürtünme torku A − 125 %

Discovery: DISCOVERY_PIDS 00/20/40/60 → +80/A0/C0/E0. Zincir yalnız önceki bitmask sonraki 0x_0 bayrağını set ettiyse ilerler (Mali-400: desteklenmeyen blok için boşa sorgu yok).

Dürüstlük / doğruluk notu (önemli)

  • 0x6B standartta EGR sıcaklığıdır — görevdeki "DPF differential pressure" etiketi standart J1979 ile uyuşmuyor; doğru semantikle eklendi (uydurma yasağı).
  • 0x8B "Diesel Aftertreatment" bit/durum PID'idir; DPF soot/load % standart J1979 skaları değildir (üretici-özel Renault DID gerektirir → görev kapsamı dışı). Uydurmamak için onun yerine güvenilir 0x7C DPF sıcaklığı eklendi.
  • 0x7A/0x7B DPF fark basıncı iç yapı belirsizliği nedeniyle sahada doğrulanana dek dışarıda.
  • Yalnız formülü kamu standardında (SAE J1979-2) NET olan skaler PID'ler eklendi.

Hot-poll değişti mi

Hayır. Yeni PID'lerin hiçbiri core değil; hot-poll (7 core PID: 05/0B/0C/0D/0F/11/2F) ve poll frekansı birebir korunuyor (testte kilitli). Yeni PID'ler yalnız talep-güdümlü EXTENDED keşif/watch yolundan okunur.

Testler

  • 11 yeni kilit + mevcut registry/service testleri (49/49) + geniş OBD süiti (patch9/scenarios/soak/cleanup 33/33) yeşil. tsc -b temiz.
  • Tam süit: 2342 geçti; 23 başarısız test PID ile ilgisiz ve önceden mevcut (Supabase/OTA/device-pair testleri worktree'de gitignore'lu .env olmadığından; .env kopyalanınca 45/45 geçtiği doğrulandı).

Risk analizi

Düşük. Saf veri/registry genişlemesi + tek dizi (DISCOVERY_PIDS) uzatması. Yeni PID'ler non-core → boşta sıfır maliyet korunur; destek-baytlı PID'ler ilk sensörü çözer ve min/max guard'ı sınır dışı ham veriyi NaN'a düşürür (paket düşmez — obdSanitizer felsefesi). Native/hot-path/poll frekansı değişmedi.

🤖 Generated with Claude Code

DPF/dizel telemetrisi için StandardPidRegistry'ye 6 güvenilir standart
(SAE J1979-2 Service 01) skaler PID eklenir ve keşif aralığı 0x80/0xA0/0xC0/0xE0
bloklarına genişletilir. Native katmana / hot-poll'a / poll frekansına DOKUNULMADI.

Registry (76 → 82 PID, hepsi non-core → yalnız EXTENDED keşifte):
- 0x6B EGR sıcaklığı (Banka 1)            [destek-baytı + B−40]
- 0x78 Egzoz gazı sıcaklığı (EGT Banka 1) [destek-baytı + (256B+C)/10−40]
- 0x79 Egzoz gazı sıcaklığı (EGT Banka 2)
- 0x7C DPF sıcaklığı (Banka 1)
- 0x83 NOx konsantrasyonu (Sensör 1)      [ppm]
- 0x8E Motor sürtünme torku               [A−125]

Discovery (extendedPidService): DISCOVERY_PIDS 00/20/40/60 → +80/A0/C0/E0.
Zincir yalnız önceki bitmask sonraki bayrağı set ettiyse ilerler (Mali-400:
desteklenmeyen blok için boşa sorgu yok).

DÜRÜSTLÜK (CLAUDE.md — uydurma yasağı, yalnız güvenilir standart):
- 0x6B standartta EGR sıcaklığıdır — "DPF fark basıncı" DEĞİL; doğru adla eklendi.
- 0x8B "Diesel Aftertreatment" (bit/durum) ve DPF fark basıncı 0x7A/0x7B iç yapı
  belirsizliği nedeniyle KASITLI dışarıda bırakıldı (sahada doğrulanınca eklenecek).
- DPF kurum/yük yüzdesi standart J1979 skaları değil (üretici-özel Renault DID
  gerektirir → görev kapsamı dışı); yerine güvenilir 0x7C DPF sıcaklığı eklendi.

Test src/__tests__/obdCoreV2.pidExpansion.test.ts (11 kilit):
- PID sayısı arttı (≥80) + yeni PID'ler 0x64-0x9D aralığında, doğru decode
- hot-poll (core) kümesi birebir DEĞİŞMEDİ (tam 7 core; yeniler non-core)
- keşif zinciri 60→80→A0→C0→E0 ilerliyor + desteklenmeyende erken durur
- bilinmeyen/eklenmemiş PID (0x8B/0x9D) → NaN (fallback korunuyor)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ABwbnF4mBZ8Pz4NisRibVE
@vercel

vercel Bot commented Jul 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
car-launcher-pro Ready Ready Preview, Comment Jul 9, 2026 2:37pm
carospro Ready Ready Preview, Comment Jul 9, 2026 2:37pm

@selimmujdeci selimmujdeci merged commit 1e8aa8b into main Jul 9, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant