Note
This service originally lived in the main Mapache repository. It was split into this repository as an archival snapshot while Mapache undergoes a complete v4 rewrite.
GR25 Mapache Ingest translates telemetry from Gaucho Racing's GR25 car into Mapache signals.
- The service connects to MQTT and subscribes to
gr25/#. - It expects CAN telemetry on
gr25/{vehicle_id}/{node_id}/{can_id}. - Each payload contains an 8-byte big-endian microsecond timestamp, a 2-byte upload key, and the CAN payload.
- The CAN ID selects a GR25-specific message decoder.
- Decoded message fields are exported as normalized Mapache signals and written to the database.
- Ping messages are handled separately for vehicle and node health monitoring.
Signal names are prefixed with the source node, such as {node_id}_{signal_name}, to keep names unique across the car.
Final telemetry is saved in the Mapache Signal relational model using GORM and a SingleStore-compatible database. Each signal contains its vehicle ID, node-prefixed name, decoded numeric value, raw value, microsecond timestamp, production time, and ingestion time. Ping records are stored alongside signals in their own model.
The service also exposes a small HTTP API for signal and health access.
go build ./...Runtime configuration is supplied through environment variables for MQTT, the database, Rincon registration, and the HTTP port. See config/config.go for the accepted settings.