44 lines
1.5 KiB
Plaintext
44 lines
1.5 KiB
Plaintext
flowchart TD
|
|
A[Intervalle ESPHome toutes les 100 ms] --> B[Lecture I²C depuis gps_i2c<br/>jusqu'à 4 passes de 128 octets]
|
|
B --> C[Ajout des caractères non nuls dans nmea_buf]
|
|
C --> D{nmea_buf contient-il<br/>au moins un saut de ligne ?}
|
|
|
|
D -- Non --> A
|
|
D -- Oui --> E[Extraction d'une ligne complète]
|
|
E --> F[Suppression CR/LF]
|
|
F --> G{Ligne vide ou ne commence pas par '$' ?}
|
|
|
|
G -- Oui --> D
|
|
G -- Non --> H[Vérification du checksum NMEA]
|
|
|
|
H -- Échec --> I[Incrément des trames invalides]
|
|
I --> D
|
|
|
|
H -- Succès --> J[Incrément des trames valides]
|
|
J --> K[Découpage CSV en fields]
|
|
K --> L[Identification du type de trame<br/>ex. GGA RMC GSA GSV ZDA GST PMTK]
|
|
|
|
L --> M{Type = GGA ?}
|
|
M -- Oui --> N[Lecture des champs GGA]
|
|
N --> O[fields_6 = fix quality]
|
|
O --> P{fix quality > 0 ?}
|
|
P -- Oui --> Q[Publier gps_has_fix = true]
|
|
P -- Non --> R[Publier gps_has_fix = false]
|
|
Q --> S[Publier qualité fix, satellites utilisés,<br/>HDOP, altitude, latitude, longitude]
|
|
R --> S
|
|
S --> D
|
|
|
|
M -- Non --> T{Type = RMC ?}
|
|
T -- Oui --> U[Lecture des champs RMC]
|
|
U --> V[fields_2 = statut]
|
|
V --> W{statut = 'A' ?}
|
|
W -- Oui --> X[Publier gps_has_fix = true]
|
|
W -- Non --> Y[Publier gps_has_fix = false]
|
|
X --> Z[Publier latitude, longitude,<br/>vitesse, cap, date, heure]
|
|
Y --> Z
|
|
Z --> D
|
|
|
|
T -- Non --> AA{Autre type utile ?}
|
|
AA -- Oui --> AB[Mettre à jour d'autres entités<br/>GSA GSV ZDA GST PMTK etc.]
|
|
AB --> D
|
|
AA -- Non --> D |