67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
from datetime import datetime, timedelta
|
|
|
|
from ..const.const import _LOGGER
|
|
|
|
|
|
class DaySensorData(object):
|
|
|
|
##########################################################################
|
|
# INIT
|
|
##########################################################################
|
|
def __init__(
|
|
self,
|
|
waste_data_formatted,
|
|
default_label,
|
|
):
|
|
TODAY = datetime.now().strftime("%d-%m-%Y")
|
|
|
|
self.waste_data_formatted = sorted(
|
|
waste_data_formatted, key=lambda d: d["date"]
|
|
)
|
|
self.today_date = datetime.strptime(TODAY, "%d-%m-%Y")
|
|
self.tomorrow_date = datetime.strptime(TODAY, "%d-%m-%Y") + timedelta(days=1)
|
|
self.day_after_tomorrow_date = datetime.strptime(TODAY, "%d-%m-%Y") + timedelta(
|
|
days=2
|
|
)
|
|
self.default_label = default_label
|
|
|
|
self.waste_data_today = self.__gen_day_sensor(self.today_date)
|
|
self.waste_data_tomorrow = self.__gen_day_sensor(self.tomorrow_date)
|
|
self.waste_data_dot = self.__gen_day_sensor(self.day_after_tomorrow_date)
|
|
|
|
self.data = self._gen_day_sensor_data()
|
|
|
|
##########################################################################
|
|
# GENERATE TODAY, TOMORROW, DOT SENSOR(S)
|
|
##########################################################################
|
|
|
|
# Generate sensor data per date
|
|
def __gen_day_sensor(self, date):
|
|
day = []
|
|
try:
|
|
for waste in self.waste_data_formatted:
|
|
item_date = waste["date"]
|
|
if item_date == date:
|
|
item_name = waste["type"]
|
|
day.append(item_name)
|
|
if not day:
|
|
day.append(self.default_label)
|
|
except Exception as err:
|
|
_LOGGER.error(f"Other error occurred __gen_day_sensor: {err}")
|
|
return day
|
|
|
|
# Generate sensor data for today, tomorrow, day after tomorrow
|
|
def _gen_day_sensor_data(self):
|
|
day_sensor = {}
|
|
try:
|
|
day_sensor["today"] = ", ".join(self.waste_data_today)
|
|
day_sensor["tomorrow"] = ", ".join(self.waste_data_tomorrow)
|
|
day_sensor["day_after_tomorrow"] = ", ".join(self.waste_data_dot)
|
|
except Exception as err:
|
|
_LOGGER.error(f"Other error occurred _gen_day_sensor_data: {err}")
|
|
return day_sensor
|
|
|
|
@property
|
|
def day_sensor_data(self):
|
|
return self.data
|