test_parkside_plgs2012a1_smart_charger.py 5.7 KB

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