Really love this plugin, thanks for the hard work!
My local township offers an .ics file with all important garbage collection dates, I imported these in my personal calendar and set up some rules to notify me early in the morning to take out the trash before heading to work
-
New plugin pimatic-calendar
-
just a short information - sweetpi is actually on longer voyage until mid of february, that’s why some question will remain open. hope for your understanding.
meanwhile try and tinker a bitpimatic v0.9 has been released!
Support Pimatic and get some free stickers
Like us on Facebookmake it so !
-
on owncloud you can export your ICS file by this URL:
http://USER:PASSWORD@OCDOMAIN.OC/remote.php/caldav/calendars/USER/CALENDERNAME/?exportmaybe this helps… i did not test with pimatic calendar plugin
-
Hi there,
I get an error when trying to include this calendar:https://calendar.google.com/calendar/ical/de.german%23holiday%40group.v.calendar.google.com/public/basic.ics
this is in the log
21:51:57.386 [pimatic-calendar] error: Error fetching calendars: socket hang up 21:51:57.391 [pimatic-calendar] debug: Error: socket hang up 21:51:57.391 [pimatic-calendar] debug:> at SecurePair.error (tls.js:1013:23) 21:51:57.391 [pimatic-calendar] debug:> at EncryptedStream.CryptoStream._done (tls.js:705:22) 21:51:57.391 [pimatic-calendar] debug:> at CleartextStream.read [as _read] (tls.js:496:24) 21:51:57.391 [pimatic-calendar] debug:> at CleartextStream.Readable.read (_stream_readable.js:320:10) 21:51:57.391 [pimatic-calendar] debug:> at EncryptedStream.onCryptoStreamFinish (tls.js:301:47) 21:51:57.391 [pimatic-calendar] debug:> at EncryptedStream.g (events.js:180:16) 21:51:57.391 [pimatic-calendar] debug:> at EncryptedStream.EventEmitter.emit (events.js:117:20) 21:51:57.391 [pimatic-calendar] debug:> at finishMaybe (_stream_writable.js:354:12) 21:51:57.391 [pimatic-calendar] debug:> at endWritable (_stream_writable.js:361:3) 21:51:57.391 [pimatic-calendar] debug:> at EncryptedStream.Writable.end (_stream_writable.js:339:5) 21:51:57.391 [pimatic-calendar] debug:> at EncryptedStream.CryptoStream.end (tls.js:643:31) 21:51:57.391 [pimatic-calendar] debug:> at Socket.onend (_stream_readable.js:483:10) 21:51:57.391 [pimatic-calendar] debug:> at Socket.g (events.js:180:16) 21:51:57.391 [pimatic-calendar] debug:> at Socket.EventEmitter.emit (events.js:117:20) 21:51:57.391 [pimatic-calendar] debug:> at _stream_readable.js:920:16 21:51:57.391 [pimatic-calendar] debug:> at process._tickDomainCallback (node.js:459:13)
-
I’m sorry for my late answer! I think the solution of @demlak is possible right. At the Moment i switch to a python script and transform the pimaticAPI.sh (you find in the forum) to python. It works really nice and i like python more than bash. Sure you have no predicates, but the possibilities at the moment are even more.
But i also hope, that sweetpi will continue this plugin, when he is back again! -
It’s would be very nice to add the following feature
If calendar event with title equals “wecker” starts in 8 hours
Or
If calendar event with title equals “wecker” ends in 20 minutesThis is great for heating control
pimatic + MySensors + Homeduino + z-way
https://github.com/n3roGit/MySensors_n3ro -
@leader21 just found a bug. I switches one calendar entry from 10:00 to 09:00 and the rule was triggered at both times
pimatic + MySensors + Homeduino + z-way
https://github.com/n3roGit/MySensors_n3ro -
I tried to change it myself, but don’t know if it’s right (first time working with node.js).
I changed “two things” in calendar.coffee:
First:
! getNextEvents: (events, from, to) ->
result = []
_.forEach(events, (event) =>
if event.rrule?
duration = event.end.getTime() - event.start.getTime()
# include events, that are ongoing
fromRrule = new Date(from)
fromRrule.setTime(fromRrule.getTime() - duration)
# get recurring events
dates = event.rrule.between(fromRrule, to, true)
_.forEach(dates, (date) =>
# calculate end
end = new Date(date)
end.setTime(date.getTime()+duration)
#Before makes new begin time
if @timeOffset > 0
date = new date(date.getTime() + @timeOffset)
return date
#After makes new end time
if @timeOffset < 0
end = new Date(end.getTime() + @timeOffset)
return end
# add to result list
result.push({
start: date
end: end
event: event
})
)And seconds:
! constructor: (@framework) ->
parsePredicate: (input, context) ->
field = null
fieldValue = null
checkType = null
timeOffset = 0
eventType = null
setField = (m, match) => field = match.trim()
setCheckType = (m, match) => checkType = match.trim()
setFieldValue = (m, match) => fieldValue = match.trim()
setEventType = (m, match) => eventType = match.trim()
m = M(input, context)
.match('calendar event with ')
.match(['title ', 'description '], setField)
.match(['contains ', 'equals '], setCheckType)
.matchString(setFieldValue)
.match(['before ', 'after ‘], optional: yes, (m, match) => modifier = match.trim())
.match([‘it ‘], optional: yes)
.optional( (m) =>
next = m
m.matchTimeDuration((m, tp) =>
m.match([’ before ‘, ’ after ‘], (m, match) =>
next = m
timeOffset = tp.timeMs
if match.trim() is "before"
timeOffset = -timeOffset
)
)
return next
)
.match([’ starts’, ’ ends’, ’ takes place’], setEventType)and a rule for example: If calendar event with title|description contains|equals “some text” 30 minutes before|after it starts|ends|takes place
Ps. Sorry about the bad Engels.
-
does it work?
pimatic v0.9 has been released!
Support Pimatic and get some free stickers
Like us on Facebookmake it so !
-
Not yet.