test_parkside_plgs2012a1_smart_charger.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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": 30.000,
  68. "step": 0.1,
  69. "scale": 1000,
  70. "unit": UnitOfElectricCurrent.AMPERE,
  71. },
  72. {
  73. "name": "number_charge_voltage",
  74. "dps": VOLTAGE_DPS,
  75. "device_class": NumberDeviceClass.VOLTAGE,
  76. "max": 25.0,
  77. "scale": 1000,
  78. "step": 0.1,
  79. "unit": UnitOfElectricPotential.VOLT,
  80. },
  81. ],
  82. )
  83. self.setUpBasicSelect(
  84. MODE_DPS,
  85. self.entities.get("select_charge_type"),
  86. {
  87. "ECO": "Eco",
  88. "quick": "Performance",
  89. "standard": "Balanced",
  90. "individual": "Expert",
  91. },
  92. )
  93. self.setUpMultiSensors(
  94. [
  95. {
  96. "name": "sensor_battery",
  97. "dps": BATTERY_DPS,
  98. "unit": PERCENTAGE,
  99. "device_class": SensorDeviceClass.BATTERY,
  100. },
  101. {
  102. "name": "sensor_time_remaining",
  103. "dps": REMAIN_DPS,
  104. "unit": UnitOfTime.MINUTES,
  105. "device_class": SensorDeviceClass.DURATION,
  106. },
  107. {
  108. "name": "sensor_current_temperature",
  109. "dps": TEMPERATURE_DPS,
  110. "unit": UnitOfTemperature.CELSIUS,
  111. "device_class": SensorDeviceClass.TEMPERATURE,
  112. "state_class": STATE_CLASS_MEASUREMENT,
  113. },
  114. {
  115. "name": "sensor_max_current",
  116. "dps": MAXCURRENT_DPS,
  117. "unit": UnitOfElectricCurrent.AMPERE,
  118. "device_class": SensorDeviceClass.CURRENT,
  119. "testdata": (1234, 1.234),
  120. },
  121. {
  122. "name": "sensor_max_temperature_count",
  123. "dps": MAXTEMPCOUNT_DPS,
  124. },
  125. {
  126. "name": "sensor_name",
  127. "dps": NAME_DPS,
  128. "testdata": ("test", "test"),
  129. },
  130. ],
  131. )
  132. self.setUpMultiSwitch(
  133. [
  134. {
  135. "name": "switch",
  136. "dps": SWITCH_DPS,
  137. },
  138. {
  139. "name": "switch_storage",
  140. "dps": STORAGE_DPS,
  141. },
  142. {
  143. "name": "switch_temperature_limiter",
  144. "dps": LIMITER_DPS,
  145. },
  146. ],
  147. )
  148. self.mark_secondary(
  149. [
  150. "number_charge_current",
  151. "number_charge_voltage",
  152. "switch_storage",
  153. "switch_temperature_limiter",
  154. "sensor_current_temperature",
  155. "sensor_max_temperature_count",
  156. "sensor_name",
  157. "select_charge_type",
  158. "sensor_max_current",
  159. "binary_sensor_almost_charged",
  160. "binary_sensor_fully_charged",
  161. ]
  162. )
  163. def test_multi_switch_state_attributes(self):
  164. switch = self.multiSwitch.get("switch")
  165. storage = self.multiSwitch.get("switch_storage")
  166. temp = self.multiSwitch.get("switch_temperature_limiter")
  167. self.assertEqual(storage.extra_state_attributes, {})
  168. self.assertEqual(temp.extra_state_attributes, {})
  169. self.dps[UNKNOWN11_DPS] = "unknown_11"
  170. self.assertDictEqual(
  171. switch.extra_state_attributes, {"unknown_11": "unknown_11"}
  172. )