iobroker.fullcalendar 3.1.1 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -16
- package/admin/assets/{index-D5iQFJyH.js → index-CmNdY9s1.js} +23 -23
- package/admin/tab_m.html +1 -1
- package/build/lib/agenda.js +18 -0
- package/build/lib/agenda.js.map +1 -1
- package/build/lib/condition.js +79 -0
- package/build/lib/condition.js.map +1 -0
- package/build/lib/recurrence.js +186 -0
- package/build/lib/recurrence.js.map +1 -0
- package/build/main.js +280 -48
- package/build/main.js.map +1 -1
- package/img/vis2-widget-month.png +0 -0
- package/io-package.json +27 -27
- package/package.json +1 -1
- package/widgets/fullcalendar/assets/{FullCalendar-LRnYRzId.js → FullCalendar-BVQFdZnE.js} +1340 -1313
- package/widgets/fullcalendar/assets/translations-Bp3A__c7.js +4 -0
- package/widgets/fullcalendar/customWidgets.js +2 -2
- package/widgets/fullcalendar/mf-manifest.json +1 -1
- package/widgets/fullcalendar/mf-stats.json +1 -1
- package/widgets/fullcalendar/assets/translations-e8MhG2Cb.js +0 -4
package/README.md
CHANGED
|
@@ -13,8 +13,16 @@ You must not use any external resources, the scheduling is processed only in ioB
|
|
|
13
13
|
|
|
14
14
|

|
|
15
15
|
|
|
16
|
+
The vis-2 widget in the month view with a dark theme: watering, heating mode and balcony light as events.
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
16
20
|
You can control your events with a calendar and can plan to control them periodically.
|
|
17
21
|
|
|
22
|
+
- **Duration** of "On/Off" and "Toggle" events can be given in seconds, minutes or hours. With a duration of 1 second, an event works like a push button.
|
|
23
|
+
- **Condition** ("Only if"): an event writes its value only if another state has the given value at that time (`==`, `!=`, `>`, `>=`, `<`, `<=`), e.g. the shutter goes down only if the terrace door is closed. If the condition is not met, the whole event is skipped (an "On/Off" event does not write the end value either), and a line is written to the log.
|
|
24
|
+
- **Calendars** can be switched off (button in the calendar list or "Active" in the calendar dialog): their events stay, but are not executed until the calendar is switched on again. This way you can prepare scenarios like "Vacation" and switch them by a script (`enableCalendar`, see below).
|
|
25
|
+
|
|
18
26
|
## Events simulation
|
|
19
27
|
You can record your behavior and can play it back later.
|
|
20
28
|
For example, you can create two recordings for workday and for weekend and play them back on according days.
|
|
@@ -54,18 +62,43 @@ sendTo('fullcalendar.0', 'addEvent', { oid: 'hm-rpc.0.ABC.1.STATE', value: false
|
|
|
54
62
|
// at a time (local time, or a timestamp in ms), for 10 minutes, in the calendar "Garden"
|
|
55
63
|
sendTo('fullcalendar.0', 'addEvent', {
|
|
56
64
|
oid: 'hm-rpc.0.PUMP.1.STATE', value: true, start: '2026-10-29T07:30', duration: '10m', calendar: 'Garden', name: 'Pump',
|
|
57
|
-
}, res => log(JSON.stringify(res))); // {id, name, start, ts} or {error}
|
|
65
|
+
}, res => log(JSON.stringify(res))); // {id, name, type, start, ts} or {error}
|
|
66
|
+
// every year on June 15 at 08:00 (a birthday), the start may be in the past
|
|
67
|
+
sendTo('fullcalendar.0', 'addEvent', {
|
|
68
|
+
oid: '0_userdata.0.birthday', value: 'Anna', start: '2020-06-15T08:00', recurring: 'yearly', name: 'Birthday Anna',
|
|
69
|
+
}, res => log(JSON.stringify(res))); // {id, name, type, start: next execution, ts, cron: "0 0 8 15 6 *"}
|
|
70
|
+
// delete all events with this name
|
|
71
|
+
sendTo('fullcalendar.0', 'deleteEvent', { name: 'Birthday Anna' }, res => log(JSON.stringify(res)));
|
|
58
72
|
```
|
|
59
73
|
|
|
60
|
-
| Command
|
|
61
|
-
|
|
62
|
-
| `addEvent`
|
|
63
|
-
| `deleteEvent`
|
|
64
|
-
| `
|
|
65
|
-
| `getEvents`
|
|
66
|
-
| `
|
|
67
|
-
|
|
68
|
-
|
|
74
|
+
| Command | Message | Answer |
|
|
75
|
+
|------------------|--------------------------------------------------------------------------------------------|---------------------------------------------------|
|
|
76
|
+
| `addEvent` | see below | `{id, name, type, start, ts, cron?}` (`start`/`ts` = first execution) |
|
|
77
|
+
| `deleteEvent` | `id`, `ids` (a list) and/or `name` (all events with exactly this name; optional `calendar`) | `{result: "ok", deleted: [id, …], notFound?: [id, …]}` |
|
|
78
|
+
| `getEvent` | `id` | `{event: definition}` |
|
|
79
|
+
| `getEvents` | optional `calendar` | `{events: [definition, …]}` |
|
|
80
|
+
| `listEvents` | optional `from`, `to` (default now … 7 days, or `days`), `calendar`, `max` | `{events: [execution, …]}` |
|
|
81
|
+
| `getCalendars` | – | `{calendars: [{id, name, enabled}, …]}` |
|
|
82
|
+
| `enableCalendar` | `calendar` (name or ID), `enabled` (`true`/`false`) | `{id, enabled}` |
|
|
83
|
+
| `getCommands` | – | `{commands: [{command, params, answer}, …]}` |
|
|
84
|
+
|
|
85
|
+
Parameters of `addEvent`:
|
|
86
|
+
|
|
87
|
+
| Parameter | Meaning |
|
|
88
|
+
|----------------------------|------------------------------------------------------------------------------------------------------------|
|
|
89
|
+
| `oid` | state to write (must exist and be writable) |
|
|
90
|
+
| `value` | value to write |
|
|
91
|
+
| `start` or `in` | `start`: local time (`"2026-10-29T07:30"`, `"07:30"` = today) or a timestamp in ms; `in`: delay (seconds, or `"90s"`, `"30m"`, `"2h"`, `"1h30m"`, `"1d"`) |
|
|
92
|
+
| `duration` / `durationSec` | after this time (same formats as `in`) the second value is written; then `type` is `"double"` by default |
|
|
93
|
+
| `type` | `"single"` (default), `"double"` (writes `endValue` after `duration`), `"toggle"` (switches back after `duration`) |
|
|
94
|
+
| `endValue` | value of `"double"`; for a boolean `value` the default is the opposite |
|
|
95
|
+
| `recurring` | `"daily"`, `"weekly"`, `"monthly"` or `"yearly"`: repeats at the time of day of `start` (also of a `start` in the past). The day comes from `start`, or from `weekdays` (list, `0` = Sunday or `"MO"`, `"TU"`…), `monthDays` (list, 1…31), `months` (list, 1…12) |
|
|
96
|
+
| `rrule` | instead of `recurring`: iCal rule, e.g. `"FREQ=YEARLY"`, `"FREQ=WEEKLY;BYDAY=MO,FR"`, `"FREQ=MONTHLY;BYMONTHDAY=1,15"`. Supported: `FREQ` (DAILY, WEEKLY, MONTHLY, YEARLY), `BYDAY` (plain weekdays), `BYMONTHDAY`, `BYMONTH`. Not supported: `INTERVAL` > 1, `COUNT`, `UNTIL`, `BYDAY=2MO` |
|
|
97
|
+
| `name` | name of the event, default: name of the state |
|
|
98
|
+
| `calendar` | name or ID of the calendar, default: the default calendar |
|
|
99
|
+
| `color` | color in the calendar |
|
|
100
|
+
|
|
101
|
+
Errors come back as `{error}`, an unknown command answers with the list of the commands. A new event appears in the calendar like one created by hand and can be edited there. Recurring events run at whole minutes.
|
|
69
102
|
|
|
70
103
|
## Todo
|
|
71
104
|
- Week and day must scroll to the current time
|
|
@@ -75,6 +108,22 @@ Errors come back as `{error}`. A new event is a one-shot event and appears in th
|
|
|
75
108
|
### **WORK IN PROGRESS**
|
|
76
109
|
-->
|
|
77
110
|
## Changelog
|
|
111
|
+
### 3.3.0 (2026-10-29)
|
|
112
|
+
* (bluefox) Fixed: `addEvent` ignored `type` and `durationSec`, a "double" event was saved as "single"
|
|
113
|
+
* (bluefox) Added recurring events to `addEvent`: `recurring` (daily, weekly, monthly, yearly) or an iCal `rrule`
|
|
114
|
+
* (bluefox) `deleteEvent` deletes a list of events (`ids`) or all events with a name (`name`)
|
|
115
|
+
* (bluefox) Added the messages `getEvent` and `getCommands`, an unknown command answers with the list of the commands
|
|
116
|
+
* (bluefox) Documented all messages and parameters in the README
|
|
117
|
+
|
|
118
|
+
### 3.2.0 (2026-10-29)
|
|
119
|
+
* (bluefox) Fixed white screen when adding an event in the vis-2 widget (#444)
|
|
120
|
+
* (bluefox) Fixed: the recording of a simulation stopped immediately after the start (#234)
|
|
121
|
+
* (bluefox) Fixed: the simulation recorded repeated status updates without a change of the value, e.g. of Tasmota or Sonoff devices (#285, #235)
|
|
122
|
+
* (bluefox) Fixed: the subscriptions of a stopped recording were not removed
|
|
123
|
+
* (bluefox) Added: the duration of "On/Off" and "Toggle" events can be given in seconds, minutes or hours, e.g. for a push button (#354)
|
|
124
|
+
* (bluefox) Added: conditions for events, e.g. do not close the shutter if the door is open (#257)
|
|
125
|
+
* (bluefox) Added: calendars can be switched off and on, also with the message `enableCalendar` (#236)
|
|
126
|
+
|
|
78
127
|
### 3.1.1 (2026-10-29)
|
|
79
128
|
* (GermanBluefox) Fixed display of recurring events after DST change (#448)
|
|
80
129
|
|
|
@@ -88,12 +137,6 @@ Errors come back as `{error}`. A new event is a one-shot event and appears in th
|
|
|
88
137
|
* (bluefox) Migrated GUI to vite
|
|
89
138
|
* (bluefox) Updated packages
|
|
90
139
|
|
|
91
|
-
### 3.0.1 (2026-08-05)
|
|
92
|
-
* (bluefox) Migrated GUI to React19
|
|
93
|
-
|
|
94
|
-
### 2.4.5 (2024-09-09)
|
|
95
|
-
* (bluefox) Corrected SelectID Dialog
|
|
96
|
-
|
|
97
140
|
[Older changelogs can be found there](CHANGELOG_OLD.md)
|
|
98
141
|
|
|
99
142
|
## License
|