Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
    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