Module pygrocy.data_models.battery
Expand source code
from datetime import datetime
from pygrocy.base import DataModel
from pygrocy.grocy_api_client import (
BatteryDetailsResponse,
CurrentBatteryResponse,
GrocyApiClient,
)
class Battery(DataModel):
def __init__(self, response):
self._init_empty()
self._next_estimated_charge_time = response.next_estimated_charge_time
if isinstance(response, CurrentBatteryResponse):
self._init_from_CurrentBatteryResponse(response)
elif isinstance(response, BatteryDetailsResponse):
self._init_from_BatteryDetailsResponse(response)
def _init_from_CurrentBatteryResponse(self, response: CurrentBatteryResponse):
self._id = response.id
self._last_tracked_time = response.last_tracked_time
def _init_from_BatteryDetailsResponse(self, response: BatteryDetailsResponse):
self._charge_cycles_count = response.charge_cycles_count
self._last_charged = response.last_charged
self._last_tracked_time = response.last_charged # For compatibility
self._id = response.battery.id
self._name = response.battery.name
self._description = response.battery.description
self._used_in = response.battery.used_in
self._charge_interval_days = response.battery.charge_interval_days
self._created_timestamp = response.battery.created_timestamp
self._userfields = response.battery.userfields
def _init_empty(self):
self._last_tracked_time = None
self._charge_cycles_count = None
self._last_charged = None
self._name = None
self._description = None
self._used_in = None
self._charge_interval_days = None
self._created_timestamp = None
self._userfields = None
def get_details(self, api_client: GrocyApiClient):
details = api_client.get_battery(self._id)
self._init_from_BatteryDetailsResponse(details)
@property
def id(self) -> int:
return self._id
@property
def name(self) -> str:
return self._name
@property
def description(self) -> str:
return self._description
@property
def used_in(self) -> str:
return self._used_in
@property
def charge_interval_days(self) -> int:
return self._charge_interval_days
@property
def created_timestamp(self) -> datetime:
return self._created_timestamp
@property
def charge_cycles_count(self) -> int:
return self._charge_cycles_count
@property
def userfields(self):
return self._userfields
@property
def last_charged(self) -> datetime:
return self._last_charged
@property
def last_tracked_time(self) -> datetime:
return self._last_tracked_time
@property
def next_estimated_charge_time(self) -> datetime:
return self._next_estimated_charge_time
Classes
class Battery (response)
-
Expand source code
class Battery(DataModel): def __init__(self, response): self._init_empty() self._next_estimated_charge_time = response.next_estimated_charge_time if isinstance(response, CurrentBatteryResponse): self._init_from_CurrentBatteryResponse(response) elif isinstance(response, BatteryDetailsResponse): self._init_from_BatteryDetailsResponse(response) def _init_from_CurrentBatteryResponse(self, response: CurrentBatteryResponse): self._id = response.id self._last_tracked_time = response.last_tracked_time def _init_from_BatteryDetailsResponse(self, response: BatteryDetailsResponse): self._charge_cycles_count = response.charge_cycles_count self._last_charged = response.last_charged self._last_tracked_time = response.last_charged # For compatibility self._id = response.battery.id self._name = response.battery.name self._description = response.battery.description self._used_in = response.battery.used_in self._charge_interval_days = response.battery.charge_interval_days self._created_timestamp = response.battery.created_timestamp self._userfields = response.battery.userfields def _init_empty(self): self._last_tracked_time = None self._charge_cycles_count = None self._last_charged = None self._name = None self._description = None self._used_in = None self._charge_interval_days = None self._created_timestamp = None self._userfields = None def get_details(self, api_client: GrocyApiClient): details = api_client.get_battery(self._id) self._init_from_BatteryDetailsResponse(details) @property def id(self) -> int: return self._id @property def name(self) -> str: return self._name @property def description(self) -> str: return self._description @property def used_in(self) -> str: return self._used_in @property def charge_interval_days(self) -> int: return self._charge_interval_days @property def created_timestamp(self) -> datetime: return self._created_timestamp @property def charge_cycles_count(self) -> int: return self._charge_cycles_count @property def userfields(self): return self._userfields @property def last_charged(self) -> datetime: return self._last_charged @property def last_tracked_time(self) -> datetime: return self._last_tracked_time @property def next_estimated_charge_time(self) -> datetime: return self._next_estimated_charge_time
Ancestors
Instance variables
var charge_cycles_count : int
-
Expand source code
@property def charge_cycles_count(self) -> int: return self._charge_cycles_count
var charge_interval_days : int
-
Expand source code
@property def charge_interval_days(self) -> int: return self._charge_interval_days
var created_timestamp : datetime.datetime
-
Expand source code
@property def created_timestamp(self) -> datetime: return self._created_timestamp
var description : str
-
Expand source code
@property def description(self) -> str: return self._description
var id : int
-
Expand source code
@property def id(self) -> int: return self._id
var last_charged : datetime.datetime
-
Expand source code
@property def last_charged(self) -> datetime: return self._last_charged
var last_tracked_time : datetime.datetime
-
Expand source code
@property def last_tracked_time(self) -> datetime: return self._last_tracked_time
var name : str
-
Expand source code
@property def name(self) -> str: return self._name
var next_estimated_charge_time : datetime.datetime
-
Expand source code
@property def next_estimated_charge_time(self) -> datetime: return self._next_estimated_charge_time
var used_in : str
-
Expand source code
@property def used_in(self) -> str: return self._used_in
var userfields
-
Expand source code
@property def userfields(self): return self._userfields
Methods
def get_details(self, api_client: GrocyApiClient)
-
Expand source code
def get_details(self, api_client: GrocyApiClient): details = api_client.get_battery(self._id) self._init_from_BatteryDetailsResponse(details)