test_moes_temp_humidity.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. from homeassistant.components.sensor import SensorDeviceClass
  2. from homeassistant.const import TIME_SECONDS, UnitOfTemperature
  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. UNKNOWN8_DPS = "8"
  15. UNKNOWN9_DPS = "9"
  16. UNKNOWN11_DPS = "11"
  17. UNKNOWN12_DPS = "12"
  18. CALIB_DPS = "18"
  19. UNKNOWN20_DPS = "20"
  20. UNKNOWN21_DPS = "21"
  21. UNKNOWN22_DPS = "22"
  22. UNKNOWN24_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_current_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.9,
  53. "max": 9.9,
  54. "scale": 10,
  55. "step": 0.1,
  56. },
  57. {
  58. "dps": TIMER1_DPS,
  59. "name": "number_timer_1",
  60. "max": 86400,
  61. "unit": TIME_SECONDS,
  62. },
  63. {
  64. "dps": TIMER2_DPS,
  65. "name": "number_timer_2",
  66. "max": 86400,
  67. "unit": TIME_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_timer_1",
  114. "number_timer_2",
  115. "select_power_on_state",
  116. ]
  117. )
  118. def test_multi_switch_state_attributes(self):
  119. self.dps[UNKNOWN8_DPS] = True
  120. self.dps[UNKNOWN9_DPS] = 9
  121. self.dps[UNKNOWN11_DPS] = False
  122. self.dps[UNKNOWN12_DPS] = 12
  123. self.dps[UNKNOWN20_DPS] = 20
  124. self.dps[UNKNOWN21_DPS] = 21
  125. self.dps[UNKNOWN22_DPS] = 22
  126. self.dps[UNKNOWN24_DPS] = "unknown24"
  127. self.dps[UNKNOWN106_DPS] = "unknown106"
  128. self.dps[RULE1_DPS] = "rules for switch 1"
  129. self.dps[RULE2_DPS] = "rules for switch 2"
  130. self.assertDictEqual(
  131. self.multiSwitch["switch_main_switch"].extra_state_attributes,
  132. {
  133. "unknown_8": True,
  134. "unknown_9": 9,
  135. "unknown_11": False,
  136. "unknown_12": 12,
  137. "unknown_20": 20,
  138. "unknown_21": 21,
  139. "unknown_22": 22,
  140. "unknown_24": "unknown24",
  141. "unknown_106": "unknown106",
  142. },
  143. )
  144. self.assertDictEqual(
  145. self.multiSwitch["switch_switch_1"].extra_state_attributes,
  146. {"auto_rules": "rules for switch 1"},
  147. )
  148. self.assertDictEqual(
  149. self.multiSwitch["switch_switch_2"].extra_state_attributes,
  150. {"auto_rules": "rules for switch 2"},
  151. )