test_tompd63lw_breaker.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. def setUp(self):
  26. self.setUpForConfig("tompd_63lw_breaker.yaml", TOMPD63LW_SOCKET_PAYLOAD)
  27. self.subject = self.entities.get("switch")
  28. self.setUpMultiSensors(
  29. [
  30. {
  31. "name": "sensor_voltage",
  32. "dps": PHASEA_DP,
  33. "unit": UnitOfElectricPotential.VOLT,
  34. "device_class": SensorDeviceClass.VOLTAGE,
  35. "testdata": ("CPwAFGEAAu4=", 230.0),
  36. },
  37. {
  38. "name": "sensor_current",
  39. "dps": PHASEA_DP,
  40. "unit": UnitOfElectricCurrent.AMPERE,
  41. "device_class": SensorDeviceClass.CURRENT,
  42. "testdata": ("CPwAFGEAAu4=", 5.217),
  43. },
  44. {
  45. "name": "sensor_power",
  46. "dps": PHASEA_DP,
  47. "unit": UnitOfPower.KILO_WATT,
  48. "device_class": SensorDeviceClass.POWER,
  49. "testdata": ("CPwAFGEAAu4=", 0.75),
  50. },
  51. ]
  52. )
  53. self.mark_secondary(
  54. [
  55. "binary_sensor_problem",
  56. "button_clear_energy",
  57. "button_earth_leak_test",
  58. "button_energy_reset",
  59. "button_factory_reset",
  60. "button_refresh_sensors",
  61. "number_charge_energy",
  62. "sensor_balance_energy",
  63. "sensor_current",
  64. "sensor_frequency",
  65. "sensor_leakage_current",
  66. "sensor_power",
  67. "sensor_power_factor",
  68. "sensor_voltage",
  69. "switch_prepayment",
  70. ]
  71. )
  72. def test_phasea_encoding(self):
  73. self.dps[PHASEA_DP] = "CQQAFGkAAu4="
  74. self.assertEqual(self.multiSensor["sensor_voltage"].native_value, 230.8)
  75. self.assertEqual(self.multiSensor["sensor_current"].native_value, 5.225)
  76. self.assertEqual(self.multiSensor["sensor_power"].native_value, 0.75)
  77. def test_phasea_missing(self):
  78. self.dps[PHASEA_DP] = None
  79. self.assertIsNone(self.multiSensor["sensor_voltage"].native_value)
  80. self.assertIsNone(self.multiSensor["sensor_current"].native_value)
  81. self.assertIsNone(self.multiSensor["sensor_power"].native_value)