Skip to content

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 ​

FeldPflichtTyp
datapointnur bei Quelle „Fremder Datenpunkt“numberRestzeit 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:

StateTypRichtungInhalt
configJSONWidget → AdapterDauer, Ziel-DP, Werte
cmdstringWidget / Skript → Adapterstart · pause · resume · toggle · stop · end · +60 · -60 · =300 (Sekunden oder h:m:s)
statestringAdapter → alleidle · running · paused · ended
endTsnumberAdapter → WidgetEndzeitpunkt in Epoch-ms, 0 wenn nicht laufend
remainingMsnumberAdapter → alleRestzeit bei Pause; laufend nur mit „sekündlich veröffentlichen“
durationMsnumberAdapter → alleaktuell eingestellte Dauer (ändert sich mit ±, Chips, =N)
startedBystringAdapter → alleClient-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.

js
// 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 ​

targetDpVerhalten
mit Platzhalter, z. B. {{dp}}je Gerät ein eigener Countdown, Kanal aura.0.countdowns.<key>_<hash> (Name: Titel · Ziel-DP)
fest oder leerein 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 ​

ZustandZiffernBalkenTasten
Bereiteingestellte DauervollStart, ±
LäuftRestzeit, sekündlichRestanteilPause, Stopp, ±
Pausierteingefrorene Restzeit, gelbRestanteilWeiter, Stopp, ±
Abgelaufen00:00 oder „Text nach Ablauf“, grünleerStart
Wartet auf den Adaptereingestellte 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 ​

OptionWerteStandard
sourceaura · datapointauraeigener Countdown im Adapter oder Anzeige eines fremden Datenpunkts
dpKindremaining-ms · remaining-s · end-tsremaining-msnur 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 ​

OptionTypStandard
durationSecnumber–Startwert in Sekunden; ±, Chips und =N ändern die laufende Einstellung, nicht die Option
stepSecnumber60Schritt der ±-Tasten
presetsnumber[]–Vorgaben in Sekunden, als Chips; im Panel als 5m, 15m, 1h oder 90, 1:30 eingeben

Ziel-Aktion ​

OptionTypStandard
targetDpstring–Datenpunkt, den der Adapter schreibt
valueOnEndstringfalseWert am Ende; wird als boolean · number · string geparst; Feld leeren = nichts schreiben
valueOnStartstringtrueWert beim Start – die Vorgabe ergibt „für N Minuten einschalten“; Feld leeren = beim Start nichts schreiben (reine Endaktion)
stopWritesEndbooleanan, solange valueOnStart nicht leerStopp schreibt ebenfalls valueOnEnd (Abbruch schaltet zurück)
publishRemainingbooleanfalseremainingMs 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.

OptionTypStandard
triggerDpstring–überwachter Datenpunkt, meist = targetDp
triggerValuestringtrueWechsel auf diesen Wert startet; Vergleich als boolean · number · string
triggerStopOnRevertbooleanfalseWert fällt vorher zurück → Countdown endet, valueOnEnd wird nicht geschrieben
triggerRestartbooleanfalseAuslö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.

BeispieltargetDptriggerDpvalueOnStartvalueOnEndSchalter
Steckdose nach 30 min ausSteckdoseSteckdoseleerfalseRückfall stoppen
TreppenhauslichtLichtBewegungsmeldertruefalseneu 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.

OptionTypStandard
announceTextstring–Text oder Sounddatei; {{title}} = Titel, [[Datenpunkt-ID]] = Wert; leer = keine Ansage
announceTargetstarter · all · clientsstarterGerät, auf dem Start gedrückt wurde · alle · Auswahl
announceClientsstring[]–Client-IDs bei clients; leer = alle
announceVolume0–100–leer = Lautstärke des Geräts
announceInterruptbooleanfalselaufende 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.

BeispielTitelannounceTextZiel-Aktion
KüchenweckerPizza{{title}} ist fertigvalueOnStart und valueOnEnd leer

Anzeige ​

OptionWerte / TypStandard
formatauto · hms · ms · hmautoauto = mm:ss unter einer Stunde, sonst hh:mm:ss; ms = Minuten gesamt; hm rundet Sekunden auf
showDaysbooleanfalseab 24 h 2d 03:04:05 statt 51:04:05
digitSizenumber (px)0 = autoZiffern passen sich sonst der Kachelbreite an
showProgressbooleantrueFortschrittsbalken
showControlsbooleantrueStart/Pause und Stopp
showStepbooleantrue±-Tasten
showPresetsbooleantrueVorgaben-Chips
endedTextstring–Text statt 00:00 nach Ablauf, z. B. „Fertig“
showTitle · showIcon · icon · iconSize · titleAlignwie bei allen Widgets

Die Ziffern runden auf: 59,4 s stehen als 01:00, 00:00 erscheint genau zum Ende.

CSS-Klassen ​

Selektortrifft
.aura-countdownWurzel; data-state = idle · running · paused · ended · unknown
.aura-countdown-digitsZiffern
.aura-countdown-progressFortschrittsbalken
.aura-countdown-stateZustandstext in der Kopfzeile
.aura-countdown-controls · .aura-countdown-primary · .aura-countdown-stop · .aura-countdown-stepTastenzeile, Start/Pause, Stopp, ±
.aura-countdown-presetsVorgaben-Chips
.aura-countdown-modalDauer-Dialog