test_tompd63lw_breaker.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. """Tests for the switch entity."""
  2. from homeassistant.components.sensor import SensorDeviceClass
  3. from homeassistant.const import (
  4. UnitOfElectricCurrent,
  5. UnitOfElectricPotential,
  6. UnitOfPower,
  7. )
  8. from ..const import TOMPD63LW_SOCKET_PAYLOAD
  9. from ..mixins.sensor import MultiSensorTests
  10. from .base_device_tests import TuyaDeviceTestCase
  11. ENERGY_DP = "1"
  12. PHASEA_DP = "6"
  13. FAULT_DP = "9"
  14. PREPAY_DP = "11"
  15. RESET_DP = "12"
  16. BALANCE_DP = "13"
  17. CHARGE_DP = "14"
  18. LEAKAGE_DP = "15"
  19. SWITCH_DP = "16"
  20. ALARM1_DP = "17"
  21. ALARM2_DP = "18"
  22. IDNUM_DP = "19"
  23. TEST_DP = "21"
  24. class TestTOMPD63lw(MultiSensorTests, TuyaDeviceTestCase):
  25. __test__ = True
  26. def setUp(self):
  27. self.setUpForConfig("tompd_63lw_breaker.yaml", TOMPD63LW_SOCKET_PAYLOAD)
  28. self.subject = self.entities.get("switch")
  29. self.setUpMultiSensors(
  30. [
  31. {
  32. "name": "sensor_voltage_a",
  33. "dps": PHASEA_DP,
  34. "unit": UnitOfElectricPotential.VOLT,
  35. "device_class": SensorDeviceClass.VOLTAGE,
  36. "testdata": ("CPwAFGEAAu4=", 230.0),
  37. },
  38. {
  39. "name": "sensor_current_a",
  40. "dps": PHASEA_DP,
  41. "unit": UnitOfElectricCurrent.AMPERE,
  42. "device_class": SensorDeviceClass.CURRENT,
  43. "testdata": ("CPwAFGEAAu4=", 5.217),
  44. },
  45. {
  46. "name": "sensor_power_a",
  47. "dps": PHASEA_DP,
  48. "unit": UnitOfPower.KILO_WATT,
  49. "device_class": SensorDeviceClass.POWER,
  50. "testdata": ("CPwAFGEAAu4=", 0.75),
  51. },
  52. ]
  53. )
  54. self.mark_secondary(
  55. [
  56. "binary_sensor_problem",
  57. "button_earth_leak_test",
  58. "button_energy_reset",
  59. "button_refresh_sensors",
  60. "number_charge_energy",
  61. "sensor_balance_energy",
  62. "sensor_current_a",
  63. "sensor_leakage_current",
  64. "sensor_power_a",
  65. "sensor_voltage_a",
  66. "switch_prepayment",
  67. ]
  68. )
  69. def test_phasea_encoding(self):
  70. self.dps[PHASEA_DP] = "CQQAFGkAAu4="
  71. self.assertEqual(self.multiSensor["sensor_voltage_a"].native_value, 230.8)
  72. self.assertEqual(self.multiSensor["sensor_current_a"].native_value, 5.225)
  73. self.assertEqual(self.multiSensor["sensor_power_a"].native_value, 0.75)
  74. def test_phasea_missing(self):
  75. self.dps[PHASEA_DP] = None
  76. self.assertIsNone(self.multiSensor["sensor_voltage_a"].native_value)
  77. self.assertIsNone(self.multiSensor["sensor_current_a"].native_value)
  78. self.assertIsNone(self.multiSensor["sensor_power_a"].native_value)