180180 current
181181 currentState
182182 isSuspended
183+ ... on SmartFlexVehicleStatus {
184+ stateOfCharge {
185+ value
186+ timestamp
187+ }
188+ stateOfChargeLimit {
189+ upperSocLimit
190+ timestamp
191+ isLimitViolated
192+ }
193+ }
194+ ... on SmartFlexChargePointStatus {
195+ stateOfCharge {
196+ value
197+ timestamp
198+ }
199+ stateOfChargeLimit {
200+ upperSocLimit
201+ timestamp
202+ isLimitViolated
203+ }
204+ }
183205 }
184206 provider
185207 preferences {
224246 current
225247 currentState
226248 isSuspended
249+ ... on SmartFlexVehicleStatus {
250+ stateOfCharge {
251+ value
252+ timestamp
253+ }
254+ stateOfChargeLimit {
255+ upperSocLimit
256+ timestamp
257+ isLimitViolated
258+ }
259+ }
227260 }
228261 vehicleVariant {
229262 model
234267 node {
235268 start
236269 end
270+ stateOfChargeChange
271+ stateOfChargeFinal
237272 energyAdded {
238273 value
239274 unit
259294 node {
260295 start
261296 end
297+ stateOfChargeChange
298+ stateOfChargeFinal
262299 energyAdded {
263300 value
264301 unit
629666 node {
630667 start
631668 end
669+ stateOfChargeChange
670+ stateOfChargeFinal
632671 energyAdded {
633672 value
634673 unit
654693 node {
655694 start
656695 end
696+ stateOfChargeChange
697+ stateOfChargeFinal
657698 energyAdded {
658699 value
659700 unit
@@ -1182,6 +1223,21 @@ async def fetch_all_data(self, account_number: str):
11821223 for edge in edges :
11831224 session = edge .get ("node" , {})
11841225 if session :
1226+ # Normalize SoC fields to snake_case for internal consumers.
1227+ if (
1228+ "soc_final" not in session
1229+ and "stateOfChargeFinal" in session
1230+ ):
1231+ session ["soc_final" ] = session .get (
1232+ "stateOfChargeFinal"
1233+ )
1234+ if (
1235+ "soc_change" not in session
1236+ and "stateOfChargeChange" in session
1237+ ):
1238+ session ["soc_change" ] = session .get (
1239+ "stateOfChargeChange"
1240+ )
11851241 # Add device context to session
11861242 session ["device_id" ] = device_id
11871243 session ["device_name" ] = device_name
@@ -1565,6 +1621,21 @@ async def fetch_charging_sessions(self, account_number: str):
15651621 for edge in edges :
15661622 session = edge .get ("node" , {})
15671623 if session :
1624+ # Normalize SoC fields to snake_case for internal consumers.
1625+ if (
1626+ "soc_final" not in session
1627+ and "stateOfChargeFinal" in session
1628+ ):
1629+ session ["soc_final" ] = session .get (
1630+ "stateOfChargeFinal"
1631+ )
1632+ if (
1633+ "soc_change" not in session
1634+ and "stateOfChargeChange" in session
1635+ ):
1636+ session ["soc_change" ] = session .get (
1637+ "stateOfChargeChange"
1638+ )
15681639 # Add device context to session
15691640 session ["device_id" ] = device_id
15701641 session ["device_name" ] = device_name
@@ -2323,7 +2394,9 @@ async def fetch_electricity_15min_readings(
23232394 return None
23242395
23252396 if "errors" in response :
2326- _LOGGER .error ("GraphQL errors in 15min readings: %s" , response ["errors" ])
2397+ _LOGGER .error (
2398+ "GraphQL errors in 15min readings: %s" , response ["errors" ]
2399+ )
23272400 return None
23282401
23292402 measurements = (
@@ -2348,7 +2421,9 @@ async def fetch_electricity_15min_readings(
23482421 )
23492422 _LOGGER .debug (
23502423 "Found %d 15-min readings for property %s on %s" ,
2351- len (readings ), property_id , date ,
2424+ len (readings ),
2425+ property_id ,
2426+ date ,
23522427 )
23532428 return readings
23542429 else :
0 commit comments