@mirta/globals 0.3.1 → 0.3.3
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/eslint/index.d.ts +2 -0
- package/eslint/index.js +2 -0
- package/package.json +1 -1
- package/types/wb-rules/alarms.d.ts +276 -0
- package/types/wb-rules.d.ts +250 -52
package/eslint/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ declare interface GlobalsMirta {
|
|
|
2
2
|
readonly '__DEV__': false
|
|
3
3
|
readonly '__TEST__': false
|
|
4
4
|
readonly 'log': false
|
|
5
|
+
readonly 'debug': false
|
|
5
6
|
readonly 'dev': false
|
|
6
7
|
readonly 'cron': false
|
|
7
8
|
readonly 'timers': false
|
|
@@ -20,6 +21,7 @@ declare interface GlobalsMirta {
|
|
|
20
21
|
readonly 'StorableObject': false
|
|
21
22
|
readonly 'PersistentStorage': false
|
|
22
23
|
readonly 'Notify': false
|
|
24
|
+
readonly 'Alarms': false
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
declare const globals: GlobalsMirta
|
package/eslint/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export default {
|
|
|
2
2
|
'__DEV__': 'readonly',
|
|
3
3
|
'__TEST__': 'readonly',
|
|
4
4
|
'log': 'readonly',
|
|
5
|
+
'debug': 'readonly',
|
|
5
6
|
'dev': 'readonly',
|
|
6
7
|
'cron': 'readonly',
|
|
7
8
|
'timers': 'readonly',
|
|
@@ -20,4 +21,5 @@ export default {
|
|
|
20
21
|
'StorableObject': 'readonly',
|
|
21
22
|
'PersistentStorage': 'readonly',
|
|
22
23
|
'Notify': 'readonly',
|
|
24
|
+
'Alarms': 'readonly',
|
|
23
25
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
declare namespace WbRules {
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Определения типов для сервиса оповещений.
|
|
5
|
+
*
|
|
6
|
+
* @since 0.3.3
|
|
7
|
+
*
|
|
8
|
+
**/
|
|
9
|
+
namespace Alarms {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Позволяет задать способ оповещения через SMS.
|
|
13
|
+
*
|
|
14
|
+
* @since 0.3.3
|
|
15
|
+
*
|
|
16
|
+
**/
|
|
17
|
+
interface SmsRecipient {
|
|
18
|
+
|
|
19
|
+
/** Конфигурация отправки SMS. */
|
|
20
|
+
type: 'sms'
|
|
21
|
+
|
|
22
|
+
/** Номер телефона получателя SMS. */
|
|
23
|
+
to: string
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Команда для отправки SMS. Поле можно оставить пустым, чтобы использовать gammu.
|
|
27
|
+
*
|
|
28
|
+
* В команде нужно указать как минимум один плейсхолдер `{}` - для номера. Тогда
|
|
29
|
+
* текст будет отправлен в stdin.
|
|
30
|
+
*
|
|
31
|
+
* Если указать 2 плейсхолдера - то в первый запишется номер, во второй - текст.
|
|
32
|
+
*
|
|
33
|
+
* @examples
|
|
34
|
+
* ```sh
|
|
35
|
+
* /path/to/sender.py --number {}
|
|
36
|
+
* ```
|
|
37
|
+
* ```sh
|
|
38
|
+
* /path/to/sender.py --number {} --text "{}"
|
|
39
|
+
* ```
|
|
40
|
+
**/
|
|
41
|
+
command?: string
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Позволяет задать способ оповещения через E-mail.
|
|
46
|
+
*
|
|
47
|
+
* @since 0.3.3
|
|
48
|
+
*
|
|
49
|
+
**/
|
|
50
|
+
interface EmailRecipient {
|
|
51
|
+
|
|
52
|
+
/** Конфигурация отправки на адрес электронной почты. */
|
|
53
|
+
type: 'email'
|
|
54
|
+
|
|
55
|
+
/** Адрес электронной почты получателя. */
|
|
56
|
+
to: string
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Тема письма (необязательное поле).
|
|
60
|
+
*
|
|
61
|
+
* Если в теме письма использовать плейсхолдер `{}`, он заменится на текст сообщения.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```txt
|
|
65
|
+
* Alarm: {}
|
|
66
|
+
* ```
|
|
67
|
+
**/
|
|
68
|
+
subject?: string
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Позволяет задать способ оповещения через Telegram.
|
|
73
|
+
*
|
|
74
|
+
* @since 0.3.3
|
|
75
|
+
*
|
|
76
|
+
**/
|
|
77
|
+
interface TelegramRecipient {
|
|
78
|
+
|
|
79
|
+
/** Конфигурация отправки в Telegram. */
|
|
80
|
+
type: 'telegram'
|
|
81
|
+
|
|
82
|
+
/** Токен вашего бота Telegram. */
|
|
83
|
+
token: string
|
|
84
|
+
|
|
85
|
+
/** Уникальный идентификатор целевого чата или username целевого канала (в формате `@channelusername`). */
|
|
86
|
+
chatId: string
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Позволяет настроить один из вариантов
|
|
91
|
+
* оповещения - через SMS, E-Mail или Telegram.
|
|
92
|
+
*
|
|
93
|
+
* Конкретный состав полей меняется в зависимости от значения поля `type`.
|
|
94
|
+
*
|
|
95
|
+
* @since 0.3.3
|
|
96
|
+
*
|
|
97
|
+
**/
|
|
98
|
+
type Recipient = SmsRecipient | EmailRecipient | TelegramRecipient
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Базовый компонент аларма - содержит общие свойства.
|
|
102
|
+
*
|
|
103
|
+
* Используется в составе типа {@link Alarm}.
|
|
104
|
+
*
|
|
105
|
+
* @since 0.3.3
|
|
106
|
+
*
|
|
107
|
+
**/
|
|
108
|
+
interface AlarmBase {
|
|
109
|
+
|
|
110
|
+
/** Название аларма. */
|
|
111
|
+
name: string
|
|
112
|
+
|
|
113
|
+
/** Наблюдаемые устройство и контрол в формате `deviceId/controlId`. */
|
|
114
|
+
cell: string
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Сообщение, отправляемое при срабатывании аларма.
|
|
118
|
+
*
|
|
119
|
+
* Для подстановки текущего значения контрола используется плейсхолдер `{}`.
|
|
120
|
+
*
|
|
121
|
+
* Если сообщение не указано, оно генерируется автоматически на основе
|
|
122
|
+
* текущего значения контрола.
|
|
123
|
+
*
|
|
124
|
+
**/
|
|
125
|
+
alarmMessage?: string
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Сообщение, отправляемое при деактивации аларма.
|
|
129
|
+
*
|
|
130
|
+
* Для подстановки текущего значения контрола используется плейсхолдер `{}`.
|
|
131
|
+
*
|
|
132
|
+
* Если сообщение не указано, оно генерируется автоматически на основе
|
|
133
|
+
* текущего значения контрола.
|
|
134
|
+
*
|
|
135
|
+
**/
|
|
136
|
+
noAlarmMessage?: string
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Интервал (в секундах) повторной отправки сообщения во время активности аларма.
|
|
140
|
+
*
|
|
141
|
+
* Если временной интервал не установлен, сообщения направляются
|
|
142
|
+
* только при срабатывании, а также при деактивации аларма.
|
|
143
|
+
*
|
|
144
|
+
**/
|
|
145
|
+
interval?: number
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Задержка срабатывания аларма (в миллисекундах).
|
|
149
|
+
*
|
|
150
|
+
* Если значение указано, то аларм сработает только когда условие срабатывания
|
|
151
|
+
* будет непрерывно выполняться в течение заданного интервала.
|
|
152
|
+
*
|
|
153
|
+
**/
|
|
154
|
+
alarmDelayMs?: number
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Задержка деактивации аларма (в миллисекундах).
|
|
158
|
+
*
|
|
159
|
+
* Если значение указано, то аларм будет деактивирован только когда условие срабатывания
|
|
160
|
+
* прекратит непрерывно выполняться в течение заданного интервала.
|
|
161
|
+
*
|
|
162
|
+
**/
|
|
163
|
+
noAlarmDelayMs?: number
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Максимальное количество отправленных сообщений.
|
|
167
|
+
*
|
|
168
|
+
* Если указано, то за каждый период срабатывания аларма
|
|
169
|
+
* отправляется не больше заданного количества сообщений.
|
|
170
|
+
*
|
|
171
|
+
**/
|
|
172
|
+
maxCount?: number
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Компонент аларма, реализующий возможность контроля за соответствием указанному значению.
|
|
177
|
+
*
|
|
178
|
+
* Используется в составе типа {@link Alarm}.
|
|
179
|
+
*
|
|
180
|
+
* @since 0.3.3
|
|
181
|
+
*
|
|
182
|
+
**/
|
|
183
|
+
interface ValueAlarm {
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Ожидаемое значение.
|
|
187
|
+
*
|
|
188
|
+
* Аларм сработает, если значение контрола отличается от `expectedValue`.
|
|
189
|
+
*
|
|
190
|
+
* Когда значение контрола снова становится равным `expectedValue`,
|
|
191
|
+
* аларм деактивируется.
|
|
192
|
+
*
|
|
193
|
+
**/
|
|
194
|
+
expectedValue: MqttValue
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Компонент аларма, реализующий возможность контроля за соответствием
|
|
199
|
+
* значения контрола допустимому диапазону.
|
|
200
|
+
*
|
|
201
|
+
* Используется в составе типа {@link Alarm}.
|
|
202
|
+
*
|
|
203
|
+
* @since 0.3.3
|
|
204
|
+
*
|
|
205
|
+
**/
|
|
206
|
+
interface RangeAlarm {
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Сервисное поле.
|
|
210
|
+
*
|
|
211
|
+
* Предотвращает смешивание с {@link ValueAlarm} внутри обобщённого типа {@link Alarm}.
|
|
212
|
+
*
|
|
213
|
+
**/
|
|
214
|
+
expectedValue: never
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Минимально допустимое значение.
|
|
218
|
+
*
|
|
219
|
+
* Если отслеживаемое значение контрола опускается ниже minValue, происходит срабатывание аларма.
|
|
220
|
+
*
|
|
221
|
+
**/
|
|
222
|
+
minValue: number
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Максимально допустимое значение.
|
|
226
|
+
*
|
|
227
|
+
* Если отслеживаемое значение контрола поднимается выше maxValue, происходит срабатывание аларма.
|
|
228
|
+
*
|
|
229
|
+
**/
|
|
230
|
+
maxValue: number
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Позволяет задать устройство и контрол для отслеживания, а также настроить параметры реагирования.
|
|
235
|
+
*
|
|
236
|
+
* @since 0.3.3
|
|
237
|
+
*
|
|
238
|
+
**/
|
|
239
|
+
type Alarm = AlarmBase & (ValueAlarm | AtLeastOne<RangeAlarm>)
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Конфигурация блока алармов.
|
|
243
|
+
*
|
|
244
|
+
* @since 0.3.3
|
|
245
|
+
*
|
|
246
|
+
**/
|
|
247
|
+
interface Config {
|
|
248
|
+
|
|
249
|
+
/** Название MQTT-устройства блока алармов. */
|
|
250
|
+
deviceName: string
|
|
251
|
+
|
|
252
|
+
/** Отображаемое название устройства блока алармов. */
|
|
253
|
+
deviceTitle: string
|
|
254
|
+
|
|
255
|
+
/** Список получателей. */
|
|
256
|
+
recipients: Recipient[]
|
|
257
|
+
|
|
258
|
+
/** Список алармов. */
|
|
259
|
+
alarms: Alarm[]
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Интерфейс для типизации сервиса оповещений.
|
|
265
|
+
*
|
|
266
|
+
**/
|
|
267
|
+
interface Alarms {
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Загружает конфигурацию для блока алармов.
|
|
271
|
+
*
|
|
272
|
+
* @param config Объект конфигурации или путь к файлу конфигурации в формате JSON.
|
|
273
|
+
*/
|
|
274
|
+
load(config: string | Alarms.Config): void
|
|
275
|
+
}
|
|
276
|
+
}
|
package/types/wb-rules.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/// <reference path="./wb-rules/alarms.d.ts" />
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Используется для нормализации составных типов.
|
|
3
5
|
*
|
|
@@ -16,56 +18,147 @@
|
|
|
16
18
|
* // }
|
|
17
19
|
* ```
|
|
18
20
|
* @since 0.0.4
|
|
21
|
+
*
|
|
19
22
|
**/
|
|
20
23
|
declare type Expand<T> = { [K in keyof T]: T[K] } & {}
|
|
21
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Разрешает частичное заполнение полей объекта, но требует наличия хотя бы одного поля.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* interface SafeRange {
|
|
31
|
+
* minValue: number
|
|
32
|
+
* maxValue: number
|
|
33
|
+
* }
|
|
34
|
+
*
|
|
35
|
+
* // Корректное объявление
|
|
36
|
+
* const a: AtLeastOne<SafeRange> = {
|
|
37
|
+
* minValue: 0
|
|
38
|
+
* }
|
|
39
|
+
*
|
|
40
|
+
* // Ошибка - требуется хотя бы одно из обязательных полей
|
|
41
|
+
* const b: AtLeastOne<SafeRange> = { }
|
|
42
|
+
* ```
|
|
43
|
+
* @since 0.3.3
|
|
44
|
+
*
|
|
45
|
+
**/
|
|
46
|
+
declare type AtLeastOne<T, U = { [K in keyof T]: Pick<T, K> }> = Partial<T> & U[keyof U]
|
|
47
|
+
|
|
22
48
|
/** Типы и интерфейсы правил wb-rules */
|
|
23
49
|
declare namespace WbRules {
|
|
24
50
|
|
|
25
51
|
/** Расширение для поддержки module.static */
|
|
26
52
|
type ModuleStatic = Record<string, unknown>
|
|
27
53
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
54
|
+
/**
|
|
55
|
+
* Набор методов для логирования.
|
|
56
|
+
*
|
|
57
|
+
* @since 0.3.2
|
|
58
|
+
*
|
|
59
|
+
**/
|
|
60
|
+
interface LogMethods {
|
|
31
61
|
|
|
32
|
-
interface Log {
|
|
33
62
|
/**
|
|
34
63
|
* Запись в лог информационного сообщения, полезного в долгосрочной перспективе.
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
|
|
64
|
+
* Используется форматированный вывод.
|
|
65
|
+
*
|
|
66
|
+
* @param format Форматируемый шаблон сообщения.
|
|
67
|
+
* @param args Параметры для заполнения формата.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* log.info('Свет в комнате включён на {} мин.', 30)
|
|
72
|
+
* ```
|
|
73
|
+
**/
|
|
74
|
+
info(format: string, ...args: unknown[]): void
|
|
39
75
|
|
|
40
76
|
/**
|
|
41
|
-
* Запись в лог
|
|
42
|
-
* @param
|
|
43
|
-
*
|
|
44
|
-
|
|
45
|
-
|
|
77
|
+
* Запись в лог произвольного значения, полезного в долгосрочной перспективе.
|
|
78
|
+
* @param value Значение для записи в лог.
|
|
79
|
+
*
|
|
80
|
+
**/
|
|
81
|
+
info(value: unknown): void
|
|
46
82
|
|
|
47
83
|
/**
|
|
48
|
-
* Запись в лог
|
|
49
|
-
*
|
|
50
|
-
* @param
|
|
51
|
-
|
|
52
|
-
|
|
84
|
+
* Запись в лог сообщения, полезного при отладке и не имеющего долгосрочной ценности.
|
|
85
|
+
*
|
|
86
|
+
* @param format Форматируемый шаблон сообщения.
|
|
87
|
+
* @param args Параметры для заполнения формата.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* log.debug('Значение сенсора "{}": температура {} °C, влажность {} %', 'bathroom', 25, 40)
|
|
92
|
+
**/
|
|
93
|
+
debug(format: string, ...args: unknown[]): void
|
|
53
94
|
|
|
54
95
|
/**
|
|
55
|
-
* Запись
|
|
56
|
-
*
|
|
57
|
-
* @param
|
|
58
|
-
|
|
59
|
-
|
|
96
|
+
* Запись в лог произвольного значения, полезного при отладке и не имеющего долгосрочной ценности.
|
|
97
|
+
*
|
|
98
|
+
* @param value Значение для записи в лог.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* log.debug(JSON.stringify({ location: 'bathroom', temperature: 25, humidity: 40 }))
|
|
103
|
+
* ```
|
|
104
|
+
**/
|
|
105
|
+
debug(value: unknown): void
|
|
60
106
|
|
|
61
107
|
/**
|
|
62
|
-
* Запись
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
|
|
66
|
-
|
|
108
|
+
* Запись в лог предупреждения о ненормальном или неожиданном событии,
|
|
109
|
+
* не приводящем к остановке программы.
|
|
110
|
+
*
|
|
111
|
+
* Используется форматированный вывод.
|
|
112
|
+
*
|
|
113
|
+
* @param format Форматируемый шаблон сообщения.
|
|
114
|
+
* @param args Параметры для заполнения формата.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* log.warning('Движение в охраняемой зоне: {}', 'hallway_sensor_1')
|
|
119
|
+
* ```
|
|
120
|
+
**/
|
|
121
|
+
warning(format: string, ...args: unknown[]): void
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Запись в лог предупреждения о ненормальном или неожиданном значении,
|
|
125
|
+
* не приводящем к остановке программы.
|
|
126
|
+
*
|
|
127
|
+
* @param value Значение для записи в лог.
|
|
128
|
+
*
|
|
129
|
+
**/
|
|
130
|
+
warning(value: unknown): void
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Запись в лог критического события, приведшего к сбою и остановке выполнения.
|
|
134
|
+
* Используется форматированный вывод.
|
|
135
|
+
*
|
|
136
|
+
* @param format Форматируемый шаблон сообщения.
|
|
137
|
+
* @param args Параметры для заполнения формата.
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```ts
|
|
141
|
+
* log.error('Перегев тёплого пола: {} °C, выключение', 30)
|
|
142
|
+
* ```
|
|
143
|
+
**/
|
|
144
|
+
error(format: string, ...args: unknown[]): void
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Запись в лог критического значения, приведшего к сбою и остановке выполнения.
|
|
148
|
+
*
|
|
149
|
+
* @param value Значение для записи в лог.
|
|
150
|
+
*
|
|
151
|
+
**/
|
|
152
|
+
error(value: unknown): void
|
|
67
153
|
}
|
|
68
154
|
|
|
155
|
+
/** @deprecated since version 0.3.2 */
|
|
156
|
+
type LogFunc = (format: string, ...args: unknown[]) => void
|
|
157
|
+
|
|
158
|
+
type Log = LogMethods['info'] & LogMethods
|
|
159
|
+
|
|
160
|
+
type Debug = LogMethods['debug']
|
|
161
|
+
|
|
69
162
|
interface CronEntry {
|
|
70
163
|
spec: string
|
|
71
164
|
}
|
|
@@ -384,6 +477,62 @@ declare namespace WbRules {
|
|
|
384
477
|
order?: number
|
|
385
478
|
}>
|
|
386
479
|
|
|
480
|
+
/**
|
|
481
|
+
* Опции контрола типа `text`.
|
|
482
|
+
*
|
|
483
|
+
* @since 0.3.2
|
|
484
|
+
*
|
|
485
|
+
**/
|
|
486
|
+
type TextControlOptions = Extract<ControlOptions, { type: 'text' }>
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Опции контрола типа `value`.
|
|
490
|
+
*
|
|
491
|
+
* @since 0.3.2
|
|
492
|
+
*
|
|
493
|
+
**/
|
|
494
|
+
type ValueControlOptions = Extract<ControlOptions, { type: 'value' }>
|
|
495
|
+
|
|
496
|
+
/**
|
|
497
|
+
* Опции контрола типа `range`.
|
|
498
|
+
*
|
|
499
|
+
* @since 0.3.2
|
|
500
|
+
*
|
|
501
|
+
**/
|
|
502
|
+
type RangeControlOptions = Extract<ControlOptions, { type: 'range' }>
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* Опции контрола типа `switch`.
|
|
506
|
+
*
|
|
507
|
+
* @since 0.3.2
|
|
508
|
+
*
|
|
509
|
+
**/
|
|
510
|
+
type SwitchControlOptions = Extract<ControlOptions, { type: 'switch' }>
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* Опции контрола типа `pushbutton`.
|
|
514
|
+
*
|
|
515
|
+
* @since 0.3.2
|
|
516
|
+
*
|
|
517
|
+
**/
|
|
518
|
+
type PushButtonControlOptions = Extract<ControlOptions, { type: 'pushbutton' }>
|
|
519
|
+
|
|
520
|
+
/**
|
|
521
|
+
* Опции контрола типа `rgb`.
|
|
522
|
+
*
|
|
523
|
+
* @since 0.3.2
|
|
524
|
+
*
|
|
525
|
+
**/
|
|
526
|
+
type RgbControlOptions = Extract<ControlOptions, { type: 'rgb' }>
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Опции контрола типа `alarm`.
|
|
530
|
+
*
|
|
531
|
+
* @since 0.3.2
|
|
532
|
+
*
|
|
533
|
+
**/
|
|
534
|
+
type AlarmControlOptions = Extract<ControlOptions, { type: 'alarm' }>
|
|
535
|
+
|
|
387
536
|
/**
|
|
388
537
|
* Интерфейс устройства
|
|
389
538
|
*/
|
|
@@ -476,6 +625,41 @@ declare namespace WbRules {
|
|
|
476
625
|
interface StorageOptions {
|
|
477
626
|
global: boolean
|
|
478
627
|
}
|
|
628
|
+
|
|
629
|
+
interface Notify {
|
|
630
|
+
/**
|
|
631
|
+
* Отправляет электронное письмо указанному адресату.
|
|
632
|
+
*
|
|
633
|
+
* @param to Адресат.
|
|
634
|
+
* @param subject Тема письма.
|
|
635
|
+
* @param text Текст письма.
|
|
636
|
+
*
|
|
637
|
+
**/
|
|
638
|
+
sendEmail(to: string, subject: string, text: string): void
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* Отправляет SMS на указанный номер
|
|
642
|
+
* Для отправки SMS используется ModemManager, а если он не установлен, то gammu.
|
|
643
|
+
*
|
|
644
|
+
* @param to Номер адресата.
|
|
645
|
+
* @param text Текст сообщения.
|
|
646
|
+
* @param command Используя команду.
|
|
647
|
+
*
|
|
648
|
+
**/
|
|
649
|
+
sendSMS(to: string, text: string, command?: string): void
|
|
650
|
+
|
|
651
|
+
/**
|
|
652
|
+
* Отправляет сообщение в указанный чат или канал Telegram.
|
|
653
|
+
*
|
|
654
|
+
* @param token Токен вашего бота Telegram.
|
|
655
|
+
* @param chatId Уникальный идентификатор целевого чата или username целевого канала (в формате `@channelusername`).
|
|
656
|
+
* @param text Текст сообщения.
|
|
657
|
+
*
|
|
658
|
+
* @since 0.3.2
|
|
659
|
+
*
|
|
660
|
+
**/
|
|
661
|
+
sendTelegramMessage(token: string, chatId: string, text: string): void
|
|
662
|
+
}
|
|
479
663
|
}
|
|
480
664
|
|
|
481
665
|
declare namespace NodeJS {
|
|
@@ -495,6 +679,14 @@ declare var __filename: string
|
|
|
495
679
|
/** Используется для вывода сообщений в журнал контроллера и отладочную консоль. */
|
|
496
680
|
declare var log: WbRules.Log
|
|
497
681
|
|
|
682
|
+
/**
|
|
683
|
+
* Используется для вывода отладочных сообщений в журнал контроллера и отладочную консоль.
|
|
684
|
+
*
|
|
685
|
+
* @since 0.3.2
|
|
686
|
+
*
|
|
687
|
+
**/
|
|
688
|
+
declare var debug: WbRules.Debug
|
|
689
|
+
|
|
498
690
|
/** Объект доступа к MQTT-топикам устройства. */
|
|
499
691
|
declare var dev: WbRules.Dev
|
|
500
692
|
|
|
@@ -730,28 +922,34 @@ declare class PersistentStorage {
|
|
|
730
922
|
}
|
|
731
923
|
|
|
732
924
|
/**
|
|
733
|
-
*
|
|
734
|
-
*
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
* Отправляет почту указанному адресату
|
|
739
|
-
* @static
|
|
740
|
-
* @param to адресат
|
|
741
|
-
* @param subject тема
|
|
742
|
-
* @param text содержимое
|
|
743
|
-
* @memberof Notify
|
|
744
|
-
*/
|
|
745
|
-
static sendEmail(to: string, subject: string, text: string): void
|
|
925
|
+
* Сервис уведомлений Notify — инструмент для отправки произвольных
|
|
926
|
+
* сообщений по разным каналам коммуникации (почта, SMS, Telegram).
|
|
927
|
+
*
|
|
928
|
+
**/
|
|
929
|
+
declare var Notify: WbRules.Notify
|
|
746
930
|
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
931
|
+
/**
|
|
932
|
+
* Сервис оповещений Alarms — инструмент для автоматической отправки
|
|
933
|
+
* шаблонных сообщений по разным каналам коммуникации (почта, SMS, Telegram)
|
|
934
|
+
* при обнаружении отклонения от нормы в значениях отслеживаемых контролов.
|
|
935
|
+
*
|
|
936
|
+
* @example
|
|
937
|
+
* Загрузка конфигурации из JSON-файла:
|
|
938
|
+
* ```ts
|
|
939
|
+
* Alarms.load('/etc/wb-rules/alarms.conf')
|
|
940
|
+
* ```
|
|
941
|
+
* @example
|
|
942
|
+
* Непосредственная настройка блока алармов через объект конфигурации:
|
|
943
|
+
* ```ts
|
|
944
|
+
* Alarms.load({
|
|
945
|
+
* deviceName: 'example_alarms',
|
|
946
|
+
* deviceTitle: 'Example Alarms',
|
|
947
|
+
* recipients: [],
|
|
948
|
+
* alarms: []
|
|
949
|
+
* })
|
|
950
|
+
* ```
|
|
951
|
+
*
|
|
952
|
+
* @since 0.3.3
|
|
953
|
+
*
|
|
954
|
+
**/
|
|
955
|
+
declare var Alarms: WbRules.Alarms
|