- C++ 93.9%
- C 5.7%
- Shell 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Bei falsch niedrigem Gauge-SoC (<10 %) lief die load-freie Gegenmessung nach jedem 3. Messpunkt -- aktiv alle ~1,5 min, geparkt alle ~6 min -- und schnitt dafuer jedes Mal VVBAT hart fuer 1,5 s ab (unter SIMCom-Minimum 2 s, kein CPOF). Folge: das Modem verlor laufend seine Netzanmeldung und wurde genau so abgewuergt, wie es der Hauptverdacht fuer das haengende Modem ist. - confirmDeepSleepLoadFree: Last per AT+CFUN=0 (Funk aus, Modem nur noch wenige mA) statt VVBAT- Schnitt; danach AT+CFUN=1. Gesperrter AT-Kanal -> keine Gegenmessung. Ereignis lowchk=<mV>. - Gegenmessung hoechstens 1x pro Stunde. - enterDeepSleepFor: Modem per modemPowerOffClean (CPOF + VVBAT aus) statt hart. Seit v0.1.104 faellt die Anzeige ohnehin nur bei wirklich leerer Zelle (~3,55 V) unter 10 %. Lokal gebaut (pio run: SUCCESS), Host-Tests PASS. Am Geraet ungetestet. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011shUomooZ2agMQJjKmjHpi |
||
| .github/workflows | ||
| include | ||
| src | ||
| test/host | ||
| .gitignore | ||
| platformio.ini | ||
| README.md | ||
AiwaysCommunity LTE-Bridge (ESP32-S3-A7670E-4G)
Die Bridge ist ein dummer GET→POST-Übersetzer: Sie hängt sich in den WLAN-AP
der TBox, holt die fertig aufbereiteten Daten von :9000 (der Daemon macht die
ganze Logik) und schickt sie per LTE ans Backend. Keine Fahrzeuglogik auf dem ESP.
TBox (WLAN-AP, :9000) --WiFi--> ESP32-S3 --LTE (A7670E)--> Backend (HTTPS)
GET /cachedata /gps POST /ingest/... (X-Api-Key)
Hardware / Pinbelegung (aus dem Schaltplan verifiziert)
Board: Waveshare ESP32-S3-A7670E-4G — ESP32-S3R8 (16 MB Flash, 8 MB PSRAM) + A7670E (LTE Cat-1 / 2G / GNSS). Modem-IO ist 1,8 V, UART über TXB0104-Level- Shifter auf 3,3 V. Modem-USB hängt zusätzlich über einen FSUSB42-Mux am nativen USB des ESP32-S3.
| Signal | ESP32-S3 | Hinweis |
|---|---|---|
| Modem Power-Enable | GPIO33 | HIGH = VVBAT an; PWRKEY wird per Q9 automatisch getriggert (kein separater PWRKEY-Pin) |
| Modem UART TX (ESP→Modem) | GPIO17 | → R59 → TXD1 → Level-Shifter → Modem RXD |
| Modem UART RX (Modem→ESP) | GPIO18 | Modem TXD → Level-Shifter → RXD1 → R61 → GPIO18 |
| Modem DTR | GPIO45 | LOW = wach halten |
| Modem RI | GPIO40 | Ring/Status |
| RGB-LED (WS2812) | GPIO38 | Statusanzeige |
| Modem USB (D-/D+) | native USB (mux) | für PPP/hohe Raten, per DIP/USB_SET umschaltbar |
Voraussetzungen fürs Testen: SIM (Nano) mit Datentarif gesteckt, LTE-Antenne an
RF_ANT, Strom über USB-C oder 18650-Akku (das Modem zieht im Sendeburst bis
~2 A — an schwachen USB-Ports kann es sonst resetten). DIP-Schalter so, dass die
ESP32-UART/Programmierung erreichbar ist.
Aufbau in Phasen
- Phase 0 — Bring-up (diese Firmware): Modem-AT-Probe (GPIO17/18), SIM/Netz/
Signal, WiFi-Scan nach
MyAiways-*, danach transparenter AT-Passthrough (USB-Konsole ↔ Modem) für manuelle Tests. → beweist beide Funkteile einzeln. - Phase 1 — WiFi-Pfad: in den TBox-AP einloggen (Creds aus dem Bridge-Package),
GET http://192.168.1.1:9000/cachedatamitX-Token, JSON puffern. - Phase 2 — LTE-Pfad: PPP über das Modem hochziehen (echter IP-Stack →
HTTPClient/TLS),POSTans Backend mitX-Api-Key. Dafür Arduino-ESP32 3.x nötig → inplatformio.iniauf die pioarduino-Platform wechseln. - Phase 3 — Loop + Konfig: Bridge-Package (ap_ssid/ap_key/backend/api_key) aus dem NVS/QR, Zyklus (GET→POST→Sleep), Fehler-/Retry-Handling, LED-Status.
Build / Flash (auf dem eigenen PC)
pio run # bauen
pio run -t upload # flashen (Board per USB-C)
pio device monitor # 115200 Baud
Phase 0 kommt mit der Standard-espressif32-Platform aus. Für Phase 2 (PPP)
Platform-Zeile tauschen (Kommentar in platformio.ini).