Skip to content

Add Calendar Entity for Delivery Windows#58

Merged
dvejsada merged 3 commits into
dvejsada:devfrom
eMeF1:feature/calendar-delivery-windows
Dec 20, 2025
Merged

Add Calendar Entity for Delivery Windows#58
dvejsada merged 3 commits into
dvejsada:devfrom
eMeF1:feature/calendar-delivery-windows

Conversation

@eMeF1
Copy link
Copy Markdown
Contributor

@eMeF1 eMeF1 commented Dec 20, 2025

Adds a calendar entity that displays Rohlik.cz delivery windows as calendar events.

Closes #21

How It Works

Event Lifecycle:

  1. When an order appears in /api/v3/orders/upcoming with delivery slot info, a calendar event is created with the delivery window (start/end times).
  2. When the order moves to /api/v3/orders/delivered, the event is kept and tagged with [Delivered] in the summary.
  3. Events persist across Home Assistant restarts using RestoreEntity to store delivery slot information.
  4. When an order disappears from both endpoints (e.g., falls out of the last 50 delivered orders), the event is removed.

Technical Details:

  • Uses RestoreEntity to persist delivery slot information (start/end times) in entity state attributes
  • Stores delivery slot info when orders are in next_orders (where delivery slots are available)
  • After restart, recreates events for delivered orders using stored delivery slot info (since delivered_orders doesn't include delivery slot data)
  • Events are automatically tagged with [Delivered] when orders transition from upcoming to delivered

Entity Name: "Orders Calendar" (localized in English and Czech)

The calendar entity integrates with Home Assistant's calendar UI and can be used in automations to trigger during delivery windows.


Please let me know if you'd like any changes or enhancements to this implementation.

- Implement calendar platform with RohlikDeliveryCalendar entity
- Create events from orders in next_order (with delivery slots)
- Keep events for orders that move to delivered_orders
- Remove events only when orders disappear from both lists
- Add parse_orders_for_calendar helper function
- Add translations for calendar entity (en/cs)
- Update documentation in readme.md
- Entity ID format: calendar.{device_name}_orders
- Add RohlikDeliveryCalendar entity showing delivery windows as calendar events
- Implement event property for current/next event
- Implement async_get_events() for date range queries
- Add parse_orders_for_calendar() utility function
- Register calendar platform in __init__.py
- Track events by order ID for proper lifecycle management
- Add RestoreEntity support to persist delivery slot information across restarts
- Store delivery slot info when orders are in next_orders
- Recreate events for delivered orders after restart using stored delivery slot info
- Add [Delivered] tag to calendar event summary when order moves to delivered_orders
- Display price in description even when amount is 0
- Update calendar entity name to 'Orders Calendar' in translations
@dvejsada dvejsada merged commit c534785 into dvejsada:dev Dec 20, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants