Exemplo n.º 1
0
    def test_clear_cache(self):
        """Test with negative temperature."""
        poller = MiThermometerPoller(self.TEST_MAC, MockBackend)
        backend = self._get_backend(poller)

        self.assertFalse(poller.cache_available())
        backend.temperature = 1.0
        backend.humidity = 0.0
        self.assertAlmostEqual(1.0,
                               poller.parameter_value(MI_TEMPERATURE),
                               delta=0.01)
        self.assertTrue(poller.cache_available())

        # data is taken from cache, new value is ignored
        backend.temperature = 2.0
        backend.humidity = 0.0
        self.assertAlmostEqual(1.0,
                               poller.parameter_value(MI_TEMPERATURE),
                               delta=0.01)

        self.assertTrue(poller.cache_available())
        poller.clear_cache()
        self.assertFalse(poller.cache_available())

        backend.temperature = 3.0
        backend.humidity = 0.0
        self.assertAlmostEqual(3.0,
                               poller.parameter_value(MI_TEMPERATURE),
                               delta=0.01)
        self.assertTrue(poller.cache_available())
Exemplo n.º 2
0
def poll(args):
    """Poll data from the sensor."""
    backend = _get_backend(args)
    poller = MiThermometerPoller(args.mac, backend)
    print("Getting data from Mi Flora")
    print("FW: {}".format(poller.firmware_version()))
    print("Name: {}".format(poller.name()))
    print("Temperature: {}".format(poller.parameter_value(MI_TEMPERATURE)))
    print("Humidity: {}".format(poller.parameter_value(MI_HUMIDITY)))
    print("Battery: {}".format(poller.parameter_value(MI_BATTERY)))
Exemplo n.º 3
0
    def test_no_answer_data(self):
        """Sensor returns None for handle 0x35.

        Check that this triggers the right exception.
        """
        poller = MiThermometerPoller(self.TEST_MAC, MockBackend)
        backend = self._get_backend(poller)
        backend.handle_0x35_raw = None
        with self.assertRaises(BluetoothBackendException):
            poller.parameter_value(MI_TEMPERATURE)
Exemplo n.º 4
0
    def test_invalid_data(self):
        """Check if reading of the data fails, when invalid data is received.

        Try this with a new version number.
        """
        poller = MiThermometerPoller(self.TEST_MAC, MockBackend)
        backend = self._get_backend(poller)

        backend.override_read_handles[HANDLE_READ_SENSOR_DATA] = INVALID_DATA
        with self.assertRaises(BluetoothBackendException):
            poller.parameter_value(MI_TEMPERATURE)
Exemplo n.º 5
0
 def test_rw_exception(self):
     """Test reaction when getting a BluetoothBackendException."""
     poller = MiThermometerPoller(self.TEST_MAC,
                                  RWExceptionBackend,
                                  retries=0)
     with self.assertRaises(BluetoothBackendException):
         poller.firmware_version()
     with self.assertRaises(BluetoothBackendException):
         poller.name()
     with self.assertRaises(BluetoothBackendException):
         poller.parameter_value(MI_HUMIDITY)
     with self.assertRaises(BluetoothBackendException):
         poller.parameter_value(MI_HUMIDITY)
Exemplo n.º 6
0
    def test_everything(self):
        """Test reading data from a sensor

        This check if we can successfully get some data from a real sensor. This test requires bluetooth hardware and a
        real sensor close by.
        """
        assert hasattr(self, "mac")
        poller = MiThermometerPoller(self.mac, self.backend_type)
        self.assertIsNotNone(poller.firmware_version())
        self.assertIsNotNone(poller.name())
        self.assertIsNotNone(poller.parameter_value(MI_TEMPERATURE))
        self.assertIsNotNone(poller.parameter_value(MI_HUMIDITY))
        self.assertIsNotNone(poller.parameter_value(MI_BATTERY))
Exemplo n.º 7
0
 def test_read_battery(self):
     """Test reading the battery level."""
     poller = MiThermometerPoller(self.TEST_MAC, MockBackend)
     backend = self._get_backend(poller)
     backend.battery_level = 50
     self.assertEqual(50, poller.battery_level())
     self.assertEqual(50, poller.parameter_value(MI_BATTERY))
Exemplo n.º 8
0
    def test_read_measurements(self):
        """Test reading data from new sensors.

        Here we expect some data being written to the sensor.
        """
        poller = MiThermometerPoller(self.TEST_MAC, MockBackend)
        backend = self._get_backend(poller)

        backend.temperature = 56.7
        backend.humidity = 0.0

        self.assertAlmostEqual(backend.temperature,
                               poller.parameter_value(MI_TEMPERATURE),
                               delta=0.11)