Countdown
Zählt eine eingestellte Dauer als hh:mm:ss herunter. Start, Pause, Stopp, ±-Tasten und Vorgaben-Chips am Widget; ein Tipp auf die Ziffern öffnet den Dauer-Dialog. Der Countdown läuft im Adapter – Tab zu oder Tablet aus ändert nichts – und schreibt am Ende (und optional beim Start) einen Datenpunkt. Wahlweise zeigt das Widget nur die Restzeit eines fremden Datenpunkts, z. B. aus dem mytime-Adapter.

Datenpunkt
| Feld | Pflicht | Typ | |
|---|---|---|---|
datapoint | nur bei Quelle „Fremder Datenpunkt“ | number | Restzeit in ms / s oder Endzeitpunkt (Epoch), siehe dpKind |
Bei der Quelle „Eigener Countdown“ bleibt das Feld leer. Der Adapter legt pro Widget einen Kanal aura.0.countdowns.<key> an:
| State | Typ | Richtung | Inhalt |
|---|---|---|---|
config | JSON | Widget → Adapter | Dauer, Ziel-DP, Werte |
cmd | string | Widget / Skript → Adapter | start · pause · resume · toggle · stop · end · +60 · -60 · =300 (Sekunden oder h:m:s) |
state | string | Adapter → alle | idle · running · paused · ended |
endTs | number | Adapter → Widget | Endzeitpunkt in Epoch-ms, 0 wenn nicht laufend |
remainingMs | number | Adapter → alle | Restzeit bei Pause; laufend nur mit „sekündlich veröffentlichen“ |
durationMs | number | Adapter → alle | aktuell eingestellte Dauer (ändert sich mit ±, Chips, =N) |
startedBy | string | Adapter → alle | Client-ID des Geräts, das gestartet hat; leer bei Skript oder Auslöser — Ziel der Ansage am Ende |
cmd nimmt jeden Befehl auch als JSON mit dem Gerät: {"cmd":"start","client":"kueche"}.
Der Pfad steht im Widget-Edit-Panel unter Adapter-States – mit fertigen Beispielen für den eigenen Schlüssel. Skripte schreiben cmd mit ack=false; der Adapter quittiert.
// JavaScript-Adapter
setState('aura.0.countdowns.<key>.cmd', 'start'); // starten (läuft er schon: neu starten)
setState('aura.0.countdowns.<key>.cmd', 'pause'); // anhalten – resume setzt fort
setState('aura.0.countdowns.<key>.cmd', 'stop'); // abbrechen – der Endwert wird geschrieben
setState('aura.0.countdowns.<key>.cmd', '+300'); // 5 Minuten dazu (-300 zieht ab)
setState('aura.0.countdowns.<key>.cmd', '=1800'); // Dauer auf 30 Minuten setzen
setState('aura.0.countdowns.<key>.cmd', 'toggle'); // ein Taster: Start ↔ Pause
on({ id: 'aura.0.countdowns.<key>.state', change: 'ne' }, (obj) => {
// obj.state.val: idle | running | paused | ended
});Blockly: Baustein „Steuere Datenpunkt“ auf …cmd mit einem Text-Wert wie start oder +300.
In Popup-Ansicht oder Gerätekarte
targetDp | Verhalten |
|---|---|
mit Platzhalter, z. B. {{dp}} | je Gerät ein eigener Countdown, Kanal aura.0.countdowns.<key>_<hash> (Name: Titel · Ziel-DP) |
| fest oder leer | ein gemeinsamer Countdown für alle |
In der Vorschau des Popup-Editors läuft nichts.
Layouts
Default
Titel und Zustand, große Ziffern, Fortschrittsbalken, Tastenzeile, Vorgaben-Chips.

Compact
Eine Zeile: Icon, Titel, Ziffern, Start/Pause und Stopp – für Listen.

Custom
Komponenten icon, digits, progress, controls, step, presets und Felder remaining, state, duration, target frei in einer Zellenmatrix – siehe Custom-Layout. Startet auf Wunsch aus dem bisherigen Layout (Aus Layout übernehmen); dafür die Komponenten digits-fill (Ziffern füllen die Zelle), digits-inline, primary-sm und stop-sm.
Zustände
| Zustand | Ziffern | Balken | Tasten |
|---|---|---|---|
| Bereit | eingestellte Dauer | voll | Start, ± |
| Läuft | Restzeit, sekündlich | Restanteil | Pause, Stopp, ± |
| Pausiert | eingefrorene Restzeit, gelb | Restanteil | Weiter, Stopp, ± |
| Abgelaufen | 00:00 oder „Text nach Ablauf“, grün | leer | Start |
| Wartet auf den Adapter | eingestellte Dauer, gedämpft | – | gesperrt |


Dauer-Dialog
Tipp auf die Ziffern. Stunden, Minuten, Sekunden oder eine Vorgabe; Übernehmen setzt die Dauer (=N) – laufend, pausiert oder bereit.

Einstellungen
Alle Optionen werden im Editor unter Widget bearbeiten gesetzt.
Quelle
| Option | Werte | Standard | |
|---|---|---|---|
source | aura · datapoint | aura | eigener Countdown im Adapter oder Anzeige eines fremden Datenpunkts |
dpKind | remaining-ms · remaining-s · end-ts | remaining-ms | nur datapoint: was der Datenpunkt enthält; end-ts = Epoch ms oder s (mytime …Countdowns.<n>.end) |
Bei datapoint sind Tasten, Chips und Balken ausgeblendet; die Restzeit tickt zwischen zwei Werten lokal weiter.

Dauer
| Option | Typ | Standard | |
|---|---|---|---|
durationSec | number | – | Startwert in Sekunden; ±, Chips und =N ändern die laufende Einstellung, nicht die Option |
stepSec | number | 60 | Schritt der ±-Tasten |
presets | number[] | – | Vorgaben in Sekunden, als Chips; im Panel als 5m, 15m, 1h oder 90, 1:30 eingeben |
Ziel-Aktion
| Option | Typ | Standard | |
|---|---|---|---|
targetDp | string | – | Datenpunkt, den der Adapter schreibt |
valueOnEnd | string | false | Wert am Ende; wird als boolean · number · string geparst; Feld leeren = nichts schreiben |
valueOnStart | string | true | Wert beim Start – die Vorgabe ergibt „für N Minuten einschalten“; Feld leeren = beim Start nichts schreiben (reine Endaktion) |
stopWritesEnd | boolean | an, solange valueOnStart nicht leer | Stopp schreibt ebenfalls valueOnEnd (Abbruch schaltet zurück) |
publishRemaining | boolean | false | remainingMs jede Sekunde schreiben – für Skripte; füllt History-Adapter |
Nach einem Adapter-Neustart läuft ein Countdown aus dem gespeicherten endTs weiter; war er in der Zwischenzeit abgelaufen, wird valueOnEnd nachgeholt.
Auslöser
Startet den Countdown, wenn ein Datenpunkt anders geschaltet wird – Taster, App, Skript. Läuft im Adapter.
| Option | Typ | Standard | |
|---|---|---|---|
triggerDp | string | – | überwachter Datenpunkt, meist = targetDp |
triggerValue | string | true | Wechsel auf diesen Wert startet; Vergleich als boolean · number · string |
triggerStopOnRevert | boolean | false | Wert fällt vorher zurück → Countdown endet, valueOnEnd wird nicht geschrieben |
triggerRestart | boolean | false | Auslösewert erneut, während er läuft → Zeit beginnt von vorn |
Nur der Wechsel zählt: gleiche Aktualisierungen und der Wert beim Adapter-Start lösen nicht aus. Ist Auslöser = Ziel, löst der eigene Schreibwert den Countdown nicht erneut aus.
| Beispiel | targetDp | triggerDp | valueOnStart | valueOnEnd | Schalter |
|---|---|---|---|---|---|
| Steckdose nach 30 min aus | Steckdose | Steckdose | leer | false | Rückfall stoppen |
| Treppenhauslicht | Licht | Bewegungsmelder | true | false | neu starten |
Ansage am Ende
Sagt beim Ablauf einen Text an oder spielt eine Sounddatei — über die Sprachausgabe, auch wenn das Dashboard geschlossen ist. Unabhängig von der Ziel-Aktion.
| Option | Typ | Standard | |
|---|---|---|---|
announceText | string | – | Text oder Sounddatei; {{title}} = Titel, [[Datenpunkt-ID]] = Wert; leer = keine Ansage |
announceTarget | starter · all · clients | starter | Gerät, auf dem Start gedrückt wurde · alle · Auswahl |
announceClients | string[] | – | Client-IDs bei clients; leer = alle |
announceVolume | 0–100 | – | leer = Lautstärke des Geräts |
announceInterrupt | boolean | false | laufende Ansage abbrechen |
Startet der Auslöser oder ein Skript den Countdown, ist kein Gerät bekannt — dann sagen alle Geräte an. Das startende Gerät steht in countdowns.<key>.startedBy.
| Beispiel | Titel | announceText | Ziel-Aktion |
|---|---|---|---|
| Küchenwecker | Pizza | {{title}} ist fertig | valueOnStart und valueOnEnd leer |
Anzeige
| Option | Werte / Typ | Standard | |
|---|---|---|---|
format | auto · hms · ms · hm | auto | auto = mm:ss unter einer Stunde, sonst hh:mm:ss; ms = Minuten gesamt; hm rundet Sekunden auf |
showDays | boolean | false | ab 24 h 2d 03:04:05 statt 51:04:05 |
digitSize | number (px) | 0 = auto | Ziffern passen sich sonst der Kachelbreite an |
showProgress | boolean | true | Fortschrittsbalken |
showControls | boolean | true | Start/Pause und Stopp |
showStep | boolean | true | ±-Tasten |
showPresets | boolean | true | Vorgaben-Chips |
endedText | string | – | Text statt 00:00 nach Ablauf, z. B. „Fertig“ |
showTitle · showIcon · icon · iconSize · titleAlign | wie bei allen Widgets |

Die Ziffern runden auf: 59,4 s stehen als 01:00, 00:00 erscheint genau zum Ende.
CSS-Klassen
| Selektor | trifft |
|---|---|
.aura-countdown | Wurzel; data-state = idle · running · paused · ended · unknown |
.aura-countdown-digits | Ziffern |
.aura-countdown-progress | Fortschrittsbalken |
.aura-countdown-state | Zustandstext in der Kopfzeile |
.aura-countdown-controls · .aura-countdown-primary · .aura-countdown-stop · .aura-countdown-step | Tastenzeile, Start/Pause, Stopp, ± |
.aura-countdown-presets | Vorgaben-Chips |
.aura-countdown-modal | Dauer-Dialog |