4
0

test_parkside_plgs2012a1_smart_charger.py 5.7 KB

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