Utiliser un GPS en I²C sur ESP32 avec ESPHome
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
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
|
||||
Reference in New Issue
Block a user