--[[------------------------------------------------------------------- Stand 3.4.2017 V0.50 Akkulaufzeit-Überwachung und die totale TX-Betriebszeit Nach dem Ladevorgang des Senders auf > 97% Ladung wird die Akkulaufzeit-Überwachung beim Einschalten des Senders automatisch einmal auf Null gesetzt (Reset). Dieser Vorgang wird verriegelt bis der Akku einmal unter 97% Ladung war. Anzeige und manueller Reset unter Zusatzfunktionen "TX-Betriebszeit" Hier wird die Zeit seit dem letzten Laden bzw. Reset und die totale Betriebszeit angezeigt. Anzeige Akkulaufzeit auch über Telemetrie-Fenster "TX-Akkulaufzeit" möglich. Betriebszeiten werden in der Dateio Betrieb.jsn auf oberer Ebene der SD-Karte im TX gespeichert. Die erste Zahl ist Akkulaufzeit, die zweite die totale Betriebszeit in Minuten. Wichtig: App muss in jedem Modell zugeordnet werden --]]------------------------------------------------------------------- -- globale Variablen local B_Zeit = 0 local totBZ = 0 local BZ_Min_str, BZ_Std_str local totBZ_Min_str, totBZ_Std_str local f local lastTime = 0 local value = {} local valStr local Reset_flag = 0 --------------------------------------------------------------------------------- -- button are pressed local function keyPressed(key) if(key==KEY_1) then B_Zeit = 0 -- Betriebszeit Reset value ={B_Zeit, totBZ, Reset_flag } local json_text = json.encode(value) -- Write back f = io.open("Betrieb.jsn","w") if(f) then io.write(f, json_text,"\n") io.close(f) end end end -------------------------------------------------------------------------------- -- Draw in Setup pages local function printForm() local AnzBZStr = string.format("%s:%s", BZ_Std_str, BZ_Min_str) lcd.drawText(1, 0, "Betriebszeit seit letztem Laden", FONT_NORMAL) lcd.drawText(40, 15, AnzBZStr, FONT_MAXI) AnzBZStr = string.format("%s:%s", totBZ_Std_str, totBZ_Min_str) lcd.drawText(1, 50, "totale Betriebszeit", FONT_NORMAL) lcd.drawText(40, 65, AnzBZStr, FONT_MAXI) end -------------------------------------------------------------------------------- -- Draw the telemetry window for TX-Betriebszeit local function printTelemetry_BZ() lcd.drawText(15,1,string.format("%s:%s", BZ_Std_str, BZ_Min_str),FONT_BIG) end -------------------------------------------------------------------------------- -- Draw the main form setup local function initForm(subform) form.setButton(1,"Reset",ENABLED) end --------------------------------------------------------------------------------- -- Runtime functions local function loop() local newTime = system.getTimeCounter() local TX_Data = system.getTxTelemetry() if newTime > (lastTime + 60000) then -- nach einer Min. lastTime = newTime B_Zeit = B_Zeit +1 totBZ = totBZ +1 if TX_Data.txBattPercent <= 97 then Reset_flag = 0 end value ={B_Zeit, totBZ, Reset_flag} local json_text = json.encode(value) -- Write back f = io.open("Betrieb.jsn","w") if(f) then io.write(f, json_text,"\n") io.close(f) end end local Std = math.floor(B_Zeit / 60) local Min = B_Zeit - Std * 60 BZ_Std_str = string.format("%10d", Std ) BZ_Min_str = string.format("%02d", Min ) Std = math.floor(totBZ / 60) Min = totBZ - Std * 60 totBZ_Std_str = string.format("%10d", Std ) totBZ_Min_str = string.format("%02d", Min ) end ------------------------------------------------------------------------- -- Application initialization local function init() lastTime = system.getTimeCounter() f = io.open("/Betrieb.jsn","r") -- Gespeicherter Wert lesen if(f) then valStr = io.read(f, 20) io.close(f) value = json.decode(valStr) B_Zeit = value[1] totBZ = value[2] Reset_flag = value[3] else B_Zeit = 0 totBZ = 0 Reset_flag = 0 end local TX_Data = system.getTxTelemetry() if (TX_Data.txBattPercent > 97) and (Reset_flag == 0) then B_Zeit = 0 Reset_flag = 1 end -- TM-Fenster für Betriebsstunden definieren system.registerTelemetry(1,"TX-Akkulaufzeit", 1, printTelemetry_BZ) system.registerForm(1,MENU_APPS,"TX-Betriebszeit",initForm, keyPressed, printForm) end -------------------------------------------------------------------------------- return {init=init, loop=loop, author="user", version="0.50", name= "Betriebsstunden"}