Aubrey
(cyber7)
February 4, 2025, 9:17am
1
Hi everybody.
I am trying to get my calendar events into a card using automatio. So far I have been able to get this into a variable, saved into an “input_text” state, but this is not going well. The reason is that if the calendar entries becomes longer than 255 characters, the state either does not get updated, or just goes into an unknown state. What can I use to circumvent this behaviour?
My current automation looks like this:
alias: ALL Calendars to input_text
description: ""
triggers:
- trigger: time_pattern
minutes: /1
conditions: []
actions:
- target:
entity_id:
- calendar.isah
data:
start_date_time: "{{ today_at('00:00:00') }}"
end_date_time: "{{ today_at('23:59:59') }}"
response_variable: Iagenda
action: calendar.get_events
- target:
entity_id: input_text.calendar_eventsI
data:
value: |
{% for calendar, data in Iagenda.items() %}
- **Isah:**
{% for event in data.events %}
{{ event.start | as_timestamp | timestamp_custom('%H:%M') }} - {{ event.end | as_timestamp | timestamp_custom('%H:%M') }} : {{ event.summary }}
{% endfor %}
{% endfor %}
action: input_text.set_value
mode: single
I hope you can assist, as I am a bit of a newbie.
Cheers
cyber7 (aka Aubrey)
You can’t, not with a text helpr. A state
can’t hold more than 255 characters.
The solution may be to set up a template entity/sensor which stores the information in an attribute
instead, since those can hold up to 65535 characters (and also directly store lists, dict’s etc. without going through JSON).
123
(Taras)
February 4, 2025, 2:34pm
3
According to the following PR, it’s less than that (16 Kb).
home-assistant:dev
← bdraco:attributes_limit
opened 07:28PM - 01 Feb 23 UTC
Followup to #87090 (not done in that issue as this is a breaking change and need… s to go through a dev cycle)
## Proposed change
<!--
Describe the big picture of your changes here to communicate to the
maintainers why we should accept this pull request. If it fixes a bug
or resolves a feature request, be sure to link to that issue in the
additional information section.
-->
The total attributes json encoded payload is now limited to 16384 bytes. Some integrations (file download, torrent, etc) were storing 100000s of bytes of data in the attributes which would get the recorder in a overload failure state or run the system out of disk space. A warning is now generated in the log when the json encoded payload exceeds 16KiB (16384 bytes) and the attributes will no longer be recorded.
16KiB was chosen because the maximum legitimate payload size was 1760 bytes in all of the test data I have
## Type of change
<!--
What type of change does your PR introduce to Home Assistant?
NOTE: Please, check only 1! box!
If your PR requires multiple boxes to be checked, you'll most likely need to
split it into multiple PRs. This makes things easier and faster to code review.
-->
- [ ] Dependency upgrade
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] New integration (thank you!)
- [ ] New feature (which adds functionality to an existing integration)
- [ ] Deprecation (breaking change to happen in the future)
- [x] Breaking change (fix/feature causing existing functionality to break)
- [ ] Code quality improvements to existing code or addition of tests
## Additional information
<!--
Details are important, and help maintainers processing your PR.
Please be sure to fill out additional details, if applicable.
-->
- This PR fixes or closes issue: fixes #
- This PR is related to issue:
- Link to documentation pull request:
## Checklist
<!--
Put an `x` in the boxes that apply. You can also fill these out after
creating the PR. If you're unsure about any of them, don't hesitate to ask.
We're here to help! This is simply a reminder of what we are going to look
for before merging your code.
-->
- [x] The code change is tested and works locally.
- [ ] Local tests pass. **Your PR cannot be merged unless tests pass**
- [ ] There is no commented out code in this PR.
- [ ] I have followed the [development checklist][dev-checklist]
- [ ] The code has been formatted using Black (`black --fast homeassistant tests`)
- [x] Tests have been added to verify that the new code works.
If user exposed functionality or configuration variables are added/changed:
- [ ] Documentation added/updated for [www.home-assistant.io][docs-repository]
If the code communicates with devices, web services, or third-party tools:
- [ ] The [manifest file][manifest-docs] has all fields filled out correctly.
Updated and included derived files by running: `python3 -m script.hassfest`.
- [ ] New or updated dependencies have been added to `requirements_all.txt`.
Updated by running `python3 -m script.gen_requirements_all`.
- [ ] For the updated dependencies - a link to the changelog, or at minimum a diff between library versions is added to the PR description.
- [ ] Untested files have been added to `.coveragerc`.
<!--
This project is very active and we have a high turnover of pull requests.
Unfortunately, the number of incoming pull requests is higher than what our
reviewers can review and merge so there is a long backlog of pull requests
waiting for review. You can help here!
By reviewing another pull request, you will help raise the code quality of
that pull request and the final review will be faster. This way the general
pace of pull request reviews will go up and your wait time will go down.
When picking a pull request to review, try to choose one that hasn't yet
been reviewed.
Thanks for helping out!
-->
To help with the load of incoming pull requests:
- [ ] I have reviewed two other [open pull requests][prs] in this repository.
[prs]: https://github.com/home-assistant/core/pulls?q=is%3Aopen+is%3Apr+-author%3A%40me+-draft%3Atrue+-label%3Awaiting-for-upstream+sort%3Acreated-desc+review%3Anone+-status%3Afailure
<!--
Thank you for contributing <3
Below, some useful links you could explore:
-->
[dev-checklist]: https://developers.home-assistant.io/docs/en/development_checklist.html
[manifest-docs]: https://developers.home-assistant.io/docs/en/creating_integration_manifest.html
[quality-scale]: https://developers.home-assistant.io/docs/en/next/integration_quality_scale_index.html
[docs-repository]: https://github.com/home-assistant/home-assistant.io
123
(Taras)
February 4, 2025, 2:57pm
4
Create a Trigger-based Template Sensor that stores the calendar events in its attributes.
template:
- trigger:
- trigger: time_pattern
minutes: /10
action:
- action: calendar.get_events
data:
start_date_time: "{{ today_at('00:00:00') }}"
end_date_time: "{{ today_at('23:59:59') }}"
target:
entity_id: calendar.isah
response_variable: agenda
sensor:
- name: Isah Agenda
unique_id: isah_agenda_abc123
state: "{{ now().isoformat() }}"
attributes:
events: "{{ agenda['calendar.isah']['events'] }}"
You can use a Markdown card , with an appropriate template, to display the contents of sensor.isah_agenda
’s events
attribute.
The template will look something like this:
{% for event in state_attr('sensor.isah_agenda', 'events') %}
{{ event.start}}: {{ event.summary }}
{% endfor %}
Aubrey
(cyber7)
February 4, 2025, 7:24pm
5
I will try this and report back tomorrow
THIS is the reason I just love HA. The users are not only friendly, but also extremely helpful. Thank you for the assistance, it works 100%!
1 Like