Use native datetime value in AVM Fritz!Tools sensors (#60233)

This commit is contained in:
Michael 2021-11-23 21:20:51 +01:00 committed by GitHub
parent 9a328eae67
commit 6588879b6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,7 +2,7 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass from dataclasses import dataclass
import datetime from datetime import datetime, timedelta
import logging import logging
from typing import Any, Callable, Literal from typing import Any, Callable, Literal
@ -40,30 +40,29 @@ from .const import DOMAIN, DSL_CONNECTION, UPTIME_DEVIATION
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
def _uptime_calculation(seconds_uptime: float, last_value: str | None) -> str: def _uptime_calculation(seconds_uptime: float, last_value: datetime | None) -> datetime:
"""Calculate uptime with deviation.""" """Calculate uptime with deviation."""
delta_uptime = utcnow() - datetime.timedelta(seconds=seconds_uptime) delta_uptime = utcnow() - timedelta(seconds=seconds_uptime)
if ( if (
not last_value not last_value
or abs( or abs((delta_uptime - last_value).total_seconds()) > UPTIME_DEVIATION
(delta_uptime - datetime.datetime.fromisoformat(last_value)).total_seconds()
)
> UPTIME_DEVIATION
): ):
return delta_uptime.replace(microsecond=0).isoformat() return delta_uptime
return last_value return last_value
def _retrieve_device_uptime_state(status: FritzStatus, last_value: str) -> str: def _retrieve_device_uptime_state(
status: FritzStatus, last_value: datetime
) -> datetime:
"""Return uptime from device.""" """Return uptime from device."""
return _uptime_calculation(status.device_uptime, last_value) return _uptime_calculation(status.device_uptime, last_value)
def _retrieve_connection_uptime_state( def _retrieve_connection_uptime_state(
status: FritzStatus, last_value: str | None status: FritzStatus, last_value: datetime | None
) -> str: ) -> datetime:
"""Return uptime from connection.""" """Return uptime from connection."""
return _uptime_calculation(status.connection_uptime, last_value) return _uptime_calculation(status.connection_uptime, last_value)