Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """SMA Solar Webconnect interface."""
2 
3 from __future__ import annotations
4 
5 from typing import TYPE_CHECKING
6 
7 import pysma
8 
10  SensorDeviceClass,
11  SensorEntity,
12  SensorEntityDescription,
13  SensorStateClass,
14 )
15 from homeassistant.config_entries import ConfigEntry
16 from homeassistant.const import (
17  PERCENTAGE,
18  EntityCategory,
19  UnitOfApparentPower,
20  UnitOfElectricCurrent,
21  UnitOfElectricPotential,
22  UnitOfEnergy,
23  UnitOfFrequency,
24  UnitOfPower,
25  UnitOfReactivePower,
26  UnitOfTemperature,
27 )
28 from homeassistant.core import HomeAssistant
29 from homeassistant.helpers.device_registry import DeviceInfo
30 from homeassistant.helpers.entity_platform import AddEntitiesCallback
31 from homeassistant.helpers.typing import StateType
33  CoordinatorEntity,
34  DataUpdateCoordinator,
35 )
36 
37 from .const import DOMAIN, PYSMA_COORDINATOR, PYSMA_DEVICE_INFO, PYSMA_SENSORS
38 
39 SENSOR_ENTITIES: dict[str, SensorEntityDescription] = {
40  "status": SensorEntityDescription(
41  key="status",
42  name="Status",
43  entity_category=EntityCategory.DIAGNOSTIC,
44  ),
45  "operating_status_general": SensorEntityDescription(
46  key="operating_status_general",
47  name="Operating Status General",
48  entity_registry_enabled_default=False,
49  entity_category=EntityCategory.DIAGNOSTIC,
50  ),
51  "inverter_condition": SensorEntityDescription(
52  key="inverter_condition",
53  name="Inverter Condition",
54  entity_registry_enabled_default=False,
55  entity_category=EntityCategory.DIAGNOSTIC,
56  ),
57  "inverter_system_init": SensorEntityDescription(
58  key="inverter_system_init",
59  name="Inverter System Init",
60  entity_registry_enabled_default=False,
61  entity_category=EntityCategory.DIAGNOSTIC,
62  ),
63  "grid_connection_status": SensorEntityDescription(
64  key="grid_connection_status",
65  name="Grid Connection Status",
66  entity_registry_enabled_default=False,
67  entity_category=EntityCategory.DIAGNOSTIC,
68  ),
69  "grid_relay_status": SensorEntityDescription(
70  key="grid_relay_status",
71  name="Grid Relay Status",
72  entity_registry_enabled_default=False,
73  entity_category=EntityCategory.DIAGNOSTIC,
74  ),
75  "pv_power_a": SensorEntityDescription(
76  key="pv_power_a",
77  name="PV Power A",
78  native_unit_of_measurement=UnitOfPower.WATT,
79  state_class=SensorStateClass.MEASUREMENT,
80  device_class=SensorDeviceClass.POWER,
81  ),
82  "pv_power_b": SensorEntityDescription(
83  key="pv_power_b",
84  name="PV Power B",
85  native_unit_of_measurement=UnitOfPower.WATT,
86  state_class=SensorStateClass.MEASUREMENT,
87  device_class=SensorDeviceClass.POWER,
88  ),
89  "pv_power_c": SensorEntityDescription(
90  key="pv_power_c",
91  name="PV Power C",
92  native_unit_of_measurement=UnitOfPower.WATT,
93  state_class=SensorStateClass.MEASUREMENT,
94  device_class=SensorDeviceClass.POWER,
95  entity_registry_enabled_default=False,
96  ),
97  "pv_voltage_a": SensorEntityDescription(
98  key="pv_voltage_a",
99  name="PV Voltage A",
100  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
101  state_class=SensorStateClass.MEASUREMENT,
102  device_class=SensorDeviceClass.VOLTAGE,
103  entity_registry_enabled_default=False,
104  ),
105  "pv_voltage_b": SensorEntityDescription(
106  key="pv_voltage_b",
107  name="PV Voltage B",
108  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
109  state_class=SensorStateClass.MEASUREMENT,
110  device_class=SensorDeviceClass.VOLTAGE,
111  entity_registry_enabled_default=False,
112  ),
113  "pv_voltage_c": SensorEntityDescription(
114  key="pv_voltage_c",
115  name="PV Voltage C",
116  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
117  state_class=SensorStateClass.MEASUREMENT,
118  device_class=SensorDeviceClass.VOLTAGE,
119  entity_registry_enabled_default=False,
120  ),
121  "pv_current_a": SensorEntityDescription(
122  key="pv_current_a",
123  name="PV Current A",
124  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
125  state_class=SensorStateClass.MEASUREMENT,
126  device_class=SensorDeviceClass.CURRENT,
127  ),
128  "pv_current_b": SensorEntityDescription(
129  key="pv_current_b",
130  name="PV Current B",
131  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
132  state_class=SensorStateClass.MEASUREMENT,
133  device_class=SensorDeviceClass.CURRENT,
134  ),
135  "pv_current_c": SensorEntityDescription(
136  key="pv_current_c",
137  name="PV Current C",
138  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
139  state_class=SensorStateClass.MEASUREMENT,
140  device_class=SensorDeviceClass.CURRENT,
141  entity_registry_enabled_default=False,
142  ),
143  "pv_isolation_resistance": SensorEntityDescription(
144  key="pv_isolation_resistance",
145  name="PV Isolation Resistance",
146  native_unit_of_measurement="kOhms",
147  state_class=SensorStateClass.MEASUREMENT,
148  entity_registry_enabled_default=False,
149  ),
150  "insulation_residual_current": SensorEntityDescription(
151  key="insulation_residual_current",
152  name="Insulation Residual Current",
153  native_unit_of_measurement=UnitOfElectricCurrent.MILLIAMPERE,
154  state_class=SensorStateClass.MEASUREMENT,
155  device_class=SensorDeviceClass.CURRENT,
156  entity_registry_enabled_default=False,
157  ),
158  "pv_power": SensorEntityDescription(
159  key="pv_power",
160  name="PV Power",
161  native_unit_of_measurement=UnitOfPower.WATT,
162  state_class=SensorStateClass.MEASUREMENT,
163  device_class=SensorDeviceClass.POWER,
164  ),
165  "grid_power": SensorEntityDescription(
166  key="grid_power",
167  name="Grid Power",
168  native_unit_of_measurement=UnitOfPower.WATT,
169  state_class=SensorStateClass.MEASUREMENT,
170  device_class=SensorDeviceClass.POWER,
171  ),
172  "frequency": SensorEntityDescription(
173  key="frequency",
174  name="Frequency",
175  native_unit_of_measurement=UnitOfFrequency.HERTZ,
176  state_class=SensorStateClass.MEASUREMENT,
177  device_class=SensorDeviceClass.FREQUENCY,
178  entity_registry_enabled_default=False,
179  ),
180  "power_l1": SensorEntityDescription(
181  key="power_l1",
182  name="Power L1",
183  native_unit_of_measurement=UnitOfPower.WATT,
184  state_class=SensorStateClass.MEASUREMENT,
185  device_class=SensorDeviceClass.POWER,
186  entity_registry_enabled_default=False,
187  ),
188  "power_l2": SensorEntityDescription(
189  key="power_l2",
190  name="Power L2",
191  native_unit_of_measurement=UnitOfPower.WATT,
192  state_class=SensorStateClass.MEASUREMENT,
193  device_class=SensorDeviceClass.POWER,
194  entity_registry_enabled_default=False,
195  ),
196  "power_l3": SensorEntityDescription(
197  key="power_l3",
198  name="Power L3",
199  native_unit_of_measurement=UnitOfPower.WATT,
200  state_class=SensorStateClass.MEASUREMENT,
201  device_class=SensorDeviceClass.POWER,
202  entity_registry_enabled_default=False,
203  ),
204  "grid_reactive_power": SensorEntityDescription(
205  key="grid_reactive_power",
206  name="Grid Reactive Power",
207  native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
208  state_class=SensorStateClass.MEASUREMENT,
209  device_class=SensorDeviceClass.REACTIVE_POWER,
210  entity_registry_enabled_default=False,
211  ),
212  "grid_reactive_power_l1": SensorEntityDescription(
213  key="grid_reactive_power_l1",
214  name="Grid Reactive Power L1",
215  native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
216  state_class=SensorStateClass.MEASUREMENT,
217  device_class=SensorDeviceClass.REACTIVE_POWER,
218  entity_registry_enabled_default=False,
219  ),
220  "grid_reactive_power_l2": SensorEntityDescription(
221  key="grid_reactive_power_l2",
222  name="Grid Reactive Power L2",
223  native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
224  state_class=SensorStateClass.MEASUREMENT,
225  device_class=SensorDeviceClass.REACTIVE_POWER,
226  entity_registry_enabled_default=False,
227  ),
228  "grid_reactive_power_l3": SensorEntityDescription(
229  key="grid_reactive_power_l3",
230  name="Grid Reactive Power L3",
231  native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
232  state_class=SensorStateClass.MEASUREMENT,
233  device_class=SensorDeviceClass.REACTIVE_POWER,
234  entity_registry_enabled_default=False,
235  ),
236  "grid_apparent_power": SensorEntityDescription(
237  key="grid_apparent_power",
238  name="Grid Apparent Power",
239  native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE,
240  state_class=SensorStateClass.MEASUREMENT,
241  device_class=SensorDeviceClass.APPARENT_POWER,
242  entity_registry_enabled_default=False,
243  ),
244  "grid_apparent_power_l1": SensorEntityDescription(
245  key="grid_apparent_power_l1",
246  name="Grid Apparent Power L1",
247  native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE,
248  state_class=SensorStateClass.MEASUREMENT,
249  device_class=SensorDeviceClass.APPARENT_POWER,
250  entity_registry_enabled_default=False,
251  ),
252  "grid_apparent_power_l2": SensorEntityDescription(
253  key="grid_apparent_power_l2",
254  name="Grid Apparent Power L2",
255  native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE,
256  state_class=SensorStateClass.MEASUREMENT,
257  device_class=SensorDeviceClass.APPARENT_POWER,
258  entity_registry_enabled_default=False,
259  ),
260  "grid_apparent_power_l3": SensorEntityDescription(
261  key="grid_apparent_power_l3",
262  name="Grid Apparent Power L3",
263  native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE,
264  state_class=SensorStateClass.MEASUREMENT,
265  device_class=SensorDeviceClass.APPARENT_POWER,
266  entity_registry_enabled_default=False,
267  ),
268  "grid_power_factor": SensorEntityDescription(
269  key="grid_power_factor",
270  name="Grid Power Factor",
271  state_class=SensorStateClass.MEASUREMENT,
272  device_class=SensorDeviceClass.POWER_FACTOR,
273  entity_registry_enabled_default=False,
274  ),
275  "grid_power_factor_excitation": SensorEntityDescription(
276  key="grid_power_factor_excitation",
277  name="Grid Power Factor Excitation",
278  entity_registry_enabled_default=False,
279  entity_category=EntityCategory.DIAGNOSTIC,
280  ),
281  "current_l1": SensorEntityDescription(
282  key="current_l1",
283  name="Current L1",
284  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
285  state_class=SensorStateClass.MEASUREMENT,
286  device_class=SensorDeviceClass.CURRENT,
287  entity_registry_enabled_default=False,
288  ),
289  "current_l2": SensorEntityDescription(
290  key="current_l2",
291  name="Current L2",
292  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
293  state_class=SensorStateClass.MEASUREMENT,
294  device_class=SensorDeviceClass.CURRENT,
295  entity_registry_enabled_default=False,
296  ),
297  "current_l3": SensorEntityDescription(
298  key="current_l3",
299  name="Current L3",
300  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
301  state_class=SensorStateClass.MEASUREMENT,
302  device_class=SensorDeviceClass.CURRENT,
303  entity_registry_enabled_default=False,
304  ),
305  "current_total": SensorEntityDescription(
306  key="current_total",
307  name="Current Total",
308  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
309  state_class=SensorStateClass.MEASUREMENT,
310  device_class=SensorDeviceClass.CURRENT,
311  ),
312  "voltage_l1": SensorEntityDescription(
313  key="voltage_l1",
314  name="Voltage L1",
315  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
316  state_class=SensorStateClass.MEASUREMENT,
317  device_class=SensorDeviceClass.VOLTAGE,
318  entity_registry_enabled_default=False,
319  ),
320  "voltage_l2": SensorEntityDescription(
321  key="voltage_l2",
322  name="Voltage L2",
323  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
324  state_class=SensorStateClass.MEASUREMENT,
325  device_class=SensorDeviceClass.VOLTAGE,
326  entity_registry_enabled_default=False,
327  ),
328  "voltage_l3": SensorEntityDescription(
329  key="voltage_l3",
330  name="Voltage L3",
331  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
332  state_class=SensorStateClass.MEASUREMENT,
333  device_class=SensorDeviceClass.VOLTAGE,
334  entity_registry_enabled_default=False,
335  ),
336  "total_yield": SensorEntityDescription(
337  key="total_yield",
338  name="Total Yield",
339  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
340  state_class=SensorStateClass.TOTAL_INCREASING,
341  device_class=SensorDeviceClass.ENERGY,
342  ),
343  "daily_yield": SensorEntityDescription(
344  key="daily_yield",
345  name="Daily Yield",
346  native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
347  state_class=SensorStateClass.TOTAL_INCREASING,
348  device_class=SensorDeviceClass.ENERGY,
349  ),
350  "metering_power_supplied": SensorEntityDescription(
351  key="metering_power_supplied",
352  name="Metering Power Supplied",
353  native_unit_of_measurement=UnitOfPower.WATT,
354  state_class=SensorStateClass.MEASUREMENT,
355  device_class=SensorDeviceClass.POWER,
356  ),
357  "metering_power_absorbed": SensorEntityDescription(
358  key="metering_power_absorbed",
359  name="Metering Power Absorbed",
360  native_unit_of_measurement=UnitOfPower.WATT,
361  state_class=SensorStateClass.MEASUREMENT,
362  device_class=SensorDeviceClass.POWER,
363  ),
364  "metering_frequency": SensorEntityDescription(
365  key="metering_frequency",
366  name="Metering Frequency",
367  native_unit_of_measurement=UnitOfFrequency.HERTZ,
368  state_class=SensorStateClass.MEASUREMENT,
369  device_class=SensorDeviceClass.FREQUENCY,
370  ),
371  "metering_total_yield": SensorEntityDescription(
372  key="metering_total_yield",
373  name="Metering Total Yield",
374  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
375  state_class=SensorStateClass.TOTAL_INCREASING,
376  device_class=SensorDeviceClass.ENERGY,
377  ),
378  "metering_total_absorbed": SensorEntityDescription(
379  key="metering_total_absorbed",
380  name="Metering Total Absorbed",
381  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
382  state_class=SensorStateClass.TOTAL_INCREASING,
383  device_class=SensorDeviceClass.ENERGY,
384  ),
385  "metering_current_l1": SensorEntityDescription(
386  key="metering_current_l1",
387  name="Metering Current L1",
388  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
389  state_class=SensorStateClass.MEASUREMENT,
390  device_class=SensorDeviceClass.CURRENT,
391  ),
392  "metering_current_l2": SensorEntityDescription(
393  key="metering_current_l2",
394  name="Metering Current L2",
395  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
396  state_class=SensorStateClass.MEASUREMENT,
397  device_class=SensorDeviceClass.CURRENT,
398  ),
399  "metering_current_l3": SensorEntityDescription(
400  key="metering_current_l3",
401  name="Metering Current L3",
402  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
403  state_class=SensorStateClass.MEASUREMENT,
404  device_class=SensorDeviceClass.CURRENT,
405  ),
406  "metering_voltage_l1": SensorEntityDescription(
407  key="metering_voltage_l1",
408  name="Metering Voltage L1",
409  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
410  state_class=SensorStateClass.MEASUREMENT,
411  device_class=SensorDeviceClass.VOLTAGE,
412  entity_registry_enabled_default=False,
413  ),
414  "metering_voltage_l2": SensorEntityDescription(
415  key="metering_voltage_l2",
416  name="Metering Voltage L2",
417  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
418  state_class=SensorStateClass.MEASUREMENT,
419  device_class=SensorDeviceClass.VOLTAGE,
420  entity_registry_enabled_default=False,
421  ),
422  "metering_voltage_l3": SensorEntityDescription(
423  key="metering_voltage_l3",
424  name="Metering Voltage L3",
425  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
426  state_class=SensorStateClass.MEASUREMENT,
427  device_class=SensorDeviceClass.VOLTAGE,
428  entity_registry_enabled_default=False,
429  ),
430  "metering_active_power_feed_l1": SensorEntityDescription(
431  key="metering_active_power_feed_l1",
432  name="Metering Active Power Feed L1",
433  native_unit_of_measurement=UnitOfPower.WATT,
434  state_class=SensorStateClass.MEASUREMENT,
435  device_class=SensorDeviceClass.POWER,
436  ),
437  "metering_active_power_feed_l2": SensorEntityDescription(
438  key="metering_active_power_feed_l2",
439  name="Metering Active Power Feed L2",
440  native_unit_of_measurement=UnitOfPower.WATT,
441  state_class=SensorStateClass.MEASUREMENT,
442  device_class=SensorDeviceClass.POWER,
443  ),
444  "metering_active_power_feed_l3": SensorEntityDescription(
445  key="metering_active_power_feed_l3",
446  name="Metering Active Power Feed L3",
447  native_unit_of_measurement=UnitOfPower.WATT,
448  state_class=SensorStateClass.MEASUREMENT,
449  device_class=SensorDeviceClass.POWER,
450  ),
451  "metering_active_power_draw_l1": SensorEntityDescription(
452  key="metering_active_power_draw_l1",
453  name="Metering Active Power Draw L1",
454  native_unit_of_measurement=UnitOfPower.WATT,
455  state_class=SensorStateClass.MEASUREMENT,
456  device_class=SensorDeviceClass.POWER,
457  ),
458  "metering_active_power_draw_l2": SensorEntityDescription(
459  key="metering_active_power_draw_l2",
460  name="Metering Active Power Draw L2",
461  native_unit_of_measurement=UnitOfPower.WATT,
462  state_class=SensorStateClass.MEASUREMENT,
463  device_class=SensorDeviceClass.POWER,
464  ),
465  "metering_active_power_draw_l3": SensorEntityDescription(
466  key="metering_active_power_draw_l3",
467  name="Metering Active Power Draw L3",
468  native_unit_of_measurement=UnitOfPower.WATT,
469  state_class=SensorStateClass.MEASUREMENT,
470  device_class=SensorDeviceClass.POWER,
471  ),
472  "metering_current_consumption": SensorEntityDescription(
473  key="metering_current_consumption",
474  name="Metering Current Consumption",
475  native_unit_of_measurement=UnitOfPower.WATT,
476  state_class=SensorStateClass.MEASUREMENT,
477  device_class=SensorDeviceClass.POWER,
478  entity_registry_enabled_default=False,
479  ),
480  "metering_total_consumption": SensorEntityDescription(
481  key="metering_total_consumption",
482  name="Metering Total Consumption",
483  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
484  state_class=SensorStateClass.TOTAL_INCREASING,
485  device_class=SensorDeviceClass.ENERGY,
486  entity_registry_enabled_default=False,
487  ),
488  "pv_gen_meter": SensorEntityDescription(
489  key="pv_gen_meter",
490  name="PV Gen Meter",
491  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
492  state_class=SensorStateClass.TOTAL_INCREASING,
493  device_class=SensorDeviceClass.ENERGY,
494  ),
495  "sps_voltage": SensorEntityDescription(
496  key="sps_voltage",
497  name="Secure Power Supply Voltage",
498  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
499  state_class=SensorStateClass.MEASUREMENT,
500  device_class=SensorDeviceClass.VOLTAGE,
501  entity_registry_enabled_default=False,
502  ),
503  "sps_current": SensorEntityDescription(
504  key="sps_current",
505  name="Secure Power Supply Current",
506  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
507  state_class=SensorStateClass.MEASUREMENT,
508  device_class=SensorDeviceClass.CURRENT,
509  entity_registry_enabled_default=False,
510  ),
511  "sps_power": SensorEntityDescription(
512  key="sps_power",
513  name="Secure Power Supply Power",
514  native_unit_of_measurement=UnitOfPower.WATT,
515  state_class=SensorStateClass.MEASUREMENT,
516  device_class=SensorDeviceClass.POWER,
517  entity_registry_enabled_default=False,
518  ),
519  "optimizer_power": SensorEntityDescription(
520  key="optimizer_power",
521  name="Optimizer Power",
522  native_unit_of_measurement=UnitOfPower.WATT,
523  state_class=SensorStateClass.MEASUREMENT,
524  device_class=SensorDeviceClass.POWER,
525  ),
526  "optimizer_current": SensorEntityDescription(
527  key="optimizer_current",
528  name="Optimizer Current",
529  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
530  state_class=SensorStateClass.MEASUREMENT,
531  device_class=SensorDeviceClass.CURRENT,
532  entity_registry_enabled_default=False,
533  ),
534  "optimizer_voltage": SensorEntityDescription(
535  key="optimizer_voltage",
536  name="Optimizer Voltage",
537  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
538  state_class=SensorStateClass.MEASUREMENT,
539  device_class=SensorDeviceClass.VOLTAGE,
540  entity_registry_enabled_default=False,
541  ),
542  "optimizer_temp": SensorEntityDescription(
543  key="optimizer_temp",
544  name="Optimizer Temp",
545  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
546  state_class=SensorStateClass.MEASUREMENT,
547  device_class=SensorDeviceClass.TEMPERATURE,
548  entity_registry_enabled_default=False,
549  ),
550  "battery_soc_total": SensorEntityDescription(
551  key="battery_soc_total",
552  name="Battery SOC Total",
553  native_unit_of_measurement=PERCENTAGE,
554  state_class=SensorStateClass.MEASUREMENT,
555  device_class=SensorDeviceClass.BATTERY,
556  ),
557  "battery_soc_a": SensorEntityDescription(
558  key="battery_soc_a",
559  name="Battery SOC A",
560  native_unit_of_measurement=PERCENTAGE,
561  state_class=SensorStateClass.MEASUREMENT,
562  device_class=SensorDeviceClass.BATTERY,
563  entity_registry_enabled_default=False,
564  ),
565  "battery_soc_b": SensorEntityDescription(
566  key="battery_soc_b",
567  name="Battery SOC B",
568  native_unit_of_measurement=PERCENTAGE,
569  state_class=SensorStateClass.MEASUREMENT,
570  device_class=SensorDeviceClass.BATTERY,
571  entity_registry_enabled_default=False,
572  ),
573  "battery_soc_c": SensorEntityDescription(
574  key="battery_soc_c",
575  name="Battery SOC C",
576  native_unit_of_measurement=PERCENTAGE,
577  state_class=SensorStateClass.MEASUREMENT,
578  device_class=SensorDeviceClass.BATTERY,
579  entity_registry_enabled_default=False,
580  ),
581  "battery_voltage_a": SensorEntityDescription(
582  key="battery_voltage_a",
583  name="Battery Voltage A",
584  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
585  state_class=SensorStateClass.MEASUREMENT,
586  device_class=SensorDeviceClass.VOLTAGE,
587  entity_registry_enabled_default=False,
588  ),
589  "battery_voltage_b": SensorEntityDescription(
590  key="battery_voltage_b",
591  name="Battery Voltage B",
592  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
593  state_class=SensorStateClass.MEASUREMENT,
594  device_class=SensorDeviceClass.VOLTAGE,
595  entity_registry_enabled_default=False,
596  ),
597  "battery_voltage_c": SensorEntityDescription(
598  key="battery_voltage_c",
599  name="Battery Voltage C",
600  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
601  state_class=SensorStateClass.MEASUREMENT,
602  device_class=SensorDeviceClass.VOLTAGE,
603  entity_registry_enabled_default=False,
604  ),
605  "battery_current_a": SensorEntityDescription(
606  key="battery_current_a",
607  name="Battery Current A",
608  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
609  state_class=SensorStateClass.MEASUREMENT,
610  device_class=SensorDeviceClass.CURRENT,
611  ),
612  "battery_current_b": SensorEntityDescription(
613  key="battery_current_b",
614  name="Battery Current B",
615  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
616  state_class=SensorStateClass.MEASUREMENT,
617  device_class=SensorDeviceClass.CURRENT,
618  ),
619  "battery_current_c": SensorEntityDescription(
620  key="battery_current_c",
621  name="Battery Current C",
622  native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
623  state_class=SensorStateClass.MEASUREMENT,
624  device_class=SensorDeviceClass.CURRENT,
625  ),
626  "battery_temp_a": SensorEntityDescription(
627  key="battery_temp_a",
628  name="Battery Temp A",
629  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
630  state_class=SensorStateClass.MEASUREMENT,
631  device_class=SensorDeviceClass.TEMPERATURE,
632  ),
633  "battery_temp_b": SensorEntityDescription(
634  key="battery_temp_b",
635  name="Battery Temp B",
636  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
637  state_class=SensorStateClass.MEASUREMENT,
638  device_class=SensorDeviceClass.TEMPERATURE,
639  ),
640  "battery_temp_c": SensorEntityDescription(
641  key="battery_temp_c",
642  name="Battery Temp C",
643  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
644  state_class=SensorStateClass.MEASUREMENT,
645  device_class=SensorDeviceClass.TEMPERATURE,
646  ),
647  "battery_status_operating_mode": SensorEntityDescription(
648  key="battery_status_operating_mode",
649  name="Battery Status Operating Mode",
650  ),
651  "battery_capacity_total": SensorEntityDescription(
652  key="battery_capacity_total",
653  name="Battery Capacity Total",
654  native_unit_of_measurement=PERCENTAGE,
655  ),
656  "battery_capacity_a": SensorEntityDescription(
657  key="battery_capacity_a",
658  name="Battery Capacity A",
659  native_unit_of_measurement=PERCENTAGE,
660  entity_registry_enabled_default=False,
661  ),
662  "battery_capacity_b": SensorEntityDescription(
663  key="battery_capacity_b",
664  name="Battery Capacity B",
665  native_unit_of_measurement=PERCENTAGE,
666  entity_registry_enabled_default=False,
667  ),
668  "battery_capacity_c": SensorEntityDescription(
669  key="battery_capacity_c",
670  name="Battery Capacity C",
671  native_unit_of_measurement=PERCENTAGE,
672  entity_registry_enabled_default=False,
673  ),
674  "battery_charging_voltage_a": SensorEntityDescription(
675  key="battery_charging_voltage_a",
676  name="Battery Charging Voltage A",
677  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
678  state_class=SensorStateClass.MEASUREMENT,
679  device_class=SensorDeviceClass.VOLTAGE,
680  entity_registry_enabled_default=False,
681  ),
682  "battery_charging_voltage_b": SensorEntityDescription(
683  key="battery_charging_voltage_b",
684  name="Battery Charging Voltage B",
685  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
686  state_class=SensorStateClass.MEASUREMENT,
687  device_class=SensorDeviceClass.VOLTAGE,
688  entity_registry_enabled_default=False,
689  ),
690  "battery_charging_voltage_c": SensorEntityDescription(
691  key="battery_charging_voltage_c",
692  name="Battery Charging Voltage C",
693  native_unit_of_measurement=UnitOfElectricPotential.VOLT,
694  state_class=SensorStateClass.MEASUREMENT,
695  device_class=SensorDeviceClass.VOLTAGE,
696  entity_registry_enabled_default=False,
697  ),
698  "battery_power_charge_total": SensorEntityDescription(
699  key="battery_power_charge_total",
700  name="Battery Power Charge Total",
701  native_unit_of_measurement=UnitOfPower.WATT,
702  state_class=SensorStateClass.MEASUREMENT,
703  device_class=SensorDeviceClass.POWER,
704  ),
705  "battery_power_charge_a": SensorEntityDescription(
706  key="battery_power_charge_a",
707  name="Battery Power Charge A",
708  native_unit_of_measurement=UnitOfPower.WATT,
709  state_class=SensorStateClass.MEASUREMENT,
710  device_class=SensorDeviceClass.POWER,
711  entity_registry_enabled_default=False,
712  ),
713  "battery_power_charge_b": SensorEntityDescription(
714  key="battery_power_charge_b",
715  name="Battery Power Charge B",
716  native_unit_of_measurement=UnitOfPower.WATT,
717  state_class=SensorStateClass.MEASUREMENT,
718  device_class=SensorDeviceClass.POWER,
719  entity_registry_enabled_default=False,
720  ),
721  "battery_power_charge_c": SensorEntityDescription(
722  key="battery_power_charge_c",
723  name="Battery Power Charge C",
724  native_unit_of_measurement=UnitOfPower.WATT,
725  state_class=SensorStateClass.MEASUREMENT,
726  device_class=SensorDeviceClass.POWER,
727  entity_registry_enabled_default=False,
728  ),
729  "battery_charge_total": SensorEntityDescription(
730  key="battery_charge_total",
731  name="Battery Charge Total",
732  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
733  state_class=SensorStateClass.TOTAL_INCREASING,
734  device_class=SensorDeviceClass.ENERGY,
735  ),
736  "battery_charge_a": SensorEntityDescription(
737  key="battery_charge_a",
738  name="Battery Charge A",
739  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
740  state_class=SensorStateClass.TOTAL_INCREASING,
741  device_class=SensorDeviceClass.ENERGY,
742  entity_registry_enabled_default=False,
743  ),
744  "battery_charge_b": SensorEntityDescription(
745  key="battery_charge_b",
746  name="Battery Charge B",
747  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
748  state_class=SensorStateClass.TOTAL_INCREASING,
749  device_class=SensorDeviceClass.ENERGY,
750  entity_registry_enabled_default=False,
751  ),
752  "battery_charge_c": SensorEntityDescription(
753  key="battery_charge_c",
754  name="Battery Charge C",
755  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
756  state_class=SensorStateClass.TOTAL_INCREASING,
757  device_class=SensorDeviceClass.ENERGY,
758  entity_registry_enabled_default=False,
759  ),
760  "battery_power_discharge_total": SensorEntityDescription(
761  key="battery_power_discharge_total",
762  name="Battery Power Discharge Total",
763  native_unit_of_measurement=UnitOfPower.WATT,
764  state_class=SensorStateClass.MEASUREMENT,
765  device_class=SensorDeviceClass.POWER,
766  ),
767  "battery_power_discharge_a": SensorEntityDescription(
768  key="battery_power_discharge_a",
769  name="Battery Power Discharge A",
770  native_unit_of_measurement=UnitOfPower.WATT,
771  state_class=SensorStateClass.MEASUREMENT,
772  device_class=SensorDeviceClass.POWER,
773  entity_registry_enabled_default=False,
774  ),
775  "battery_power_discharge_b": SensorEntityDescription(
776  key="battery_power_discharge_b",
777  name="Battery Power Discharge B",
778  native_unit_of_measurement=UnitOfPower.WATT,
779  state_class=SensorStateClass.MEASUREMENT,
780  device_class=SensorDeviceClass.POWER,
781  entity_registry_enabled_default=False,
782  ),
783  "battery_power_discharge_c": SensorEntityDescription(
784  key="battery_power_discharge_c",
785  name="Battery Power Discharge C",
786  native_unit_of_measurement=UnitOfPower.WATT,
787  state_class=SensorStateClass.MEASUREMENT,
788  device_class=SensorDeviceClass.POWER,
789  entity_registry_enabled_default=False,
790  ),
791  "battery_discharge_total": SensorEntityDescription(
792  key="battery_discharge_total",
793  name="Battery Discharge Total",
794  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
795  state_class=SensorStateClass.TOTAL_INCREASING,
796  device_class=SensorDeviceClass.ENERGY,
797  ),
798  "battery_discharge_a": SensorEntityDescription(
799  key="battery_discharge_a",
800  name="Battery Discharge A",
801  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
802  state_class=SensorStateClass.TOTAL_INCREASING,
803  device_class=SensorDeviceClass.ENERGY,
804  entity_registry_enabled_default=False,
805  ),
806  "battery_discharge_b": SensorEntityDescription(
807  key="battery_discharge_b",
808  name="Battery Discharge B",
809  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
810  state_class=SensorStateClass.TOTAL_INCREASING,
811  device_class=SensorDeviceClass.ENERGY,
812  entity_registry_enabled_default=False,
813  ),
814  "battery_discharge_c": SensorEntityDescription(
815  key="battery_discharge_c",
816  name="Battery Discharge C",
817  native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
818  state_class=SensorStateClass.TOTAL_INCREASING,
819  device_class=SensorDeviceClass.ENERGY,
820  entity_registry_enabled_default=False,
821  ),
822  "inverter_power_limit": SensorEntityDescription(
823  key="inverter_power_limit",
824  name="Inverter Power Limit",
825  native_unit_of_measurement=UnitOfPower.WATT,
826  state_class=SensorStateClass.MEASUREMENT,
827  device_class=SensorDeviceClass.POWER,
828  ),
829 }
830 
831 
833  hass: HomeAssistant,
834  config_entry: ConfigEntry,
835  async_add_entities: AddEntitiesCallback,
836 ) -> None:
837  """Set up SMA sensors."""
838  sma_data = hass.data[DOMAIN][config_entry.entry_id]
839 
840  coordinator = sma_data[PYSMA_COORDINATOR]
841  used_sensors = sma_data[PYSMA_SENSORS]
842  device_info = sma_data[PYSMA_DEVICE_INFO]
843 
844  if TYPE_CHECKING:
845  assert config_entry.unique_id
846 
848  SMAsensor(
849  coordinator,
850  config_entry.unique_id,
851  SENSOR_ENTITIES.get(sensor.name),
852  device_info,
853  sensor,
854  )
855  for sensor in used_sensors
856  )
857 
858 
860  """Representation of a SMA sensor."""
861 
862  def __init__(
863  self,
864  coordinator: DataUpdateCoordinator,
865  config_entry_unique_id: str,
866  description: SensorEntityDescription | None,
867  device_info: DeviceInfo,
868  pysma_sensor: pysma.sensor.Sensor,
869  ) -> None:
870  """Initialize the sensor."""
871  super().__init__(coordinator)
872  if description is not None:
873  self.entity_descriptionentity_description = description
874  else:
875  self._attr_name_attr_name = pysma_sensor.name
876 
877  self._sensor_sensor = pysma_sensor
878 
879  self._attr_device_info_attr_device_info = device_info
880  self._attr_unique_id_attr_unique_id = (
881  f"{config_entry_unique_id}-{pysma_sensor.key}_{pysma_sensor.key_idx}"
882  )
883 
884  # Set sensor enabled to False.
885  # Will be enabled by async_added_to_hass if actually used.
886  self._sensor_sensor.enabled = False
887 
888  @property
889  def name(self) -> str:
890  """Return the name of the sensor prefixed with the device name."""
891  if self._attr_device_info_attr_device_info is None or not (
892  name_prefix := self._attr_device_info_attr_device_info.get("name")
893  ):
894  name_prefix = "SMA"
895 
896  return f"{name_prefix} {super().name}"
897 
898  @property
899  def native_value(self) -> StateType:
900  """Return the state of the sensor."""
901  return self._sensor_sensor.value
902 
903  async def async_added_to_hass(self) -> None:
904  """Run when entity about to be added to hass."""
905  await super().async_added_to_hass()
906  self._sensor_sensor.enabled = True
907 
908  async def async_will_remove_from_hass(self) -> None:
909  """Run when entity will be removed from hass."""
910  await super().async_will_remove_from_hass()
911  self._sensor_sensor.enabled = False
None __init__(self, DataUpdateCoordinator coordinator, str config_entry_unique_id, SensorEntityDescription|None description, DeviceInfo device_info, pysma.sensor.Sensor pysma_sensor)
Definition: sensor.py:869
web.Response get(self, web.Request request, str config_key)
Definition: view.py:88
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:836