| Firmware | 1.0.5.36 |
| Basis | SMashCom42 42.0.3.1 |
| Stand | 04.10.2026 |
| Verfasser | Christian Raith, OE3LCR |
| Grundlage | Wolfgang Zelinka, OE3WAS |
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.
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. |
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.
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.
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
0x0gehört nur diefirmware.factory.bin. Diefirmware.binist das reine App-Abbild für Updates über die Luft und darf dort nicht verwendet werden.
screen).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”.
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.
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).
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.--wlanohne Zusatz zeigt, was der Funkchip selbst meldet (Netz, Signalstärke, IP) und was der Suchautomat gerade tut;--wlan scansucht sofort (und trennt dafür eine bestehende Verbindung — etwa um vom Heimnetz auf den Hotspot zu wechseln, ohne 60 Sekunden zu warten).
Die gesamte Bedienung kommt mit vier Gesten und zwei Tasten aus. Wer sie kennt, braucht dieses Handbuch nicht mehr.
| 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 |
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.
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.
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.
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 |
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).
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
Firmware über die Luft — siehe eigenes Kapitel.
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.
Auf dem Sendeschirm eine der fünf Karten antippen.
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:
--wetterschreibt 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.
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.
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.
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.
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.
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.
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):
--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.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.
--sendPOS (Konsole,
Browser oder App-Chat) sendet sofort, auch bei ausgeschalteter
APRS-Kachel.--aprs on|off (bis 1.0.3.92 hieß dieser
Schalter --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.
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”.
Eingeschaltet bestätigt die Uhr empfangene Meldungen selbsttätig — dieselbe Quittung, die die eigene Sendekarte grün werden lässt.
*), nicht auf jedes gehörte Paket.--dmack, ab Werk an), und
zwar bei jedem Eingang. Neuere Knoten (MeshCom ab v4.35u) wiederholen
eine Direktmeldung bis zu dreimal, bis die Quittung ankommt. Seit
1.0.5.16 erscheint so eine Meldung trotzdem nur einmal
in der Liste und vibriert nur einmal.DEINRUF :sto017 EMPFÄNGER. Die Uhr versteht sie
und zeigt sie nicht als Meldung an. Die Sendekarte färbt sich weiter wie
gewohnt; die Quittung des Empfängers kommt erst, wenn der Briefkasten
zugestellt hat, und macht die Karte dann nachträglich grün.⚠️ 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.
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:
--symid, --symcd, --atxt) — die
App zeigt immer genau das, was die Uhr wirklich sendet.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.
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.
| 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.
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.
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
--infomit der ZeileBakenposition: …(„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.
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:
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.)--setANOTOKEN <token>.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.
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:
--gps lna normal schaltet um,
--gps lna low zurück. Der Empfänger startet dabei kurz neu,
behält aber seine Bahndaten; die Einstellung bleibt gespeichert.--gps rf zeigt, wie stark der Chip gerade nachregeln
muss (Zahl „AGC”: je kleiner, desto mehr Signal kommt an) und ob er
Störungen sieht. --gps rf 30 wiederholt das alle 30
Sekunden, --gps rf 0 beendet es.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.
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”.
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.
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.
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.
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.
| 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.
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 selbsthttps://an — die Uhr spricht nurhttp://. Wer nur die nackte Adresse (z. B.192.168.1.130) einträgt, sieht deshalb oft nur einen Fehler; mit ausgeschriebenemhttp://192.168.1.130klappt 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.
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.
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.
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
|
--setSSID |
[<platz>] <netzname>\|off\|none\|on |
WLAN-Netzname fuer Platz 1..3; “ |
--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; “ |
--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 |
--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 |
--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 |
--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 |
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 2genauso 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.
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.
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
--infodeshalb 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.
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.— ohnewww.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.
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.
Der zuverlässigste Weg bleibt das Kabel. Vorgehen wie bei der Erstinbetriebnahme.
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).
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.
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:
twatch-einstellungen.txt speichern (oder
--exportSET in der Konsole, den Block kopieren).--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.txtbzw.--exportSET).
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.
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.
--setECOCPU, ab Werk an)--setECOGPS, ab Werk an)--setECOIMU, ab Werk an, seit 1.0.3.70)--imu zeigt, was der
Sensor misst.--setECOFIX, ab Werk an)--setECOWLAN, ab Werk an, seit 1.0.4.31)--wlan scan. --wlan zeigt eine laufende Pause
samt Restzeit an.--setECOBAKE, ab Werk aus, seit
1.0.4.32)--sendPOS weckt die Schiene
sofort. Kommt bis zum Sendezeitpunkt kein Fix zustande, fällt die Bake
diesmal aus (die Uhr sendet nie eine erfundene Position) und die Schiene
geht trotzdem aus — nächster Versuch beim nächsten Takt.--sendPOS gibt oder den Schalter zurücknimmt. Der
GPS-Hauptschalter (Kachel bzw. --gps) hat immer das letzte
Wort.--setECOSLEEP, ab Werk aus, seit
1.0.4.105)--info zeigt je Nacht die Phasen, den Schlafanteil
und warum eine Phase endete.--setECODIGI, ab Werk aus, seit
1.0.4.145)--relay on). --setECODIGI ohne Zusatz zeigt,
ob die Pause gerade läuft und wie viele Weiterleitungen sie seit dem
Start unterlassen hat; dieselbe Zahl steht in --info.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.
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>.
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.
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.
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.
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.
Der Reihe nach prüfen:
Der Mindestabstand von zehn Sekunden war noch nicht erreicht. Kurz warten, erneut tippen.
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.
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.
Server und Uhr trugen dieselbe Versionsnummer. Siehe Anhang.
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.
| 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) |
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.
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).
doku/Entscheidungen.md — warum sich die Uhr an
bestimmten Stellen so verhältdoku/Bedienkonzept.md — der Entwurf hinter der
BedienungREADME.md — Kurzüberblick und Bauanleitung