test_elko_cfmtb_thermostat.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from datetime import datetime, timezone
  2. from ..const import ELKO_CFMTB_THERMOSTAT_PAYLOAD
  3. from ..helpers import assert_device_properties_set
  4. from .base_device_tests import TuyaDeviceTestCase
  5. OVERRIDE_END_DPS = "108"
  6. class TestElkoCFMTBThermostat(TuyaDeviceTestCase):
  7. __test__ = True
  8. def setUp(self):
  9. self.setUpForConfig(
  10. "elko_cfmtb_thermostat.yaml",
  11. ELKO_CFMTB_THERMOSTAT_PAYLOAD,
  12. )
  13. self.subject = self.entities.get("datetime_override_end")
  14. self.mark_secondary(
  15. [
  16. "number_power_rating",
  17. "lock_child_lock",
  18. "number_active_screen_brightness",
  19. "number_standby_screen_brightness",
  20. "sensor_external_sensor_type",
  21. "sensor_device_type",
  22. "sensor_floor_temperature",
  23. "sensor_air_temperature",
  24. "sensor_power",
  25. "sensor_energy",
  26. "datetime_override_end",
  27. "number_heating_temperature",
  28. "number_cooling_temperature",
  29. "number_away_heating_reduction",
  30. "number_away_cooling_reduction",
  31. "number_away_minimum_temperature",
  32. "number_away_maximum_temperature",
  33. "switch_away",
  34. "switch_schedule",
  35. "binary_sensor_occupancy",
  36. "binary_sensor_window",
  37. "number_room_temperature_calibration",
  38. "number_external_temperature_calibration",
  39. "number_screen_timeout",
  40. "switch_screen_timeout",
  41. "switch_regulator_mode",
  42. ]
  43. )
  44. def test_datetime_override_end(self):
  45. self.dps[OVERRIDE_END_DPS] = (
  46. 1770465243 - datetime(2000, 1, 1, tzinfo=timezone.utc).timestamp()
  47. )
  48. self.assertEqual(
  49. self.subject.native_value,
  50. datetime(2026, 2, 7, 11, 54, 3, tzinfo=timezone.utc),
  51. )
  52. async def test_set_datetime_override_end(self):
  53. MILLINIUM = datetime(2000, 1, 1, tzinfo=timezone.utc).timestamp()
  54. async with assert_device_properties_set(
  55. self.subject._device,
  56. {OVERRIDE_END_DPS: 1770465243 - MILLINIUM},
  57. ):
  58. await self.subject.async_set_value(
  59. datetime(2026, 2, 7, 11, 54, 3, tzinfo=timezone.utc)
  60. )