EggTimer
EggTimer, also useful for tea...
| System | AWTRIX NG Scripts |
|---|---|
| Firmware | AWTRIX NG |
| Topic | Miscellaneous |
| Built by | Töm |
| File | L6WmrORqkzHU.ax · 4.2 KB |
| Icons | — |
| Published | 11 Aug 2026 · updated 11 Aug 2026 |
| Downloads | 3 |
EggTimer
Overview
This AWTRIX NG script provides an egg timer that counts down the configured minutes and seconds to 00:00.
The timer can be started and paused using the center button. You can also start the timer via the AWTRIX NG Web UI in the app settings.
Double-pressing the center button within one second resets the timer to the previously configured values. Make sure not to press the button too quickly in succession, otherwise the display may be switched off or on.
Use the left button to adjust the preset minutes and the right button to adjust the preset seconds.
Installation
Before installing the script, make sure that:
- AWTRIX scripting is enabled.
- AWTRIX NG firmware
1.0.10-devor later is installed (required for the settings). - The script has been tested with AWTRIX NG firmware
1.0.15-dev. - The required LaMetric icons (see below) have been uploaded to AWTRIX NG.
Installation steps:
- Upload the required LaMetric icons.
- Install the script on your AWTRIX NG.
- Adjust the settings as required.
Icons
Before installing the script, use the AWTRIX NG web interface to install the following LaMetric icons:
19105– Timer idle42893– Timer running44960– Timer finished
Configuration
The following settings are available under Apps in AWTRIX NG:
-
Timer Min.: Set the timer duration in minutes (
0–99). -
Timer Sec.: Set the timer duration in seconds (
0–59). -
Text color: Change the color of the time display.
-
Progress bar: Displays the remaining time as a colored progress bar at the bottom of the display.
-
Always show running timer: Keeps the timer visible on the display for the entire duration of the timer (+20 seconds).
-
Start/Stop: Use this switch to start or stop the timer.
Privacy
No network connections are used.
Known bugs
Currently, the app also switches when the left and right buttons are used.
Changelog
v0.1 – Initial version
L6WmrORqkzHU.ax
# @name EggTimer
# @desc Eieruhr Kurzzeitimer
# @author Töm (taschenserver im Discord)
# @version 0.1
# @config TMin number "Timer Min." default=5 maxlen=99 unit=Min.
# @config TSek number "Timer Sek." default=0 maxlen=59 unit=Sek.
# @config TextColor color "Textfarbe" default=0xFFFFFF
# @config ProgressBar bool "Fortschrittsbalken" default=true
# @config HoldDisplay bool "Laufender Timer wird ständig angezeigt" default=true
# @config StartStop bool "STart/Stop" default=false
# Eieruhr
# Bedienung über Buttons Mitte Start/Stop, Rechts Minuten hoch, Links Sekunden hoch, Beide äußeren auf 00:00
# Icon 42893 Uhr läuft, 44960 Uhr beendet, 19105 Uhr läuft nicht
class EggTimer
var TStat, TMin, TSek, StartStop, timer_duration, timer_end, timer, dclick
def init()
self.TStat = 0 # 0-Stop, 1-Läuft, 2-Beendet
self.timer = 0
self.dclick = 0
self.timer_duration = 0
self.TMin = store.get("TMin", 5)
self.TSek = store.get("TSek", 0)
self.StartStop = store.get("StartStop",false)
end
def loop()
var v
if self.StartStop == true && self.TStat == 0
self.timer_duration = (self.TMin*60*1000)+(self.TSek*1000)
self.timer_end = now_ms()+self.timer_duration
self.TStat = 1
end
if self.StartStop == true
self.timer = self.timer_end-now_ms()
if self.timer < 0 self.timer = 0 end
v = self.timer / 1000
self.TMin = int(v / 60)
self.TSek = int((v - (self.TMin*60)))
end
#self.TMin = store.get("TMin", 5)
#self.TSek = store.get("TSek", 0)
#self.StartStop = store.get("StartStop",false)
#store.set("TMin", self.TMin)
#store.set("TSek", self.TSek)
#store.set("StartStop",self.StartStop)
end
def draw()
var lmin = (self.TMin < 10 ? "0":"")+str(self.TMin)
var lsek = (self.TSek < 10 ? "0":"")+str(self.TSek)
clear()
if self.StartStop == true && self.timer == 0
icon("44960",0,0)
elif self.StartStop == true
icon("42893",0,0)
else
icon("19105",0,0)
end
text(12, 6, lmin+":"+lsek, store.get("TextColor", 0xFFFFFF))
if store.get("ProgressBar",true) == true
var pal = [0xFF0000, 0xFF1200, 0xFF2400, 0xFF3600, 0xFF4800, 0xFF5A00, 0xFF6C00, 0xFF7E00, 0xFF9000, 0xFFA200, 0xFFB400, 0xFFC600, 0xFFD800, 0xFFEA00, 0xFCFF00, 0xDAFF00, 0xB8FF00, 0x96FF00, 0x74FF00, 0x52FF00, 0x30FF00, 0x00FF00]
var p
if (self.timer_duration == 0 || self.timer == 0) && self.StartStop == false
p = 31
elif (self.timer_duration == 0 || self.timer == 0) && self.StartStop == true
p = 9
else
p = 31-(22-int(22/real(self.timer_duration)*self.timer))
end
for i : 0 .. 21
pixel( 9+i, 7, pal[i] )
end
line(31,7, p, 7,0x000000)
end
end
def duration()
if self.StartStop == true
if self.timer == nil self.timer = 0 end
return self.timer+20000
else
return 10000
end
end
def on_button(btn)
if btn == "select"
if now_ms()-self.dclick < 1000
if self.StartStop == true
self.StartStop = false
log("dclick")
self.TStat = 0
self.TMin = store.get("TMin", 5)
self.TSek = store.get("TSek", 0)
self.timer_duration = (self.TMin*60*1000)+(self.TSek*1000)
self.timer_end = now_ms()+self.timer_duration
end
else
if self.StartStop == false
self.timer_end = now_ms()+(self.TMin*60*1000)+(self.TSek*1000)
end
self.StartStop = self.StartStop == false ? true : false
end
self.dclick = now_ms()
store.set("StartStop",self.StartStop)
end
if btn == "left" && self.StartStop == false
self.TMin = self.TMin == 99 ? 0 : self.TMin + 1
store.set("TMin",self.TMin)
store.set("TSek",self.TSek)
end
if btn == "right" && self.StartStop == false
self.TSek = self.TSek == 59 ? 0 : self.TSek + 1
store.set("TMin",self.TMin)
store.set("TSek",self.TSek)
end
if btn == "left" && self.StartStop == true
self.StartStop = self.StartStop == false ? true : false
self.timer = 0
self.TStat = 0
end
end
end
return EggTimer()
Install it on your AWTRIX NG
Your browser writes the script straight to the device on your network. It joins the app rotation right away.
Some browsers refuse to talk to a device on your network from a public page. Download the flow and paste it into the Scripts tab of your device, or install it from a terminal:
More flows for AWTRIX NG Scripts or Miscellaneous
Something wrong with this flow? Report it.