4
0

test_moes_temp_humidity.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. from homeassistant.components.sensor import SensorDeviceClass
  2. from homeassistant.const import UnitOfTemperature, UnitOfTime
  3. from ..const import MOES_TEMP_HUMID_PAYLOAD
  4. from ..mixins.number import MultiNumberTests
  5. from ..mixins.select import MultiSelectTests
  6. from ..mixins.sensor import BasicSensorTests
  7. from ..mixins.switch import MultiSwitchTests
  8. from .base_device_tests import TuyaDeviceTestCase
  9. MAINSW_DPS = "1"
  10. SW1_DPS = "2"
  11. SW2_DPS = "3"
  12. MODE_DPS = "4"
  13. TEMP_DPS = "6"
  14. HIGHTEMPSW_DPS = "8"
  15. HIGHTEMPAL_DPS = "9"
  16. LOWTEMPSW_DPS = "11"
  17. LOWTEMPAL_DPS = "12"
  18. CALIB_DPS = "18"
  19. HUMIDITY_DPS = "20"
  20. MAXHUMID_DPS = "21"
  21. MINHUMID_DPS = "22"
  22. CYCLE_DPS = "24"
  23. RULE1_DPS = "101"
  24. RULE2_DPS = "102"
  25. TIMER1_DPS = "103"
  26. TIMER2_DPS = "104"
  27. INIT_DPS = "105"
  28. UNKNOWN106_DPS = "106"
  29. class TestMoesTempHumidity(
  30. BasicSensorTests,
  31. MultiNumberTests,
  32. MultiSelectTests,
  33. MultiSwitchTests,
  34. TuyaDeviceTestCase,
  35. ):
  36. __test__ = True
  37. def setUp(self):
  38. self.setUpForConfig("moes_temp_humidity.yaml", MOES_TEMP_HUMID_PAYLOAD)
  39. self.setUpBasicSensor(
  40. TEMP_DPS,
  41. self.entities.get("sensor_temperature"),
  42. unit=UnitOfTemperature.CELSIUS,
  43. device_class=SensorDeviceClass.TEMPERATURE,
  44. state_class="measurement",
  45. testdata=(251, 25.1),
  46. )
  47. self.setUpMultiNumber(
  48. [
  49. {
  50. "dps": CALIB_DPS,
  51. "name": "number_temperature_calibration",
  52. "min": -9.0,
  53. "max": 9.0,
  54. "scale": 10,
  55. "step": 0.1,
  56. },
  57. {
  58. "dps": TIMER1_DPS,
  59. "name": "number_timer_1",
  60. "max": 86400,
  61. "unit": UnitOfTime.SECONDS,
  62. },
  63. {
  64. "dps": TIMER2_DPS,
  65. "name": "number_timer_2",
  66. "max": 86400,
  67. "unit": UnitOfTime.SECONDS,
  68. },
  69. ]
  70. )
  71. self.setUpMultiSelect(
  72. [
  73. {
  74. "dps": MODE_DPS,
  75. "name": "select_mode",
  76. "options": {
  77. "auto": "Auto",
  78. "manual": "Manual",
  79. },
  80. },
  81. {
  82. "dps": INIT_DPS,
  83. "name": "select_power_on_state",
  84. "options": {
  85. "on": "On",
  86. "off": "Off",
  87. "memory": "Last State",
  88. },
  89. },
  90. ]
  91. )
  92. self.setUpMultiSwitch(
  93. [
  94. {
  95. "dps": MAINSW_DPS,
  96. "name": "switch_main_switch",
  97. },
  98. {
  99. "dps": SW1_DPS,
  100. "name": "switch_switch_1",
  101. },
  102. {
  103. "dps": SW2_DPS,
  104. "name": "switch_switch_2",
  105. },
  106. ]
  107. )
  108. self.mark_secondary(
  109. [
  110. "switch_main_switch",
  111. "select_mode",
  112. "number_temperature_calibration",
  113. "number_maximum_humidity",
  114. "number_minimum_humidity",
  115. "number_timer_1",
  116. "number_timer_2",
  117. "select_power_on_state",
  118. "number_high_temperature_switch_level",
  119. "switch_high_temperature_switch",
  120. "number_high_temperature_alarm_level",
  121. "number_low_temperature_switch_level",
  122. "switch_low_temperature_switch",
  123. "number_low_temperature_alarm_level",
  124. "binary_sensor_fault",
  125. ]
  126. )
  127. def test_multi_switch_state_attributes(self):
  128. self.dps[CYCLE_DPS] = "ABCDEF0123456789"
  129. self.dps[UNKNOWN106_DPS] = "unknown106"
  130. self.dps[RULE1_DPS] = "rules for switch 1"
  131. self.dps[RULE2_DPS] = "rules for switch 2"
  132. self.assertDictEqual(
  133. self.multiSwitch["switch_main_switch"].extra_state_attributes,
  134. {
  135. "fault_code": "OK",
  136. "cycle_time": "ABCDEF0123456789",
  137. "unknown_106": "unknown106",
  138. },
  139. )
  140. self.assertDictEqual(
  141. self.multiSwitch["switch_switch_1"].extra_state_attributes,
  142. {"auto_rules": "rules for switch 1"},
  143. )
  144. self.assertDictEqual(
  145. self.multiSwitch["switch_switch_2"].extra_state_attributes,
  146. {"auto_rules": "rules for switch 2"},
  147. )