29
29
CONF_C2_TOTAL_UNIT_OF_MEASUREMENT ,
30
30
CONF_C2_UNIT_OF_MEASUREMENT ,
31
31
CONF_T1_ENABLED ,
32
- CONF_T1_HCHP ,
32
+ CONF_T1_TYPE ,
33
33
CONF_T2_ENABLED ,
34
- CONF_T2_HCHP ,
34
+ CONF_T2_TYPE ,
35
+ CONF_TI_TYPE_BASE ,
36
+ CONF_TI_TYPE_HCHP ,
37
+ CONF_TI_TYPE_TEMPO ,
35
38
CONTROLLER ,
36
39
COORDINATOR ,
37
40
DEFAULT_C1_NAME ,
40
43
DEFAULT_T2_NAME ,
41
44
DOMAIN ,
42
45
TELEINFO_EXTRA_ATTR ,
46
+ TELEINFO_TEMPO_ATTR ,
43
47
)
44
48
45
49
_LOGGER = logging .getLogger (__name__ )
@@ -56,9 +60,9 @@ async def async_setup_entry(
56
60
options = entry .options
57
61
58
62
t1_enabled = options .get (CONF_T1_ENABLED , config .get (CONF_T1_ENABLED ))
59
- t1_hchp = options .get (CONF_T1_HCHP , config .get (CONF_T1_HCHP ))
63
+ t1_type = options .get (CONF_T1_TYPE , config .get (CONF_T1_TYPE ))
60
64
t2_enabled = options .get (CONF_T2_ENABLED , config .get (CONF_T2_ENABLED ))
61
- t2_hchp = options .get (CONF_T2_HCHP , config .get (CONF_T2_HCHP ))
65
+ t2_type = options .get (CONF_T2_TYPE , config .get (CONF_T2_TYPE ))
62
66
c1_enabled = options .get (CONF_C1_ENABLED , config .get (CONF_C1_ENABLED ))
63
67
c2_enabled = options .get (CONF_C2_ENABLED , config .get (CONF_C2_ENABLED ))
64
68
@@ -79,7 +83,21 @@ async def async_setup_entry(
79
83
icon = "mdi:flash" ,
80
84
)
81
85
)
82
- if t1_hchp :
86
+ if t1_type == CONF_TI_TYPE_BASE :
87
+ entities .append (
88
+ TeleinfoInputTotalEdDevice (
89
+ controller ,
90
+ coordinator ,
91
+ input_number = 1 ,
92
+ input_name = "t1_total" ,
93
+ name = DEFAULT_T1_NAME + " Total" ,
94
+ unit = UnitOfEnergy .WATT_HOUR ,
95
+ device_class = SensorDeviceClass .ENERGY ,
96
+ state_class = SensorStateClass .TOTAL_INCREASING ,
97
+ icon = "mdi:meter-electric" ,
98
+ )
99
+ )
100
+ elif t1_type == CONF_TI_TYPE_HCHP :
83
101
entities .append (
84
102
TeleinfoInputTotalHchpEdDevice (
85
103
controller ,
@@ -119,9 +137,9 @@ async def async_setup_entry(
119
137
icon = "mdi:meter-electric" ,
120
138
)
121
139
)
122
- else :
140
+ elif t1_type == CONF_TI_TYPE_TEMPO :
123
141
entities .append (
124
- TeleinfoInputTotalEdDevice (
142
+ TeleinfoInputTotalTempoEdDevice (
125
143
controller ,
126
144
coordinator ,
127
145
input_number = 1 ,
@@ -133,6 +151,20 @@ async def async_setup_entry(
133
151
icon = "mdi:meter-electric" ,
134
152
)
135
153
)
154
+ for desc , key in TELEINFO_TEMPO_ATTR .items ():
155
+ entities .append (
156
+ TeleinfoInputTempoEdDevice (
157
+ controller ,
158
+ coordinator ,
159
+ input_number = 1 ,
160
+ input_name = f"t1_{ key } " ,
161
+ name = DEFAULT_T1_NAME + " " + desc + " Total" ,
162
+ unit = UnitOfEnergy .WATT_HOUR ,
163
+ device_class = SensorDeviceClass .ENERGY ,
164
+ state_class = SensorStateClass .TOTAL_INCREASING ,
165
+ icon = "mdi:meter-electric" ,
166
+ )
167
+ )
136
168
if t2_enabled :
137
169
_LOGGER .debug ("Add the teleinfo 2 entities" )
138
170
entities .append (
@@ -148,7 +180,21 @@ async def async_setup_entry(
148
180
icon = "mdi:flash" ,
149
181
)
150
182
)
151
- if t2_hchp :
183
+ if t2_type == CONF_TI_TYPE_BASE :
184
+ entities .append (
185
+ TeleinfoInputTotalEdDevice (
186
+ controller ,
187
+ coordinator ,
188
+ input_number = 2 ,
189
+ input_name = "t2_total" ,
190
+ name = DEFAULT_T2_NAME + " Total" ,
191
+ unit = UnitOfEnergy .WATT_HOUR ,
192
+ device_class = SensorDeviceClass .ENERGY ,
193
+ state_class = SensorStateClass .TOTAL_INCREASING ,
194
+ icon = "mdi:meter-electric" ,
195
+ )
196
+ )
197
+ elif t2_type == CONF_TI_TYPE_HCHP :
152
198
entities .append (
153
199
TeleinfoInputTotalHchpEdDevice (
154
200
controller ,
@@ -188,9 +234,9 @@ async def async_setup_entry(
188
234
icon = "mdi:meter-electric" ,
189
235
)
190
236
)
191
- else :
237
+ elif t2_type == CONF_TI_TYPE_TEMPO :
192
238
entities .append (
193
- TeleinfoInputTotalEdDevice (
239
+ TeleinfoInputTotalTempoEdDevice (
194
240
controller ,
195
241
coordinator ,
196
242
input_number = 2 ,
@@ -202,6 +248,20 @@ async def async_setup_entry(
202
248
icon = "mdi:meter-electric" ,
203
249
)
204
250
)
251
+ for desc , key in TELEINFO_TEMPO_ATTR .items ():
252
+ entities .append (
253
+ TeleinfoInputTempoEdDevice (
254
+ controller ,
255
+ coordinator ,
256
+ input_number = 2 ,
257
+ input_name = f"t2_{ key } " ,
258
+ name = DEFAULT_T2_NAME + " " + desc + " Total" ,
259
+ unit = UnitOfEnergy .WATT_HOUR ,
260
+ device_class = SensorDeviceClass .ENERGY ,
261
+ state_class = SensorStateClass .TOTAL_INCREASING ,
262
+ icon = "mdi:meter-electric" ,
263
+ )
264
+ )
205
265
if c1_enabled :
206
266
_LOGGER .debug ("Add the Meter 1 - entities" )
207
267
entities .append (
@@ -484,6 +544,39 @@ def native_value(self) -> float | None:
484
544
return None
485
545
486
546
547
+ class TeleinfoInputTotalTempoEdDevice (EdDevice ):
548
+ """Initialize the Teleinfo Input Tempo Total sensor."""
549
+
550
+ @property
551
+ def native_value (self ) -> float | None :
552
+ """Return the total value if it's greater than 0."""
553
+ value = 0.0
554
+ for key in TELEINFO_TEMPO_ATTR .values ():
555
+ value += float (self .coordinator .data [f"T{ self ._input_number } _{ key } " ])
556
+ if value > 0 :
557
+ return value
558
+ _LOGGER .warning (
559
+ "Total value for Teleinfo Input %s not greater than 0, ignore" ,
560
+ self ._input_number ,
561
+ )
562
+ return None
563
+
564
+
565
+ class TeleinfoInputTempoEdDevice (EdDevice ):
566
+ """Initialize the Teleinfo Input Tempo sensor."""
567
+
568
+ @property
569
+ def native_value (self ) -> float | None :
570
+ """Return the total value if it's greater than 0."""
571
+ if (value := float (self .coordinator .data [self ._input_name .upper ()])) > 0 :
572
+ return value
573
+ _LOGGER .warning (
574
+ "Total value for Teleinfo Input %s not greater than 0, ignore" ,
575
+ self ._input_number ,
576
+ )
577
+ return None
578
+
579
+
487
580
class MeterInputEdDevice (EdDevice ):
488
581
"""Initialize the meter input sensor."""
489
582
0 commit comments