test_elko_cfmtb_thermostat.py 2.3 KB

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