test_tompd63lw_breaker.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. """Tests for multiple sensors encoded together in a single dp."""
  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",
  33. "dps": PHASEA_DP,
  34. "unit": UnitOfElectricPotential.VOLT,
  35. "device_class": SensorDeviceClass.VOLTAGE,
  36. "testdata": ("CPwAFGEAAu4=", 230.0),
  37. },
  38. {
  39. "name": "sensor_current",
  40. "dps": PHASEA_DP,
  41. "unit": UnitOfElectricCurrent.AMPERE,
  42. "device_class": SensorDeviceClass.CURRENT,
  43. "testdata": ("CPwAFGEAAu4=", 5.217),
  44. },
  45. {
  46. "name": "sensor_power",
  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_clear_energy",
  58. "button_earth_leak_test",
  59. "button_energy_reset",
  60. "button_factory_reset",
  61. "button_refresh_sensors",
  62. "number_charge_energy",
  63. "sensor_balance_energy",
  64. "sensor_current",
  65. "sensor_frequency",
  66. "sensor_leakage_current",
  67. "sensor_power",
  68. "sensor_power_factor",
  69. "sensor_voltage",
  70. "switch_prepayment",
  71. ]
  72. )
  73. def test_phasea_encoding(self):
  74. self.dps[PHASEA_DP] = "CQQAFGkAAu4="
  75. self.assertEqual(self.multiSensor["sensor_voltage"].native_value, 230.8)
  76. self.assertEqual(self.multiSensor["sensor_current"].native_value, 5.225)
  77. self.assertEqual(self.multiSensor["sensor_power"].native_value, 0.75)
  78. def test_phasea_missing(self):
  79. self.dps[PHASEA_DP] = None
  80. self.assertIsNone(self.multiSensor["sensor_voltage"].native_value)
  81. self.assertIsNone(self.multiSensor["sensor_current"].native_value)
  82. self.assertIsNone(self.multiSensor["sensor_power"].native_value)