---
title: "Nullfeld – Study Mode"
id: study-mode-nullfeld
version: "v0.1"
date: "2025-09-03"
scope: "pilot"
owner: "Crew (Eule & Vector)"
status: "pilotfaehig"
tags: ["nullfeld","study-mode","kids","mqtt","energy","audit","local-first"]
roles: ["Eule","Vector","Bugsy","SnakePy","Schnippsi","CapaciTobi","Schraubaer"]
license: "Code: AGPL-3.0; Content: CC BY-SA 4.0; Add-on: Crumbforest-Return"
summary: "Frage -> Vektor -> Aufmerksamkeit -> Kruemelcode -> (keine fertige Loesung) -> neue Fragen."
---

# Nullfeld – Study Mode (v0.1)

**Kurzsatz:** Frage -> Vektor -> Aufmerksamkeit -> KrĂŒmelcode -> (keine fertige Lösung) -> neue Fragen.  
**Prinzip:** Fragen > Tempo. Local-first. Energie sichtbar. Logs statt Bauch.

---

## 1) Wozu?

Damit Kinder atmen (nicht performen), Maschinen helfen (nicht ersetzen) und der Wald mitlernt.  
Nullfeld heißt: keine fertigen Antworten, sondern erfahrbare Schritte mit sichtbaren Spuren (Logs, Energie, Herkunft).

---

## 2) Leitplanken (non-negotiable)

- **Local-first:** Alles lÀuft offline im Pelicase (Broker/Flows). Cloud optional.
- **EinverstÀndnis & Opt-out:** Kind/Eltern verstehen in 1 Satz. Stopp jederzeit.
- **Datensparsamkeit:** Nur, was fĂŒrs Lernen/SchĂŒtzen nötig ist.
- **Auditierbar:** Jede Aktion bekommt Zeit, Zweck, Energie – als Datei.
- **Energie sichtbar:** Jede Antwort kostet Joule; wir zeigen’s.
- **RĂŒckfluss:** Wer nutzt, nennt Crumbforest und gibt etwas zurĂŒck (siehe Lizenz).

---

## 3) Datenformate

### 3.1 MQTT Topics
- Publish (Edge -> Ledger):  
  `crumb/study/<device_id>/event`
- Subscribe (Hints an Device):  
  `crumb/study/<device_id>/hint`
- Healthbeat (bestehend):  
  `crumb/esp/<id>/heartbeat`

### 3.2 Event-Payload (JSON)
```json
{
  "session_id": "cf-2025-09-03-XYZ",
  "learner_id": "pseudo-abc123",
  "mode": "study-nullfeld",
  "material": "md://spirale_co2.md#abschnitt2",
  "step": {"t":"2025-09-03T10:15:05Z","action":"explain","value":"CO2 > 1400 ppm -> Lueften"},
  "energy_joules": 42,
  "provenance": "https://crumbforest.org/specs/study-nullfeld/v0.1"
}

4) Minimal-Setup (5 Minuten)

Voraussetzung: Mosquitto lÀuft auf BROKER_IP (z. B. 192.168.50.10), User esp*, allow_anonymous false.

4.1 Node-RED (Edge)

Flow A: Ledger

  • MQTT in: topic crumb/study/+/event
  • file out (append): /var/log/crumb/study_ledger.jsonl

Flow B: Energy tick

  • inject: alle 60s
  • function: schĂ€tzt energy_joules
  • MQTT out: crumb/study/<device_id>/event

(Reicht fĂŒr Pilot. Visualisierung spĂ€ter.)


5) ESP MicroPython – Hallo Nullfeld

Ziel: WLAN, Heartbeat, eine Lern-Frage posten.

# boot.py (kompakt, robuste Defaults)
import network, time, json
from umqtt.simple import MQTTClient

SSID = "ESP-Wald"
PWD  = "***"
BROKER = "192.168.50.10"
CID = "esp-null-01"

def wifi():
    sta = network.WLAN(network.STA_IF)
    sta.active(True)
    if not sta.isconnected():
        sta.connect(SSID, PWD)
        for _ in range(50):
            if sta.isconnected(): break
            time.sleep_ms(200)
    return sta.ifconfig()

def post(topic, obj):
    c = MQTTClient(CID, BROKER, keepalive=60, ssl=False)
    c.connect()
    c.publish(topic, json.dumps(obj))
    c.disconnect()

cfg = wifi()
now = time.time()

post(f"crumb/esp/{CID}/heartbeat", {"if": cfg, "t": now})
post(f"crumb/study/{CID}/event", {
  "session_id": "demo-" + str(int(now)),
  "learner_id": "pseudo",
  "mode": "study-nullfeld",
  "material": "md://spirale_co2.md#start",
  "step": {"t": now, "action": "prompt", "value": "Warum blinkt das?"},
  "energy_joules": 1
})

6) EinverstĂ€ndnis – 1-Satz-ErklĂ€rung (UI-Baustein)

Wozu? Damit du leichter atmest und verstehst.
Was speichern wir? Frage, Antwort, Zeitpunkt, ein bisschen Technik – keine versteckten Personendaten.
Dein Knopf: Stopp jederzeit.
Energie heute: 0.04 Wh đŸŒČ

(Als Infobox direkt im UI, plus „Stopp“-Button.)


7) Energie & CO2 (sichtbar, nicht schulmeistern)

  • energy_joules = board_idle + tx_cost + compute_estimate (SchĂ€tzer reicht).
  • Anzeige: pro Schritt und pro Session (kleiner „WaldzĂ€hler“).
  • Optional CO2-Faktor (lokal definieren), z. B. gCO2_per_Wh – nur als Kontext.

8) Audit & Einsicht

  • Ledger: JSONL unter /var/log/crumb/study_ledger.jsonl
  • Rotation: tĂ€glich; Aufbewahrung: 30 Tage (Pilot)
  • Eltern-Einsicht: read-only Export (ZIP) + kurzer „Was wurde gelernt?“-Report

9) Sicherheit & Rechte

  • Standard: keine Bild/Ton-Aufnahme.
  • Kamera nur projektbezogen + separate Zustimmung.
  • Minimaldaten: keine Klarnamen im Ledger.
  • Netzwerk: ESP-VLAN -> Broker:1883; DNS/DHCP offen; Rest drop.
  • Fehlerkultur: Bug != Schuld. Bugsy loggt, Eule prĂŒft, Vector erklĂ€rt.

10) Herkunft & RĂŒckfluss

HTML-Provenance

<meta name="generator" content="Crumbforest Study Mode / Nullfeld v0.1">
<meta name="origin" content="https://crumbforest.org/specs/study-nullfeld/v0.1">
<meta name="credit" content="Built with Crumbforest Crew (Kids, Eule & Vector).">

JSON-LD

<script type="application/ld+json">
{
  "@context":"https://schema.org",
  "@type":"SoftwareApplication",
  "name":"Crumbforest Study Mode / Nullfeld",
  "version":"0.1",
  "creator":{"@type":"Organization","name":"Crumbforest Crew"},
  "license":"AGPL-3.0-or-later + CC BY-SA 4.0 + Crumbforest-Return-Addendum",
  "isAccessibleForFree": true
}
</script>

Lizenz (Kurz)

  • Code: AGPL-3.0
  • Content: CC BY-SA 4.0
  • Crumbforest-Return-Addendum: Kommerzielle Nutzung erlaubt, wenn

  • „Crumbforest Study Mode“ gut sichtbar genannt wird und

  • ein messbarer RĂŒckfluss erfolgt (z. B. Stipendium, Sachspende, 1% vom studienbezogenen Umsatz an ein offenes Kinder-Lernprojekt).

11) 5-Min-Check (vor Kids)

  1. Broker up? ss -ltn | grep 1883
  2. Topic test: mosquitto_pub/sub auf crumb/study/test/event
  3. Ledger wÀchst? tail -f /var/log/crumb/study_ledger.jsonl
  4. Energie tickt? Node-RED „tick“ schreibt Events
  5. Opt-out funktioniert? Stopp-Button stoppt sofort

12) Warum Nullfeld?

Weil Stille vor Antwort kommt.
Weil Aufmerksamkeit wertvoller ist als Output.
Weil Kinder keine KPI sind.
Und weil jede gute Frage den Wald klĂŒger macht – uns auch. đŸŒČ


13) Roadmap (leicht, spiralförmig)

  • v0.2: kleine UI-Anzeige (Energiebalken + letzte 3 Schritte)
  • v0.3: Eltern-Export (1-Klick, Passwort-ZIP)
  • v0.4: Badges (Erster Funke, Sauber geloggt) – ohne Punktejagd

Changelog: v0.1 – Erstfassung (Edge-Flows, Topics, Consent, Lizenz & RĂŒckfluss)
Kontakt: crew@crumbforest.org – Eule hört zuerst.


::contentReference[oaicite:0]{index=0}