-
-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat/daily events #32
base: main
Are you sure you want to change the base?
Conversation
closes #31 |
@denysdovhan Можу підтвердити, що із цими змінами календар для моєї групи містить актуальні дані: сьогодні відключень не було, завтра їх не буде, а на післязавтра актуальний календар інформації не має, тому бере за основу прогноз. Як і повинно бути. |
Київ, третя група. 2024-11-25 13:26:14.890 DEBUG (MainThread) [custom_components.yasno_outages.calendar] Getting current event for 2024-11-25 13:26:14.890417+02:00
2024-11-25 13:26:14.890 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 266, in _handle_refresh_interval
await self._async_refresh(log_failures=True, scheduled=True)
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 481, in _async_refresh
self.async_update_listeners()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 176, in async_update_listeners
update_callback()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 561, in _handle_coordinator_update
self.async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/components/calendar/__init__.py", line 541, in async_write_ha_state
super().async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1007, in async_write_ha_state
self._async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1132, in _async_write_ha_state
self.__async_calculate_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1069, in __async_calculate_state
state = self._stringify_state(available)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1013, in _stringify_state
if (state := self.state) is None:
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/calendar/__init__.py", line 524, in state
if (event := self.event) is None:
^^^^^^^^^^
File "/config/custom_components/yasno_outages/calendar.py", line 55, in event
return self.coordinator.get_event_at(now)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/yasno_outages/coordinator.py", line 160, in get_event_at
event = self.api.get_current_event(at)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/yasno_outages/api.py", line 95, in get_current_event
for event in self.gen_events(at, at + datetime.timedelta(days=1)):
File "/config/custom_components/yasno_outages/api.py", line 202, in gen_events
if last["summary"] != "none" and last["end"] > now and s >= start_date:
~~~~^^^^^^^
KeyError: 'end' |
@ALERTua fixed |
Київ 5 Traceback (most recent call last): |
@tarik02 встановлював заміною одного файлу та перезавантаженням. Можливо потрібно щось ще замінити? |
ага, підтягнув, тестую. змінив групу туди-сюди. вилізла помилка із мінімальною тривалістю івента 2024-11-25 14:57:43.809 DEBUG (MainThread) [custom_components.yasno_outages.config_flow] User input: {'group': '3'}
2024-11-25 14:57:43.809 DEBUG (MainThread) [custom_components.yasno_outages.coordinator] Updating group from 1 -> 3
2024-11-25 14:57:43.944 DEBUG (MainThread) [custom_components.yasno_outages.coordinator] Finished fetching yasno_outages data in 0.135 seconds (success: True)
2024-11-25 14:57:43.944 DEBUG (MainThread) [custom_components.yasno_outages.calendar] Getting current event for 2024-11-25 14:57:43.944219+02:00
2024-11-25 14:57:43.944 DEBUG (MainThread) [custom_components.yasno_outages.calendar] Getting current event for 2024-11-25 14:57:43.944449+02:00
2024-11-25 14:57:43.944 DEBUG (MainThread) [custom_components.yasno_outages.calendar] Getting current event for 2024-11-25 14:57:43.944628+02:00
2024-11-25 14:57:43.945 DEBUG (MainThread) [custom_components.yasno_outages.coordinator] Transforming event: POSSIBLE_OUTAGE (2024-11-25 14:57:43.944930+02:00 -> 2024-11-25 00:00:00+02:00)
2024-11-25 14:57:43.945 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/voluptuous/schema_builder.py", line 205, in __call__
return self._compiled([], data)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/voluptuous/validators.py", line 256, in _run
return self._exec(self._compiled, value, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/voluptuous/validators.py", line 386, in _exec
raise e if self.msg is None else AllInvalid(self.msg, path=path)
File "/usr/local/lib/python3.12/site-packages/voluptuous/validators.py", line 384, in _exec
v = func(path, v)
^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/voluptuous/schema_builder.py", line 779, in validate_callable
return schema(data)
^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/calendar/__init__.py", line 148, in validate
raise vol.Invalid(
voluptuous.error.Invalid: Expected minimum event duration of 0:00:00 (2024-11-25 14:57:43.944930+02:00, 2024-11-25 00:00:00+02:00)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/calendar/__init__.py", line 386, in __post_init__
CALENDAR_EVENT_SCHEMA(dataclasses.asdict(self, dict_factory=skip_none))
File "/usr/local/lib/python3.12/site-packages/voluptuous/schema_builder.py", line 209, in __call__
raise er.MultipleInvalid([e])
voluptuous.error.MultipleInvalid: Expected minimum event duration of 0:00:00 (2024-11-25 14:57:43.944930+02:00, 2024-11-25 00:00:00+02:00)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/config/custom_components/yasno_outages/coordinator.py", line 88, in update_config
await self.async_refresh()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 358, in async_refresh
await self._async_refresh(log_failures=True)
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 481, in _async_refresh
self.async_update_listeners()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 176, in async_update_listeners
update_callback()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 561, in _handle_coordinator_update
self.async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1007, in async_write_ha_state
self._async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1132, in _async_write_ha_state
self.__async_calculate_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1069, in __async_calculate_state
state = self._stringify_state(available)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1013, in _stringify_state
if (state := self.state) is None:
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 544, in state
value = self.native_value
^^^^^^^^^^^^^^^^^
File "/config/custom_components/yasno_outages/sensor.py", line 99, in native_value
return self.entity_description.val_func(self.coordinator)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/yasno_outages/sensor.py", line 45, in
val_func=lambda coordinator: coordinator.next_outage,
^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/yasno_outages/coordinator.py", line 127, in next_outage
event = self._get_next_event_of_type(STATE_OFF)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/yasno_outages/coordinator.py", line 111, in _get_next_event_of_type
self.get_events_between(
File "/config/custom_components/yasno_outages/coordinator.py", line 173, in get_events_between
self._get_calendar_event(event, translate=translate) for event in events
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/yasno_outages/coordinator.py", line 198, in _get_calendar_event
return CalendarEvent(
^^^^^^^^^^^^^^
File "", line 11, in __init__
File "/usr/src/homeassistant/homeassistant/components/calendar/__init__.py", line 388, in __post_init__
raise HomeAssistantError(
homeassistant.exceptions.HomeAssistantError: Failed to validate CalendarEvent: Expected minimum event duration of 0:00:00 (2024-11-25 14:57:43.944930+02:00, 2024-11-25 00:00:00+02:00) |
what about now? |
працює. помилок поки немає. дивлюсь в логи, буду репортити. |
@ALERTua в ясно якраз таки є |
хз. ось генерований графік із додатку Київ Цифровий, де реально актуальні дані на наступні два дні, що і є новою фічою. і на ньому немає сірих зон |
Та я знаю це, але ми парсимо сайт ясно і на сайті ясно воно так... + можеш глянути main в ha-hysno-outages - побачиш те ж саме |
Є інакша опція - парсити pdf за посиланням яке ти скинув. |
не маю гадки навіть, як розпарсити таблицю із pdf, але отой int в кінці — таймстемп дати генерації. приймає будь-який. timestamp = int(pendulum.now(tz=pendulum.local_timezone()).timestamp())
https://{city}.digital/storage/dtek/generated/schedule_{group}.pdf?v={timestamp} |
Підкажіть, часом не співпадає графік до кінця тижня з тим що було на минулому тижні? тоді це не прогноз а історичні дані і в принципі вони не актуальні на цей тиждень |
Is it possible to display the next day schedule with updated data(if it exists) from Yasno? |
Але і в 3й групі до 14 відключення |
8a5d442 |
підкажіть чи є спосіб запустити ХА у сейф моді (чи щось таке де не запускаються ніякі адони чи інтеграціі) а то взагалі небожу нічого зробити. веб морда не доступна, хоча можу бачити в сітці ХА пост і файли на ньому |
Через консольку можна ввести |
блін, це через нього!? я вже три години з цим люблюся! сподіваюся, ви встановили ssh аддон.
|
Look like fixed ... |
Не зовсім... Додану інтеграцию неможливо налаштувати (вибрати місто) -- зараз в api немає electricity-outages-schedule, а весь розклад в electricity-outages-schedule (тижневий також) тому воно не може отримати перелік міст Якщо в dailySchedule немає наступних відключень (все вже відбулося) то десь раз в 15 хвилин homeassistant деякий час зжирае весь CPU та не відповидае в WEB і не реагує на event-и (але само відновлюется), в log в цей час присутне |
Схожа проблема, весь десь вбив, вийшов на рішення через це: franc6/ics_calendar#200 (comment) Можливо з календарями трабла. |
@andrewjswan ти в контексті, то у нас таки є проблема чи ні і чи потрібен твій фікс? бо по розмові бачу що проблема в ics_calendar оффтоп: пів дня на фоні пробував зрозуміти чого ha не стартує, треба було просто заглянути на гітхаб)) |
Тільки доповз додому, є одна проблема з вибором груп, спробую зараз фіксанути. |
@tarik02 Сподіваюся пофіксував, принаймні місто вибрало, групу додав, календар із даними отримав. |
Проблема є, |
Не прибрали, а перетасували... |
Тиждень, але не той, який був, це можливі відключення на тиждень, але можуть змінюватися щодня і там тільки можливі відключення.
Так, там |
2024.12.16: Fix for new Yasno schedule
Такс, тепер нормально усе підтягується (правда треба переналаштувати групу). Але тепер графік дає тільки можливі відключення, тому "Наступне відключення" завжди невідоме. А ще, зафіксав проблемку з зависаннями при недоступності. |
А ще графік на yasno не співпадає з Київ цифровий, в мене сьогодні в ньому нема відключень, а ясно каже що є |
Цікаво за такої відповіді АПІ, дасть додати Місто та Групу. Там у нас зав'язка була на тижневий розклад, зараз його немає. Я додав поточне, його теж немає, є тільки он то можливе, але на мою думку ми на нього не спираємося. |
Так це якраз ті можливі показує, толку від них немає. |
Так, коли зробили добовий розклад то тижневий розклад фактично став "можливим", зараз вони це зафікcували в API (та в можливий зробили чорно-білим, викинувши сіри зони). IMHO перелік міст та груп в них треба брати (для налаштування) с усіх доступних розкладів, інакше отримаемо неможливість нових налаштувань в добу без відключень |
@BOPOHOP так, виглядає так воно |
Може хтось зробить свій форк, бо здається у автора вже нема часу займатись проектом :( |
Ну можна спокійно поки що руками оновити, встановити офіційний і забрати 2 файли з цього Pull Request. |
@000al000 треба щоб хтось взяв відповідальність за це. Я б з радістю, але боюсь що це може закінчитись як і з цим проектом |
Поки чекав на фікс, зробив мінімальний скрипт котрий конвертує dailySchedule в івенти в гугл календарях. |
такі календарі вже є, але ical доданий до Google календар буде оновлюватися раз на добу. |
No description provided.