I want to create an event with Caldav.
Like: https://www.home-assistant.io/integrations/calendar.google/#service-googleadd_event
I want to create an event with Caldav.
Like: https://www.home-assistant.io/integrations/calendar.google/#service-googleadd_event
Agreed! This would be cool to add and delete To-Dos aswell.
Although I have never tried it, apparently itβs just a matter of performing an HTTP PUT with content in vCalendar format.
I have already read something like that. But it would be quite good to have this as a service in the Homeassistant.
Unfortunately I am not a good programmer. But could help with testing.
I agree it would be ideal to have a service to do it but you should know that most Feature Requests are never implemented. So if you need something now then HTTP PUT is a possibility.
Then I try to implement HTTP Put via the REST
Hi, die you succeed with creating events?
After the calendar tab appeared in HA, it became very convenient to store long-term information there. Such as the consumption of water and electricity, the distance traveled, and the consumed fuel, triggering of the sensors of the security system, and so on. But unfortunately, adding events to the calendar is only possible for the Google calendar. But I really want this information to be stored in the local calendar (I use the CalDav Synology). On this I join the request.
I have exactly the same requirement.
Unfortunately I have not made it work with REST
I have the same requirement also.
In my old Home Automation system (jeedom) I use a php function to do that, I have some smal progrmaing skills. does sombady know where the dependency are in HA so I can check if they integrate the feature and make a python script to add an event
So currently, adding events to a caldav calendar is not available?
you could use node red if that would help you ?
Anyone knows if/how I can use this βGitHub - python-caldav/caldavβ with appdaemon to create calendar events?
I wanted to achieve the same and created a solution that is working. Although I agree this should be implemented in the CalDav integration. For now one can use the following solution:
rest_command: !include rest_commands.yaml
create_calendar_event:
url: https://zwergencloud.mywire.org/remote.php/dav/calendars/homeassistant/{{ calendar }}/{{ uid }}
headers:
authorization: !secret nextcloud_rest_credentials
method: put
content_type: "text/calendar"
payload: |
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:{{ uid }}
SUMMARY:{{ summary }}
DTSTART{{ whole_day }}:{{ dtstart }}
DTEND{{ whole_day }}:{{ dtend }}
END:VEVENT
END:VCALENDAR
create_calendar_event_duration:
url: https://zwergencloud.mywire.org/remote.php/dav/calendars/homeassistant/{{ calendar }}/{{ uid }}
headers:
authorization: !secret nextcloud_rest_credentials
method: put
content_type: "text/calendar"
payload: |
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:{{ uid }}
SUMMARY:{{ summary }}
DTSTART:{{ dtstart }}
DURATION:{{ duration }}
END:VEVENT
END:VCALENDAR
alias: Create REST Calendar Event
sequence:
- variables:
whole_day: "{{ ';VALUE=DATE' if whole_day else '' }}"
dtstart: |-
{%- if whole_day -%}
{{- startdate | as_timestamp | timestamp_custom("%Y%m%d") -}}
{%- else -%}
{{- startdate | as_timestamp | timestamp_custom("%Y%m%d") + "T" +
startdate | as_timestamp | timestamp_custom("%H%M%S") -}}
{%- endif -%}
dtend: |-
{%- if whole_day -%}
{{- enddate | as_timestamp | timestamp_custom("%Y%m%d") -}}
{%- else -%}
{{- enddate | as_timestamp | timestamp_custom("%Y%m%d") + "T" +
enddate | as_timestamp | timestamp_custom("%H%M%S") -}}
{%- endif -%}
- action: rest_command.create_calendar_event
data:
calendar: "{{ calendar_name }}"
uid: "{{ now() | as_timestamp }}"
summary: "{{ event_name }}"
dtstart: "{{ dtstart }}"
dtend: "{{ dtend }}"
whole_day: "{{ whole_day }}"
response_variable: rest_response
- stop: ""
response_variable: rest_response
fields:
calendar_name:
selector:
text: null
name: calendar_name
required: true
event_name:
selector:
text: null
name: event name
required: true
startdate:
selector:
datetime: {}
name: startdate
required: true
enddate:
selector:
datetime: {}
name: enddate
required: true
whole_day:
selector:
boolean: {}
required: true
default: false
name: whole day
description: ""
icon: mdi:calendar-plus
Now you can use the script to create calendar events using home assistant default data types. Feel free to adjust the script or commands to your likings.
I also added a REST command, which works with a start date and a duration. This is currently not used, as I prefer using start and end dates as input. If you want to use a duration you need to adjust the script accordingly. ISO_8601 notation for timespans must be used for the duration parameter.