test_parkside_plgs2012a1_smart_charger.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. """Tests for Parkside PLGS 2012 A1 Smart Charger"""
  2. from homeassistant.const import (
  3. ELECTRIC_CURRENT_MILLIAMPERE,
  4. ELECTRIC_POTENTIAL_VOLT,
  5. PERCENTAGE,
  6. TEMP_CELSIUS,
  7. TIME_MINUTES,
  8. )
  9. from homeassistant.components.sensor import (
  10. SensorDeviceClass,
  11. STATE_CLASS_MEASUREMENT,
  12. )
  13. from ..const import PARKSIDE_PLGS2012A1_PAYLOAD
  14. from ..mixins.binary_sensor import MultiBinarySensorTests
  15. from ..mixins.number import MultiNumberTests
  16. from ..mixins.select import BasicSelectTests
  17. from ..mixins.sensor import MultiSensorTests
  18. from ..mixins.switch import MultiSwitchTests
  19. from .base_device_tests import TuyaDeviceTestCase
  20. SWITCH_DPS = "1"
  21. NAME_DPS = "2"
  22. CURRENT_DPS = "3"
  23. VOLTAGE_DPS = "4"
  24. BATTERY_DPS = "5"
  25. TEMPERATURE_DPS = "6"
  26. MODE_DPS = "7"
  27. STORAGE_DPS = "8"
  28. LIMITER_DPS = "9"
  29. MAXTEMPCOUNT_DPS = "10"
  30. UNKNOWN11_DPS = "11"
  31. MAXCURRENT_DPS = "101"
  32. REMAIN_DPS = "102"
  33. ALMOSTCHARGED_DPS = "103"
  34. FULLYCHARGED_DPS = "104"
  35. class TestParksidePLGS2012A1Charger(
  36. MultiBinarySensorTests,
  37. MultiNumberTests,
  38. BasicSelectTests,
  39. MultiSensorTests,
  40. MultiSwitchTests,
  41. TuyaDeviceTestCase,
  42. ):
  43. __test__ = True
  44. def setUp(self):
  45. self.setUpForConfig(
  46. "parkside_plgs2012a1_smart_charger.yaml", PARKSIDE_PLGS2012A1_PAYLOAD
  47. )
  48. self.setUpMultiBinarySensors(
  49. [
  50. {
  51. "name": "binary_sensor_almost_charged",
  52. "dps": ALMOSTCHARGED_DPS,
  53. },
  54. {
  55. "name": "binary_sensor_fully_charged",
  56. "dps": FULLYCHARGED_DPS,
  57. },
  58. ],
  59. )
  60. self.setUpMultiNumber(
  61. [
  62. {
  63. "name": "number_charge_current",
  64. "dps": CURRENT_DPS,
  65. "max": 30000,
  66. "step": 100,
  67. "unit": ELECTRIC_CURRENT_MILLIAMPERE,
  68. },
  69. {
  70. "name": "number_charge_voltage",
  71. "dps": VOLTAGE_DPS,
  72. "max": 25.0,
  73. "scale": 1000,
  74. "step": 0.1,
  75. "unit": ELECTRIC_POTENTIAL_VOLT,
  76. },
  77. ],
  78. )
  79. self.setUpBasicSelect(
  80. MODE_DPS,
  81. self.entities.get("select_charge_type"),
  82. {
  83. "ECO": "Eco",
  84. "quick": "Performance",
  85. "standard": "Balanced",
  86. "individual": "Expert",
  87. },
  88. )
  89. self.setUpMultiSensors(
  90. [
  91. {
  92. "name": "sensor_battery",
  93. "dps": BATTERY_DPS,
  94. "unit": PERCENTAGE,
  95. "device_class": SensorDeviceClass.BATTERY,
  96. },
  97. {
  98. "name": "sensor_time_remaining",
  99. "dps": REMAIN_DPS,
  100. "unit": TIME_MINUTES,
  101. },
  102. {
  103. "name": "sensor_current_temperature",
  104. "dps": TEMPERATURE_DPS,
  105. "unit": TEMP_CELSIUS,
  106. "device_class": SensorDeviceClass.TEMPERATURE,
  107. "state_class": STATE_CLASS_MEASUREMENT,
  108. },
  109. {
  110. "name": "sensor_max_current",
  111. "dps": MAXCURRENT_DPS,
  112. "unit": ELECTRIC_CURRENT_MILLIAMPERE,
  113. "device_class": SensorDeviceClass.CURRENT,
  114. },
  115. {
  116. "name": "sensor_max_temperature_count",
  117. "dps": MAXTEMPCOUNT_DPS,
  118. },
  119. {
  120. "name": "sensor_name",
  121. "dps": NAME_DPS,
  122. "testdata": ("test", "test"),
  123. },
  124. ],
  125. )
  126. self.setUpMultiSwitch(
  127. [
  128. {
  129. "name": "switch",
  130. "dps": SWITCH_DPS,
  131. },
  132. {
  133. "name": "switch_storage",
  134. "dps": STORAGE_DPS,
  135. },
  136. {
  137. "name": "switch_temperature_limiter",
  138. "dps": LIMITER_DPS,
  139. },
  140. ],
  141. )
  142. self.mark_secondary(
  143. [
  144. "number_charge_current",
  145. "number_charge_voltage",
  146. "switch_storage",
  147. "switch_temperature_limiter",
  148. "sensor_current_temperature",
  149. "sensor_max_temperature_count",
  150. "sensor_name",
  151. "select_charge_type",
  152. "sensor_max_current",
  153. "binary_sensor_almost_charged",
  154. "binary_sensor_fully_charged",
  155. ]
  156. )
  157. def test_multi_switch_state_attributes(self):
  158. switch = self.multiSwitch.get("switch")
  159. storage = self.multiSwitch.get("switch_storage")
  160. temp = self.multiSwitch.get("switch_temperature_limiter")
  161. self.assertEqual(storage.extra_state_attributes, {})
  162. self.assertEqual(temp.extra_state_attributes, {})
  163. self.dps[UNKNOWN11_DPS] = "unknown_11"
  164. self.assertDictEqual(
  165. switch.extra_state_attributes, {"unknown_11": "unknown_11"}
  166. )