test_tompd63lw_breaker.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. UnitOfTime,
  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. "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)