# m3s-kuura/toyota-data-feeder architecture

> Architecture diagram of the GitHub repository m3s-kuura/toyota-data-feeder, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/m3s-kuura/toyota-data-feeder
- Repository: https://github.com/m3s-kuura/toyota-data-feeder

## Overview

A small demo replays Toyota RAV4 Hybrid signals from a CSV as MQTT messages. Its runtime configures a TLS MQTT client, waits for broker connection, then repeatedly reads timed rows and publishes non-empty signal values to client-specific topics. The README documents the data, topic format and broker settings; callbacks and CSV playback are implemented in feeder.py. The README also mentions original and generated CAN/DBC assets, but they are inputs/background rather than separate runtime stages shown in source.

Main entry points: [`feeder.py`](https://github.com/m3s-kuura/toyota-data-feeder/blob/master/feeder.py) (Feeder entry point), [`toyota_data.csv`](https://github.com/m3s-kuura/toyota-data-feeder/blob/master/toyota_data.csv) (Mapped vehicle signals)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Playback and publishing"]
  node_feeder["Feeder entry point<br/>[feeder.py]"]
  node_mqtt_setup["MQTT TLS setup<br/>[feeder.py]"]
  node_connection_callbacks["Connection callbacks<br/>[feeder.py]"]
  node_csv_playback["CSV playback<br/>[feeder.py]"]
end

subgraph group_data["Vehicle data"]
  node_recorded_signals["Mapped vehicle signals<br/>[toyota_data.csv]"]
  node_original_log["Original vehicle log"]
  node_dbc["RAV4 Hybrid DBC"]
end

node_operator(("Operator"))
node_mqtt_broker(("MQTT broker"))

node_operator -->|"runs"| node_feeder
node_feeder -->|"configures"| node_mqtt_setup
node_mqtt_setup -->|"connects securely"| node_mqtt_broker
node_mqtt_setup -->|"registers"| node_connection_callbacks
node_feeder -->|"waits for status"| node_connection_callbacks
node_feeder -->|"starts after connection"| node_csv_playback
node_csv_playback -->|"reads repeatedly"| node_recorded_signals
node_csv_playback -->|"publishes signal topics"| node_mqtt_broker

click node_feeder "https://github.com/m3s-kuura/toyota-data-feeder/blob/master/feeder.py"
click node_mqtt_setup "https://github.com/m3s-kuura/toyota-data-feeder/blob/master/feeder.py"
click node_connection_callbacks "https://github.com/m3s-kuura/toyota-data-feeder/blob/master/feeder.py"
click node_csv_playback "https://github.com/m3s-kuura/toyota-data-feeder/blob/master/feeder.py"
click node_recorded_signals "https://github.com/m3s-kuura/toyota-data-feeder/blob/master/toyota_data.csv"
click node_original_log "https://github.com/m3s-kuura/toyota-data-feeder/blob/master/assets/toyota_data_original.csv"
click node_dbc "https://github.com/m3s-kuura/toyota-data-feeder/blob/master/assets/toyota_rav4_hybrid_2017_pt_generated.dbc"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_feeder,node_mqtt_setup,node_connection_callbacks,node_csv_playback toneBlue
class node_recorded_signals,node_original_log,node_dbc toneAmber
class node_operator,node_mqtt_broker toneIndigo
```

## Components

### Playback and publishing

- [Feeder entry point](https://github.com/m3s-kuura/toyota-data-feeder/blob/master/feeder.py): `feeder.py`
- [MQTT TLS setup](https://github.com/m3s-kuura/toyota-data-feeder/blob/master/feeder.py): `feeder.py`
- [Connection callbacks](https://github.com/m3s-kuura/toyota-data-feeder/blob/master/feeder.py): `feeder.py`
- [CSV playback](https://github.com/m3s-kuura/toyota-data-feeder/blob/master/feeder.py): `feeder.py`

### Vehicle data

- [Mapped vehicle signals](https://github.com/m3s-kuura/toyota-data-feeder/blob/master/toyota_data.csv): `toyota_data.csv`
- [Original vehicle log](https://github.com/m3s-kuura/toyota-data-feeder/blob/master/assets/toyota_data_original.csv): `assets/toyota_data_original.csv`
- [RAV4 Hybrid DBC](https://github.com/m3s-kuura/toyota-data-feeder/blob/master/assets/toyota_rav4_hybrid_2017_pt_generated.dbc): `assets/toyota_rav4_hybrid_2017_pt_generated.dbc`

### Other components

- **Operator**
- **MQTT broker**

## Connections

- Operator → Feeder entry point: runs (evidence: `readme.md`)
- Feeder entry point → MQTT TLS setup: configures (evidence: `feeder.py`)
- MQTT TLS setup → MQTT broker: connects securely (evidence: `feeder.py`)
- MQTT TLS setup → Connection callbacks: registers (evidence: `feeder.py`)
- Feeder entry point → Connection callbacks: waits for status (evidence: `feeder.py`)
- Feeder entry point → CSV playback: starts after connection (evidence: `feeder.py`)
- CSV playback → Mapped vehicle signals: reads repeatedly (evidence: `feeder.py`)
- CSV playback → MQTT broker: publishes signal topics (evidence: `feeder.py`)
