Skip to content

Commit

Permalink
Merge pull request #28 from b3nj1/s4power
Browse files Browse the repository at this point in the history
AvgInstaPower: change algo
  • Loading branch information
inonoob committed Feb 23, 2021
2 parents a5f62a4 + 32c1db3 commit 96042d2
Showing 1 changed file with 21 additions and 20 deletions.
41 changes: 21 additions & 20 deletions src/adapters/s4/wrtobleant.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
'''

IGNORE_LIST = ['graph', 'tank_volume', 'display_sec_dec']
POWER_AVG_STROKES = 4


class DataLogger(object):
Expand All @@ -38,8 +39,8 @@ def __init__(self, rower_interface):
self._InstaPowerStroke = None
self.maxpowerStroke = None
self._StrokeStart = None
self._StrokeTotal = None
self.Watts = None
self._maxpowerfivestrokes = None
self.AvgInstaPower = None
self.Lastcheckforpulse = None
self.PulseEventTime = None
Expand All @@ -64,8 +65,8 @@ def _reset_state(self):
self._InstaPowerStroke = []
self.maxpowerStroke = 0
self._StrokeStart = False
self._StrokeTotal = 0
self.Watts = 0
self._maxpowerfivestrokes = []
self.AvgInstaPower = 0
self.Lastcheckforpulse = 0
self.PulseEventTime = 0
Expand Down Expand Up @@ -106,6 +107,7 @@ def on_rower_event(self, event):
if event['type'] == 'stroke_rate':
self.WRValues.update({'stroke_rate': (event['value']*2)})
if event['type'] == 'total_strokes':
self._StrokeTotal = event['value']
self.WRValues.update({'total_strokes': event['value']})
if event['type'] == 'total_distance_m':
self.WRValues.update({'total_distance_m': (event['value'])})
Expand Down Expand Up @@ -150,9 +152,10 @@ def pulse(self,event):
self.PaddleTurning = False
self._StrokeStart = False
self.PulseEventTime = 0
self._InstaPowerStroke = []
self.AvgInstaPower = 0
self.WRValuesStandstill()


def reset_requested(self,event):
if event['type'] == 'reset':
self._reset_state()
Expand All @@ -174,32 +177,30 @@ def WRValuesStandstill(self):
self.WRValues_standstill.update({'watts': 0})

def avgInstaPowercalc(self,watts):
if watts != 0:
if self._StrokeStart == True:
self._InstaPowerStroke.append(watts)
elif self._StrokeStart == False:
if len(self._InstaPowerStroke) != 0:
self.maxpowerStroke = numpy.max(self._InstaPowerStroke)
if len(self._maxpowerfivestrokes) > 4:
del self._maxpowerfivestrokes[0]
self._maxpowerfivestrokes.append(self.maxpowerStroke)
self.AvgInstaPower = int(numpy.average(self._maxpowerfivestrokes))
self.WRValues.update({'watts': self.AvgInstaPower})
self._InstaPowerStroke = []
else:
pass
if self._StrokeStart:
self.maxpowerStroke = max(self.maxpowerStroke, watts)
else:
if self.maxpowerStroke:
self._InstaPowerStroke.append(self.maxpowerStroke)
self.maxpowerStroke = 0
while len(self._InstaPowerStroke) > POWER_AVG_STROKES:
self._InstaPowerStroke.pop(0)
if len(self._InstaPowerStroke) == POWER_AVG_STROKES:
self.AvgInstaPower = int(numpy.average(self._InstaPowerStroke))
self.WRValues.update({'watts': self.AvgInstaPower})


def get_WRValues(self):
if self.rowerreset:
return deepcopy(self.WRValues_rst)
elif not self.rowerreset and not self.PaddleTurning:
return deepcopy(self.WRValues_standstill)
elif not self.rowerreset and self.PaddleTurning:
elif self.PaddleTurning:
return deepcopy(self.WRValues)
else:
return deepcopy(self.WRValues_standstill)

def SendToBLE(self):
self.BLEvalues = self.get_WRValues()
#logger.debug("Watts: %4.1f Strokes: %5d Strokes/s: %5f Dist: %5g", self.BLEvalues['watts'], self.BLEvalues['total_strokes'], self.BLEvalues['stroke_rate'], self.BLEvalues['total_distance_m'])

def SendToANT(self):
self.ANTvalues = self.get_WRValues()
Expand Down

0 comments on commit 96042d2

Please sign in to comment.