# @name EggTimer # @desc Eieruhr Kurzzeitimer # @author Töm (taschenserver im Discord) # @version 0.3 # @config TMin number "Timer Min." default=5 min=0 max=99 unit=Min. # @config TSek number "Timer Sek." default=0 min=0 max=59 unit=Sek. # @config Alarm_Duration number "Alarmdauer Sek." default=5 min=0 max=30 unit=Sek. # @config Alarm_Text text "Alarmanzeige" default="00:00" maxlen=50 # @config Alarm_Audio bool "Alarmton" default=true # @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 class EggTimer var TStat, TMin, TSek, StSt, tDuration, tEnd, timer, dclick var i0, pb def init() self.TStat = 0 # 0-Stop, 1-Läuft, 2-Beendet self.timer = 0 self.dclick = 0 self.tDuration = 0 self.tEnd = 0 self.TMin = store.get("TMin", 5) self.TSek = store.get("TSek", 0) self.StSt = store.get("StartStop",false) self.i0 = "19105" self.pb = 21 end def loop() var v if self.StSt == true && self.TStat == 0 self.tDuration = (self.TMin*60+self.TSek)*1000 self.tEnd = now_ms()+self.tDuration self.TStat = 1 end if self.StSt == true i0 = "42893" self.timer = self.tEnd-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))) log("Timer"+str(self.timer)) if self.timer == 0 i0 = "44960" self.StSt = false store.set("StartStop",self.StSt) self.TMin = store.get("TMin", 5) self.TSek = store.get("TSek", 0) self.TStat = 0 if store.get("Alarm_Audio", true) == true notify({"name":"EggTimerAlarm", "text": store.get("Alarm_Text", "00:00"), "scroll":"loop", "textCase":"asTyped", "icon": "44960", "durationMs":(store.get("Alarm_Duration", 5)*1000), "soundLoop": true, "soundRtttl": "d:d=4,o=5,b=120:c,e,g"}) else notify({"name":"EggTimerAlarm", "text": store.get("Alarm_Text", "00:00"), "scroll":"loop", "textCase":"asTyped", "icon": "44960", "durationMs":(store.get("Alarm_Duration", 5)*1000)}) end end else i0 = "19105" end if (self.tDuration == 0 || self.timer == 0) && self.StSt == true self.pb = 0 elif (self.tDuration == 0 || self.timer == 0) && self.StSt == false self.pb = 21 else self.pb = 21-(22-int(22/real(self.tDuration)*self.timer)) end end def draw() clear() icon(self.i0,0,0) text(12, 6, (self.TMin < 10 ? "0":"")+str(self.TMin)+":"+(self.TSek < 10 ? "0":"")+str(self.TSek), 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] for i : 0 .. self.pb pixel( 9+i, 7, pal[i] ) end #line(31,7, self.pb, 7,0x000000) end end def duration() if self.StSt == 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.StSt == true self.StSt = false self.TStat = 0 self.TMin = store.get("TMin", 5) self.TSek = store.get("TSek", 0) self.tDuration = (self.TMin*60+self.TSek)*1000 self.tEnd = now_ms()+self.tDuration end else if self.StSt == false self.tEnd = now_ms()+((self.TMin*60+self.TSek)*1000) end self.StSt = self.StSt == false ? true : false end self.dclick = now_ms() store.set("StartStop",self.StSt) end if btn == "left" && self.StSt == 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.StSt == false self.TSek = self.TSek == 59 ? 0 : self.TSek + 1 store.set("TMin",self.TMin) store.set("TSek",self.TSek) end end end return EggTimer()