Dear David, @30-Jul-2005, 10:15 -0400 (30-Jul 15:15 UK time) [EMAIL PROTECTED] [DP] in mid:[EMAIL PROTECTED] said:
>> Following message might be helpful >> http://groups.yahoo.com/group/power-pro/message/16092 DP> I've tried that script, but it doesn't produce results that are DP> even close to real-world, and are more inaccurate than the DP> built-in tooltip info on the battery indicator. Haven't tried to DP> fix it yet... I did. I have much improved it and been using it for a long while. I didn't think anybody else was since no bugs got reported back to me otherwise I'd have said sooner. The first projection is usually pretty silly, but the second change in battery charge value usually gives the script something more sensible to work with. My battery has a discharge time of around 1:10 and a charge time of around 3:30 :-(. It copes with both of these ranges pretty well for me. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; * Author : Marck D. Pearlstone (c) 2004/5 ; * Purpose : Battery recharge / discharge time projection script ; * Name : battCalc ; ; * Requires : PowerPro 3.8.10+ , Battery power system ; A timer to run battCalc once every minute ; ; * Results : a button showing "nn% h:mm" where nn is the current ; charge state of the battery and h:mm is the time ; remaining to either 0 or 100% depending on direction. ; Tooltip shows Runtime/Charging=hh:mm of hh:mm where ; the first figure is the elapsed time and the second ; is the total time projected for completion ; ; * To display the results, I use the following "button": ; Name : *info expr(batt)% expr(timeRemain) ; Tool Tip: *info expr(life) ; Left : .battCalc ; ; * Assumes : '<' and '>' are not special command characters ; ; * Description: ; ; This script will estimate a projected completion time for laptop ; battery charge discharge. ; ; The result is published in hours:minutes in a global variable "timeRemain" ; A secondary result is published in "life" and provides runtime information ; in the form "Runtime=h:mm of h:mm" showing how long the battery has been ; running and how long the final charge / discharge cycle will have taken. ; The "batt" variable carries the current charge percentage of the battery. ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Result variables global timeRemain, batt, life ; Some variables to keep track with static battH1, timeH1, start static count, totGap, totTime, going ; Some variables to work with local diff, gap, now, restart, xTime, g1, totExp ; ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Take a snapshot of the battery state and current time batt=batterypercent now = unixtime gap = batt - battH1 ; ; First time in? if (timeH1==0 or batt==0 or batt==100 or (now-start)>50000) restart = 1 ; ; Record the direction of the gap (g1 will be '-' if negative) if (gap != "0") g1 = select( gap, 1) ; ; Change of direction? If so, a restart is needed if (g1 != "") and (going != "") Do if ((g1 != going) and (going == "-" or g1 == "-")) Do restart = 1 EndIf EndIf ; if (restart == 1) Do ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Reset all counters and stop the script for now start = unixtime if (gap != 0) timeH1 = start battH1 = batt timeRemain = "" life = "(running)" going = g1 count = 0 totGap = 0 totTime = 0 restart = 0 Quit EndIf ; ; Keep track of where we're going if (g1 != "" && g1 != going) going = g1 ; if (going == "-" ) gap = 0 - gap ; ; Not enough data to work with yet xTime = now - timeH1 ; ; Is this result "significant"? if (xTime <= 150) Do if (xTime >= 60) do totTime = totTime + xTime count = count + 1 totGap = totGap + ((gap * 1000) / xTime) EndIf EndIf ; if (xTime >= 60) timeH1 = now ; ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ battH1 = batt ; ; ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @setlife ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; if (going == "-" ) Do gap = batt * 100 else gap = (100 - batt) * 100 Endif ; if (count == 0) count = 1 ; avgGap = 1 + (totGap / count) diff = ((gap * 76)/ avgGap) / 600 ; project = diff ; ; Now it's just a matter of formatting up the result fields if (diff >= 60) diff = (diff / 60) ++ ":" ++ select( 100 + (diff % 60), -2) timeRemain = diff ; diff = (now - start) / 60 ; project = project + diff ; life = "Runtime" ++ "=" ++ (diff / 60) ++ ":" ++ select( 100 + (diff % 60), -2) if( (diff - totTime) > 5) life = life ++ " (" ++ totExp ++ ")" life = life ++ " of " ++ (project / 60) ++ ":" ++ select( 100 + (project % 60), -2) ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Cheers -- //.arck D Pearlstone -- Consultant Software Engineer ___________________________________________________________________ \ BrainStorm - a meeting of mind - http://www.brainstormsw.com / \ ICQ# 173337671 | PGP 0x929DCDA0 | Marck: www.silverstones.com / ' ------------------------ Yahoo! Groups Sponsor --------------------~--> <font face=arial size=-1><a href="http://us.ard.yahoo.com/SIG=12hh0j03i/M=362131.6882499.7825260.1510227/D=groups/S=1706030409:TM/Y=YAHOO/EXP=1122759224/A=2889191/R=0/SIG=10r90krvo/*http://www.thebeehive.org ">Get Bzzzy! (real tools to help you find a job) Welcome to the Sweet Life - brought to you by One Economy</a>.</font> --------------------------------------------------------------------~-> Attention: PowerPro's Web site has moved: http://www.ppro.org Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/power-pro/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
