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