test_compteur_energy_meter.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. """Tests for the Compteur Energy meter"""
  2. from homeassistant.components.sensor import (
  3. SensorDeviceClass,
  4. STATE_CLASS_MEASUREMENT,
  5. STATE_CLASS_TOTAL_INCREASING,
  6. )
  7. from homeassistant.const import (
  8. ELECTRIC_CURRENT_AMPERE,
  9. ELECTRIC_POTENTIAL_VOLT,
  10. UnitOfEnergy,
  11. UnitOfPower,
  12. )
  13. from ..const import COMPTEUR_SMARTMETER_PAYLOAD
  14. from ..mixins.sensor import MultiSensorTests
  15. from .base_device_tests import TuyaDeviceTestCase
  16. ENERGY_DP = "17"
  17. CURRENT_DP = "18"
  18. POWER_DP = "19"
  19. VOLTAGE_DP = "20"
  20. UNKNOWN21_DP = "21"
  21. UNKNOWN22_DP = "22"
  22. UNKNOWN23_DP = "23"
  23. UNKNOWN24_DP = "24"
  24. UNKNOWN25_DP = "25"
  25. UNKNOWN26_DP = "26"
  26. class TestCompteurEnergyMeter(MultiSensorTests, TuyaDeviceTestCase):
  27. __test__ = True
  28. def setUp(self):
  29. self.setUpForConfig(
  30. "compteur_energy_meter.yaml",
  31. COMPTEUR_SMARTMETER_PAYLOAD,
  32. )
  33. self.setUpMultiSensors(
  34. [
  35. {
  36. "dps": ENERGY_DP,
  37. "name": "sensor",
  38. "unit": UnitOfEnergy.KILO_WATT_HOUR,
  39. "device_class": SensorDeviceClass.ENERGY,
  40. "state_class": STATE_CLASS_TOTAL_INCREASING,
  41. "testdata": (12345, 12.345),
  42. },
  43. {
  44. "dps": VOLTAGE_DP,
  45. "name": "sensor_voltage",
  46. "unit": ELECTRIC_POTENTIAL_VOLT,
  47. "device_class": SensorDeviceClass.VOLTAGE,
  48. "state_class": STATE_CLASS_MEASUREMENT,
  49. "testdata": (2348, 234.8),
  50. },
  51. {
  52. "dps": CURRENT_DP,
  53. "name": "sensor_current",
  54. "unit": ELECTRIC_CURRENT_AMPERE,
  55. "device_class": SensorDeviceClass.CURRENT,
  56. "state_class": STATE_CLASS_MEASUREMENT,
  57. "testdata": (4567, 4.567),
  58. },
  59. {
  60. "dps": POWER_DP,
  61. "name": "sensor_power",
  62. "unit": UnitOfPower.WATT,
  63. "state_class": STATE_CLASS_MEASUREMENT,
  64. "device_class": SensorDeviceClass.POWER,
  65. "testdata": (890, 89.0),
  66. },
  67. ]
  68. )
  69. self.mark_secondary(
  70. [
  71. "sensor_voltage",
  72. "sensor_current",
  73. "sensor_power",
  74. ]
  75. )
  76. def test_multi_sensor_extra_state_attributes(self):
  77. self.dps[UNKNOWN21_DP] = 21
  78. self.dps[UNKNOWN22_DP] = 22
  79. self.dps[UNKNOWN23_DP] = 23
  80. self.dps[UNKNOWN24_DP] = 24
  81. self.dps[UNKNOWN25_DP] = 25
  82. self.dps[UNKNOWN26_DP] = 26
  83. for k, v in self.multiSensor.items():
  84. if k == "sensor":
  85. self.assertDictEqual(
  86. v.extra_state_attributes,
  87. {
  88. "unknown_21": 21,
  89. "unknown_22": 22,
  90. "unknown_23": 23,
  91. "unknown_24": 24,
  92. "unknown_25": 25,
  93. "unknown_26": 26,
  94. },
  95. )
  96. else:
  97. self.assertEqual(v.extra_state_attributes, {})