ErgissVAG F16 Edition — BYOS Documentation

Bring Your Own Server Public spec, sample servers, and Grafana dashboard for ErgissVAG F16 telemetry.

ErgissVAG F16 does NOT send any data to our servers. Optionally, you can configure your own HTTPS endpoint (Settings → Cloud Logging) and the app will POST telemetry directly to it. We never see, store, or proxy anything.

What this app captures

F16 Edition is an aviation-style dashboard for cars, primarily targeted at Android head units (FYT/SYU), with full phone support. It captures and visualizes:

JSON payload format

Every 5 seconds while driving (when GPS or OBD is active), the app sends an HTTPS POST with this body:

{
  "ts": 1714225800000,
  "source": "ergissvag_f16",
  "gps": { "lat": 47.1582, "lng": 27.6014, "alt_m": 87.2,
           "heading": 215.3, "speed_ms": 18.5, "accuracy_m": 4.0 },
  "obd": { "rpm": 2150, "speed_kmh": 67, "coolant_c": 92,
           "intake_c": 32, "battery_v": 14.2, "load_pct": 35,
           "throttle_pct": 22, "fuel_pct": 64, "oil_temp_c": 105 },
  "attitude": { "pitch_deg": -1.2, "roll_deg": 3.8,
                "yaw_rate_dps": 0.5, "g_lat": 0.12, "g_long": -0.08 },
  "can_infotainment": { ... },
  "can_antrieb":      { ... },
  "tpms_fl": { "bar": 2.4, "temp_c": 28 },
  "tpms_fr": { "bar": 2.4, "temp_c": 27 },
  "tpms_rl": { "bar": 2.5, "temp_c": 25 },
  "tpms_rr": { "bar": 2.5, "temp_c": 26 }
}

Sub-types via query string

URL suffixMeaningFrequency
(none)Continuous telemetryEvery 5s
?type=trackGPS track point + GNSS infoEvery 60s
?type=can_logCAN incremental log (delta vs baseline)Every 60s
?type=markUser MARK event with descriptionOn user button
?type=screenshotMultipart PNG uploadOn user button

Auth

Optional Bearer token. Set in F16 Settings, validated on your server:

Authorization: Bearer your-secret-token

Sample servers

PHP (drop-in)

Drop 📄 byos.php on your PHP server. It dispatches to PostgreSQL tables. Schema: 🗄️ byos_schema.sql

Node.js Express

const express = require('express');
const fs = require('fs');
const app = express();
app.use(express.json({limit:'5mb'}));
const TOKEN = 'your-secret-token';
app.post('/byos', (req, res) => {
  if (TOKEN && req.headers.authorization !== `Bearer ${TOKEN}`)
    return res.status(401).json({error:'unauthorized'});
  fs.appendFileSync('byos.jsonl', JSON.stringify(req.body) + '\n');
  res.json({status:'ok'});
});
app.listen(3000);

Home Assistant webhook

automation:
  - alias: ErgissVAG F16 ingest
    trigger:
      platform: webhook
      webhook_id: ergissvag_f16
    action:
      service: mqtt.publish
      data:
        topic: car/vag/telemetry
        payload: "{{ trigger.json | to_json }}"

Endpoint URL: https://your-ha.duckdns.org/api/webhook/ergissvag_f16

Security & privacy

See also: Privacy Policy


ErgissVAG F16 Edition v1.0 — © 2026 Ergiss