test_tompd63lw_breaker.py 2.8 KB

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