ESP32 + AS7341 · ThingSpeak · read honestly

Spectral food sensing, presented exactly as measured.

Foodar reads a real multispectral sensor prototype through ThingSpeak, stores every reading with its original timestamp and entry id, and shows it to you with honest freshness, provenance, and uncertainty. No seeded demo data. No fabricated “safe / unsafe” verdicts.

When no real reading has arrived, the workspace says so — it never invents one.

Real hardware feed

Server-side ingestion pulls only genuine ThingSpeak entries, keyed by channel + entry id so nothing is duplicated or synthesized.

Provenance preserved

Every stored reading keeps its upstream created-at and entry id. Freshness is computed against a documented window and shown plainly.

Honest by construction

Missing fields stay missing — never zero-filled. Unverified field mappings are labeled. Errors are shown, not hidden behind fake data.

How a reading travels

The browser never talks to ThingSpeak directly. A protected server task ingests, normalizes, and stores readings; the app renders only what has actually been stored.

  1. 01

    Sensor

    AS7341 channels captured by the ESP32 under controlled illumination.

  2. 02

    ThingSpeak

    The device publishes to a private channel. Read keys stay server-side.

  3. 03

    Ingestion

    A secret-protected task pulls new entries idempotently and preserves timestamps.

  4. 04

    Workspace

    You see stored real data with freshness, provenance, and honest states.

Experimental model

A real model, reported with its real weaknesses.

Foodar ships a genuinely-trained dry-matter regressor built from a laboratory spectral dataset with group-aware validation. Its held-out performance is poor — so we say so. The workspace shows the model’s name, version, task, metrics, and limitations, and refuses to apply it where the feature space doesn’t match the live sensor.

  • Predicts a dry-matter fraction only — a compositional proxy.
  • Never labels a sample fresh, spoiled, safe, or unsafe.

Reported metrics (held-out family)

Test R²
−0.24
Test RMSE
0.329
Test MAE
0.194
CV R² (mean)
unstable

A negative R² means the model performs worse than predicting the dataset mean. It is retained to demonstrate an honest end-to-end lifecycle, not to make claims.

What Foodar will not do

Invent, seed, or simulate any reading.
Show a red/green safe-vs-unsafe verdict.
Call thresholds or if-else logic “AI”.
Detect pathogens, spoilage, or contamination.
Zero-fill or guess missing sensor fields.
Present cached upstream data as live.