def get_status(self, **kwargs): """Get a status report. Returns a list of `(property, value, unit)` tuples. """ if self.device.product_id != 0x0c10: LOGGER.debug('only the commander pro supports this') return [] connected_temp_sensors = self._data.load('temp_sensors_connected', default=[0] * self._temp_probs) fan_modes = self._data.load('fan_modes', default=[0] * self._fan_count) # get the tempature sensor values temp = [0] * self._temp_probs for num, enabled in enumerate(connected_temp_sensors): if enabled: temp[num] = self._get_temp(num) # get the real power supply voltages res = self._send_command(_CMD_GET_VOLTS, [0]) volt_12 = u16be_from(res, offset=1) / 1000 res = self._send_command(_CMD_GET_VOLTS, [1]) volt_5 = u16be_from(res, offset=1) / 1000 res = self._send_command(_CMD_GET_VOLTS, [2]) volt_3 = u16be_from(res, offset=1) / 1000 # get fan RPMs of connected fans fanspeeds = [0] * self._fan_count for fan_num, mode in enumerate(fan_modes): if mode == _FAN_MODE_DC or mode == _FAN_MODE_PWM: fanspeeds[fan_num] = self._get_fan_rpm(fan_num) status = [ ('12 volt rail', volt_12, 'V'), ('5 volt rail', volt_5, 'V'), ('3.3 volt rail', volt_3, 'V'), ] for temp_num in range(self._temp_probs): status += [(f'Temp sensor {temp_num + 1}', temp[temp_num], '°C')] for fan_num in range(self._fan_count): status += [(f'Fan {fan_num + 1} speed', fanspeeds[fan_num], 'rpm')] return status
def get_status(self, **kwargs): """Get a status report. Returns a list of `(property, value, unit)` tuples. """ if self.device.product_id != 0x0c10: _LOGGER.debug('only the Commander Pro supports this') return [] temp_probes = self._data.load('temp_sensors_connected', default=[0] * self._temp_probs) fan_modes = self._data.load('fan_modes', default=[0] * self._fan_count) status = [] # get the temperature sensor values for i, probe_enabled in enumerate(temp_probes): if probe_enabled: temp = self._get_temp(i) status.append((f'Temperature {i + 1}', temp, '°C')) # get fan RPMs of connected fans for i, fan_mode in enumerate(fan_modes): if fan_mode == _FAN_MODE_DC or fan_mode == _FAN_MODE_PWM: speed = self._get_fan_rpm(i) status.append((f'Fan {i + 1} speed', speed, 'rpm')) # get the real power supply voltages for i, rail in enumerate(["+12V", "+5V", "+3.3V"]): raw = self._send_command(_CMD_GET_VOLTS, [i]) voltage = u16be_from(raw, offset=1) / 1000 status.append((f'{rail} rail', voltage, 'V')) return status
def _get_status_directly(self): temp_probes = self._data.load('temp_sensors_connected', default=[0]*self._temp_probs) fan_modes = self._data.load('fan_modes', default=[0]*self._fan_count) status = [] # get the temperature sensor values for i, probe_enabled in enumerate(temp_probes): if probe_enabled: temp = self._get_temp(i) status.append((f'Temperature {i + 1}', temp, '°C')) # get fan RPMs of connected fans for i, fan_mode in enumerate(fan_modes): if fan_mode == _FAN_MODE_DC or fan_mode == _FAN_MODE_PWM: speed = self._get_fan_rpm(i) status.append((f'Fan {i + 1} speed', speed, 'rpm')) # get the real power supply voltages for i, rail in enumerate(["+12V", "+5V", "+3.3V"]): raw = self._send_command(_CMD_GET_VOLTS, [i]) voltage = u16be_from(raw, offset=1) / 1000 status.append((f'{rail} rail', voltage, 'V')) return status
def _get_fan_rpm(self, fan_num): """This will get the rpm value of the fan. fan number MUST be in range of 0-5 """ if self._fan_count == 0: raise ValueError('this device does not have any fans') if fan_num < 0 or fan_num > 5: raise ValueError(f'fan_num {fan_num} invalid, must be between 0 and 5') res = self._send_command(_CMD_GET_FAN_RPM, [fan_num]) speed = u16be_from(res, offset=1) return speed
def _get_temp(self, sensor_num): """This will get the temperature in degrees celsius for the specified temp sensor. sensor number MUST be in range of 0-3 """ if self._temp_probs == 0: raise ValueError('this device does not have a temperature sensor') if sensor_num < 0 or sensor_num > 3: raise ValueError(f'sensor_num {sensor_num} invalid, must be between 0 and 3') res = self._send_command(_CMD_GET_TEMP, [sensor_num]) temp = u16be_from(res, offset=1) / 100 return temp