MeshCom Watch

Handbuch

LilyGo T-Watch-S3-Plus · Amateurfunk über LoRa 433 MHz
Firmware1.0.5.36
BasisSMashCom42 42.0.3.1
Stand04.10.2026
VerfasserChristian Raith, OE3LCR
GrundlageWolfgang Zelinka, OE3WAS
Dieses Handbuch beschreibt die Bedienung der Uhr vollständig — von der Konsole bis zur Wischgeste.

MeshCom Watch — Handbuch 1.0.5.36

1 Über dieses Handbuch

Dieses Handbuch beschreibt die MeshCom Watch — eine Amateurfunk-Firmware für die LilyGo T-Watch-S3-Plus, die das Gerät zu einer tragbaren MeshCom-Station macht.

Es richtet sich an Funkamateure, die die Uhr benutzen wollen, und setzt keine Programmierkenntnisse voraus. Wo es technisch wird, steht dabei, warum.

1.1 Was die Uhr ist

Ein MeshCom-Knoten, den man wie eine Armbanduhr bedient. LoRa-Nachrichten auf 433 MHz senden und empfangen, Positionen verfolgen, per WLAN und MQTT ans Netz — verpackt in eine Bedienung ohne Menübäume und Tastenkombinationen.

Drei Dinge bestimmen den Entwurf:

Funk zuerst Wenn alles andere ausfällt, muss MeshCom-Empfang und -Senden funktionieren.
Eine Datei Flashen wie bei Tasmota: eine .bin, ein Browser, fertig.
Lange durchhalten Eine Uhr, die mittags leer ist, trägt niemand.

1.2 Herkunft

Die Firmware ist ein eigenständiger Zweig von SMashCom42 von Wolfgang Zelinka (OE3WAS), weiterentwickelt von Christian Raith (OE3LCR). Die Bedienung ist eigenständig, der Funk-Kern wird vom Ursprungsprojekt nachgezogen. Beide Teile stehen unter MIT-Lizenz.

Die Uhr trägt deshalb zwei Versionsnummern: die eigene (1.0.5.36) und die des Standes, auf dem sie aufsetzt (SMashCom42 42.0.3.1). Beide stehen auf dem Info-Schirm.

1.3 Wie dieses Handbuch zu lesen ist

Wer die Uhr neu bekommen hat, liest der Reihe nach: Inbetriebnahme, Grundbedienung, dann die Schirme. Wer etwas Bestimmtes sucht, geht über das Inhaltsverzeichnis.

Kästen mit ⚠️ enthalten Dinge, die man einmal falsch macht und danach nie wieder — sie sind aus tatsächlichen Fehlversuchen entstanden, nicht aus Vorsicht.

2 Inbetriebnahme

2.1 Was gebraucht wird

2.2 Firmware aufspielen

Die veröffentlichte firmware.factory.bin ist ein Komplettabbild: Bootloader, Partitionstabelle und Firmware liegen bereits an den richtigen Stellen. Sie wird immer an Offset 0x0 geschrieben.

⚠️ An 0x0 gehört nur die firmware.factory.bin. Die firmware.bin ist das reine App-Abbild für Updates über die Luft und darf dort nicht verwendet werden.

2.2.1 Über den Browser

  1. Die Uhr mit dem USB-Datenkabel anschließen. Alle Programme schließen, die den seriellen Anschluss belegen (serieller Monitor, screen).
  2. craith.cloud/espflash öffnen.
  3. Als Gerät LilyGo T-Watch-S3-Plus wählen.
  4. Verbinden & Flashen anklicken und im Dialog den seriellen Anschluss der Uhr auswählen.
  5. Löschen nur beim ersten Mal, beim Wechsel von einer anderen Firmware oder für einen Werksreset — dabei gehen auch alle gespeicherten Einstellungen verloren.
  6. Den Vorgang vollständig abwarten.
  7. Einmal von Hand die RESET-Taste drücken (rechte obere Taste) — siehe Warnhinweis unten.

Kommt keine Verbindung zustande: BOOT gedrückt halten (linke obere Taste), RESET kurz drücken (rechte obere Taste), BOOT loslassen, erneut versuchen.

⚠️ Nach dem Flashen ist die USB-Konsole nicht von selbst erreichbar. Der Browser zeigt den Anschluss weiter an, verbindet aber nicht — auch nach mehreren Minuten Warten nicht. Grund: Der ESP32-S3 hängt am eingebauten USB-Anschluss (USB-Serial-JTAG, kein zusätzlicher Chip dafür), und der Browser-Flasher kann ihn nach dem Schreiben nicht hart zurücksetzen — ein Soft-Reset genügt nicht, um die USB-Konsole neu anzumelden. Kein Firmware-Fehler, sondern ein notwendiger Handgriff: einmal die RESET-Taste drücken, danach meldet sich die Konsole normal.

💾 Einstellungen bleiben erhalten — trotzdem vorher sichern: Seit dem Flasher-Stand vom 7. September 2026 schreibt der Browser-Flasher Bootloader, Partitionstabelle und Firmware einzeln und lässt den Einstellungsspeicher (Rufzeichen, WLAN-Zugänge, Kennwörter) dazwischen stehen. Nur mit angehaktem „Erase device / Löschen” ist alles weg. Eine Sicherung kostet nichts: auf der Weboberfläche der Uhr unter Einstellungen → Sicherung die Textdatei herunterladen. Der vollständige Ablauf steht im Kapitel Firmware aktualisieren, Abschnitt „Einstellungen sichern und wiederherstellen”.

2.3 Erste Einstellungen

Nach dem ersten Start kennt die Uhr weder Rufzeichen noch WLAN. Beides wird über die Konsole gesetzt — siehe das Kapitel zur Konsolenbedienung.

⚠️ Ohne gültiges Rufzeichen sendet die Uhr nicht. Empfangen kann sie sofort.

Die SSID ist eine Zahl (seit 1.0.5.25). -01 und -1 bezeichnen dieselbe Station, richtig geschrieben wird -1; -0 und -00 heißen „keine SSID“. Die Uhr schreibt das eigene Rufzeichen deshalb so um, wie es die MeshCom-Firmware ab 4.35v tut: --setCALL OE3XYZ-01 speichert OE3XYZ-1, ein schon gespeichertes OE3XYZ-01 wird beim nächsten Start einmal geradegezogen. Längere Rufzeichen als neun Zeichen nimmt sie nicht an. Gespeicherte Ziele und Favoriten mit -0x bitte von Hand nachziehen, sonst erreichen sie die Station nicht mehr.

2.4 WLAN ohne Kabel einrichten

Ist noch kein Netz eingetragen (frisch geflasht), spannt die Uhr einen eigenen Zugangspunkt auf. Damit lassen sich Netz und Kennwort im Browser eintragen, ohne die Uhr anzustecken. Sind Netze eingetragen, aber gerade keines erreichbar, gibt es keinen Zugangspunkt — die Uhr sucht stattdessen alle 60 Sekunden weiter (seit 1.0.3.111; vorher blockierte der Zugangspunkt fünf Minuten lang jede Suche, auch nach einem bloß geflackerten Start).

2.5 Wenn das WLAN wegbleibt

Die Uhr kennt bis zu drei Netze (Slots 1–3, z. B. Zuhause, Hotspot des Telefons, Vereinsheim). Beim Start verbindet sie sich mit dem stärksten davon. Reißt die Verbindung ab oder ist beim Start keines in Reichweite, bleibt die WLAN-Kachel orange — und die Uhr sucht seit 1.0.3.107 von selbst alle 60 Sekunden nach allen drei Netzen und verbindet sich mit dem stärksten, das sie findet. Wer also zu Hause startet und mit dem Telefon-Hotspot losgeht, muss nichts mehr von Hand verbinden. (Bis 1.0.3.106 versuchte die Uhr nur das Netz vom Start; ein Wechsel zum Hotspot ging nur über den WLAN-Schirm.) Der WLAN-Schirm bleibt für den gezielten Griff zu einem bestimmten Slot.

Seit 1.0.3.110 fragt die Uhr dabei jedes eingetragene Netz, das im Rundum-Scan fehlt, noch einmal gezielt mit Namen an — so findet sie auch Netze, die ihren Namen nicht aussenden (versteckte SSID).

Zum Hotspot eines iPhones: Solange er wach ist, sieht ihn die Uhr im normalen Suchlauf (gemessen 27.08.2026: noch 22 Minuten nach dem Schließen der Hotspot-Seite bei gesperrtem iPhone). Schaltet das iPhone den Hotspot irgendwann ganz ab, findet ihn kein Suchlauf mehr — auch der gezielte nicht; wecken kann ihn nur das iPhone selbst (Einstellungen → Persönlicher Hotspot öffnen). Die Uhr sucht weiter alle 60 Sekunden und verbindet sich, sobald er wieder da ist. Der Mac zeigt den Hotspot übrigens auch dann an, wenn er schläft — über Bluetooth, nicht über WLAN. Nötig bleibt am iPhone „Maximale Kompatibilität” (2,4 GHz — die Uhr kann kein 5 GHz). Und: Es gewinnt immer das stärkste bekannte Netz; wer zu Hause lieber den Hotspot will, tippt ihn im WLAN-Schirm an.

Jede Suche kostet etwa zwei Sekunden Funkbetrieb, plus rund 1,5 Sekunden je eingetragenem Netz, das gerade nicht zu sehen ist. Wer unterwegs kein Netz braucht, schaltet die WLAN-Kachel aus (oder --wlan off) — dann ruht auch die Suche. --wlan ohne Zusatz zeigt, was der Funkchip selbst meldet (Netz, Signalstärke, IP) und was der Suchautomat gerade tut; --wlan scan sucht sofort (und trennt dafür eine bestehende Verbindung — etwa um vom Heimnetz auf den Hotspot zu wechseln, ohne 60 Sekunden zu warten).

3 Grundbedienung

Die gesamte Bedienung kommt mit vier Gesten und zwei Tasten aus. Wer sie kennt, braucht dieses Handbuch nicht mehr.

3.1 Die vier Gesten

Geste Wirkung
Wischen Schirm wechseln — waagrecht und senkrecht
Tippen Schalten: Modul ein/aus, Meldung senden, Auswahl treffen
Langdruck Ansehen ohne zu schalten (etwa eine Modul-Detailseite)
Krone kurz Zurück zum Ziffernblatt, von überall

3.2 Die zwei Tasten

Bedient wird mit zwei Tasten: der Krone und der BOOT-Taste (die linke obere — dieselbe, die beim Flashen hilft). Beide führen zu den drei Schirmen, die man am häufigsten braucht — ohne Wischen, auch mit dunklem Schirm:

Taste Wirkung
Krone kurz Ziffernblatt — der Heimweg von überall
BOOT einmal tippen Modul-Schirm
BOOT doppelt tippen Meldungen

Ist der Schirm dunkel, weckt der Tastendruck die Uhr und springt zum Ziel — anders als der Weck-Tipp auf den Schirm, der nur aufweckt.

⚠️ Die Krone nicht länger als sechs Sekunden halten. Dann schaltet der Stromregler die Uhr hardwareseitig ab — das ist keine Funktion der Firmware, sondern in den Chip eingebaut. Wieder einschalten: Krone erneut lang drücken.

Wer die Uhr per Konsolenbefehl --setAPP WZ auf die SMashCom42-Oberfläche von OE3WAS stellt, bekommt dessen Tastenbelegung: Die BOOT-Taste gehört dann vollständig jenem Konzept, diese Firmware fasst sie dort nicht an.

⚠️ Wischen schaltet nie. Das klingt selbstverständlich, war es aber nicht: LVGL meldet einen Langdruck bereits nach 400 ms, unabhängig davon, ob der Finger sich weiterbewegt. Jeder Wisch riss dadurch in eine Detailseite. Entschieden wird deshalb erst beim Loslassen — und wenn der Finger dabei gewandert ist, war es ein Wisch.

3.3 Zwei Schleifen, ein Kreuzungspunkt

Alle Schirme liegen auf zwei geschlossenen Schleifen, die sich beim Ziffernblatt kreuzen. Wer immer in dieselbe Richtung wischt, kommt dort wieder an — man kann sich nicht verlaufen.

3.4 Der Schirm geht aus

Nach einer einstellbaren Zeit ohne Bedienung schaltet die Uhr Schirm und Beleuchtung ab. Ein Tipp weckt sie.

Eine Meldung weckt die Uhr (seit 1.0.5.27). Ist der Schirm dunkel und kommt eine Meldung, die wecken darf (Modul VIB, Schalter „Wecken: Draht“ bzw. „Wecken: Funk“), geht der Schirm an und zeigt diese Meldung, nicht die Uhr:

Was passiert Was die Uhr zeigt
Meldung kommt bei dunklem Schirm die Meldung, bis die Blank-Zeit aus dem Setup abläuft
Tipp oder Handgelenk heben, solange „Meldung merken“ läuft wieder die Meldung (sind inzwischen mehrere gekommen, die neueste; senkrecht blättern)
Tipp nach Ablauf von „Meldung merken“ die Uhr, wie bisher
Krone immer die Uhr
Schirm war schon an nichts ändert sich, die Uhr vibriert nur

Ein Wisch weg von der Meldung oder die Krone beendet das Merken sofort. Liegt die Uhr länger still auf dem Tisch, geht der Schirm wie immer schon nach 15 s aus (Akku); ein Tipp bringt die Meldung dann zurück. In der Nachtruhe fürs Licht bleibt der Schirm dunkel.

⚠️ Der Weck-Tipp löst nie eine Aussendung aus. Ist der Schirm dunkel, weckt der erste Kontakt nur auf. Andernfalls hätte ein Griff an die Uhr in der Tasche gefunkt.

4 Die Schirme im Einzelnen

4.1 Übersicht der Nachbarschaften

Die folgende Tabelle ist beim Bau dieses Handbuchs aus dem Quelltext gelesen worden und gibt den tatsächlichen Stand wieder:

Schirm ← links rechts → ↑ hoch ↓ runter
Akku — — Modul 1 Modul 1
Audio — — Modul 1 Modul 1
BLE — — Modul 1 Modul 1
Gateway — — Modul 1 Modul 1
GPS — — Modul 1 Modul 1
Info Stationen Meldungen Zeitzone Setup
Kalender — — OTA Wecker
LoRa — — Modul 1 Modul 1
Meldung Meldungen Senden — —
Meldungen Ziffernblatt Senden — —
Modul 1 Senden Stationen Modul 2 Modul 2
Modul 2 Senden Stationen Modul 1 Modul 1
MQTT — — Modul 1 Modul 1
NTP — — Modul 1 Modul 1
OTA Stationen Meldungen Setup Kalender
Radar Modul 1 Ziffernblatt Stationen —
Schreiben Meldungen Modul 1 Senden Senden
Senden Meldungen Modul 1 Schreiben Schreiben
Setup — — Info OTA
Stationen Modul 1 Ziffernblatt — Radar
Vibration — — Modul 1 Modul 1
Wecker — — Kalender Ziffernblatt
Wecker bearbeiten — — — —
Wecker klingelt — — — —
WLAN — — Modul 1 Modul 1
Zeitzone Stationen Meldungen Ziffernblatt Info
Ziffernblatt Stationen Meldungen Wecker Zeitzone

4.2 Ziffernblatt

Der Startschirm und die Mitte der Bedienung. Zeigt Uhrzeit mit Sekundenzeiger, Rufzeichen, Akkustand und den Verbindungszustand.

Langdruck in den unteren Ecken (seit 1.0.4.124): den Finger etwa eine halbe Sekunde unten rechts halten, beim Loslassen öffnet sich der Meldungsschirm, mit oder ohne rote Meldungszahl. Unten links führt der Langdruck zum Akku-Detailschirm, dort wo auch die Ladestrom-Warnung (rotes Dreieck) herkommt. Ein Wisch, der in einer Ecke beginnt, bleibt ein Wisch.

Drei Zifferblätter zur Wahl (Stromzähler seit 1.0.4.146, Funkraumuhr seit 1.0.5.14): Ab Werk zeigt die Uhr die Bahnhofsuhr mit Zeigern. Wer mag, kann stattdessen den Stromzähler wählen — ein sechsstelliges Zählwerk wie bei einem alten Ferraris-Stromzähler, das die Uhrzeit als Stunden, Minuten und Sekunden zeigt. Die Gestaltungsidee dazu ist an „meterClock” von Volos Projects (github.com/VolosR/meterClock) angelehnt und eigenständig nachgebaut.

So liest sich das Zählwerk (Stand 1.0.4.171): Stunden und Minuten stehen in vier weißen Ziffern auf schwarzen Rollen, dicht daneben die Sekunden in zwei roten — genau wie an einem echten Zähler, wo die Nachkommastellen rot hinterlegt sind. Zwischen beiden sitzt das Komma als kleiner schwarzer Punkt in einer runden Ausnehmung. Unter den Rollen stehen ihre Wertigkeiten: 1000 für die Zehnerstunden, 100 für die Stunden, 10 für die Zehnerminuten, 1 für die Minuten, dann 0,1 und 0,01 für die beiden Sekundenstellen.

Die Rollen drehen sich. Zählt eine Stelle weiter, rollt sie nach oben weg und die neue Ziffer kommt von unten nach — wie das Zählwerk eines echten Zählers, gut eine halbe Sekunde lang und weich an- und auslaufend. Beim Übertrag drehen sich alle betroffenen Stellen gemeinsam: aus 59 wird 00, indem beide Sekundenrollen zugleich weiterlaufen. Springt die Anzeige dagegen (etwa nachdem der Bildschirm aus war), wechselt sie ohne Drehung: ein Zähler rollt beim Weiterzählen, nicht beim Springen. Die ganz rechte Rolle trägt außerdem eine Feinteilung — ein langer Strich und vier kurze —, die mitläuft, ebenfalls wie am Vorbild.

Oben trägt die Platte das eigene Rufzeichen. Darunter liegt das Fenster mit der Scheibe: ein schmales helles Band mit Verlauf, mittig von der schwarzen Welle durchstoßen, auf der es sitzt; links und rechts zeigen Pfeile die Laufrichtung. Darin zieht die rote Marke ihre Runden — sie taucht am linken Rand auf, wird zur Mitte hin breit und verschwindet rechts wieder, alle sieben Sekunden einmal.

Der Streifen am unteren Rand ist das Typenschild: links die gemessene Akkuspannung, in der Mitte die Akkuanzeige mit Prozentzahl, rechts die verbleibende Kapazität in mAh. Die Restkapazität ist eine Schätzung aus dem Ladestand — sie sackt unter Last mit der Spannung ab und kommt danach wieder, weil die Uhr den Ladestand aus der Spannung bestimmt und nicht aus einer Ladungsbilanz.

Die Funkraumuhr (seit 1.0.5.14, Idee OE1MOJ) ist das Zifferblatt der Seefunk-Funkraumuhr, wie sie bis zur Einführung von GMDSS (1999) in jeder Schiffsfunkstation hing. Die farbigen Keile sind die Funkstille-Zeiten: grün von Minute 00 bis 03 und 30 bis 33 (Sprechfunk 2182 kHz), rot von 15 bis 18 und 45 bis 48 (Telegrafie 500 kHz). Steht der Minutenzeiger in einem Keil, galt auf dieser Notfrequenz Funkstille — alle hörten nur, damit auch schwache Notrufe durchkamen. Der Zeiger stellt die Ampel, ablesen muss man nichts. Außen läuft ein Ring aus zwölf roten Bögen: je 4 Sekunden Strich und 1 Sekunde Pause, zusammen eine Minute — das ist das Alarmzeichen der Telegrafie, das ein Funker notfalls von Hand tastete, indem er mit der Taste dem Sekundenzeiger über die Bögen folgte. Jeder Bogen beginnt genau auf einer 5-Sekunden-Marke. Die Minuterie trägt einen Strich je Minute, einen kurzen Balken je fünf Minuten und die Zahlen 60, 15, 30 und 45; innen stehen die Stunden 1–12 groß und 13–23 und 00 klein. Der Sekundenzeiger springt einmal je Sekunde (kein Gleiten) und reicht bis in den roten Ring. Das Zifferblatt zeigt die Ortszeit; die Funkstille- Keile stimmen trotzdem, weil sich unsere Zeitzone nur um ganze Stunden von UTC unterscheidet. Rechts unten steht die Akkuanzeige mit Prozentzahl, links unten das eingestellte Rufzeichen mit Suffix (etwa OE3LCR-55) — ändert man es, steht das neue binnen einer Sekunde da.

Die Funkraumuhr gibt es rund (wie das Original) und quadratisch — dann laufen Ringe und Keile bis in die Ecken des Schirms und das Blatt wirkt größer. Umgeschaltet wird mit einem Doppeltipp auf die obere Hälfte.

Doppeltipp auf allen Zifferblättern (seit 1.0.5.14): zweimal kurz hintereinander auf dieselbe Stelle tippen, ohne zu wischen.

Stelle des Doppeltipps Wirkung
obere Hälfte Funkraumuhr rund ↔︎ quadratisch (nur dort)
rechts unten Akkuanzeige aus- bzw. wieder einblenden
links unten Rufzeichen aus- bzw. wieder einblenden

Akkuanzeige und Rufzeichen gelten für alle Zifferblätter gemeinsam: wer sie auf der Funkraumuhr ausblendet, sieht sie auch auf der Bahnhofsuhr nicht mehr. Ein Doppeltipp auf den dunklen Schirm weckt ihn nur und schaltet nichts um. Alles übersteht einen Neustart.

Zum Wechseln des Zifferblatts den Finger etwa 3 Sekunden auf die obere Hälfte halten, bis die Uhr kurz vibriert, dann loslassen — die unteren Ecken bleiben dabei frei und öffnen weiterhin Meldungen bzw. Akku-Detail. Oben erscheint ein Balken mit dem Namen des Zifferblatts und „Wischen = blaettern, Tippen = nehmen”. Wischen nach links oder rechts blättert im Kreis durch alle drei (schon als echtes Zifferblatt, nicht als Bild) — so oft man will, die Auswahl bleibt offen. Ein ruhiger Tipp irgendwo auf das Zifferblatt übernimmt das angezeigte und speichert es (seit 1.0.5.14; vorher legte schon der Wisch die Wahl fest). Die Krone bricht ab, ebenso 30 Sekunden ganz ohne Eingabe — dann bleibt das bisherige Zifferblatt.

Die Wahl übersteht einen Neustart — die Uhr merkt sich, welches Zifferblatt zuletzt eingestellt war. Wer lieber über die Konsole umschaltet: --watchface zeigt das aktive Zifferblatt, --watchface funkuhr (oder 2) stellt die Funkraumuhr ein, entsprechend bahnhofsuhr (0) und stromzaehler (1).

4.3 Meldungen

Die Übersicht. Der Schirm beginnt mit einer Übersicht der Ebenen als farbige Felder: ALL (alles außer Direktmeldungen und den eigenen Gruppen), DM (Direktmeldungen ans eigene Rufzeichen) und jeder unter Setup bzw. per --setgrc belegte Gruppenplatz (bis zu sechs). Jedes Feld trägt seine Kennfarbe (ALL blau, DM gold, die Gruppen in Konfigurationsreihenfolge grau/grün/violett/türkis/orange/braun) und rechts, in kleinerer Schrift, den Zähler neu / gesamt: „3 / 5” heißt drei ungelesene von fünf Meldungen in dieser Ebene (seit 1.0.4.42; davor stand dort nur die Gesamtzahl). Liegt in einer Ebene eine ungelesene Meldung, leuchtet das Feld zusätzlich in voller Farbe; ist alles gelesen, ist es hell — auf einen Blick ist zu sehen, wo etwas Neues wartet (seit 1.0.4.40; in 1.0.4.38/.39 wechselte stattdessen ein waagrechter Wisch die Ebenen als Karussell). Waagrechtes Wischen auf der Übersicht ist der Ring: links zum Ziffernblatt, rechts zum Senden.

Die Liste. Ein Tipp auf ein Feld öffnet die Meldungen dieser Ebene, die neueste oben — vier je Blatt. Jede Karte zeigt oben Rufzeichen und Zeit, darunter den Anfang der Meldung; ein zu langer Text endet mit „…“ (seit 1.0.5.8 — vorher lag die Textzeile unter dem Kartenrand, und nur Emoji-Spitzen oder Umlautpunkte schauten hervor). Senkrechtes Wischen blättert seitenweise: hoch zu den älteren, runter zu den neueren; ein Wisch nach links führt zurück zur Übersicht, ein Wisch nach rechts zum Senden an diese Ebene (seit 1.0.5.26, siehe unten). Die Kopfzeile trägt Kennfarbe und Namen der Ebene, darunter zählt die Positionsanzeige innerhalb der Ebene, z. B. „ALL: 1 - 3 / 12”. Eine Ebene ohne Meldungen zeigt „Noch keine Meldung” und darunter die beiden Wege zum Senden: „Wisch nach rechts: Senden an 2321” und „Lang drücken: Schreiben”. Vorher kam man in einer leeren Gruppe nicht an die vorbereiteten Textbausteine, weil es keine Meldung zum Antworten gab.

Löschen (seit 1.0.4.54). Ein langer Druck auf ein Feld der Übersicht öffnet eine Tafel in der Farbe der Ebene: „DM loeschen?” mit dem Zähler („34 Meldungen, 3 neu”) und zwei Knöpfen — „Alle loeschen” (rot) räumt die Ebene komplett, „Nur gelesene loeschen” lässt Ungelesenes stehen. Bei ALL heißt „alle” wirklich alle: auch DM und alle Gruppen, die Tafel sagt es dazu. Ein Wisch in beliebiger Richtung oder die Krone bricht ab, ohne etwas zu löschen; der kurze Tipp öffnet wie bisher die Liste. Gelöscht wird endgültig — auf der Uhr, in der Webseite und im Meldungsspeicher der Uhr; auch nach einem Neustart oder nach Stromlos kommen die Meldungen nicht zurück. Wer alles gelöscht hat, sieht danach eine leere Liste, keine Demo-Meldungen. Ein Langdruck auf ein leeres Feld bleibt folgenlos.

Rechts neben dem Rufzeichen steht, wann die Meldung kam (seit 1.0.4.51): heute die Uhrzeit („20:30”), vom Vortag das Wort „gestern”, davor Wochentag und Datum — „Di 02.09.”. Vorher stand dort bei älteren Meldungen nur „02.09”, und das war von „02:09” kaum zu unterscheiden. Meldungen aus der Zeit vor dem Umbau, denen die genaue Uhrzeit fehlt, zeigen weiterhin das, was gespeichert ist.

Die Meldung. Eine angetippte Zeile öffnet die Detailansicht mit vollem Text und Absender. Rechts in der Rufzeichenzeile steht seit 1.0.5.3 klein, die wievielte Meldung der Ebene das ist — „3/7” heißt: dritte von sieben. So sieht man beim Durchblättern, wie viele noch folgen. Ein Tipp oder ein Wisch nach links führt zurück, und es steht wieder dasselbe Blatt derselben Ebene da, von dem aus geöffnet wurde; ein Wisch nach rechts führt zum Senden — mit dem Ziel dieser Meldung (siehe unten). Unter dem Text steht in einer kleinen Zeile die Empfangszeit mit Ziel, Signalstärke (RSSI) und Rauschabstand (SNR). Sie zeigt seit 1.0.4.51 Datum und Ortszeit — „Di 02.09. 20:30”, bei einer Meldung von heute nur „20:30”. Bis 1.0.4.50 stand dort „UTC 20:30”, also die Funk-Log-Zeit ohne Datum; eine Meldung von vorgestern war damit nicht einzuordnen. Die UTC-Zeit bleibt gespeichert, sie wird nur nicht mehr angezeigt. Wird die Zeile zu lang, bricht sie um, und „Antippen zum Zurück” rutscht mit nach unten. Bei langen Texten rutscht diese Zeile unter den Text, und die Ansicht lässt sich senkrecht rollen (seit 1.0.3.112 — vorher schrieb sie bei langen Meldungen in den Text hinein, und der letzten Zeile fehlte die Unterlänge).

Kopieren und antworten (seit 1.0.5.21). Ein Doppeltipp in der Detailansicht kopiert den Text der Meldung; die Uhr vibriert kurz und zeigt „Kopiert”. Ein einfacher Tipp führt weiter zur Liste zurück, wartet dafür aber eine Drittelsekunde auf einen möglichen zweiten Tipp. Ein Langdruck öffnet den Schreibschirm (siehe „Schreiben” unten) mit dem passenden Ziel: an den Absender einer Direktmeldung, an die Gruppe einer Gruppenmeldung. Derselbe Langdruck wirkt auf jeder Zeile einer Liste und auf der freien Fläche darunter — dort mit der Gruppe der Ebene. Bei einer eigenen Direktmeldung kennt die Uhr den Empfänger nicht; dann bleibt das zuletzt gewählte Ziel stehen. In der Übersicht bleibt der Langdruck „Löschen”.

Auch hier schließt sich die Schleife. Hinter dem letzten Blatt kommt wieder das erste, vor dem ersten das letzte — wie bei den Schirmen selbst. Man kann nicht ins Leere blättern.

Systemtelegramme des Netzes werden ausgefiltert — sie kämen sonst im Fünfminutentakt, 288-mal am Tag, und würden sowohl die Liste als auch den Schlaf der Uhr stören.

Emojis und Flaggen: Meldungen zeigen 98 Emojis als kleine Bilder (Wetter, Stimmung, Seefahrt …). Länderflaggen wie 🇦🇹 🇩🇪 🇨🇭 sind im Text eigentlich zwei Zeichen; die Uhr fasst sie zusammen und zeigt das Flaggenbild — für 31 Länder (Europa, US, CA, AU; Liste FLAGGEN in tools/make_emoji_data.py, Bilder in tools/flaggen/, seit 1.0.4.1). Ein unbekanntes Emoji oder eine unbekannte Flagge bleibt ein leeres Kästchen und steht im seriellen Log als „fehlt: U+…“.

Buchstaben aus Nachbarländern: Meldungen können seit 1.0.4.173 auch ę ż ć ś ń und ihre Verwandten anzeigen — die Schrift der Meldungsliste und der Einzelansicht deckt jetzt neben Deutsch, Französisch, Spanisch und den nordischen Sprachen auch Polnisch, Tschechisch, Slowakisch, Ungarisch, Kroatisch und die baltischen Sprachen ab. Zuvor erschienen diese Buchstaben als leere Kästchen.

Beim erneuten Öffnen des Meldungsschirms (Ring, Doppeltipp auf BOOT) steht wieder die Übersicht, unabhängig davon, welche Ebene zuletzt offen war. Der Doppeltipp und die Krone bleiben in jeder Ansicht der Heimweg.

4.4 Senden

Fünf vorbereitete Textbausteine. Ein Tipp sendet — siehe das Kapitel zum Funken für die Bedeutung der Farben. Karte 6 pingt die zuletzt gehörte Station; ein Langdruck auf der Karte frischt dieses Ziel auf.

An wen? Wird der Schirm aus der Übersicht der Meldungen oder von den Modulen her betreten, gehen die Bausteine als Rundmeldung an alle — die Kopfzeile zeigt „SENDEN”. Kommt der Wisch aus einer geöffneten Meldung (Wisch nach rechts in der Detailansicht), antworten die Bausteine dieser Meldung: einer Direktmeldung an ihren Absender, einer Gruppenmeldung an die Gruppe, einer Rundmeldung an alle. Die Kopfzeile zeigt dann das Ziel in der Kennfarbe der Ebene, z. B. „AN 20” oder „AN OE3XYZ-1” (seit 1.0.4.40). Beim nächsten Betreten auf anderem Weg ist das Ziel wieder „alle” — ein Antwortziel bleibt nie hängen.

Seit 1.0.5.26 gibt es zwei weitere Wege zum Ziel:

Wischt man aus dem Schreibschirm herüber, übernimmt „Senden” dessen Ziel und umgekehrt.

4.5 Schreiben (seit 1.0.5.17)

Freier Text direkt an der Uhr, mit einer Telefontastatur. Erreichbar auf zwei Wegen: in „Senden” senkrecht wischen (nach oben oder unten), oder Langdruck im Meldungsschirm (siehe oben). „Senden” und „Schreiben” bilden eine Schleife: senkrecht wischen wechselt zwischen beiden, in welche Richtung auch immer (seit 1.0.5.22). Waagrecht führt auch das Schreiben zu denselben Nachbarn wie „Senden” — links die Meldungen, rechts die Module. ✕ führt dorthin zurück, woher man kam. Der Entwurf bleibt dabei stehen.

Bedienung Wirkung
Taste tippen Buchstabe; dieselbe Taste binnen 0,9 s schaltet weiter (2 = A B C Ä 2), die wartende Taste ist orange
Langdruck auf eine Zeichentaste die Ziffer direkt
Modus (unten links) ABC → abc → T9 → 123
T9 (seit 1.0.5.23) jede Taste einmal je Buchstabe, das passende Wort steht sofort da („Wort 1/6”); 1 (orange, ⟳) = nächster Vorschlag, 0 = übernehmen + Leerzeichen, ⌫ = letzte Ziffer zurück. Vorschläge: zuerst Amateurfunk (QTH, QSL, MESHCOM …), dann Deutsch, dann Englisch; „schön” geht als 72466 und als „schoen”
0 Leerzeichen (zweimal = 0)
⌫ / Langdruck ⌫ ein Zeichen löschen / alles löschen
Langdruck auf das Textfeld einfügen, was per Doppeltipp kopiert wurde
„AN … ▾” klappt die Zielliste auf: alle, deine Gruppen, deine Gesprächspartner, die zuletzt gehörten Stationen — jede Zeile in der Farbe ihrer Ebene im Meldungsschirm
Senden (oben rechts) grau ohne Text; dann orange → blau → grün wie bei den Bausteinen

Findet T9 kein Wort, bleiben die Ziffern stehen und unten rechts steht „kein Wort” — dann auf ABC wechseln und das Wort Buchstabe für Buchstabe tippen.

Höchstens 150 Byte; der Zähler steht unten rechts im Textfeld, ein Umlaut zählt doppelt. Nach dem grünen Haken ist der Entwurf geleert; bei Rot bleibt der Text zum erneuten Senden stehen. Weiterleiten geht so: Meldung öffnen, Doppeltipp, Langdruck, Langdruck aufs Textfeld, anderes Ziel wählen, senden.

4.6 Module — zwei Seiten

Modul 1 ist ein Raster aus Kacheln: WLAN, MQTT, GPS, LoRa, NTP, Gateway, BLE, Audio, Vibration. Jede Kachel ist Schalter und Anzeige zugleich. Die Vibrations-Kachel (VIB) schaltet seit 1.0.3.119 in vier Schritten durch, wofür die Uhr beim Meldungseingang vibriert: rot = aus (auch keine Tipp-Quittungen), blau = nur Meldungen über UDP (Internet/WLAN), orange = nur über LoRa, grün = beide.

Ein Wisch nach unten führt auf Modul 2. Dort steht nicht mehr, welche Hardware läuft, sondern ob die Uhr von sich aus sendet — Positionsbake und Quittungen. Beide sind ab Werk aus. Senkrechtes Wischen wechselt zwischen den beiden Seiten hin und her, in beide Richtungen.

4.7 Stationen und Radar

Wer wurde gehört, wie stark und wann. Ganz oben nach unten gewischt öffnet sich der Radar: die eigene Position in der Mitte, gehörte Stationen als Punkte ringsum, Norden fest oben.

4.8 Zeitzone

Vom Ziffernblatt nach unten wischen führt zur Zeitzone (seit 1.0.4.136): oben groß die Ortszeit, darunter Ort, Abstand zu UTC, ob Sommerzeit gilt, und woher die Uhr ihre Zeit hat (GPS, NTP oder RTC). Darunter steht eine Liste von Städten, je fünf auf einer Seite. Mit dem weißen Knopf „1/2 >“ blättern Sie weiter. Ein Tipp auf eine Stadt stellt die Uhr auf deren Zeitzone um, das gilt sofort für Ziffernblatt, Konsole (--setTZ) und Webseite.

Seit 1.0.5.3 stellt nur ein ruhiger Tipp um. Wandert der Finger mehr als 10 Bildpunkte, gilt die Berührung als Wisch, und die Zeitzone bleibt, wie sie war. Vorher konnte ein Wisch, der auf einer Stadtzeile begann, beim Wegwischen versehentlich eine andere Zone einstellen, besonders ein Wisch von unten nach oben.

Weiter nach unten geht es zum Info-Schirm, nach oben zurück zur Uhr. Links und rechts führen wie überall zu Stationen und Meldungen.

4.9 Info

Die Gerätevisitenkarte: Firmwareversion, Basis, MeshCom-Protokollfassung, MAC-Adresse, Rufzeichen, Akkustand.

Die drei Zeilen ganz oben beantworten drei verschiedene Fragen:

Zeile Frage
FW Welcher Stand dieser Firmware läuft?
Basis Auf welchem SMashCom42-Stand von OE3WAS setzt er auf?
MeshCom Welche Sprache spricht die Uhr im Funknetz?

Die dritte ist die im Betrieb wichtigste: Zwei Geräte mit völlig verschiedener Firmware verstehen einander, solange diese Zahl zusammenpasst.

4.10 Setup

Drehung, Helligkeit, Abschaltzeit des Schirms (Blank-Zeit) und seit 1.0.5.27 Meldung merken. Die vier Drehungs-Knöpfe (0°/90°/180°/270°) reagieren auf ein Tippen; ein Wischen, das über einen Knopf streift, dreht nicht (seit 1.0.3.117 — der Halte-Versuch aus 1.0.3.115 war umständlicher und ist zurückgenommen). Das Rufzeichen steht seit 1.0.5.27 nicht mehr hier, sondern nur noch auf der Info-Seite; sein Platz gehört dem dritten Regler.

Meldung merken (aus, 1, 2, 5, 10, 30 Minuten, ab Werk 5): So lange nach dem Dunkelwerden bringt ein Tipp auf den Schirm die Meldung zurück, die die Uhr geweckt hat. Danach zeigt er wieder die Uhr. Dasselbe geht am Kabel mit --setMERK 5. Den ganzen Ablauf beschreibt „Der Schirm geht aus“ im Kapitel zur Bedienung.

4.11 Wecker (seit 1.0.5.28)

Vom Ziffernblatt nach oben wischen öffnet den Wecker. Bis zu acht Wecker stehen als Karten untereinander, nach Uhrzeit geordnet, vier je Seite. Darunter steht immer „+ neuer Wecker“; sind alle acht Plätze belegt, steht dort „alle 8 Plätze belegt“. Ab dem fünften Wecker gibt es eine zweite Seite: zwei Punkte unten zeigen, auf welcher man ist, der Kopf zeigt „WECKER 1/2“ (seit 1.0.5.33; vorher rutschte „+ neuer Wecker“ unbemerkt auf Seite 2). Je Karte: links die Weckzeit, daneben die Wiederholung („Mo-Fr“, „täglich“, „Sa So“, „einmal“ oder ein Datum wie „Sa 10.10.“; das Jahr steht nur, wenn es nicht das laufende ist) und darunter grau Signal und Schlummerzeit in Kurzform, etwa „Vib+Ton 5’“ (seit 1.0.5.30, vorher lief der Text in den Schalter); ohne Minutenangabe ist Schlummern aus. Ein ausgeschalteter Wecker steht grau da.

Bedienung Wirkung
Schalter rechts Wecker ein- oder ausschalten
Tipp auf die Karte bearbeiten
Langdruck auf die Karte löschen (mit Rückfrage)
„+ neuer Wecker“ neuen Wecker anlegen (ab Werk 07:00, Mo–Fr, Vibration + Ton, 5 min)
waagrecht wischen Seite 1 ↔︎ 2 (ab fünf Weckern)
senkrecht wischen nach oben zum Kalender, nach unten zur Uhr

Bearbeiten. Oben stellen zwei Walzen Stunde und Minute ein. Darunter die Wochentage Mo bis So zum Antippen; alle sieben ergeben „täglich“, ein einzelner Tag „wöchentlich“. Ist kein Tag gewählt, klingelt der Wecker einmal, beim nächsten Mal zur eingestellten Uhrzeit. Die drei Zeilen darunter schalten bei jedem Tipp weiter: Signal (Vib + Ton, Vibration, Ton), Schlummern (aus, 5, 10, 15, 20, 30 min — „aus“ seit 1.0.5.33) und Einmal am Datum. Die letzte öffnet Walzen für Tag, Monat und Jahr; „OK“ setzt das Datum, „Ohne Datum“ nimmt es wieder weg. Ein Datum und Wochentage schließen sich aus: Wer einen Tag antippt, hebt das Datum auf. Der Haken oben rechts speichert, das X verwirft. Ein Datum, das schon vorbei ist oder das es nicht gibt (31.02.), nimmt die Uhr nicht an; der Haken wird dann kurz rot und sagt warum.

Wenn er klingelt, geht der Schirm an und zeigt die Weckzeit groß, darunter zwei Knöpfe: Schlummern (klingelt nach der eingestellten Zeit wieder) und Aus. Die Krone schlummert ebenfalls. Ist Schlummern für diesen Wecker aus, gibt es nur den Knopf Aus über die ganze Breite, und auch die Krone schaltet ihn aus. Alle zwei Sekunden vibriert die Uhr und/oder piept, je nach Signal. Reagiert niemand, hört der Wecker nach zehn Minuten von selbst auf. Einmalige Wecker und Wecker mit Datum schalten sich nach dem Klingeln selbst aus; die Karte bleibt stehen und lässt sich neu stellen.

⚠️ Der Ton braucht das Modul Audio. Ist es aus (Kachel rot oder Lautstärke 0), vibriert ein Wecker mit „Ton“ trotzdem — ein stummer Wecker wäre schlimmer als einer, der nur brummt.

Der Wecker funktioniert auch im Nachtschlaf: Die Uhr schläft nie über den nächsten Weckzeitpunkt hinweg. Am Kabel geht es mit --wecker (anzeigen), --wecker add 06:30 Mo,Di,Mi,Do,Fr, --wecker del 1 und --wecker test 1 (klingelt sofort).

4.12 Kalender

Vom Wecker nach oben wischen (seit 1.0.5.28; vorher direkt vom Ziffernblatt) zeigt den laufenden Monat (seit 1.0.3.126): oben der Monatsname, darunter die Wochentage Mo … So, links die Kalenderwoche als dunkelblauer Balken, der heutige Tag grün unterlegt, Samstage gedämpft, Sonntage rot. Wischen nach links blättert einen Monat vor, nach rechts einen Monat zurück (seit 1.0.3.130) — so weit man will; der grüne Kreis erscheint nur im laufenden Monat. Beim nächsten Betreten steht wieder der aktuelle Monat. Noch einmal nach oben geht es weiter zum Update-Schirm, nach unten zurück zum Wecker. Ist die Uhrzeit noch nicht gestellt (kein WLAN, GPS oder RTC), steht dort ein Hinweis statt des Monats.

4.13 Update

Firmware über die Luft — siehe eigenes Kapitel.

5 Funken mit MeshCom

5.1 Empfangen

Die Uhr hört ununterbrochen mit, solange das Funkmodul eingeschaltet ist. Empfangene Textmeldungen laufen im Meldungsschirm auf; Positionsmeldungen erscheinen dort nicht, ihre Koordinaten landen stattdessen in der Stationsliste und auf dem Radar.

Jedes Paket kommt üblicherweise mehrfach an — direkt und über Digipeater. Die Uhr merkt sich die letzten Kennungen und zeigt jede Meldung nur einmal.

5.2 Senden

Auf dem Sendeschirm eine der fünf Karten antippen.

5.2.1 Die fünf Textbausteine

Eine Uhr hat keine Tastatur. Die Auswahl richtet sich deshalb nach einer einzigen Frage: Was lässt sich am Handgelenk nicht tippen, wird im Funkbetrieb aber ständig gebraucht?

Karte Was hinausgeht
Standort 📍 QTH Locator, gesendet von der T-Watch-S3 Plus ⌚, 73 55 de Vorname — auf einer Uhr ohne Satellitenempfänger steht „T-Watch-S3” (seit 1.0.4.91, nach der gemessenen Bestückung)
QSL QSL, Meldung erhalten, danke
QRV QRV, höre mit
Wetter Guten Morgen aus Locator ⛅ 19.3 °C, gefühlt 17.6 °C, ☁️ 20 %, Feuchte 51 %, Wind 10 km/h, Regen 0.0 mm, Sonne 389 W/m²
TEST TEST Sendepfad

Locator und „de Vorname” entfallen, wenn keine Standortquelle bzw. kein Vorname (--setname) gesetzt ist — die Zeile beginnt dann direkt mit „gesendet von …“.

Wetter holt die Werte beim Betreten des Schirms in Echtzeit von Open-Meteo (Position aus derselben Standortkette wie die Standort-Karte, Gruß nach Tageszeit, Wettersymbol nach Wetterlage und Tag/Nacht). Solange die Antwort aussteht oder kein WLAN bzw. kein Standort bekannt ist, bleibt die Karte grau, nennt den Grund und sendet nichts. Eine geholte Zeile gilt 30 Minuten. Zum Prüfen ohne Senden: --wetter schreibt die Zeile ins Log.

⚠️ Auf der Karte steht wörtlich das, was hinausgeht. Es gibt bewusst nur diese eine Textquelle. Eine getrennte Kurzfassung für die Anzeige gab es einen Tag lang — sie ist wieder verworfen worden: Wer am Handgelenk auf eine Karte tippt, muss vorher gelesen haben, was das Netz zu sehen bekommt. Zu lange Zeilen rollen deshalb durch, statt gekürzt zu werden.

Im Text steht kein Rufzeichen. MeshCom führt den Absender bereits im Paketkopf mit (OE3LCR-55>*); eine Wiederholung im Text wäre Doppelung und kostet Zeichen. Der Vorname am Ende der Standortkarte ist ausdrücklich gewollt und keine Kennung — die steht im Kopf.

Der TEST-Baustein trägt sein Wort mit Absicht am Anfang: MeshCom führt Meldungen, die mit TEST beginnen, in einer eigenen Test-Line. Wer den Sendeweg erprobt, gehört dorthin und nicht in den laufenden Verkehr. Umgekehrt heißt das: die übrigen vier Karten landen im normalen Verkehr.

5.2.2 Was die Farben sagen

Die Farbe der Karte sagt, wo die Meldung gerade steht:

Farbe Bedeutung
🟠 orange Auftrag angenommen, noch nicht gesendet
🔵 blau abgestrahlt — das Paket hat den Sender verlassen
🟢 grün vom Netz quittiert — die Meldung ist angekommen
🔴 rot keine Quittung — oder zu früh getippt (siehe unten)

Der Weg von orange nach blau dauert etwa eine Sekunde. Bis grün vergehen typischerweise vier bis elf Sekunden — so lange braucht das Netz für die Quittung. Bleibt sie aus, wird die Karte nach 30 Sekunden rot.

Direktmeldungen haben länger Zeit (seit 1.0.5.33). Eine persönliche Meldung muss der Empfänger selbst bestätigen, und über bis zu vier Digipeater dauert das. Die MeshCom-Firmware wiederholt eine Direktmeldung deshalb bis zu 2:40 Minuten lang. Die Uhr wartet ebenso lange: Kommt binnen 30 Sekunden keine Quittung, bleibt die Karte blau, und erst nach 160 Sekunden wird sie rot. Gesperrt ist in der Zeit nichts — ein neuer Tipp sendet sofort, die alte Meldung wird im Hintergrund weiter beobachtet.

Die Zeiten sind gemessen, nicht geschätzt: Über sieben Aussendungen lagen die Quittungen bei 3,5 / 3,5 / 3,4 / 10,0 / 9,1 / 6,9 / 6,3 Sekunden. Im vollen Kanal streuen sie deutlich weiter — deshalb die 30 Sekunden statt der ursprünglichen 15.

Seit 1.0.4.48: grün auch bei einer Quittung über den Server. Antwortet man jemandem persönlich, schickt dessen Gerät eine Empfangsbestätigung zurück. Hängt die Gegenstelle am Draht — bei Direktmeldungen der Regelfall —, kommt diese Bestätigung als kurze Textzeile über den MeshCom-Server statt über Funk. Bis 1.0.4.47 erkannte die Uhr sie auf diesem Weg nicht: Die Karte blieb rot, obwohl die Meldung angekommen war, und die Bestätigung selbst stand als kryptische Meldung (OE3LCR-55:ack089) in der Liste — samt Vibration. Jetzt färbt sie die Karte grün, gleich über welchen Weg sie hereinkommt, und erscheint selbst nirgends mehr als Meldung. Kommt sie erst nach der halben Minute, springt die Karte nachträglich von rot auf grün.

Seit 1.0.5.6: grün auch ohne Quittung, wenn die Uhr selbst Gateway ist. Eine Meldung an alle (*) trägt die Uhr im Gateway-Betrieb sofort selbst zum MeshCom-Server. Andere Gateways quittieren eine Meldung, die schon beim Server liegt, nicht noch einmal, und so konnte die Karte rot bleiben, obwohl die Meldung überall angekommen war. Jetzt gilt: Hat die Uhr die Meldung nachweislich zum Server getragen und hört sie über Funk zurück, weil ein Digipeater sie weiterreicht, wird die Karte grün, auch nachträglich. So hält es auch die MeshCom-Firmware. Gruppen- und Direktmeldungen brauchen weiterhin eine echte Quittung. Wie oft das schon gegriffen hat, zeigt --info in der Zeile „Gateway-Regel“.

Seit 1.0.4.48: die eigenen Aussendungen stehen in der Meldungsliste. Was man selbst hinausschickt, erscheint jetzt als eigene Zeile — mit dem eigenen Rufzeichen, dem Text und dem Ziel in der Zielspalte. Das gilt für alle Wege gleichermaßen: Sendekarte am Handgelenk, MeshCom-App, Browser oder Konsole. Der Punkt dieser Zeilen ist grün und hohl (ein Ring): grün steht für „von hier ausgegangen”, hohl für „gelesen”. Eigene Aussendungen zählen bewusst nicht in das Ungelesen-Abzeichen am Zifferblatt — das zählt, was hereinkommt, nicht was man selbst getippt hat.

5.3 ⚠️ Rot bedeutet zweierlei

Zwischen zwei Aussendungen liegt ein Mindestabstand von zehn Sekunden. Er verhindert, dass das Netz geflutet wird und dass ein versehentlicher Doppeltipp am Handgelenk zweimal funkt.

Tippt man vorher erneut, wird die Karte sofort rot — obwohl nichts fehlgeschlagen ist.

Merksatz: Rot unmittelbar nach dem Tipp heißt „zu früh”. Rot nach 30 Sekunden heißt „keine Quittung”. Die Unterscheidung liegt in der Zeit, nicht in der Farbe.

5.4 Sendeleistung

Der LoRa-Detailschirm trägt einen Regler mit neun Stufen. Ganz links steht der Empfangsbetrieb: Die Uhr hört mit, sendet aber unter keinen Umständen.

⚠️ Die Sperre sitzt bewusst dort und nicht bei „0 dBm Sendeleistung” — das wären immer noch 1 mW und damit eine Aussendung.

5.5 Standort mitsenden

Die oberste Sendekarte trägt den eigenen Standort — ermittelt in einer festen Reihenfolge: zuerst der aktuelle GPS-Fix, sonst der zuletzt gemessene Fix dieser Laufzeit, sonst eine von Hand gesetzte Position (--setLAT/--setLON). Liefert nichts davon einen brauchbaren Standort, entfällt der Standort-Teil der Meldung ganz — es gibt keinen erfundenen Ort.

Der Locator auf der Karte wandert also mit: Wer unterwegs auf sie sieht, liest den Standort, an dem er gerade steht (oder, ohne jede Quelle, eine Zeile ganz ohne Standortangabe).

Der Name am Zeilenende („de Vorname”) kommt über das Kommando --setname <Vorname> (Konsole, App-Chat oder /einstellungen im Browser) — ohne gesetzten Namen endet die Meldung mit „73 55” statt mit einem Namen.

5.6 Selbsttätige Aussendungen

Bis hierher sendet die Uhr nur auf Tastendruck. Drei Dinge kann sie darüber hinaus von sich aus tun — alle drei sind im Auslieferungszustand ausgeschaltet.

Geschaltet werden sie auf der Kachelseite Modul 2 (vom Modulschirm nach unten wischen), nicht bei den Modulkacheln: Auf Seite 1 wird Hardware ein- und ausgeschaltet, auf Seite 2 wird entschieden, ob die Uhr von sich aus auf Sendung geht.

5.6.1 Positionsbake (Kachel „APRS”)

Eingeschaltet meldet die Uhr ihren Standort alle 30 Minuten ins Netz — über Funk und, wenn das eigene Gateway läuft, gleich auch zum MeshCom-Server (von dort nach aprs.fi). Das Verhalten entspricht seit 1.0.3.93 der Standard-MeshCom-Firmware.

Welche Position hinausgeht (seit 1.0.4.50 in dieser Reihenfolge):

  1. Aktueller GPS-Fix — hat die Uhr gerade Satellitenempfang, geht dieser Standort hinaus.
  2. Frische Position aus dieser Sitzung — kein Fix, aber die MeshCom-App hat ihre Position geschickt (oder die Uhr hatte vorhin selbst einen Fix): dann geht diese hinaus, solange sie höchstens eine Stunde alt ist. Das ist der Weg, über den eine Uhr ohne Satellitenempfänger überhaupt eine Bake abgeben kann.
  3. Gespeicherte Position — nichts von beidem, dann sendet eine Uhr mit GPS die zuletzt gespeicherte Knotenposition (--setLAT/--setLON/--setALT). Sie überlebt den Neustart — hier geht die Uhr einen Schritt weiter als die Standard-Firmware, die den Fix nur im Arbeitsspeicher hält.
  4. Sonst schweigt die Bake. Auf einer Uhr ohne Satellitenempfänger gibt es Schritt 3 nicht: ohne frische Position sendet sie nichts und schreibt den Grund ins Protokoll.

Welche Quelle gerade gelten würde, sagt die Uhr jederzeit selbst — --info zeigt die Zeile Bakenposition: …, und jede gesendete Bake nennt ihre Quelle im Protokoll (etwa (App-Position, 42 s alt)). Beides fragt nur nach und sendet dabei nichts.

5.6.2 Track (Kachel „Track”)

Track ist das, was der Schalter TRACK in der MeshCom-App meint — und arbeitet wie in der Standard-Firmware: Hat die Uhr einen GPS-Fix, sendet sie ihre Position nach Tempo (Gehen alle 20 s, Rad/Stadt 15 s, Landstraße 12 s, Autobahn 10 s, dazu bei Kurswechsel) — aber nicht über Funk, sondern über das eigene Gateway zum Server (WLAN oder der Hotspot des Telefons). Über Funk geht bei Track höchstens alle 5 Minuten eine Position hinaus, die 30-Minuten-Bake läuft weiter. Steht die Uhr still, fällt Track auf den 30-Minuten-Takt zurück; ohne Fix tut Track nichts. Konsole: --track on|off. Vorgabe: aus.

5.6.3 Gateway-Server: Österreich, Deutschland oder Italien

Das Gateway der Uhr liefert Gehörtes an einen MeshCom-Server und holt von dort die Meldungen fürs Funknetz. Seit 1.0.3.107 lässt sich wählen, an welchen — OE (Austria, meshcom.oevsv.at, Vorgabe), DL (Germany — seit 1.0.4.93 wie in der MeshCom-Vorlage ebenfalls meshcom.oevsv.at, der frühere eigene DL-Server ist dort entfallen) oder seit 1.0.4.92 IT (Italy, meshcom.dig-italia.it, der eigene Server der italienischen MeshCom-Gruppe). Die Einstellung gehört zum Aktivieren des Gateways: In der MeshCom-App erscheint sie bei eingeschaltetem Gateway als Auswahl GWSrv, an der Konsole heißt sie --gateway srv OE, --gateway srv DL bzw. --gateway srv IT. Ein Wechsel wirkt sofort und bleibt gespeichert; --gateway ohne Zusatz zeigt Zustand und Server. Die App sieht seit derselben Version auch den echten Zustand von Gateway, Positionssperre und Webserver — davor meldete die Uhr ihr grundsätzlich „aus”.

5.6.4 Quittungen (Kachel „Quittung”)

Eingeschaltet bestätigt die Uhr empfangene Meldungen selbsttätig — dieselbe Quittung, die die eigene Sendekarte grün werden lässt.

⚠️ Wer beide Kacheln rot lässt, hat eine reine Empfangsstation — sie sendet ausschließlich, wenn eine Sendekarte angetippt wurde. Das ist der Zustand, in dem die Uhr ausgeliefert wird.

5.7 Die MeshCom-App am Telefon

Mit eingeschalteter BLE-Kachel (Modul 1) findet die MeshCom-Handy-App die Uhr unter einem Namen, der mit MC- beginnt und auf das eigene Rufzeichen endet. Verbunden zeigt die App die Einstellungen der Uhr — samt der Netzwerkdaten des WLAN (IP-Adresse, Gateway, Subnetzmaske, DNS) — und liest den empfangenen Funkverkehr am großen Bildschirm mit.

Dieser Name wird beim Start der Uhr gebildet. Wer das Rufzeichen ändert, sieht den neuen Namen in der Geräteliste der App deshalb erst nach dem nächsten Start — die Uhr selbst funkt sofort unter dem neuen Rufzeichen, und auch Zifferblatt, Info- und Setup-Schirm zeigen es ohne Neustart.

Vier Dinge übernimmt die Uhr dabei vom Telefon:

Die Chip-Temperatur im Wetterfeld der App (seit 1.0.4.52). Das Feld „TEMP” im Sensor-/Wetterbereich der App zeigt bei dieser Uhr die Chip-Temperatur des Ladereglers (AXP2101) — die Uhr hat keinen Sensor für die Umgebungstemperatur, die „TEMP” in der App sonst bedeutet. Auf der Weboberfläche der Uhr (Seite Status) steht derselbe Wert ehrlich als „Chip”. Wer die App-Anzeige nicht will, kommentiert CR_CHIPTEMP_NACH_APP (globals.h) aus.

⚠️ Wer von Hand eine abweichende Position eingibt (in der App oder per Konsole), muss „Position senden” in der App ausschalten — sonst gewinnt beim nächsten Takt wieder die echte Telefon-Position. Das ist Absicht: Eine periodisch gemessene Position ist vertrauenswürdiger als eine einmal getippte.

Auch das Chat-Fenster der App sendet (seit 1.0.3.64, bewusste Entscheidung des Betreibers): Eine dort getippte Meldung geht über denselben Weg hinaus wie die Sendekarten — samt Rufzeichen-Pflicht und allen Sendesperren (Empfangsbetrieb und Akku-Schutz stoppen auch den App-Chat). Wer einen BLE-PIN setzt (--btcode), verlangt damit für Chat und Befehle die Anmeldung — das ist der vorgesehene Schutz gegen fremde Telefone in Reichweite. Die Anmeldung gilt nur, solange die Verbindung steht: Nach dem Trennen muss sich jedes Telefon neu anmelden, auch das eigene (seit 1.0.5.4).

Meldungen in den App-Gruppen (seit 1.0.3.70). Was die Uhr empfängt — an alle, an eine der eigenen Gruppen oder als Direktmeldung an das eigene Rufzeichen —, erscheint in der App im passenden Chat, egal ob es über Funk oder über das Gateway hereinkam; jede Meldung genau einmal. Ist die App gerade nicht verbunden, hebt die Uhr bis zu 20 Meldungen auf und liefert sie beim nächsten Verbinden nach. In der App getippte Meldungen gehen an alle; mit {2321}Text an eine Gruppe, mit {OE3XYZ-12}Text als Direktmeldung — die App setzt diese Klammern selbst, wenn man im jeweiligen Chat schreibt. Die eigenen Meldungen bekommen in der App ihre Häkchen. Seit 1.0.5.25 meldet die Uhr sie in denselben drei Stufen wie die MeshCom-Firmware: gehört (ein Digipeater hat sie weitergereicht), Wolke (ein Gateway oder der Server hat sie quittiert) und zwei Häkchen (der Empfänger einer Direktmeldung hat sie bestätigt). Die App erfährt dabei auch, wer gehört oder quittiert hat. Vorher kam jede Gateway-Quittung schon als „zwei Häkchen“ an, auch bei Meldungen an alle oder an eine Gruppe. Seit 1.0.5.31 kennt die App zwei weitere Zustände: aufgegeben, wenn auf eine Direktmeldung binnen 160 Sekunden keine Quittung des Empfängers kam (seit 1.0.5.33; in 1.0.5.31/.32 schon nach 30 Sekunden), und verwahrt, wenn ein Briefkasten-Knoten die Meldung für den abwesenden Empfänger aufhebt. Kommt die Quittung doch noch, springt beides auf zwei Häkchen. Will die App alle Quittungen einzeln sehen, schaltet sie selbst --ackinfo on ein. Das gilt nur, solange sie verbunden ist, und wird nicht gespeichert.

Gehörte Stationen in der App (seit 1.0.5.31). Die Liste „MHeard“ der App zeigt, wen die Uhr in den letzten zwölf Stunden direkt gehört hat, also die letzte Station vor der Uhr, nicht den Urheber einer weitergereichten Meldung. Dazu kommen Uhrzeit, Feldstärke, Hardware und die Entfernung, sofern die Station selbst ihre Position gesendet hat. Neue Empfänge erscheinen laufend, höchstens einmal pro Minute und Station. Ohne gestellte Uhrzeit bleibt die Liste leer.

6 Module ein- und ausschalten

Der Modul-Schirm zeigt jede Baugruppe als Kachel. Sie ist Schalter und Anzeige zugleich.

Es gibt zwei Kachelseiten, und die Trennung ist keine Platzfrage:

Seite Kopfzeile Was dort geschaltet wird
1 MODUL 1 Hardware — WLAN, MQTT, GPS, LoRa, NTP, Gateway, BLE, Audio, Vibration
2 MODUL 2 ob die Uhr von sich aus auf Sendung geht — Positionsbake, Quittungen

Zwischen beiden Seiten wird senkrecht gewischt — in beide Richtungen. Auch hier ist die Schleife geschlossen: Weiterwischen führt wieder auf die andere Seite, man landet nie in einer Sackgasse. Der waagrechte Ring bleibt davon unberührt, die zweite Seite nimmt niemandem einen Weg weg.

6.1 Bedienung der Kacheln

Handlung Wirkung
Antippen (aus → ein) Modul einschalten, die Detailseite öffnet sich von selbst
Antippen (ein → aus) Modul ausschalten, kein Schirmwechsel
Langdruck auf ein eingeschaltetes Modul Detailseite ansehen, ohne zu schalten
Wischen nur Schirmwechsel

Von einer Detailseite führt der Wisch nach oben und nach unten zurück zum Kachelschirm — seit 1.0.4.50 in beide Richtungen. Man landet also in keiner Richtung in einer Sackgasse; wenn Sie sich nicht sicher sind, wischen Sie einfach senkrecht in irgendeine Richtung.

6.2 Was die Farben bedeuten

Die Kachelfarbe zeigt den Zustand auf einen Blick — ohne dass man die Detailseite öffnen muss. Sie sagt dabei zweierlei: was das Modul gerade tut, und ob sich die Kachel überhaupt antippen lässt.

Farbe Bedeutung Was ein Antippen bewirkt
🟢 Grün eingeschaltet schaltet aus
🔴 Rot ausgeschaltet schaltet ein
🔵 Blau vorhanden, aber nicht von Hand schaltbar nichts — nur die Detailseite
⚪ Grau nicht vorhanden oder nicht nutzbar nichts

Die einfache Merkregel: Bei Rot und Grün können Sie tippen — bei Blau und Grau gibt es nur etwas zu sehen. Eine graue Kachel ist kein Fehler: Sie bedeutet, dass diese Uhr die betreffende Ausstattung nicht hat.

Zwei Module machen es genauer, weil sie einen Zustand zwischen „aus” und „liefert” kennen:

GPS: rot = aus · orange = sucht · blau = letzte Position bekannt · grün = aktueller Fix

Seit 1.0.3.104 gibt die Uhr dem Empfänger beim Einschalten Uhrzeit und letzte Position mit und lässt ihn seine Satellitenbahnen im Voraus berechnen — der Fix kommt nach dem ersten Tragetag in Sekunden statt Minuten. Voraussetzung: GPS war zuletzt lange genug an (die kleine Backup-Zelle des Moduls lädt nur bei laufendem GPS).

LoRa: rot = Funkmodul stromlos · blau = nur Empfang (Reglerstufe 0 oder Akku-Schutz; beim Akku-Schutz gibt ein Tipp das Senden wieder frei, seit 1.0.4.122) · grün = senden und empfangen

⚠️ Grün heißt „eingeschaltet”, nicht „funktioniert”. Die Farbe gibt wieder, was Sie eingestellt haben. Ob das Funkmodul auch wirklich antwortet oder der Satellitenempfänger einen Fix hat, steht auf der Detailseite — ein Langdruck auf die Kachel führt hin, ohne zu schalten.

6.3 Uhren ohne GPS

Es gibt die T-Watch S3 auch ohne das Beiwort „Plus” — äußerlich gleich, aber ohne Satellitenempfänger und mit einem kleineren Akku (470 statt 940 mAh). Beide Uhren laufen mit derselben Firmware; die Uhr findet beim ersten Start selbst heraus, was verbaut ist.

Was Sie auf einer Uhr ohne GPS sehen:

⚠️ Ohne Satellitenempfänger sendet die Uhr keine Bake, solange sie keine Position kennt. Die Position kommt dann ausschließlich von der MeshCom-App über Bluetooth. Sie muss aus der laufenden Sitzung stammen und darf höchstens eine Stunde alt sein; danach schweigt die Bake wieder, bis die App eine neue Position schickt. Eine reine Speicherposition aus einer früheren Sitzung wird auf dieser Uhr nicht gesendet — auch nicht, wenn sie von Hand gesetzt wurde. Das ist so gewollt: eine alte Position im Netz wäre schlimmer als gar keine.

Ob die Uhr gerade etwas zu senden hätte, verrät --info mit der Zeile Bakenposition: … („keine” heißt: die Bake würde schweigen). Das fragt nur nach und sendet nichts.

Wenn Sie eine GPS-Platine nachrüsten oder abziehen: Tippen Sie einmal auf die GPS-Kachel oder geben Sie --gps suche ein — dann sucht die Uhr erneut und merkt sich das neue Ergebnis.

6.4 Schneller GPS-Fix mit Bahndaten (AssistNow)

Nach einem Kaltstart braucht der Empfänger für jeden Satelliten rund 30 Sekunden ungestörten Empfang, um dessen Bahndaten aus dem Signal zu lesen. Bei schwachem Signal dauert der erste Fix deshalb Minuten. Seit 1.0.4.88 kann sich die Uhr die Bahnvorhersagen für sieben Tage per WLAN holen und dem Empfänger bei jedem Start mitgeben. Gemessen am 06.09.2026 im Freien, gleicher Ort, echter Kaltstart: 54 Sekunden mit Bahndaten, 147 Sekunden ohne.

Der Dienst heißt AssistNow Predictive Orbits und kommt von u-blox, dem Hersteller des GPS-Empfängers. Er ist kostenlos, braucht aber ein Konto bei u-blox Thingstream. Einmalig, etwa zehn Minuten:

6.4.1 Schritt 1: Konto anlegen

  1. Im Browser https://portal.thingstream.io öffnen, „Register Now” wählen, E-Mail-Adresse und Kennwort vergeben, Bestätigungsmail anklicken.
  2. Beim ersten Anmelden legt Thingstream eine „Domain” für dich an (dein Bereich, Name frei wählbar). Sonst nichts einstellen.

6.4.2 Schritt 2: Gerätprofil anlegen

  1. In der linken Leiste Services aufklappen, dann ZTP und darunter Device Profiles. Fehlt der Punkt ZTP: auf der Startseite „Domain Settings” öffnen und unter „Service Settings” den Haken AssistNow ZTP Profile setzen, speichern.
  2. Rechts oben Create Profile. Als Gerätetyp AssistNow wählen.
  3. Im Formular:
  4. Create drücken. Es folgt „Company Information Required”: bei Firmenart Other, bei Anwendung Wearable wählen, wieder Create.
  5. Die Nutzungsbedingungen (AssistNow Terms) lesen und mit Accept Terms annehmen.

6.4.3 Schritt 3: Token holen und in die Uhr eintragen

  1. Das neue Profil erscheint in der Liste. Anklicken, Reiter Details. Dort steht Token, eine Zeichenkette mit 36 Zeichen in der Form 8-4-4-4-12, zum Beispiel 12345678-abcd-1234-abcd-123456789abc. Über das Kopiersymbol daneben kopieren. (Der „Endpoint” darüber ist die Adresse, an die sich die Uhr meldet; die kennt sie schon.)
  2. Den Token in die Uhr eintragen: im Browser die Seite Einstellungen der Uhr öffnen, im Feld GPS-Bahndaten (AssistNow) einfügen, unten Speichern. Oder an der Konsole --setANOTOKEN <token>.

6.4.4 Was danach von selbst passiert

Die Uhr braucht jetzt einmal GPS und WLAN gleichzeitig. Sie liest die Seriennummer ihres GPS-Empfängers selbst aus (die Hardware-ID, niemand muss sie abtippen), meldet sich damit beim Dienst an und bekommt ihren Chipcode zurück, den sie verschleiert speichert. Im Portal entsteht dabei unter Services → Thing List ein Eintrag „Evaluation” mit der Hardware-ID als Name, dort siehst du auch, wie viele Abrufe die Uhr gemacht hat. Danach holt die Uhr einmal am Tag die Bahndaten für sieben Tage, sobald WLAN da ist.

Die Stand-Zeile unter dem Feld zeigt Token, Chipcode, Alter der Daten und den letzten Fehler; --gpsano zeigt dasselbe an der Konsole, --gps ident die Hardware-ID, falls du sie wissen willst.

6.4.4.1 Der Vorverstärker im Empfänger (seit 1.0.4.112)

Der GPS-Chip hat einen eingebauten Vorverstärker mit drei Stufen: low (so kommt er aus dem Werk), normal (mehr Verstärkung) und bypass (für eine aktive Antenne, hat die Uhr nicht). u-blox rät für diesen Chip von „normal” ab, sagt aber nicht warum — deshalb kannst du es selbst ausprobieren:

Am Fensterbrett fiel der AGC-Wert beim Umschalten auf „normal” von rund 24 % auf 6 %, ohne dass das Rauschen stieg. Ob die Satellitenbalken draußen dadurch öfter grün werden, musst du am selben Ort mit beiden Einstellungen vergleichen.

Dein Token, deine Uhren. Der Token gilt für alle Uhren, die du mit demselben Profil anmeldest, und gehört nur dir. Er steht nie in der Firmware und nie auf der Webseite der Uhr im Klartext.

Ohne Token ändert sich nichts. Wer kein Konto anlegt, hat die Uhr wie bisher, mit Zeit- und Positions-Starthilfe. Auch wenn der Abruf scheitert oder kein WLAN da ist, läuft GPS unverändert.

Die Bahndaten liegen im Flash und überleben einen Neustart; geholt wird erst wieder, wenn sie älter als ein Tag sind oder den heutigen Tag nicht mehr abdecken. Beim Start meldet die Uhr im Log eine Zeile „esp_core_dump_flash: Incorrect size of core dump image” — das ist harmlos: die Ablage nutzt die Partition, in die der Prozessor sonst Absturzberichte schreibt. --gpsano off schaltet den Abruf ab, --gpsano holen erzwingt ihn, --setANOTOKEN off löscht den Token.

6.5 Stromschienen

Ein ausgeschaltetes Modul wird nicht nur stillgelegt, sondern stromlos geschaltet — GPS und LoRa hängen an eigenen Schienen des Stromreglers. Das ist der Unterschied zwischen „schweigt” und „verbraucht nichts”.

6.6 Seite 2: selbsttätige Aussendungen

Zwei Kacheln, beide im Auslieferungszustand rot:

Kachel Eingeschaltet bedeutet
APRS Die Uhr meldet ihren Standort alle 30 Minuten ins Netz — Knotenposition: GPS-Fix oder zuletzt gesetzte Position
Quittung Die Uhr bestätigt empfangene Rundrufmeldungen selbsttätig
Track Positionen nach Tempo zum Server, wie der App-Schalter TRACK (nur mit GPS-Fix)

Dazu kommt auf dieser Seite die Kachel Web (siehe unten). Die übrigen Plätze sind frei und warten auf künftige Schalter.

⚠️ Warum diese beiden nicht bei den Modulkacheln stehen: Ein eingeschaltetes LoRa-Modul heißt „die Uhr kann funken”, nicht „die Uhr funkt von selbst”. Wer nur mithören will, soll das Funkmodul einschalten dürfen, ohne damit unbemerkt zum Sender zu werden. Deshalb liegt die Entscheidung auf einer eigenen Seite.

Was die beiden im Funkbetrieb genau tun — Takt, Bedingungen, Vorrang — steht im Kapitel Funken mit MeshCom.

6.7 Die Uhr im Browser

Die Kachel Web (Globus, zweite Kachelseite) startet einen kleinen Webserver auf der Uhr; sobald er läuft, zeigt der Untertext der Kachel die Adresse, die man im Browser eintippt (--web on tut dasselbe über die Konsole). Der Browser fragt nach dem Benutzer admin und dem Update-Kennwort aus dem Kapitel Firmware aktualisieren — ohne Kennwort bleibt der Webserver zu. Die Seiten: Status, Meldungen (lesen und senden), Stationen, LoRa, Akku, Einstellungen, Erweitert, Hilfe.

6.7.1 Die Seite Hilfe (seit 1.0.5.32)

Die Seite Hilfe listet alle Konsolenbefehle der Uhr nach Themen, mit Argumenten und einer Zeile Erklärung – dieselbe Liste wie --help und der Anhang dieses Handbuchs. Oben steht ein Befehlsfeld; ein Tipp auf einen Befehl trägt ihn dort ein, man ergänzt den Wert und sendet. Das Suchfeld darunter filtert die Liste, etwa nach „wlan“, „akku“ oder „bake“. Die Antwort der Uhr erscheint wie beim Befehlsfeld der Einstellungen in der seriellen Konsole bzw. in der App.

6.7.2 Die Seite LoRa (seit 1.0.4.107)

Die Seite LoRa zeigt, was auf der Luftschnittstelle passiert — nur dort, der Draht zum MeshCom-Server (UDP) kommt hier nicht vor. Oben fünf Karten, darunter der Paketstrom; die Seite holt sich alle 5 Sekunden nur die neuen Zeilen, ohne neu zu laden. „Messung ausblenden” klappt die Karten weg (der Browser merkt sich das), „Anhalten” friert den Strom ein, der Filter zeigt nur Text, nur Positionen oder nur eigene Aussendungen.

Die fünf Karten der Seite LoRa: Sendering, Sendedruck, Entdopplung, Neue Kennungen, Kanalauslastung
Karte Was sie zeigt
Sendering Was gerade auf den Kanal wartet, als Kästchenreihe mit 13 Plätzen: Quittungen (rot), eigener Text (blau), Bake (orange), Weiterleitungen (grün), Gateway-Pakete (grau). Die rote Marke am letzten Kästchen ist die Grenze des Weiterleitungs-Rings (3 Plätze).
Sendedruck RUHIG — nichts staut sich. DICHT — der Kanal war im letzten Fenster mindestens die Hälfte der Sendeanläufe belegt, oder fünf und mehr Einträge warten. VOLL — kein Weiterleitungs-Platz frei; frische Pakete zum Weiterreichen fallen dann weg (die Uhr selbst darf immer senden).
Entdopplung Wie viele Minuten die Merkliste der Uhr (64 Kennungen) beim aktuellen Verkehr zurückreicht. Grün ab 10 Minuten; darunter könnte eine späte Wiederholung als neue Meldung durchgehen.
Neue Kennungen Neue Meldungen gegen Wiederholungen derselben Meldung über andere Wege, in den letzten 5 Minuten.
Kanalauslastung Wie viel der letzten 5 Minuten der Kanal mit Funk belegt war — rx empfangen, tx selbst gesendet. Unter 10 % ist ein ruhiger Kanal.

Die Zahlen der Karten gelten für ein abgeschlossenes 5-Minuten-Fenster; in den ersten fünf Minuten nach dem Start stehen dort die laufenden Werte mit dem Hinweis „laufend seit … s”.

Warum 13 Plätze und nicht 20 wie beim MeshCom-Node? Der Node von DK5EN hat einen einzigen Sendering mit 20 Plätzen für alles, was hinausgeht, und weist bei vollem Ring sogar eigene Meldungen ab. Die Uhr hat keinen gemeinsamen Ring: Quittungen, eigener Text, Bake und Weiterleitungen haben je eine eigene, feste Warteliste, und 13 ist deren Summe. Der einzige Platz, der überlaufen kann, ist der Weiterleitungs-Ring — und ein Paket, das erst nach vielen Sekunden weitergereicht würde, nützt niemandem mehr, die Nachbarn haben es längst von einem anderen Knoten. Deshalb bleibt er bewusst klein.

Im Paketstrom steht jeder Rahmen als Zeile, neueste oben, im Format der MeshCom-Firmware: Zeit, Kennung (gleiche Farbe = derselbe Rahmen über einen anderen Weg, mit Marke neu oder dup), TTL (verbleibende Weiterleitungen), Flags (Server/Track/Mesh), Modulation/Hardware, letzter Digipeater (LH), Pfad (Absender fett, Digipeater blau, Ziel grün), Nutzlast, RSSI/SNR. Eigene Aussendungen tragen die Marke TX. Dieselben Zeilen und Zahlen liefert die Konsole mit --lora.

Der Paketstrom: derselbe Rahmen 8E6E0134 kommt als „neu” an, dann zweimal als „dup” über andere Digipeater, zuletzt reicht die Uhr ihn selbst weiter („TX”)

Die Seite Meldungen zeigt seit 1.0.4.95 je Reiter nur die 10 neuesten Meldungen; über die Leiste „Anzeige je Reiter” lassen sich 20, 30, 50 oder 100 wählen (die Wahl steckt in der Adresse und überlebt die Selbstaktualisierung). Grund: Mit allen 100 Zeilen brauchte die Seite 20 Sekunden, mit 10 Zeilen eine — und die Uhr rendert in dieser Zeit nichts anderes.

Auf der Seite Status steht unter dem Akku-Wert seit 1.0.4.52 eine Zeile Chip — die Chip-Temperatur des Ladereglers (AXP2101), nicht die Umgebungstemperatur. Ohne PMU-Sonde zeigt sie „–“. Dieselbe Zahl liefert /api/status.json als chip_c (null, wenn ungültig).

⚠️ Die Adresse mit http:// eintippen: Moderne Browser nehmen ohne Vorsilbe von selbst https:// an — die Uhr spricht nur http://. Wer nur die nackte Adresse (z. B. 192.168.1.130) einträgt, sieht deshalb oft nur einen Fehler; mit ausgeschriebenem http://192.168.1.130 klappt die Verbindung zuverlässig.

Ganz rechts in der Leiste stehen zwei Knöpfe:

Knopf Wirkung
🔄 Lädt die Seite einmal neu.
⏱ Lässt die Seite sich selbst neu laden — jeder Klick eine Stufe weiter: aus → 10 s → 15 s → 30 s → 60 s → aus. Die Stufe gilt für alle Seiten der Uhr und bleibt im Browser gemerkt, bis man sie wieder auf „aus” stellt.

Die Seite Meldungen braucht die Stufe nicht: Sie erneuert sich von selbst, sobald eine neue Meldung auf der Uhr eingetroffen ist — auch bei ⏱ „aus”. Beides hält sich zurück, solange man gerade in ein Textfeld tippt: Ein halb geschriebener Meldungstext geht durch das Neuladen nicht verloren. Ein Browser-Reiter im Hintergrund fragt die Uhr nicht ab — das schont den Akku.

Ebenen-Reiter (seit 1.0.4.41): Über der Meldungstabelle stehen dieselben Ebenen wie auf dem Meldungsschirm der Uhr — ALL, DM und jeder belegte Gruppenplatz — als Reiter in ihrer Kennfarbe, mit demselben Zähler neu / gesamt in kleinerer Schrift, hier ohne Abstände um den Schrägstrich: „20 3/5” heißt drei ungelesene von fünf Meldungen in Gruppe 20. Wie die Felder auf der Uhr ist ein Reiter voll gefärbt, wenn dort etwas Ungelesenes liegt, sonst hell. Ein Klick zeigt nur die Meldungen dieser Ebene; die Wahl bleibt im Browser gemerkt und übersteht das Neuladen. Das Zielfeld des Sendeformulars folgt dem Reiter: Bei einer Gruppe steht ihre Nummer darin, bei ALL und DM * — ein von Hand eingetipptes Ziel wird nicht überschrieben.

Alle als gelesen (seit 1.0.4.46): Unter den Reitern steht ein Knopf. Seine Aufschrift folgt dem gewählten Reiter — auf DM heißt er „Alle in DM als gelesen”, auf ALL heißt er „Alle als gelesen” und räumt dann alle Ebenen auf einmal auf. Ein Klick, und die fette Neu-Zahl der Ebene steht auf 0, der Reiter wird hell; die Seite kommt von selbst zurück, nachladen muss man nichts.

Die Uhr zeigt danach denselben Lesestand: Das Abzeichen am Zifferblatt sinkt um genau diese Meldungen, die Kachel der Ebene wird hell, und in der Liste verschwinden die roten Punkte. Der Lesestand überlebt einen Neustart — genau wie beim Öffnen einer einzelnen Meldung auf der Uhr.

Bewusst kein Automatismus: Ein Klick auf einen Reiter blättert nur, er markiert nichts. Wer zwischen den Ebenen schaut, wo etwas los ist, soll dabei nicht versehentlich alles Neue löschen.

Löschen (seit 1.0.4.54): Rechts neben dem Gelesen-Knopf steht „Alle in DM loeschen” bzw. auf ALL „Alle loeschen” — und auf ALL heißt das wirklich alle Ebenen, auch DM und Gruppen. Weil Löschen endgültig ist, braucht es zwei Klicks: Der erste färbt den Knopf rot und schreibt „Wirklich loeschen? (34 Meldungen)“, der zweite innerhalb von fünf Sekunden löscht; wer nicht nachklickt, bekommt den normalen Knopf zurück. Es gibt bewusst kein Browser-Dialogfenster. Ohne JavaScript zeigt die Uhr stattdessen eine Rückfrageseite mit einem „Ja, loeschen”-Knopf. Danach zeigen Uhr und Webseite denselben Bestand: Die Zähler der Reiter und der Felder sinken, das Abzeichen am Zifferblatt ebenso, und der Meldungsspeicher der Uhr vergisst die Meldungen dauerhaft. Nur Gelesenes zu löschen geht auf der Uhr (Langdruck auf ein Feld), nicht in der Webseite.

Zeitspalte mit Datum und Tages-Trennzeilen (seit 1.0.4.51): Die Spalte Zeit zeigt bei heutigen Meldungen nur die Uhrzeit („20:30”), bei allen anderen Wochentag, Datum und Uhrzeit — „Di 02.09. 20:30”. Bis 1.0.4.50 stand dort auch bei gestrigen Meldungen nur die Uhrzeit, was sie von den heutigen nicht unterscheidbar machte. Zwischen den Tagen steht eine dünne Überschrift: Heute, Gestern oder der ausgeschriebene Wochentag mit Datum („Dienstag 02.09.”). Die Überschriften folgen dem gewählten Reiter — in jeder Ebene stehen nur die Tage, an denen dort auch etwas liegt, und es bleibt nie eine Überschrift ohne Zeilen darunter stehen. Uhr und Webseite rechnen die Angabe aus derselben Stelle, sie können also nicht auseinanderlaufen. Auf einem schmalen Handy (etwa 320 Punkte) bricht die längere Zeitangabe auf zwei bis drei kurze Zeilen um — das ist gewollt, denn die Alternative wäre eine Tabelle, die man waagrecht schieben müsste.

7 Bedienung über die Konsole

Die Uhr lässt sich vollständig über eine serielle Verbindung einstellen — nützlich für alles, wofür am Handgelenk die Tastatur fehlt, etwa das Rufzeichen oder die WLAN-Zugänge.

7.1 Verbindung herstellen

Die Uhr mit einem USB-Datenkabel anschließen und einen seriellen Monitor auf 115200 Baud öffnen:

~/.platformio/penv/bin/pio device monitor -b 115200

⚠️ Das Öffnen der Verbindung startet die Uhr neu. Das ist normal und nicht zu vermeiden — der ESP32-S3 startet über den nativen USB-Anschluss bei jedem Verbindungsaufbau neu.

Mehrere Befehle lassen sich in einer Zeile verketten.

7.2 Verfügbare Befehle

Die folgende Liste ist beim Bau dieses Handbuchs aus dem Quelltext gelesen worden (InfoHelp.cpp) und umfasst 89 Befehle — es ist dieselbe Liste, die die Uhr auf --help ausgibt.

Schreibweise: <pflicht> · [wahlfrei] · a|b für Alternativen. Ohne Argument zeigen die --set-Befehle den aktuellen Wert an.

Befehl Argumente Bedeutung
--setCALL [<rufzeichen>] Eigenes Rufzeichen setzen oder anzeigen - wird grossgeschrieben, mind. 3 Zeichen; ohne gueltiges sendet die Uhr NICHT
--setname [<Vorname>\|none] Vorname am Ende von Schnellantwort 1 (QTH-Meldung, “…73 55 de ”); max. 15 Zeichen, kein Leerzeichen; “none” loescht ihn - ohne Namen endet die Meldung mit “73 55”
--setSSID [<platz>] <netzname>\|off\|none\|on WLAN-Netzname fuer Platz 1..3; “ off” (oder “none”, das schickt die RST-Taste der App) leert den Platz, nacktes “off” schaltet WLAN aus
--setPWD [<platz>] <kennwort>\|off\|none WLAN-Kennwort fuer Platz 1..3 (verschluesselt abgelegt, nie im Protokoll); “off” oder “none” loescht es
--setSSID1 [<netzname>]\|off Kurzschreibweise fuer Platz 1: alles nach dem Leerzeichen ist der Netzname (auch mit Ziffern am Anfang, z.B. “1 Etage”)
--setSSID2 [<netzname>]\|off wie –setSSID1, fuer Platz 2
--setSSID3 [<netzname>]\|off wie –setSSID1, fuer Platz 3
--setPWD1 [<kennwort>]\|off Kurzschreibweise fuer das Kennwort von Platz 1 (verschluesselt abgelegt, nie im Protokoll)
--setPWD2 [<kennwort>]\|off wie –setPWD1, fuer Platz 2
--setPWD3 [<kennwort>]\|off wie –setPWD1, fuer Platz 3
--setAppSlot [<platz>] Legt fest, auf welchen WLAN-Platz (1..3) das WLAN-Formular der MeshCom-App (0x55) schreibt - ohne Wert zeigt den aktuellen Platz, Default 1
--setMQTTserver [<platz>] <adresse>\|off MQTT-Broker-Adresse fuer Platz 1 oder 2 setzen/anzeigen; “ off” leert den GESAMTEN Platz (Server/Port/Benutzer/Kennwort)
--setMQTTport [<platz>] <port> MQTT-Broker-Port fuer Platz 1 oder 2 (Standard 1883, wenn nicht gesetzt)
--setMQTTuser [<platz>] <benutzer>\|off MQTT-Benutzername fuer Platz 1 oder 2; “off” leert ihn (anonymer Zugang)
--setMQTTpwd [<platz>] <kennwort>\|off MQTT-Kennwort fuer Platz 1 oder 2 (verschluesselt abgelegt, nie im Protokoll); “off” loescht es
--setMQTTtopic <topic> MQTT-Topic-Praefix (Voreinstellung “TWATCHS3”); ‘+’, ‘#’ und Leerzeichen sind ungueltig (MQTT-Wildcards, Broker trennt sonst)
--setNTPserver [<adresse>]\|on\|off Zeitserver setzen oder Zeitabgleich ein-/ausschalten
--setTZ [<zeitzone>] Zeitzone in POSIX-Schreibweise, z.B. CET-1CEST,M3.5.0,M10.5.0/3
--setLAT [<grad>] Breitengrad von Hand setzen (Dezimalgrad) - wird dauerhaft gespeichert (NVS)
--setLON [<grad>] Laengengrad von Hand setzen (Dezimalgrad) - wird dauerhaft gespeichert (NVS)
--setALT [<meter>] Hoehe von Hand setzen - wird dauerhaft gespeichert (NVS)
--setGPS on\|off Satellitenempfaenger ein- oder ausschalten (kappt auch die Stromschiene)
--setGPSDEBUG on\|off\|<stufe> Ausfuehrlichkeit der GPS-Protokollausgabe (0 = aus, 2 = alles)
--ota on\|off OTA-Dienst grundsaetzlich erlauben/sperren (Vorgabe an; Server laeuft ohnehin nur bei geoeffnetem OTA-Screen UND gesetztem Kennwort)
--setOTAurl [<adresse>]\|off Adresse des Update-Servers setzen oder anzeigen; ‘off’ schaltet dauerhaft ab (ueberschreibt eine evtl. eingebaute Release-Voreinstellung, bis wieder eine Adresse gesetzt wird)
--setOTApwd [<kennwort>\|none] Eigenes Kennwort fuer OTA-Update UND Webserver, XOR-verschleiert im NVS, wirkt sofort - ueberlebt einen Release-Build ohne eingebautes OTA_PASSWORD; ‘none’ loescht (dann zaehlt wieder nur das eingebaute Kennwort, falls vorhanden)
--checkOTA — Nur nachsehen, ob eine neuere Fassung bereitliegt - laedt NIE etwas herunter
--startOTA — Update von der gesetzten Adresse holen und einspielen (ohne Versionsvergleich)
--web on\|off Webserver der Uhr im Browser: Status, Meldungen lesen/senden, Stationen, Einstellungen (Rufzeichen/Position/APRS/Bake), Akku-Logbuch als CSV, JSON-API unter /api/*; Anmeldung wie OTA (admin); Vorgabe aus
--setCTRY [EU8\|US\|PL] Landeskennung im MeshCom-Netz - nur Laender mit unseren festen 433-MHz-Parametern (PL dazugekommen 260904-aqx, im MESH-Netz identisch zu EU8)
--txpower [<dBm>] LoRa-Sendeleistung 2..22 dBm, wird auf die naechste der 8 Stufen gelegt (App-Schieber); die Sendesperre bleibt dem Geraete-Schieber vorbehalten
--setgrc [<g1>;<g2>;...] MeshCom-Gruppen setzen (bis 6, je 0..99999, 0 = Platz leer) - Name und Listenform wie die Vorlage, auch der App-Weg
--track [on\|off] Tracking wie die Vorlage/App-Schalter TRACK: bei GPS-Fix Positionen nach Tempo (10-20 s) ueber das eigene Gateway zum Server, ueber Funk hoechstens alle 5 min; ohne Fix wirkungslos (Vorgabe aus)
--aprs [on\|off] Positionsbake ein/aus - gleicher Schalter wie die APRS-Kachel (Vorgabe aus; bis 1.0.3.92 hiess das –track)
--wlan [on\|off\|scan] WLAN ein/aus wie die Kachel - schaltet den Funkchip wirklich ab (–setSSID off nur die Freigabe); scan = bekannte Netze sofort suchen (trennt die bestehende Verbindung); ohne Argument: Zustand samt Stack-Sicht (Netz, RSSI, IP) und Suchautomat
--setAPRSKEY [<schluessel>\|off] API-Schluessel von aprs.fi (dort: My account > API key). Wird verschleiert im Einstellungsspeicher abgelegt und NIE im Klartext ausgegeben - ohne Argument meldet der Befehl nur ‘gesetzt’ oder ‘nicht gesetzt’; ‘off’ loescht ihn. Auch ueber die Webseite eingebbar
--setANOTOKEN <token>\|off AssistNow-Profil-Token (u-blox Thingstream: Services > ZTP > Device Profiles, Typ AssistNow, Plan Evaluation) - die Uhr registriert sich damit einmalig und holt danach taeglich GPS-Bahnvorhersagen per WLAN (Fix nach Kaltstart ~3x schneller); off loescht; ohne Token arbeitet GPS wie bisher
--gpsano [on\|off\|holen\|ztp\|clear\|done\|feed\|b64 <stueck>] AssistNow Predictive Orbits: ohne Argument Stand (Token, Chipcode, Daten, letzter Abruf); on/off = Bahndaten holen und beim Modulstart einspeisen (bleibt gespeichert); holen = Abruf jetzt; ztp = Registrierung wiederholen; feed = Saetze des Tages jetzt einspeisen; clear/b64/done = Strom von Hand laden (tools/assistnow_ztp.py push)
--gps [on\|off\|suche\|keins\|ident\|kalt\|lna [normal\|low\|bypass]\|rf [<s>\|0]\|itfm on\|off] GPS ein/aus wie die Kachel, samt Stromschiene (Name der Vorlage/App); –setGPS bleibt; suche = Modul neu suchen (nach Nachruesten/Abziehen der GPS-Platine); keins = Uhr als GPS-los merken; ident = Chip-ID und Version des Empfaengers ins Log (Hex-Rahmen fuer die AssistNow-Registrierung); kalt = echter Kaltstart des Empfaengers (BBR geloescht) mit erneutem Aiding, fuer Fixzeit-Messungen; lna = interner Vorverstaerker des Empfaengers (normal, low = Werk, bypass; bleibt gespeichert, Umschalten mit Hotstart des Empfaengers; ohne Wert = Rueckfrage); rf = Empfangsseite abfragen (AGC, Rauschen, CW-Stoerung, Jamming, Antenne), rf = alle s Sekunden, rf 0 = aus; itfm on|off = Jamming-Monitor des Empfaengers; ohne Argument zeigt die Antwort den Modul-Merker, den LNA-Modus und das Fix-Logbuch der letzten 10 Modulstarts (Uhrzeit, Sekunden bis zum Fix, mit/ohne Bahndaten)
--symid [/\|\\] APRS-Symboltabelle: / primaer, \ sekundaer (Namen wie die Vorlage, auch App-Befehl)
--symcd [<zeichen>] APRS-Symbolzeichen (Spalte in der Tabelle); Vorgabe [ = Person zu Fuss
--atxt [<text>\|none] APRS-Kommentar hinter der Position (max 40 Zeichen); none loescht
--aprscomment [<text>\|none] Gleichbedeutend mit –atxt (Name der Vorlage, wird von der App benutzt)
--sendPOS — Positionsbake sofort aussenden (Funk + eigenes Gateway), auch bei ausgeschalteter APRS-Kachel - gleiche Positionskette wie die 30-min-Bake, ohne bekannte Position wird nichts gesendet
--ping <rufzeichen> Sendet {ping} an das Rufzeichen und zeigt die Laufzeit bis zum {pong} (dasselbe macht Karte 6 auf dem Sende-Schirm mit der zuletzt gehoerten Station); jede Uhr im Netz antwortet auf einen an sie gerichteten Ping automatisch
--sendHEY — Kurze Testmeldung aussenden
--setBLE on\|off Bluetooth ein-/ausschalten (wirkt sofort, Default aus - Werbung kostet Strom)
--setAPP WZ\|CR Boot-Bedienwelt waehlen oder anzeigen; “WZ” leitet bei uns ebenfalls auf CR um (CR_EEZShim ersetzt Wolfgangs EEZ-Screens)
--setECOCPU on\|off CPU-Takt bei dunklem Schirm auf 80 MHz senken (Vorgabe an; off = fest 240 MHz)
--setECOGPS on\|off GPS-Schiene abschalten, wenn 10 min kein Fix und die App frische Positionen liefert; wieder an, sobald die App-Versorgung abreisst (Vorgabe an)
--setECOFIX on\|off GPS-Sparpause: laeuft die Suche 10 min ohne Fix und liefert auch das Telefon keine frische Position, schaltet die Schiene 30 min ab und versucht es dann neu (Vorgabe an; Grund 3 im ECOGPS-Automaten, greift nur wenn ECOGPS die Telefon-Position nicht schon uebernimmt)
--setECOBAKE on\|off GPS-Schiene bleibt aus und schaltet nur 3 min vor der naechsten Positionsbake an (Fix holen, senden, wieder aus); kein Fix bis zum Bake-Zeitpunkt laesst diese Bake ausfallen, naechster Versuch im naechsten Raster (Vorgabe aus; Grund 4 im ECOGPS-Automaten)
--setECOSLEEP on\|off\|usb Nachtschlaf (22-7): liegt die Uhr 2 min still, Schirm dunkel, kein USB, keine App, schlaeft der Prozessor in 60-s-Zyklen (Light Sleep); LoRa-Paket, Tippen und Bewegung wecken. In der Schlafphase kein WLAN/Draht und keine App-Verbindung, LoRa laeuft. ‘usb’ = an + Probe auch am Kabel bis zum Neustart (Vorgabe aus; Stufe 4 der Stromspar-Phase)
--setECODIGI on\|off Digipeater-Pause in der Nachtruhe (22-7): die Uhr reicht fremde Pakete nicht ueber Funk weiter. Empfang, Anzeige, eigene Bake, Quittungen und der Gateway-Weg bleiben. Spart gemessen rund 300 Aussendungen je Nacht und laesst die Uhr nach jedem Paket schneller wieder schlafen. Das Netz verliert nachts einen Digipeater (Vorgabe aus; Stufe 5 der Stromspar-Phase)
--setECOIMU on\|off Bewegungssensor (BMA423): Handgelenk heben weckt den Schirm; liegt die Uhr 10 min still, geht GPS aus und die Bake pausiert, nach 2 min Ruhe blankt der Schirm nach 15 s (Vorgabe an; off = Sensor schlaeft)
--setECOWLAN on\|off WLAN-Modem-Sleep nach dem Verbinden absenken (MAX_MODEM) und unterwegs ohne bekanntes Netz nach 3 erfolglosen Suchrunden den Funkchip 10 min ganz abschalten - Ende bei Bewegung oder –wlan scan (Vorgabe an)
--tele [on\|off\|send\|<min>] Uhrentelemetrie an den MeshCom-Server (von dort zu aprs.fi): Akku V, Ladung %, Chiptemperatur, Weckungen/h, LoRa-Empfang/h - Intervall 5..120 min (Vorgabe 30, an); send = naechste Zeile sofort; ohne Wert: Zustand
--setCHGCUR [<mA>] Ladestrom des Akkus in mA, wird auf die naechste der 6 Stufen 125|150|175|200|300|400 gelegt (derselbe Wert wie der Regler der Akku-Kachel, Vorgabe 300; ohne Wert: anzeigen). Achtung: 125 mA deckt den Eigenverbrauch mit GPS/WLAN/LoRa nicht - die Uhr entlaedt sich dann auch am Kabel
--setVBUS [<mA>] USB-Eingangsstromlimit des Ladechips, Stufen 100|500|900|1000|1500|2000 (Vorgabe 1500; 500 = USB-Norm - Versuch gegen den Ladeklemmer an schwachen USB-Ports; ohne Wert: anzeigen)
--ladefix — Lade-Waechter: Lader einmal ‘soft neu anstecken’ (Laden sperren, Eingang 100 mA, Limit + Ladestrom neu, Laden frei) - Messhilfe bei VINDPM (Quelle zu schwach); automatisch nach 60 s VINDPM
--setPMURESET on\|off Lade-Waechter Stufe 3 freigeben: nach 8 min VINDPM bei Akku <4,0 V einmal je Kabelsitzung PMU-Neustart (Uhr startet neu, wie Krone 6 s + neu anstecken); Vorgabe aus
--akku [reset\|abschied] Akku-Gesundheit: Minuten <20%/>80%, Ladezyklen-Aequivalent, geordnete Abschaltungen, VINDPM-Minuten - seit Epoche (Unix-Zeit); ‘reset’ nullt alle Konten und startet die Epoche neu
--imu [remap <0-7>\|mess <sek>] Bewegungssensor-Status: Achsen in mg, letzte/groesste Aenderung, Ruhe-Sekunden, Tilt-Zaehler (zum Einmessen: Uhr flach = z etwa +1000); “remap ” stellt die Achsen-Zuordnung um, bis Handgelenk-Heben den Tilt-Zaehler treibt (bleibt gespeichert); “mess ” schreibt jede Abtastung mit (z-Wert und Zustand der Hebe-Kette) - zum Nachvollziehen misslungener Hebeversuche, hoechstens 300 s
--memory — Speicher aufschluesseln (intern/DMA/PSRAM, frei und groesster Block)
--wetter — Wettermeldung des Sende-Schirms (Karte 4) frisch von Open-Meteo holen und die fertige Zeile ins Log schreiben - sendet nichts; Standort wie Karte 1, ohne Standort oder WLAN steht nur der Grund im Log
--audio [{on,off,test,start,ende,lora,udp,dm,aprs,stunde,warn}\|ton <f1> <f2> <ms> [pause] [n]] Toene/Gongs: einschalten, stummschalten, Probeklang; start/ende spielen den Ein- bzw. Ausschaltton, lora/udp/dm/aprs/stunde/warn die Meldungstoene zum Anhoeren (Funk-Dingdong, Draht-Blip, Pager, Sonar-Ping, Stundengong, Akku-Warnton - unabhaengig von Gong-Schaltern und Nachtruhe); ton = freier Probeton (Rechteck, f1 -> f2 gleitend, ms je Schlag, Pause, Anzahl) zum Durchprobieren neuer Klaenge ohne Flashen; ohne Argument Status
--setVOL <1-100> Gong-Lautstaerke in Prozent, logarithmische Skala (100 = voll, je 10 weniger = -4 dB, 10 = -36 dB, 1 = -40 dB; 0 %% = –audio off); spielt zur Kontrolle einen Probeklang
--gong [{stunde,lora,udp,aprs,nacht} {on,off}] Gong-Quellen und Nachtruhe (22-7) schalten; Pager bei Direktmeldung und Akku-Warnton laeuten immer; ohne Argument Status
--wecken [{draht,funk,nacht} {on,off}] Schirm-Wecken bei Meldung je Empfangsweg schalten (Vorgabe: nur Draht, wie bisher) + Nachtruhe (22-7) fuers Licht - Ton/Vibration bleiben unberuehrt; ohne Argument Status
--crashtest panic\|loop Absichtlicher Absturz (Uhr startet neu): panic = Schreibzugriff auf Adresse 0, loop = Hauptlauf 40 s blockieren (Loop-Waechter muss nach 30 s neu starten) - der naechste Boot zeigt Grund, Backtrace und Brotkrume im Reset-Journal (–info)
--sleeptest <sek> Light-Sleep-Probe (Spike 1.0.4.105): einmal Sekunden schlafen, sobald der Schirm dunkel ist und weder USB noch App haengen; Weckquellen Zeit/LoRa-DIO1/Touch/Krone, Ergebnis in –info
--csma — Kollisionserkennung: wie oft der Kanal belegt war, Fehlalarme, Versuche
--rxdiag [<sek>]\|band\|later <sek> [<ort>]\|show\|clear\|off Hoert der Funkchip? Rauschen, Praeambel, Bandsweep; ‘later’ misst ohne Kabel, Ort kommt ohne Angabe automatisch aus GPS/gespeicherter Position/Heimat
--lora — Funkmitschnitt (letzte 20 Rahmen, Empfang und eigene Aussendungen) und Kanalstatistik des 5-Minuten-Fensters - dasselbe wie die WebUI-Seite /lora (nur Luftschnittstelle, kein UDP)
--relay on\|off Weiterleitung (Digipeater) - ACHTUNG: sendet fremde Pakete SELBSTTAETIG weiter
--wfcanvas on\|off\|stat Messschalter (nur OEBB-Zifferblatt): Stunden-/Minutenzeiger-Canvas aus-/einblenden, um die Renderdauer des Sekundenzeigers zu vergleichen; “stat” gibt die Renderdauer je Sekunde der Minute aus - nicht gespeichert
--watchface [0\|1\|2\|bahnhofsuhr\|stromzaehler\|funkuhr] Zifferblatt waehlen und speichern (0 = Bahnhofsuhr, 1 = Stromzaehler, 2 = Funkraumuhr); ohne Argument zeigt das aktive an
--screen on\|off\|stat\|<Name> Schirm wecken (wie ein Kronendruck, Ablaufzeit laeuft neu) oder sofort abschalten; “stat” gibt die Renderdauer je Schirm aus; ein Name (z.B. Meldungen, Stationen, Ziffernblatt) waehlt den Schirm an - fuer Messlaeufe am Kabel und die Fernbedienung; nicht gespeichert
--wecker list\|add HH:MM [Tage\|taeglich\|werktags\|einmal\|JJJJ-MM-TT] [vib\|ton\|beides] [min\|aus]\|del n\|on n\|off n\|test n\|aus\|schlummern Wecker (8 Plaetze): anzeigen, anlegen (Tage z.B. Mo,Mi,Fr), loeschen, ein/aus; test n laesst ihn sofort klingeln
--setMERK 0\|1\|2\|5\|10\|30 Meldung merken: so viele Minuten nach dem Dunkelwerden bringt ein Touch die Meldung zurueck, die die Uhr geweckt hat - danach die Uhr; 0 = aus (wie der Regler im Setup)
--ackinfo on\|off MeshCom-App: jede Quittung einzeln melden (wer hat gehoert, wer quittiert) - gilt nur fuer die laufende App-Verbindung, nicht gespeichert; setzt die App selbst
--dmack on\|off Auf Direktmeldungen mit Quittungswunsch antworten (Standard an) - nur auf Meldungen an das eigene Rufzeichen, nicht auf Rundrufe; das ist die Quittung, auf die der Absender wartet
--gateway on\|off\|nopos on\|off\|srv OE\|DL\|IT Gateway: Gehoertes geht ins Internet, Servermeldungen ins Funknetz - mit dem eigenen Rufzeichen; “nopos off” strahlt auch Positionen ab
--btcode <6-stellig>\|0 BLE-PIN fuer die App setzen; 0 = kein Schutz (Zugang offen)
--exportSET — Alle Einstellungen als Konsolenbefehle ausgeben, eine Zeile je Wert (Kennwoerter im Klartext!) - Block kopieren und aufbewahren; Gegenstueck –importSET
--importSET — Einfuegefenster oeffnen: danach den Block aus –exportSET einfuegen und Enter druecken; jede Zeile wird ausgefuehrt, 10 s nach der letzten Zeile Bericht + Speichern; danach –REBOOT
--info — Statusuebersicht ausgeben
--help — Diese Liste ausgeben
--REBOOT — Uhr neu starten

7.3 Zugangsdaten setzen

Bis zu drei WLAN-Zugänge lassen sich hinterlegen — auf zwei gleichwertigen Wegen: die Platznummer als eigenes Argument (--setSSID 1 ...) oder am Befehlsnamen (--setSSID1 ...). Beide Formen wirken gleich:

--setCALL OE3XYZ-12
--setSSID 1 MeinNetz          Netzname auf Platz 1
--setSSID1 MeinNetz           dasselbe, kurze Schreibweise
--setPWD 1 geheim             Kennwort dazu (die Uhr startet danach neu)
--setPWD1 geheim              dasselbe, kurze Schreibweise
--setSSID 2 Gastnetz          zweiter Zugang
--setSSID 2 off               Platz 2 wieder leeren

Beide Schreibweisen wirken GLEICH. Die kurze Form (Platzziffer am Befehlsnamen) erlaubt zusätzlich Netznamen, die selbst mit einer Ziffer beginnen (z. B. „1 Etage“), weil danach ALLES bis zum Zeilenende der Name ist — bei der langen Form würde die führende Ziffer sonst als Platzangabe verschluckt.

ℹ️ Eine nackte Platzziffer zeigt an, statt zu setzen — bei beiden Schreibweisen (--setSSID 2 genauso wie --setSSID2): für den Netznamen wird der aktuelle Wert angezeigt, für das Kennwort nur ob eines hinterlegt ist — der Wert selbst erscheint nie im Protokoll.

Das nackte --setSSID off schaltet das gesamte WLAN ab, nicht einen einzelnen Platz — zum Leeren eines Platzes gehört die Ziffer davor.

⚠️ Ohne gültiges Rufzeichen sendet die Uhr nicht. Das ist Absicht: Eine Aussendung ohne Kennung ist im Amateurfunk nicht zulässig. Steht im Speicher kein brauchbarer Wert, unterbleibt die Aussendung — lieber gar nicht funken als ohne Kennung.

8 Firmware aktualisieren

8.1 Über die Luft

Der Update-Schirm liegt in der senkrechten Säule unter Setup. Zwei Wege stehen zur Wahl: eine Datei im Browser hochladen oder die Uhr das Update selbst von einer Adresse holen lassen. Beides ist durch ein Kennwort geschützt.

⚠️ Der Web-Server läuft nur, solange der Update-Schirm geöffnet ist. Das ist Absicht: Der offene Schirm ist die Freigabe. Eine Uhr, die dauerhaft einen Server betreibt, wäre ein unnötiges Einfallstor.

Aus dem Browser (seit 1.0.3.133): Läuft der Webserver der Uhr (--web on), gibt es dort die Seite Update. Sie zeigt die laufende Firmware, die Update-Adresse und auf Knopfdruck den Serverstand („Serverstand prüfen“). Darunter beide Wege: „Jetzt vom Server holen“ lässt die Uhr das Abbild von der Update-Adresse laden — sie wechselt auf den Update-Schirm, zeigt dort den Fortschritt, ist im Browser etwa 2 Minuten nicht erreichbar und startet danach selbst neu. Browser-Update lädt eine firmware.bin (das OTA-Abbild vom Flasher, nicht die factory-Datei) direkt hoch; auch hier zeigt die Uhr den Fortschritt und startet nach dem Schreiben neu. Beides verlangt die Freigabe (--ota on) und das Kennwort. Solange der Webserver läuft, startet der Update-Schirm keinen eigenen Server (beide brauchen Port 80) — er sagt dann „Upload: Browser /update“ (bis 1.0.4.50 stand dort ein längerer Satz, der über den rechten Rand lief).

Ein Knopf, der tut, was er sagt (seit 1.0.4.57). Beim Betreten des Update-Schirms fragt die Uhr den Serverstand von selbst ab — der Knopf ist dabei kurz gelb „Prüfe Server …“. Dann steht in der Ergebniszeile „aktuell” oder „Neu am Server: 1.0.4.57”, und der Knopf sagt, was der nächste Tipp tut: Gibt es etwas Neues, ist er grün und heißt „Installieren” — ein Tipp startet das Update. Gibt es nichts Neues oder ist die Prüfung fehlgeschlagen, heißt er „Erneut prüfen” und fragt den Server noch einmal. Während des Updates ist er wieder gelb und zählt „Update 42 %” groß in Blau, danach „Neustart …“; solange er gelb ist, ist er wirkungslos, auch während der fünf Sekunden bis zum Neustart. Die Zeile darüber sagt nur, welche Firmware installiert ist, die Zeile darunter nur das Ergebnis — die Versionsnummer steht nirgends zweimal.

Bis 1.0.4.56 öffnete der Knopf „Von Adresse laden” erst eine zweite Seite mit „Abbrechen” und „Installieren”. Die ist weg: Der Ruheknopf startet nie ein Update, er prüft nur, und „Installieren” gibt es erst, wenn der Server wirklich etwas Neueres hat. Ein Wisch, der über den Knopf streift, zählt nicht als Tipp. Eine ältere Serverversion wird gar nicht mehr angeboten; wer dieselbe Nummer absichtlich noch einmal aufspielen will, nimmt --startOTA an der Konsole. Der Knopf ist von der Port-80-Sache übrigens nicht betroffen und funktioniert auch bei laufender Webseite.

8.2 Das Kennwort — im öffentlichen Abbild zuerst setzen

Das Abbild von craith.cloud/espflash bringt kein Update-Kennwort mit — absichtlich: Sonst trüge jede Uhr dasselbe, allgemein bekannte Kennwort. Ohne Kennwort bleibt der Update-Server aus, und der Browser meldet „Kein Kennwort konfiguriert“. Einmal setzen genügt, die Uhr merkt es sich:

--setOTApwd <kennwort>

Der Befehl gehört in die USB-Konsole (siehe das Kapitel zur Konsolenbedienung). Danach fragt der Browser nach dem Benutzer admin und diesem Kennwort. Dasselbe Kennwort öffnet auch den Webserver der Uhr (--web on). --setOTApwd none löscht es wieder.

⚠️ Kennwörter nicht über das Chat-Fenster der App eintippen. Die Telefon-Tastatur macht aus -- gern einen Gedankenstrich — ein so verunstalteter Befehl wäre eine gewöhnliche Meldung, und die geht über Funk. Seit 1.0.3.89 hält die Uhr Kennwort-Befehle grundsätzlich vom Funk fern, auch mit Gedankenstrich. Der sichere Weg bleibt trotzdem das Kabel: Was die Konsole sieht, sieht sonst niemand.

Seit 1.0.4.51 stört auch ein versehentliches Leerzeichen vor dem Befehl nicht mehr: Die Tastatur setzt gern eines davor, und bis dahin ging --info deshalb als Meldung über Funk hinaus, statt ausgeführt zu werden. Führende Leerzeichen vor einem Befehl wirft die Uhr jetzt weg. Eine echte Meldung, die mit einem Leerzeichen beginnt, bleibt unverändert.

Seit 1.0.3.95 muss man dafür nicht mehr raten: Der Update-Schirm nennt den Grund selbst, wenn der Server nicht läuft — „Kennwort fehlt: –setOTApwd”, „kein WLAN” oder „OTA aus: –ota on”. Mit --ota off lässt sich die Update-Funktion ganz abschalten, --ota on holt sie zurück.

Auch der Update-Knopf der MeshCom-App funktioniert (seit 1.0.3.98): Er holt das Update direkt von der hinterlegten Adresse und spielt es ein. Die Uhr wechselt dabei von selbst auf den Update-Schirm und zeigt den Fortschritt (seit 1.0.3.100). Das Einspielen dauert rund ein bis zwei Minuten, die Bluetooth-Verbindung reißt dabei ab — das ist normal; nach dem Neustart verbindet sich die App von selbst wieder.

8.3 Die Update-Adresse

Das öffentliche Abbild bringt die Adresse des Projekt-Servers seit 1.0.3.95 ab Werk mit — Versionsprüfung und „Update von Adresse holen” funktionieren also ohne weiteres Zutun, sobald Kennwort und WLAN stehen. Wer eine andere Quelle braucht, ändert die Adresse per --setOTAurl <adresse> oder im Browser auf der Seite /einstellungen (Feld „OTA-Adresse”). Ein geleertes Feld bzw. --setOTAurl off schaltet den Adressweg dauerhaft ab — auch ein Neustart holt die Werksadresse dann nicht zurück.

Ältere Stände (vor 1.0.3.95) bringen keine Werksadresse mit. Dort die Adresse einmalig setzen — die Zeile zum Kopieren (Konsole, App oder Befehlsfeld im Browser):

--setOTAurl https://www.craith.cloud/espflash/firmware/twatch-s3-plus/firmware.bin

⚠️ Exakt so, mit www. — ohne www. antwortet der Server mit einer Umleitung, der die Uhr nicht folgt; der Update-Schirm meldet dann „Fehler: Wrong HTTP Code”.

Danach den Update-Schirm öffnen: Er zeigt die neuere Version an, [Installi.] holt und spielt sie ein — ein Sprung über viele Versionen hinweg ist dabei ausdrücklich in Ordnung.

8.4 Versionsprüfung

Beim Öffnen des Schirms fragt die Uhr nach, ob eine neuere Fassung bereitliegt, und zeigt das Ergebnis an.

Verglichen wird die eigene Versionsnummer (CR_VERSION), nicht die des Ursprungsprojekts. Der Grund steht im Anhang — es ist die Geschichte eines Fehlers, der zweimal einen Tag Arbeit gekostet hat.

8.5 Über USB

Der zuverlässigste Weg bleibt das Kabel. Vorgehen wie bei der Erstinbetriebnahme.

8.6 Einmal per Kabel: der Meldungsspeicher (seit 1.0.3.123)

Seit 1.0.3.123 speichert die Uhr jede Meldung sofort beim Eintreffen in einem eigenen Bereich des Flash-Speichers (256 KB, Platz für über 1000 Meldungen samt Datum und Lesestand). Nach jedem Neustart, Update oder Stromlos sind die letzten 100 wieder da. Dafür braucht die Uhr einmal eine neue Aufteilung des Flash-Speichers, und die kommt nicht per OTA: einmal per USB-Kabel oder über den Browser-Flasher (craith.cloud/espflash) flashen. Wer nur per OTA aktualisiert, hat weiterhin die letzten 30 Meldungen — die Uhr meldet das beim Start im Log (Partition 'msgs' fehlt).

8.7 Einstellungen sichern und wiederherstellen (seit 1.0.3.125, Text seit 1.0.3.132)

Unten auf der Seite Einstellungen gibt es den Abschnitt Sicherung: „Sicherung herunterladen” liefert alle Einstellungen als Textdatei twatch-einstellungen.txt — samt Kennwörtern im Klartext, also sicher aufbewahren. Die Datei ist genau das, was man in die Konsole tippen würde: eine Befehlszeile je Wert (--setCALL OE3LCR-30), Kommentarzeilen beginnen mit #. Sie lässt sich im Texteditor ändern oder kürzen, etwa um nur die WLAN-Plätze zurückzuspielen — oder man pflegt sich eigene Befehlslisten. Zum Wiederherstellen die Datei auswählen (oder den Text einfügen) und „Wiederherstellen” drücken; verlangt ein Kennwort-Befehl einen Neustart, steht das im Bericht, und der Knopf „Neustart” ist gleich daneben. Eine JSON-Sicherung aus 1.0.3.125 wird weiterhin angenommen. Vor einem Flash über den Browser-Flasher trotzdem sichern: seit 7. September 2026 bleiben die Einstellungen dabei zwar stehen (siehe unten), mit angehaktem „Erase device” sind sie aber weg.

Dasselbe über die USB-Konsole (seit 1.0.3.132): --exportSET gibt alle Einstellungen als fertige Konsolenbefehle aus, eine Zeile je Wert (--setCALL OE3LCR-30, Kommentarzeilen beginnen mit #). Den Block zwischen „Anfang“ und „Ende“ kopieren und aufbewahren. Zum Zurückspielen --importSET eingeben, den Block einfügen und Enter drücken: die Uhr führt jede Zeile sofort aus, meldet 10 s nach der letzten Zeile „n Befehle übernommen und gespeichert“ und startet dann von selbst neu, wenn ein Kennwort dabei war (sonst einmal --REBOOT). Auch hier stehen die Kennwörter im Klartext — und beim Einfügen erscheinen sie im Echo der Konsole, also nur am eigenen Kabel.

Ohne vorheriges --importSET (seit 1.0.4.13): Genau das ist der Weg nach einem Browser-Flashen mit „Erase device” und damit leerem NVS-Speicher (die Konsole ist dann der einzige Restore-Weg): den kopierten Text von twatch-einstellungen.txt bzw. --exportSET direkt in die Konsole einfügen und Enter drücken — ohne vorheriges --importSET. Seit 1.0.4.13 läuft der ganze Block dabei zuverlässig durch, auch mit Kennwort-Zeilen mittendrin: der Neustart kommt automatisch 10 s nach der letzten Zeile, statt den Block bei der ersten Kennwortzeile abzureißen. --importSET bleibt der Komfortweg — er zählt die Zeilen mit und meldet am Ende einen Bericht.

8.8 Ablauf nach dem Browser-Flashen: sichern, flashen, wiederherstellen (seit 1.0.4.13)

Seit dem Flasher-Stand vom 7. September 2026 bleibt der Einstellungsspeicher beim Browser-Flash erhalten: Der Flasher schreibt Bootloader (0x0), Partitionstabelle (0x8000), Boot-Marke (0xE000) und Firmware (0x10000) als vier getrennte Teile und lässt den Bereich 0x9000–0xE000 mit den Einstellungen unangetastet. Vorher war es ein Vollabbild ab 0x0, in dem genau dieser Bereich mit 0xFF aufgefüllt war — und 0xFF schreiben heißt für den Flash löschen (Befund Wolfgang OE3WAS, 6. September 2026). Nur „Erase device / Löschen” im Flasher-Dialog löscht weiterhin alles, auch den Meldungsspeicher. Für einen Flash über craith.cloud/espflash — Firmware-Wechsel, neue Partitionstabelle, Werksreset — trotzdem diese Reihenfolge einhalten, dann ist auch der Erase-Fall abgedeckt:

  1. Vor dem Flashen sichern: Auf der Weboberfläche der Uhr unter Einstellungen → Abschnitt Sicherung → „Sicherung herunterladen” die Datei twatch-einstellungen.txt speichern (oder --exportSET in der Konsole, den Block kopieren).
  2. Flashen wie im Kapitel Inbetriebnahme beschrieben.
  3. Einmal von Hand neu starten: die RESET-Taste drücken. Ohne diesen Schritt bleibt die USB-Konsole unerreichbar, auch wenn der Browser den Anschluss anzeigt und man minutenlang wartet — der ESP32-S3 hängt am eingebauten USB-Anschluss, den ein Soft-Reset nicht neu anmeldet.
  4. Serielle Konsole öffnen (115200 Baud, siehe Kapitel zur Konsolenbedienung).
  5. Den gesamten Text der Sicherung einfügen und Enter drücken — ohne vorheriges --importSET. Jede Zeile ist ein Konsolenbefehl.

Seit 1.0.4.13 läuft der ganze Block dabei zuverlässig durch, auch mit Kennwort-Zeilen mittendrin (--setPWD1, --setPWD2, --setPWD3, --setMQTTpwd): Diese Befehle lösen den Neustart nicht mehr sofort aus, sondern merken ihn nur vor. Die Uhr wartet nach der letzten Zeile 10 Sekunden Ruhe und startet dann einmal von selbst neu; jeder weitere Befehl schiebt diese Frist auf. Vor 1.0.4.13 brach der Vorgang bei der ersten Kennwort-Zeile ab, der Rest des Blocks ging verloren.

--importSET gibt es weiterhin und bleibt nützlich: Es öffnet ein eigenes Einfügefenster, zählt die Zeilen mit und schreibt am Ende einen Bericht. Seit 1.0.4.13 ist es für das Wiederherstellen nicht mehr nötig — der Block läuft auch ohne.

Ein von Hand getipptes --REBOOT startet weiterhin sofort neu, ohne auf die 10 Sekunden zu warten.

⚠️ Die JSON-Sicherung (älteres Format, aus 1.0.3.125) versteht nur die Weboberfläche. Der Weg über die Konsole braucht die Textsicherung (twatch-einstellungen.txt bzw. --exportSET).

9 Akku und Laufzeit

9.1 Was die Laufzeit bestimmt

Nicht der Schirm — das war die Überraschung einer Messung. In einem Tageslauf war er in sechs von 62 Stichproben an, also rund ein Zehntel der Zeit.

Die eigentlichen Verbraucher sind GPS und LoRa-Empfang, dazu das WLAN im Leerlauf.

9.2 Was man tun kann

9.3 Was die Uhr von selbst tut (Sparmaßnahmen)

Jede Maßnahme hat einen eigenen Schalter und lässt sich einzeln abschalten. Zu jeder steht hier, was sie erreichen will (Ziel) und was sie dafür tut (Wirkung) — so lässt sich beurteilen, ob sie zum eigenen Gebrauch passt.

9.3.1 Prozessortakt (--setECOCPU, ab Werk an)

9.3.2 GPS drinnen, wenn die App liefert (--setECOGPS, ab Werk an)

9.3.3 Bewegungssensor (--setECOIMU, ab Werk an, seit 1.0.3.70)

9.3.4 GPS-Sparpause bei erfolgloser Suche (--setECOFIX, ab Werk an)

9.3.5 WLAN-Sparen (--setECOWLAN, ab Werk an, seit 1.0.4.31)

9.3.6 GPS nur für die Bake (--setECOBAKE, ab Werk aus, seit 1.0.4.32)

9.3.7 Nachtschlaf (--setECOSLEEP, ab Werk aus, seit 1.0.4.105)

9.3.8 Digipeater-Pause in der Nacht (--setECODIGI, ab Werk aus, seit 1.0.4.145)

9.4 Das Akku-Logbuch

Die Uhr schreibt ihre eigene Entladekurve mit — alle fünf Minuten ein Messpunkt mit Spannung, Ladezustand und dem Zustand der Verbraucher. Die Aufzeichnung übersteht einen Neustart und wird beim Start ausgegeben.

9.5 Der Ladestrom

Auf der Akku-Detailseite (Kachel Akku antippen bzw. lang drücken) sitzt ein Schieberegler mit sechs Stufen: 125, 150, 175, 200, 300 und 400 mA. Die Farbe des Wertes sagt, wie schonend die Wahl ist:

Farbe Stufen Bedeutung
🟢 grün 125 mA schonend — lädt die laufende Uhr allerdings kaum (Eigenverbrauch)
🟡 gelb 150–175 mA Mittelweg
🟠 orange 200 mA zügig
🔴 rot 300–400 mA an der Herstellergrenze („below 300~400 mA“)

Bei 300 und 400 mA erscheint zusätzlich ein rotes Warndreieck — unten links auf der Detailseite und ebenso unten links am Ziffernblatt (⚠️ mit Batteriesymbol, gegenüber dem Meldungszähler). Es verschwindet, sobald eine Stufe von höchstens 200 mA gewählt ist. Einstellbar auch per Konsole: --setCHGCUR <mA>.

9.6 Die Gesundheitskonten

Seit 1.0.3.95 führt die Uhr Buch darüber, wie der Akku behandelt wird — Li-Ion altert vor allem durch Zeit ganz oben und ganz unten. --akku zeigt die Konten, die einen Neustart überstehen und seit einem merkbaren Datum zählen:

Konto Bedeutung
< 20 % Zeit im Tiefstand (Stunden und Minuten)
> 80 % Zeit im Vollstand — läuft praktisch nur am Ladekabel
Ladezyklen geladene Prozentpunkte, durch 100 — „3,5 Zyklen” statt Ansteck-Zählerei
Geordnete Abschaltungen wie oft der Akku-Schutz die Uhr heruntergefahren hat
VINDPM Zeit, in der eine zu schwache USB-Quelle das Laden verhindert hat (siehe unten)
Rote Ladezeit Minuten, die tatsächlich mit 300/400 mA (rote Stufen) geladen wurde
Rot eingelegt wie oft die rote Stufe eingestellt wurde

--akku reset setzt alle Konten auf null und merkt sich das neue Startdatum. Dieselben Werte stehen auch im Webserver der Uhr auf der Seite /akku (Block „Akku-Gesundheit”). Darüber zeigt der Block „Ladung jetzt” Sollwert, Ladephase, Quellenspannung und den Netto-Zufluss der letzten halben Stunde. Den tatsächlichen Ladestrom in mA kann die Uhr nicht messen — ihr Stromregler hat keinen Strommesser; die Ladephase sagt aber, ob der Sollwert gerade fließt („Konstantstrom”) oder der Strom von selbst sinkt („Konstantspannung”, Endphase).

Darunter die Messpunkte des Akku-Logbuchs, neueste zuerst. Seit 1.0.4.129 wählst du über der Tabelle, wie viele Zeilen die Seite zeigt: 10 (Vorgabe), 20, 30, 50 oder 100. Zehn Zeilen kommen in gut einer Sekunde, hundert in knapp zehn. Für alles auf einmal gibt es weiter /akku.csv, das dauert am Handy eine Minute.

9.7 Der Akku-Schutz

Unter 3600 mV bleiben nur noch rund 15 Minuten — die Uhr reagiert gestuft: sie dimmt den Schirm und kürzt die Abschaltzeit, schaltet unter 3600 mV (bis 1.0.4.93: 3550 mV) GPS ab und sperrt das Senden (der Empfang läuft bis zuletzt), und schaltet sich bei etwa 3480 mV geordnet ab. Vor dem Aus zeigt die Uhr seit 1.0.4.94 drei Sekunden lang „Akku leer – bitte laden” – ein leerer Akku sieht damit nicht mehr aus wie eine hängende Uhr (--akku abschied zeigt den Schirm zur Probe). Beim Eintritt in jede Stufe und alle 15 Minuten sichert die Uhr außerdem die letzten 30 Meldungen als Rückfallebene — seit 1.0.3.123 liegt ohnehin jede Meldung sofort beim Eintreffen im Flash (siehe Update-Kapitel) — so überstehen sie auch ein plötzliches Stromlos (seit 1.0.3.119; die Schwellen lagen vorher bei 3500/3400 mV, was am 29.08. zu spät war: bei 3397 mV war die Uhr schon weg, ohne Sicherung). Die Prozentanzeige taugt dabei wenig — die Spannung ist die belastbare Größe.

9.8 Wenn die Uhr am Kabel nicht lädt (VINDPM)

Eine zu schwache USB-Quelle (dünnes Kabel, sparsamer Rechner-Port) bricht unter der Ladelast ein. Der Stromregler der Uhr schützt die Quelle dann, indem er den Ladestrom bis auf null zurücknimmt — die Uhr läuft am Kabel, aber aus dem Akku. Dieser Zustand heißt VINDPM.

Seit 1.0.3.95 zeigt die Uhr das ehrlich an: Das Batteriesymbol trägt ein ~ statt des Ladeblitzes und wird orange, und die Schutzstufen greifen auch am Kabel — vorher konnte eine Uhr in diesem Zustand unbemerkt tiefentladen. Abhilfe: eine kräftigere Quelle oder ein anderes Kabel. Hilft das nicht, die Krone länger als sechs Sekunden halten (Stromregler ganz aus) und neu anstecken.

Seit 1.0.3.113 versucht die Uhr das zuerst selbst (Lade-Wächter):

nach Stufe was passiert
60 s VINDPM 1 „Soft-Neuanstecken”: Laden kurz sperren, Eingang auf 100 mA, dann Limit und Ladestrom neu setzen — die Chip-Seite des Ab-/Ansteckens
3 min 2 Ladestrom vorübergehend auf die kleinste Stufe (125 mA), damit die schwache Quelle nicht mehr einbricht — lieber langsam als gar nicht; zurück auf deinen Wert, sobald VINDPM 30 s weg ist (wird nicht gespeichert)
8 min 3 nur mit --setPMURESET on: einmal je Kabelsitzung ein Neustart des Stromreglers (die Uhr startet neu — das ist das Krone-Rezept als Software). Ab Werk aus

Jede Stufe schreibt eine [PWR] Lade-Waechter-Zeile ins Log; --akku zeigt Ladephase, VINDPM-Schwelle des Reglers und wie oft die Stufen griffen. --ladefix löst Stufe 1 von Hand aus — so lässt sich in zehn Sekunden messen, ob der Soft-Weg an einem bestimmten Port wirkt. Ehrlich gesagt: Die Physik (weicher Port unter Startlast) können die Stufen nur abfedern.

10 Fehlersuche

10.1 Der Schirm bleibt schwarz, die Beleuchtung ist an

Die Uhr startet gerade. Der Startvorgang dauert einige Sekunden, weil dabei das Akku-Logbuch ausgegeben wird.

Das bloße Öffnen der seriellen Verbindung startet die Uhr übrigens nicht neu (am Gerät geprüft) — erscheint ein Startvorgang im Mitschnitt, hat die Uhr tatsächlich neu gestartet.

10.2 Die Uhr sendet nicht

Der Reihe nach prüfen:

  1. Steht ein Rufzeichen im Speicher? Ohne sendet die Uhr grundsätzlich nicht.
  2. Steht der Sendeleistungsregler ganz links? Dann ist Empfangsbetrieb eingestellt.
  3. Ist die LoRa-Kachel rot? Dann ist das Funkmodul stromlos.
  4. Sind seit der letzten Aussendung zehn Sekunden vergangen?

10.3 Die Karte wird sofort rot

Der Mindestabstand von zehn Sekunden war noch nicht erreicht. Kurz warten, erneut tippen.

10.4 Kein Empfang

Nach dem Aufspielen einer neuen Firmware sind Meldungsliste und Stationstabelle leer — sie liegen im flüchtigen Speicher. Gespeicherte Einstellungen und das Akku-Logbuch überstehen den Neustart dagegen.

10.5 Die Uhr lädt am Kabel nicht

Zeigt das Batteriesymbol ~ statt des Ladeblitzes, ist die USB-Quelle zu schwach und der Ladestrom wurde auf null geregelt (VINDPM, siehe Kapitel Akku). Kräftigere Quelle oder anderes Kabel verwenden; hartnäckige Fälle löst die Krone (länger als sechs Sekunden halten, dann neu anstecken). --akku zählt mit, wie lange dieser Zustand insgesamt bestand.

10.6 Ein Update hat den Stand zurückgesetzt

Server und Uhr trugen dieselbe Versionsnummer. Siehe Anhang.

10.7 Die Uhr zeigt 12:00 (oder eine alte Zeit)

Die Uhr hat drei Zeitquellen, in dieser Reihenfolge: die eingebaute Uhr (RTC) beim Start, das GPS, sobald es einen Fix hat (Sekundengenau, weltweit), und NTP über WLAN — nicht nur beim Start, sondern bei jedem WLAN-Verbinden (seit 1.0.3.114). Bis 1.0.3.113 war die RTC stromlos und NTP lief nur, wenn WLAN schon beim Einschalten da war — daher das 12:00. Steht die Zeit trotzdem falsch: --akku und das Log zeigen [RTC], [GPS] Systemzeit aus GPS gestellt und [NTP] Zeit synchronisiert; fehlt alles drei, hat die Uhr weder Fix noch Netz.

11 Anhang

11.1 Technische Eckdaten

Rechnerkern ESP32-S3, zwei Kerne, 240 MHz
Speicher 16 MB Flash, 8 MB PSRAM
Funkbaustein SX1262, 433,175 MHz, Bandbreite 250 kHz, Spreizfaktor 11
MeshCom-Kennung 61 — der T-Watch-S3-Plus am 5. August 2026 von OE1KBC zugeteilt
MeshCom-Protokoll 4.40A — steht auf dem Info-Schirm und entscheidet, ob das Netz die Uhr versteht
Schirm 240 × 240 Bildpunkte
Firmware 1.0.5.36 (Basis SMashCom42 42.0.3.1)

11.2 Warum es zwei Versionsnummern gibt

Solange Uhr und Update-Server dieselbe Nummer trugen, meldete die Prüfung „aktuell”, während die Datei dahinter älter war. Zweimal an zwei Tagen hat ein Update dadurch einen ganzen Tag Arbeit gelöscht.

Seitdem entscheidet allein die eigene Nummer über Updates. Die Nummer des Ursprungsprojekts bleibt als Herkunftsangabe stehen und wird auf dem Info-Schirm als „Basis” angezeigt.

11.3 Lizenz

MIT — © 2026 Wolfgang Zelinka (OE3WAS) und Christian Raith (OE3LCR).

Die Firmware enthält Bestandteile unter der LGPL-2.1 (BearSSL-Anbindung). Der zugehörige Quelltext liegt beim Web-Flasher zum Herunterladen bereit. Emoji-Grafiken sind Twemoji (CC-BY 4.0), Teile der Protokollbehandlung stammen aus der MeshCom-Firmware (MIT, icssw.org).

11.4 Weiterführendes