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))
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)
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)
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)
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)