Giter VIP home page Giter VIP logo

node-red-contrib-ical-events's Introduction

Node RED ical events

This Node RED module gets the events from an ical-URL, a caldav-server or from iCloud via kalender-events. kalender-events

Please Note that:

  • v1+ requires Node.js v12+ and recommends Node-RED v2.0.0+

❓ Get Help

For bug reports and feature requests, open issues. 🐛

📝 Documentation


💖 Support my projects

I open-source almost everything I can, and I try to reply to everyone needing help using these projects. Obviously, this takes time. You can integrate and use these projects in your applications for free! You can even change the source code and redistribute (even resell it).

Thank you to all my backers!

People

Become a backer

However, if you get some profit from this or just want to encourage me to continue creating stuff, there are few ways you can do it:

  • Starring and sharing the projects you like 🚀

  • Crypto.com  —  Use my referral link https://crypto.com/app/f2smbah8fm to sign up for Crypto.com and we both get $25 USD :)

  • PayPal   —   You can make one-time donations via PayPal. I'll probably buy a coffee tea. 🍵

  • ko-fi  —  I'll buy a tea coffee. ☕ 😉

Thanks! ❤️

☁️ Installation

First of all install Node-RED

$ sudo npm install -g node-red
# Then open  the user data directory  `~/.node-red`  and install the package
$ cd ~/.node-red
$ npm install node-red-contrib-ical-events

Or search for ical-events in the manage palette menu

Then run

node-red

😋 How to contribute

Have an idea? Found a bug? See how to contribute.

git clone https://github.com/naimo84/node-red-contrib-ical-events.git
cd node-red-contrib-ical-events
npm install
gulp
cd ~/.node-red
npm install /path/to/node-red-contrib-ical-events

🐛 How to debug


📜 Credits

node-red-contrib-ical-events's People

Contributors

almostinteractive avatar andeee avatar jseg avatar naimo84 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

node-red-contrib-ical-events's Issues

Probleme mit unterschiedlichen Icals.

Hallo,

erstmal vielen Dank für den schönen Beitrag zu Node-RED.

Ich habe leider folgendes Problem damit:
Wenn ich verschiedene Quellen konfiguriere, dann wird immer nur die zuletzt angelegte in den Nodes abgefragt, egal welche "Config" ich auswähle.
Das heist msg.payload, von der Upcoming oder Event-Node, enthält immer nur die Daten der zuletzt angelegten Quelle.

Grüße
Thorsten

Recurring event not properly recognized by "ical-upcoming" node

The ical-upcoming node does not properly show the upcoming events of a recurring event.

  1. Import the attached event (see below) to an ical-server.
  2. Configure ical-upcoming to look for the next e.g. four days
  3. You will only see one event instead of the expected next four events

I expect to see all upcoming events in the configured interval of the node:
image

The returned payload only includes a single event but not all events within the configured interval (see above):
[{"date":"02.03.2020 06:45-07:30", "event":"Warmmacher", "summary":"Warmmacher", "topic":"Warmmacher", "calendarName":"Erdgeschoss", "eventStart":"2020-03-02T05:45:00.000Z", "eventEnd":"2020-03-02T06:30:00.000Z", "description":"", "id":"FF925405-5BED-4F01-8125-61CE6A275A8B", "allDay":false, "rule":" ", "location":"", "countdown":{"days":0,"hours":23,"minutes":7,"seconds":13}}]

My guess is that the recurrence rule is not properly interpreted.

node-red-contrib-ical-events version: 0.11.4
node-red version: 1.0.3
nodejs version: 13.7

ICAL text:
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Apple Inc.//Mac OS X 10.15.2//EN CALSCALE:GREGORIAN BEGIN:VTIMEZONE TZID:Europe/Berlin BEGIN:DAYLIGHT TZOFFSETFROM:+0100 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU DTSTART:19810329T020000 TZNAME:MESZ TZOFFSETTO:+0200 END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+0200 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU DTSTART:19961027T030000 TZNAME:MEZ TZOFFSETTO:+0100 END:STANDARD END:VTIMEZONE BEGIN:VEVENT CREATED:20200217T005054Z UID:FF925405-5BED-4F01-8125-61CE6A275A8B RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR DTEND;TZID=Europe/Berlin:20200217T073000 TRANSP:OPAQUE X-APPLE-TRAVEL-ADVISORY-BEHAVIOR:AUTOMATIC SUMMARY:Warmmacher LAST-MODIFIED:20200217T005134Z DTSTAMP:20200217T005138Z DTSTART;TZID=Europe/Berlin:20200217T064500 SEQUENCE:1 END:VEVENT END:VCALENDAR

"Error: WARNING: Date in past. Will never be fired."

Hi,
not sure if anybody else has that problem. nodes stopped working in the last 2 months. updated it and now they kind of work. i only get the error output when the event should trigger, but no other message to trigger a flow.

Raspberry Pi 3 Model B Rev 1.2
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster

[ { "id": "2c370c46.a1c604", "type": "debug", "z": "5c44c3fe.2f0ffc", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "x": 650, "y": 600, "wires": [] }, { "id": "ba6176c1.567118", "type": "ical-events", "z": "5c44c3fe.2f0ffc", "confignode": "8c8d8f24.decec", "timeout": "5", "timeoutUnits": "seconds", "cron": "", "trigger": "always", "filter": "", "name": "", "offset": "-16", "offsetUnits": "minutes", "x": 450, "y": 600, "wires": [ [ "2c370c46.a1c604" ], [ "2c370c46.a1c604" ] ] }, { "id": "44444a2f.305304", "type": "inject", "z": "5c44c3fe.2f0ffc", "name": "", "topic": "", "payload": "", "payloadType": "date", "repeat": "5", "crontab": "", "once": true, "onceDelay": 0.1, "x": 250, "y": 600, "wires": [ [ "ba6176c1.567118" ] ] }, { "id": "8c8d8f24.decec", "type": "ical-config", "z": "", "url": "https://calendar.google.com/calendar/ical/XXXXXXXXXXXXXXXgroup.calendar.google.com/public/basic.ics", "username": "", "password": "", "caldav": "false", "name": "", "language": "de", "replacedates": true, "usecache": true, "calendar": "", "pastWeeks": "0", "futureWeeks": "4" } ]

Improving the Event node

Dear Benjamin,

I am working intensively with the Event node and I can see some improvements making this and easier and more powerful object.

  1. It should not be necessary to start the Event node with injecting a timestamp. It should start itself and should always restart after an event found. That is what a real event sensor does.
  2. It is really necessary to send messages at the start of the event but also at the end; both are relevant state changes. I modeled my idea in Node-RED, please see below.
  3. It would be very powerful indeed if the Event node could search in the summary based on a Regex expression for certain text. You could model trigger behaviours as I copied b below from the homebridge-daily-sensors module (that I use currently).
    ==============
  • trigger : Notwithstanding the default behaviour the following settings are allowed for this property:
  • match : The Trigger Event is triggered when at least one calendar event was found for the current time and the summary matches the specified regexp . The activation state is set to the value specified in the active-property.
  • no-match : The Trigger Event is triggered when no valid calendar event was found. The activation state is set to the inverse value specified in the active-property.
  • always : The Trigger Event is allways triggered. If a valid calendar event was found, the activation state is set to the value specified in the active-property. Otherwise it is set to the inverse.
    ===============
    Please find below the modelling in Node-RED:
    flows.json.txt

kind regards, andré hartman, belgium

Please add example flows

Is your feature request related to a problem? Please describe.
I'm new in node-red. I'm trying and not able to get any usefull.

Describe the solution you'd like
Please describe the text fields better. How do a filter expression work (regex?)
Please add example flows for each node and different possibilities.
eg.:
calendar entry with title, description and category setup as a repeated event and output to the debug node.
Show a Flow which do:
Set a trigger if a calendar item start and set a trigger if the calendar item enddate is reached.

Describe alternatives you've considered
probing around and using :memo : Documentation

Value Termin in X Tagen

Danke erstmal für die klasse Node ! Endlich kann ich Kalender einfach in Node Red einbinden 👍

Was ich noch sehr nützlich fände, wäre ein zusätzliches Value für jeden Termin das angibt in wieviel Tagen der Termin stattfindet.

z.B. bei einem Abfallkalender:

Restmüll in 3 Tagen

Gruß Christoph

Repeating Events are Ignored

When using the upcoming node, only single events are shown. Repeating events that occur in within the chosen time frame are not shown.

Event trigger or event sensor on change output do not work

Event trigger or event sensor on change output do not work.

Event sensor does work well on tick output which indicates that the link with google calendar is properly set.

node-red-contrib-ical-events version 0.12.1

  • node-red version V1.0.4
  • nodejs version v12.13.0

How do I debug this?

I am using radicale. When using an upcoming node followed by a debug node, the only debug output I get is

"CalDAV -> get calendars went wrong."

On the server side, I see two requests in the access log:

"PROPFIND /cal/foobar/ HTTP/1.1" 207 266 "-" "node-XMLHttpRequest"
"PROPFIND /cal/nodered/ HTTP/1.1" 403 43 "-" "node-XMLHttpRequest"

where my calendar URL is "https://domain.com/cal/foobar/"

How can I get more info on what is wrong? All I can deduce is that nodered managed to get past basic auth, then fails for some reason.

Synology CalDav Server

Hey there,

first of all thanks for that great plugin, even if it doesn't yet work for me :-)

When I try to connect to my local CalDav Server on my Synology, I just end up getting the error:
"CalDAV -> get calendars went wrong. Error: Bad status: 0"

Normaly, e.g. from OpenHAB I was able to get the calendar by using an url like this:
https://<SynologyIP>:<Port>/web/Calendar/MyCalendar/

I don't know if it should work, but I tried a lot of combinations. What is the parameter "Name" in the ical-config node exactly for? I tried using https://<SynologyIP>:<Port>/web/Calendar/ and Name MyCalendar but I always ended up getting the same error.

I did set Username and Password as well as Type: CalDav.

Any ideas? What does the error exactly state?

Best regards,
Marcel

Could Output message include name of calendar?

Is your feature request related to a problem? Please describe.
I'm trying to poll multiple calendars to create a printable weekly family diary.

My flow currently has to poll in parallel to avoid the issue caused by #53
but the object from each calendar event doesn't appear to include the name of the calendar, so I need to add that to the event object before concatenating the outputs.

Describe the solution you'd like
It would be great if the object for each calendar event included the name of the calendar it comes from

Describe alternatives you've considered
Currently I iterate through the output array to add the data into the event object, but it would be great if it was already available!

Additional context
n/a

All Cals in one configNode

First: Great Work: Thanks so much!
Works like charme with iCloud using the solution from the openhab-forum.

Ist there a way to check all cals within one config Node?
If i wanna see my next Event: Ich have to check the all and compare the date stamps.
Possible, but not that convenient. U know …

Cheers - Michael

iCal - No events in list

Hi,

I was trying your latest node and created my Outlook ICS link. For testing I added this link to my Google-Calendar and it is showing all events properly.
image

Unfortunately, when reading the events by your node it is not detecting any events. I checked on the day only as well upto 10 days in future/past.

image

{"today":0,"tomorrow":0,"total":0,"htmlTable":"<span>","payload":[],"_msgid":"a60425e1.7fab78"}

Thanks for any advise

**node-red-contrib-ical-events

  • node-red version 1.0.6

caldav not working

Hi
I'm using David from Tobit Software, there it is possible tu access my calendar via caldav.
I tried the connection with Thunderbird and it is working fine there.
When I try to connect with node-red-contrib-ical-events, I'll get an error "CalDAV -> get calendars went wrong." in the payload message.
Any sugesstions why it is not working?
If you need login data, I can send you some for testing.

Private Google ical calender with shared url and recurring all day events no entries

Describe the bug
I have an private google calender and added this with the private share ical url to the ical node. The calender only includes recurring all day events. The node just gets an empty array

To Reproduce
Steps to reproduce the behavior:

  1. input: private share ical adress of google calender with recurring all day events
  2. config private ical share url as calendar url
  3. ouput nothing

Expected behavior
I want to get the events in the next days. I've also increased the preview period.

**node-red-contrib-ical-events

  • Version 0.13.0
  • node-red version 1.0.3
  • nodejs version 10.19.0

Trigger node issue with Outlook.com iCal?

Hello,

thank you for a great utility!

I can use the "Upcoming" node fine, works both with and without filter.

I get no output from the Trigger node using the same calendar when the event starts/ ends- either with or without a filter, or trigger set to "always" or "match"

In the enclosed screenshot you can see the output of the "upcoming" node, but when the time passes I see no output on the debug nodes (which are set for whole msg).

image

I'm wondering if I'm being silly or something unique in Outlook.com output is causing failure?

**node-red-contrib-ical-events

  • Version 0.15.0
  • node-red version v1.05
  • nodejs version v10.20.0

Thanks!

Empty Summary

If I do not enter a subject in our company calendar, it will not be displayed as an event in the node-red.
In the file .ics the VEVENT without subject the SUMMARY: is not listed, nevertheless this should appear as event in Node-Red.

----- Entry with subject
BEGIN:VEVENT
SUMMARY:Test
DTSTART;TZID="Mitteleuropäische Zeit":20200124T150000
X-GWITEM-TYPE:APPOINTMENT
DTSTAMP:20200124T131613Z
LAST-MODIFIED:20200124T131613Z
TRANSP:OPAQUE
X-GWSHOW-AS:OUT-OF-OFFICE
X-MICROSOFT-CDO-INTENDEDSTATUS:OOF
STATUS:CONFIRMED
X-GWBOX-TYPE:RECEIVED
........
DTEND;TZID="Mitteleuropäische Zeit":20200124T160000
SEQUENCE:5

PRIORITY:5
CLASS:PUBLIC
X-GWCLASS:NORMAL
END:VEVENT

----- Entry without subject
BEGIN:VEVENT
DTSTART;TZID="Mitteleuropäische Zeit":20200124T150000
X-GWITEM-TYPE:APPOINTMENT
DTSTAMP:20200124T132552Z
LAST-MODIFIED:20200124T132552Z
TRANSP:OPAQUE
X-GWSHOW-AS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
STATUS:CONFIRMED
X-GWBOX-TYPE:RECEIVED
......
DTEND;TZID="Mitteleuropäische Zeit":20200124T160000
SEQUENCE:4

PRIORITY:5
CLASS:PUBLIC
X-GWCLASS:NORMAL
END:VEVENT

Upcoming events: deleted recurring events still in output msg

Describe the bug
When using Google Calendar (and maybe other calendar systems, too) the Upcoming Events node does not correctly parse recurring events when single occurances of the event are deleted. Eg I have an event that repeats weekly every monday, wednesday and friday. Even when I delete a single instance eg on a specific monday, this event is still part of the output form the node although it is no longer displayed on Google Calendar or any other calendar program that uses the ical-feed from this Google Calendar.

To Reproduce
Steps to reproduce the behavior:

  1. Create event in Google Calendar that repeats weekly every monday, wednesday and friday
  2. delete one or more of the following event instances (not all events), eg next monday and next wednesday
  3. pull the upcoming events by defining a timeframe that includes deleted instances (ie next monday and next wednesday)
  4. inspect msg output: it contains the event on next monday and wednesday although they have been deleted (which is not correct)
  5. delete all of the test-events, pull again as in step 2 and inspect msg output: ther recurring event is no longer in the output (which is correct and desired)

Expected behavior
Deleted event instances from a recurring event should not be part of the msg object returned by the node, as these instances do not exist on the calendar.

**node-red-contrib-ical-events

  • Version 0.10.8
  • node-red 1.0.3
  • nodejs 10.18.0

modified event in repeating event series is not handled correctly

Describe the bug
source: google calendar
node: ical-upcoming
In a repeating event series - if a single event is changed (location, time, etc) - the output is showing the original one from the event series

To Reproduce
Steps to reproduce the behavior:
1. calendar:
1.1
create a daily repeating event - every day at 2PM / Location: LOCATION0123
image
repeating event is created:
image

1.2
change 1 event in the series (subject only - start time / end time is the same)
image

1.3 change event in the series - time, location, subject
image

  1. iCAL/EVENTS input
[
	{
		"DTSTART": "20200406T130000",
		"DTEND": "20200406T210000",
		"DTSTAMP": "20200404T191706Z",
		"UID": "[email protected]",
		"RECURRENCE-ID": "20200406T140000",
		"CREATED": "20200404T191245Z",
		"DESCRIPTION": "",
		"LAST-MODIFIED": "20200404T191522Z",
		"LOCATION": "CHAGED_DIFFERENT_TIME",
		"SEQUENCE": "1",
		"STATUS": "CONFIRMED",
		"SUMMARY": "99",
		"TRANSP": "OPAQUE"
	},
	{
		"DTSTART": "20200405T140000",
		"DTEND": "20200405T220000",
		"DTSTAMP": "20200404T191706Z",
		"UID": "[email protected]",
		"RECURRENCE-ID": "20200405T140000",
		"CREATED": "20200404T191245Z",
		"DESCRIPTION": "",
		"LAST-MODIFIED": "20200404T191501Z",
		"LOCATION": "CHANGED_SAME_TIME",
		"SEQUENCE": "0",
		"STATUS": "CONFIRMED",
		"SUMMARY": "11",
		"TRANSP": "OPAQUE"
	},
	{
		"DTSTART": "20200330T140000",
		"DTEND": "20200330T220000",
		"RRULE": "FREQ=DAILY;UNTIL=20200601T215959Z",
		"EXDATE": "20200407T140000",
		"DTSTAMP": "20200404T191706Z",
		"UID": "[email protected]",
		"CREATED": "20200404T191245Z",
		"DESCRIPTION": "",
		"LAST-MODIFIED": "20200404T191245Z",
		"LOCATION": "LOCATION0123",
		"SEQUENCE": "0",
		"STATUS": "CONFIRMED",
		"SUMMARY": "99",
		"TRANSP": "OPAQUE"
	}
]
  1. ouput
[
	{
		"date": "04.04.2020 22:00",
		"event": "99",
		"summary": "99",
		"topic": "99",
		"eventStart": "2020-04-04T12:00:00.000Z",
		"eventEnd": "2020-04-04T20:00:00.000Z",
		"description": "",
		"id": "[email protected]",
		"allDay": false,
		"rule": " rrule ",
		"location": "LOCATION0123",
		"countdown": {
			"days": -1,
			"hours": -8,
			"minutes": -31,
			"seconds": -4
		}
	},
	{
		"date": "05.04.2020 14:00-22:00",
		"event": "99",
		"summary": "99",
		"topic": "99",
		"eventStart": "2020-04-05T12:00:00.000Z",
		"eventEnd": "2020-04-05T20:00:00.000Z",
		"description": "",
		"id": "[email protected]",
		"allDay": false,
		"rule": " rrule ",
		"location": "LOCATION0123",
		"countdown": {
			"days": 0,
			"hours": 16,
			"minutes": 29,
			"seconds": 56
		}
	},
	{
		"date": "06.04.2020 14:00-22:00",
		"event": "99",
		"summary": "99",
		"topic": "99",
		"eventStart": "2020-04-06T12:00:00.000Z",
		"eventEnd": "2020-04-06T20:00:00.000Z",
		"description": "",
		"id": "[email protected]",
		"allDay": false,
		"rule": " rrule ",
		"location": "LOCATION0123",
		"countdown": {
			"days": 1,
			"hours": 16,
			"minutes": 29,
			"seconds": 56
		}
	},
	{
		"date": "08.04.2020 14:00-22:00",
		"event": "99",
		"summary": "99",
		"topic": "99",
		"eventStart": "2020-04-08T12:00:00.000Z",
		"eventEnd": "2020-04-08T20:00:00.000Z",
		"description": "",
		"id": "[email protected]",
		"allDay": false,
		"rule": " rrule ",
		"location": "LOCATION0123",
		"countdown": {
			"days": 3,
			"hours": 16,
			"minutes": 29,
			"seconds": 56
		}
	},
	{
		"date": "09.04.2020 14:00-22:00",
		"event": "99",
		"summary": "99",
		"topic": "99",
		"eventStart": "2020-04-09T12:00:00.000Z",
		"eventEnd": "2020-04-09T20:00:00.000Z",
		"description": "",
		"id": "[email protected]",
		"allDay": false,
		"rule": " rrule ",
		"location": "LOCATION0123",
		"countdown": {
			"days": 4,
			"hours": 16,
			"minutes": 29,
			"seconds": 56
		}
	},
	{
		"date": "10.04.2020 14:00-22:00",
		"event": "99",
		"summary": "99",
		"topic": "99",
		"eventStart": "2020-04-10T12:00:00.000Z",
		"eventEnd": "2020-04-10T20:00:00.000Z",
		"description": "",
		"id": "[email protected]",
		"allDay": false,
		"rule": " rrule ",
		"location": "LOCATION0123",
		"countdown": {
			"days": 5,
			"hours": 16,
			"minutes": 29,
			"seconds": 56
		}
	},
	{
		"date": "11.04.2020 14:00-22:00",
		"event": "99",
		"summary": "99",
		"topic": "99",
		"eventStart": "2020-04-11T12:00:00.000Z",
		"eventEnd": "2020-04-11T20:00:00.000Z",
		"description": "",
		"id": "[email protected]",
		"allDay": false,
		"rule": " rrule ",
		"location": "LOCATION0123",
		"countdown": {
			"days": 6,
			"hours": 16,
			"minutes": 29,
			"seconds": 56
		}
	}
]
  1. See error
    the output has only the original event series - repeated event, but doesnt have any of the 2 changed events..

Expected behavior

  • changed events has the same UID as the original event.
  • the changed event has a RECURRENCE-ID attribute - what is referring to the event in the series was changed
  • the output should replace the events in the series with the changed events (what has the same UID) - for the given recurrance - based on the RECURRENCE-ID

**node-red-contrib-ical-events

  • Version: 0.14.1
  • node-red version: v1.0.3
  • nodejs version: v12.16.0

node doesn't pass on msg properties from incoming message

Describe the bug
In an incoming message, the message properties are not passed through by the ical nodes.

To Reproduce
Steps to reproduce the behavior:

  1. set msg.topic on incoming message
  2. link ical Upcoming node to iCloud secure server
  3. configure debug to display msg.topic
  4. when flow is run, (and calendar output is sent onwards by the iCal node) debug output is undefined

Expected behavior
Expect that message properties are passed through the ical nodes. (eg msg.req required for http in - out flows)
and msg.topic in above example

Screenshots
n/a

**node-red-contrib-ical-events

  • Version 0.15.3
  • node-red v1.0.3
  • nodejs v10.21.0

Add missing configuration options for caldav to Config Node UI

Is your feature request related to a problem? Please describe.
In your code (caldav.ts) is see several config options related to caldav which are not visible in the config node - e.g. config.server (unused), config.calendar (unused - but would be a great addition to restrict to the calendar to use), config.pastWeeks, config.futureWeeks

Describe the solution you'd like
I'd would be great if those config options would be configurable using the config node.

Describe alternatives you've considered
I could provide a pull request for the configuration options.

Report calendar name in msg.payload

I do have multiple calendars within one account. I would like to use the different calendars for e.g. setting temperatures in different rooms with the rooms being associated to the different calendars.
As far as I can see the calendar name is somewhere given in the data structures but discarded on the way back to the payload.
Would it make sense to return the calendar name associated for each upcoming event?

Make iCal configuration dynamic

Is your feature request related to a problem? Please describe.
I use your node to import several external calendars.
It would be awesome to make the ical configuration dynamic (e.g. like the dynamic config option of the http request node (pass msg.url / msg.method, etc.))
So you can pass an array / query database or anything like that to pass the config dynamically to your ical node for iterating and importing multiple icals.

Describe the solution you'd like
Just pass the url / type of the calendar to import as attribute of the msg-object.
A good working example is dynamic config option of http request node.

Additional context
Thanks for the awesome work!
I really like your node and using it as default for ical imports.

Connect to iCloud calendar securely

I know of 2 methods to retire an iCloud calendar:

  1. Share the calendar publicly (read-only) and use the URL given, no user name or pasword needed.
  2. Compose the 'real' internal URL with some CURL commands and that. User name is your Apple ID and password is an app-specific password you can generate in appleid.apple.com.

I have both approaches working in other software.
The 'homebridge-calendar' plugin uses method 1; 'homebridge-daily-sensors" uses method 2.

For the node-red modules method 1 works but method 2 gives an empty array.

Problem with method 1 is that data are not secure, anybody finding or guessing the URL can look at the events.
Is it possible to use method 2 or another secure access method and any help on that is appreciated.

Regards, ahartman, belgium

Repeating events

Using the upcoming node, repeating events that occur in within the chosen time frame are not shown. I see the same issue here: #5 (comment), but I use iCloud not ics file.
0.10.0 version

Thanks

Public icloud calender no events

Describe the bug
When I ad a public link from an icloud calendar no events are found

To Reproduce
Steps to reproduce the behavior:

  1. Add a public link from an icloud calendar: webcal://p57-caldav.icloud.com/published/....
  2. config: I tried both caldav which produces - "get calendars went wrong" and iCal
  3. ouput. 0 events and an empty html table even though there are events in the calendar

Expected behavior
A number of appointments

**node-red-contrib-ical-events

  • Version 0.12.1
  • node-red version 1.03
  • nodejs version 12.16.1

Timezone mixup when pulling events

.ics file shows:

BEGIN:VEVENT
UID:***SECRETDATA***
SUMMARY:Discussion
DTSTART;TZID=Pacific Standard Time:20200616T110000
DTEND;TZID=Pacific Standard Time:20200616T113000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20200615T222525Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION:***SECRETDATA***
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT

node shows same event as:

{	"date":"16.06.2020 11:00-11:30",
	"event":"Discussion",
	"summary":"Discussion",
	"topic":"Discussion",
	"eventStart":"2020-06-16T09:00:00.000Z",
	"eventEnd":"2020-06-16T09:30:00.000Z",
	"id":"***SECRETDATA***",
	"allDay":false,
	"rule":" ",
	"location":"***SECRETDATA***",
	"countdown":{
		"days":0,
		"hours":10,
		"minutes":42,
		"seconds":27
	}
}

To Reproduce
Steps to reproduce the behavior:
Create .ics file and let node fetch it

Expected behavior
I would expect the node to convert all timestamps to local time. Local timezone is set to Europe/Berlin (currently UTC+02).

**node-red-contrib-ical-events

  • Version 0.15.1
  • node-red version v1.0.5
  • nodejs version v8.11.4

Calendar Event fails to start after deploy

Hello,

Thanks so much for making this Node! Sometimes after deploying I see this message in the debug window coming from the Event node:

"Error stopping node: TypeError: _this.context(...).get(...).forEach is not a function"

It doesn't happen every time, but seems to happen if I deploy frequently.

Warm regards,

John

Event sensor end message for "false" contain only false

Describe the bug
If an Event start a message with the Calendar event and msg.payload.on = true get send. But if the Event do end only a msg.payload.on = false get send without any additional information. So I' don't know which event do end.

To Reproduce
Steps to reproduce the behavior:

  1. calendar item
  2. weblink to *.ics
  3. event sensor
  4. payload.on =false

Expected behavior
the same calendar Item that contain on= false

**node-red-contrib-ical-events

  • Version 0.12.1
  • node-red version 1.0.3
  • nodejs version 12

Google calendar config

Describe the bug
I'm trying to configure the node to fetch google calendar but it is not clear what to fill in where

To Reproduce
Steps to reproduce the behavior:
I'm using the caldav option

Do I need the google user name?
The ClientID?
Cleint secret?

Note this is not a bug, I just need help ;)

Feature Request: Search Event Node

Hallo, erstmal tolle Arbeit,

Ich habe eine Frage, ist es möglich ein Event output zu bebommen wenn ein event in der zukunft auftritt?

Bsp:
Event:"Hausmüll" ist in 1 Tag
also in etwa so:

today: 17.11.2019

object
eventdate: "18.11.2019 08:49"
event: "Hausmüll"
inDays: "1"
...

oder im Sensor Node in etwa so:
-17 11 2019_13_43_19

Der Hintergrund ist , das ich mir gerne spezifische Kalender Ereignisse im voraus anzeigen lassen möchte
wäre toll wenn das so umgesetzt werden könnte.

Gruß
Matten Matten

Sensor : Only one event but two messages

Hello,

I try to use the sensor node. I don't know if I do something wrong but here is my configuration :

  • I use sensor node with Trigger Always
  • debug node on every ticks

Case 1 : no event in the calendar -> only one message from debug node {"on":false}
Case 2 : one event is configured -> two messages from debug node
1 : {"summary":"TestEvent","topic":"TestEvent","id":"0bfd5fe3-74b6-4688-b742-b6165fe1efb91587196800000","location":"","eventStart":"2020-04-18T08:00:00.000Z","eventEnd":"2020-04-18T09:15:00.000Z","description":"TestEvent","on":true,"calendarName":null,"countdown":{"days":-1,"hours":-2,"minutes":-15,"seconds":-31}}
2 : {"on":false}

I don't understand why there is two messages and not only the message with the event.

Thank you in advance and thank you for your work,

Steve

Cache calendar data

Is your feature request related to a problem? Please describe.
I have some cases where the internet connection is not stable.

Describe the solution you'd like
Please allow to activate caching. Download the Calendardata and use them.

MockUp
grafik

Can this be used with CalDav?

Just wondering if this could be used with a CalDav server? I tried it but the 'Calender Events' came back with a "401: Unauthorized". The calendar does have security set on it (userid/password)

sensor node does not work with recurring events

Hi,
I'm unable to use the sensor node because in my calendar (google calendar ics) I use recurring events but the result of the node is always off.

I use the the node to start my thermostat (I put the temperature in the summary) but it only works on the first occurrence.

Thank you

Event End node

Hi Benjamin,

I'd like to suggest adding a node that is functionally the same as the Event node but fires at the end time of the calendar event. This would make for very simple implementation of On/Off or startup/shutdown use cases and could help handle cases where a user edits a calendar during an event interval without needing to parse the upcoming events node.

I'm not a javascript or node-red expert, but if you like I could make a pull request with this implemented for you to review.

Warm regards,

John

Upcoming events checks every hour even when using input node

First off, thanks for making this node! It's the only ical supporting node out there.

I am triggering the upcoming events node from another node. Something like this:

BigTimer -> some other nodes -> link out -> link in -> upcomingEvents -> output parsing -> TSS

However, the upcoming events still triggers every hour (which I assume is the default cron). I'd rather not use cron and would rather see it only fire when it gets input from another node.

Please advise if I am doing something wrong.

Thanks

Google Calendar - Error Circular

Describe the bug
I am using the trigger event node. The source is google calendar and I have from time to time an "error circular" when the Cron runs. Expect for that the trigger seems to work.

Is that normal?

**node-red-contrib-ical-events

  • Version [e.g. 0.1.22]
  • node-red version v1.0.2
  • nodejs version

Unneeded Blank behind date when using "Replace Dates with name"

Describe the bug
A clear and concise description of what the bug is.
The output "date" contains an unneeded blank at the end of the string when using "Replace Dates with name"

To Reproduce
Steps to reproduce the behavior:

  1. input: CalDav events
  2. config: Checked "Replace Dates with name"
  3. ouput: msg.payload[X].date contains tailing blank
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.
The output should not contain a tailing blank

Screenshots
If applicable, add screenshots to help explain your problem.
Anmerkung 2020-03-01 224241

**node-red-contrib-ical-events

  • Version 0.11.4
  • node-red version 1.0.4
  • nodejs version 10.19.0

Additional context
Add any other context about the problem here.

SyntaxError: Unexpected token { after install

I installed [email protected] and it seemed fine, but as soon as I started node-red again the following, showed up in the Log:

[warn] [node-red-contrib-ical-events/ical-events] SyntaxError: Unexpected token {
[warn] [node-red-contrib-ical-events/ical-sensor] SyntaxError: Unexpected token {
[warn] [node-red-contrib-ical-events/ical-upcoming] SyntaxError: Unexpected token {

in this case I'm using:
Node-RED version: v0.18.4
Node.js version: v4.2.6
Linux 4.4.0-122-generic x64 LE

Nodes are not working. Deploying them, ended in Flows stopped due to missing node types.
Any ideas?

this.metric is not a function

Describe the bug
An uncaught exception occurs, when trying to use the ical-sensor

To Reproduce
Steps to reproduce the behavior:

  1. Ical sensor, checking every minute to match a string
  2. google calendar ics
  3. node red restarts
  4. See error
13 Mar 13:59:00 - [red] Uncaught Exception:
13 Mar 13:59:00 - TypeError: this.metric is not a function
    at Node.send (/opt/node_modules/@node-red/runtime/lib/nodes/Node.js:427:10)
    at cronJobStart (/config/node-red/node_modules/node-red-contrib-ical-events/dist/ical-events.js:176:9)
    at CronJob.fireOnTick (/config/node-red/node_modules/cron/lib/cron.js:600:23)
    at Timeout.callbackWrapper [as _onTimeout] (/config/node-red/node_modules/cron/lib/cron.js:667:10)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7)

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

**node-red-contrib-ical-events

  • Version 0.12.1
  • node-red version v1.0.4
  • nodejs version

Additional context

edit: it looks like this error comes when an event starts. After the initial error and node red restart, the error doesnt show up anymore

TypeError: Cannot convert undefined or null to object

Getting this error on the start of an event in the trigger node

To Reproduce
Steps to reproduce the behavior:

  1. trigger node
  2. ical url of calendar with event starting at ie. 09.27
  3. at start time:
    16 Jul 09:27:00 - [red] Uncaught Exception:
    16 Jul 09:27:00 - TypeError: Cannot convert undefined or null to object
    at Function.assign ()
    at cronJobEnd (/home/geert/.node-red/node_modules/node-red-contrib-ical-events/dist/ical-events.js:313:33)
    at CronJob.fireOnTick (/home/geert/.node-red/node_modules/cron/lib/cron.js:600:23)
    at Timeout.callbackWrapper [as _onTimeout] (/home/geert/.node-red/node_modules/cron/lib/cron.js:667:10)
    at listOnTimeout (internal/timers.js:551:17)
    at processTimers (internal/timers.js:494:7)

node-red-contrib-ical-events

  • 0.16.0
  • node-red version 1.1.2
  • nodejs version 14.5.0

[Upcoming Node] Missing documentation and strange behaviour

Hi,

I'm currently struggling with this addon. I have one calender that contains entries on some days, valid for only one minute, e.g. 30.11.2019 00:00 - 30.11.2019 00:00.

I'm using the upcoming node to trigger telegram notifications with the summary. To test this, I created a test calendar with only one entry.

Here are the issues that I'm facing:

  • The upcoming node contains two options: "Check every xx". For this option, there is no documentation in the info windows. In addition to that, there is a cron feature. That one is documented, but it is not clear how these options are interacting with each other. Also, there are comments here on github stating that having cron not filled will disable it, but I saw it running once an hour.

  • When creating an upcoming node with an calender with only one entry and adding a debug node, I can see the payload being delivered twice. The entries look exactly the same to me

29/11/2019, 11:45:55node: caldav debug msg.payload : array[1] array[1] 0: object date: "30.11.2019 00:00-00:00" summary: "Leerung: Restabfall" topic: "Leerung: Restabfall" event: "Leerung: Restabfall" eventStart: "2019-11-29T23:00:00.000Z" eventEnd: "2019-11-30T23:00:00.000Z" description: "" id: "OJRFCLOJM9PI1NIPY5C1YQ" allDay: true rule: " " location: ""

29/11/2019, 11:45:55node: caldav debug msg.payload : array[1] array[1] 0: object date: "30.11.2019 00:00-00:00" summary: "Leerung: Restabfall" topic: "Leerung: Restabfall" event: "Leerung: Restabfall" eventStart: "2019-11-29T23:00:00.000Z" eventEnd: "2019-11-30T23:00:00.000Z" description: "" id: "OJRFCLOJM9PI1NIPY5C1YQ" allDay: true rule: " " location: ""

Since I only need the payload[0].summary, I'm using this in telegram but as you can see, the telegram message would actually be delivered twice. Any idea what I'm doing wrong here?

Thanks in advance!

Upcoming Node only showing last recurring event

Describe the bug
When using the Upcoming-event node with recurring events, only the last event is output (e.g. weekly events, configuration node "future weeks 4" only event in 4 weeks shown - not next week)

To Reproduce
Steps to reproduce the behavior:

  1. CalDav with recurring events
  2. set up configuration node with time frame to multiple time difference of event
  3. only most future event is given

Expected behavior
Next upcoming event should be output.

Screenshots
If applicable, add screenshots to help explain your problem.

**node-red-contrib-ical-events

  • Version 0.13.0
  • node-red version 1.0.4
  • nodejs version 10.19.0

Additional context
Add any other context about the problem here.

recurring appointments

Hello,

when I read an recurring appointment via CalDav (Sensor Node), the returning payload is on: false. When I remove the "recurring option" inside the appointment the event ist read correct.

Is there an way to get recurring appointments?

thx in advance

Question: Where to set up Date/time of "check every"

Hi,

it's perfect to set up the next check on a time base.

It currently looks like this on a daily base:
grafik

But how can I define, that it doesn't check on 22:00 but at 00:30?
Because I would like to do an update at the new day after do some adjustments with other batches in the time between 0:00 and 0:30.

I didn't find any set up for this.

(I also looking for the same anweser for the node ical-sensor.)

BR,
Senbei

Fullday events from past have wrong date

Describe the bug
A fullday event retrieved from Google Calendar in the past has a wrong date in the field payload[n].date

To Reproduce
Steps to reproduce the behavior:

  1. create a fullday event in the past eg two days ago
  2. retrieve it with "past view: 1 days"
  3. payload[n].date is incorrectly set to todays date

Expected behavior
payload[n].date euqals the date we had 2 days ago and is the same as payload[n].eventStart just in a different formating. payload[n].eventStart and payload[n].eventEnd are correct though.

node-red-contrib-ical-events

  • Version 0.11.2
  • node-red 1.0.3
  • nodejs 10.18.0

Upcoming events - past view

I cannot get past view to work. I would expect for a value of past view - '1 day' to see the vets of today that have expired. Whatever value I put in the field, I only see upcoming events.
Using version 0.10.2.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.