Example #1
0
 def _on_data(self, data):
     logging.debug('Heart rate monitor received data %s' % dump_data(data))
     self._last_hr = int(data[7])
     self._last_hr_time = time.time()
     if self.on_heart_rate_data != None:
         self.on_heart_rate_data(self._last_hr, data)
         with self._lock:
             with open('hr.curr', 'wt') as f:
                 f.write(str(self._last_hr))
Example #2
0
 def _on_data(self, data):
     logging.debug('Power meter received data %s' % dump_data(data))
     if data[0] == 0x10:
         self._last_pwr = (int(data[7]) << 8) | int(data[6])
         self._last_pwr_time = time.time()
         if self.on_power_data != None:
             self.on_power_data(self._last_pwr, data)
             with self._lock:
                 with open('pwr.curr', 'wt') as f:
                     f.write(str(self._last_pwr))
     if data[0] in [0x10, 0x11, 0x12]:
         cadence = int(data[3])
         if self.on_cadence_data != None:
             self.on_cadence_data(cadence, data)
Example #3
0
 def _on_data(self, data):
     logging.debug('Speed sensor received data %s' % dump_data(data))
     if not data[0] in [0, 1, 2, 3, 4, 5]:
         return
     ts = (data[5] << 8) | data[4]
     revolution_count = (data[7] << 8) | data[6]
     if self._last_data != None:
         # Handle wrapping for 16-bits, otherwise, this value will be wildly off every 64 seconds or 64K revolutions (~138 km on 700x25C)
         self._last_speed = self._wheel_circumference * 1024.0 * float(sub_u16(revolution_count, self._last_data[1])) / float(sub_u16(ts, self._last_data[0]))
         self._last_speed_time = time.time()
         if self.on_speed_data != None:
             logging.debug('reporting speed %u m/s' % self._last_speed)
             self.on_speed_data(self._last_speed, data)
     self._last_data = (ts, revolution_count)
Example #4
0
 def _on_data(self, data):
     logging.debug('Cadence sensor received data %s' % dump_data(data))
     if not data[0] in [0, 1, 2, 3, 4, 5]:
         return
     ts = (data[5] << 8) | data[4]
     revolution_count = (data[7] << 8) | data[6]
     if self._last_data != None:
         # Handle wrapping for 16-bits, otherwise, this value will be wildly off every 64 seconds or 64K revolutions (12 hours at 90 rpm)
         self._last_cadence = 1024.0 * float(
             sub_u16(revolution_count, self._last_data[1])) / float(
                 sub_u16(ts, self._last_data[0]))
         self._last_cadence = self._last_cadence * 60
         self._last_cadence_time = time.time()
         if self.on_cadence_data != None:
             logging.debug('reporting cadence %u' % self._last_cadence)
             self.on_cadence_data(self._last_cadence, data)
     self._last_data = (ts, revolution_count)
Example #5
0
 def _on_data(self, data):
     logging.debug('Speed and cadence sensor received data %s' % dump_data(data))
     ts_speed = (data[5] << 8) | data[4]
     wheel_revolution_count = (data[7] << 8) | data[6]
     ts_cadence = (data[1] << 8) | data[0]
     crank_revolution_count = (data[3] << 8) | data[2]
     if self._last_speed_data != None and ts_speed != self._last_speed_data[TIME_IDX]:
         # Handle wrapping for 16-bits, otherwise, this value will be wildly off every 64 seconds or 64K revolutions (~138 km on 700x25C)
         self._last_speed = self._wheel_circumference * 1024.0 * float(sub_u16(wheel_revolution_count, self._last_speed_data[REV_IDX])) / float(sub_u16(ts_speed, self._last_speed_data[TIME_IDX]))
         self._last_speed_time = time.time()
         if self.on_speed_data != None:
             logging.debug('reporting speed %u m/s' % self._last_speed)
             self.on_speed_data(self._last_speed, data)
     self._last_speed_data = (ts_speed, wheel_revolution_count)
     if self._last_cadence_data != None and ts_cadence != self._last_cadence_data[TIME_IDX]:
         # Handle wrapping for 16-bits, otherwise, this value will be wildly off every 64 seconds or 64K revolutions (12 hours at 90 rpm)
         self._last_cadence = 1024.0 * float(sub_u16(crank_revolution_count, self._last_cadence_data[REV_IDX])) / float(sub_u16(ts_cadence, self._last_cadence_data[TIME_IDX]))
         self._last_cadence = self._last_cadence * 60 # rps to rpm, also make an integer
         self._last_cadence_time = time.time()
         if self.on_cadence_data != None:
             logging.debug('reporting cadence %u' % self._last_cadence)
             self.on_cadence_data(self._last_cadence, data)
     self._last_cadence_data = (ts_cadence, crank_revolution_count)