iobroker.device-watcher 2.7.0 → 2.8.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 +15 -0
- package/admin/i18n/de/translations.json +9 -1
- package/admin/i18n/en/translations.json +9 -1
- package/admin/i18n/es/translations.json +9 -1
- package/admin/i18n/fr/translations.json +9 -1
- package/admin/i18n/it/translations.json +9 -1
- package/admin/i18n/nl/translations.json +9 -1
- package/admin/i18n/pl/translations.json +9 -1
- package/admin/i18n/pt/translations.json +9 -1
- package/admin/i18n/ru/translations.json +9 -1
- package/admin/i18n/uk/translations.json +9 -1
- package/admin/i18n/zh-cn/translations.json +9 -1
- package/admin/jsonConfig.json +144 -0
- package/io-package.json +42 -27
- package/lib/arrApart.js +22 -0
- package/main.js +115 -48
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -189,6 +189,21 @@ It's possible to select:
|
|
|
189
189
|
Placeholder for the next version (at the beginning of the line):
|
|
190
190
|
### **WORK IN PROGRESS**
|
|
191
191
|
-->
|
|
192
|
+
### 2.8.0 (2023-04-04)
|
|
193
|
+
|
|
194
|
+
- (ciddi89) Added: Support for LOQED Smart Lock
|
|
195
|
+
- (ciddi89) Added: Option to add user/group api key for Pushover
|
|
196
|
+
- (ciddi89) Added: Option to send notification if an instance was stopped
|
|
197
|
+
- (ciddi89) Added: Option to send shedule notifications with overview of stopped instances
|
|
198
|
+
- (ciddi89) Fixed: Issue if notifications was send of stopped instance but the option wasn't choosen
|
|
199
|
+
- (ciddi89) Fixed: Ignore battery values 0% if they were not smaller than 5% before
|
|
200
|
+
|
|
201
|
+
### 2.7.1 (2023-03-26)
|
|
202
|
+
|
|
203
|
+
- (ciddi89) Added: Support for Ecovacs-Deebot
|
|
204
|
+
- (ciddi89) Updated: Dependencies
|
|
205
|
+
- (ciddi89) Improvements: Small fixes
|
|
206
|
+
|
|
192
207
|
### 2.7.0 (2023-03-13)
|
|
193
208
|
|
|
194
209
|
- (ciddi89) Added: Fully-MQTT
|
|
@@ -142,5 +142,13 @@
|
|
|
142
142
|
"Error Time for Instances": "Fehlerzeit für Instanzen",
|
|
143
143
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "Hier können Sie die Fehlerzeit jeder Instanz definieren. Der Standardwert beträgt 20 Sekunden.",
|
|
144
144
|
"Choose which instances should have a longer downtime": "Wählen Sie aus, welche Instanzen eine längere Ausfallzeit haben sollen",
|
|
145
|
-
"Time in seconds": "Zeit in Sekunden"
|
|
145
|
+
"Time in seconds": "Zeit in Sekunden",
|
|
146
|
+
"Choose your API/KEY Token for Pushmessage": "Wählen Sie Ihr API/KEY-Token für die Push-Nachricht",
|
|
147
|
+
"Instance deactivated message": "Meldung „Instanz deaktiviert“",
|
|
148
|
+
"Receive a message when an instance is deactivated": "Erhalten Sie eine Nachricht, wenn eine Instanz deaktiviert wird",
|
|
149
|
+
"Overview of deactivated instances": "Übersicht der deaktivierten Instanzen",
|
|
150
|
+
"Get a message with an overview of all deactivated instances": "Erhalten Sie eine Nachricht mit einer Übersicht aller deaktivierten Instanzen",
|
|
151
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "Wählen Sie die Tage aus, an denen Sie die Übersicht der deaktivierten Instanzen erhalten möchten:",
|
|
152
|
+
"User/Group key (optional)": "Benutzer-/Gruppenschlüssel (optional)",
|
|
153
|
+
"Choose your User/Group key for Pushmessage": "Wählen Sie Ihren Benutzer-/Gruppenschlüssel für die Push-Nachricht"
|
|
146
154
|
}
|
|
@@ -137,5 +137,13 @@
|
|
|
137
137
|
"Error Time for Instances": "Error Time for Instances",
|
|
138
138
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "Here you can define the error time of each instance. The standard value is 20 seconds.",
|
|
139
139
|
"Choose which instances should have a longer downtime": "Choose which instances should have a longer downtime",
|
|
140
|
-
"Time in seconds": "Time in seconds"
|
|
140
|
+
"Time in seconds": "Time in seconds",
|
|
141
|
+
"Choose your API/KEY Token for Pushmessage": "Choose your API/KEY Token for Pushmessage",
|
|
142
|
+
"Instance deactivated message": "Instance deactivated message",
|
|
143
|
+
"Receive a message when an instance is deactivated": "Receive a message when an instance is deactivated",
|
|
144
|
+
"Overview of deactivated instances": "Overview of deactivated instances",
|
|
145
|
+
"Get a message with an overview of all deactivated instances": "Get a message with an overview of all deactivated instances",
|
|
146
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "Choose the day(s) where you want to get the overview of deactivated instances:",
|
|
147
|
+
"User/Group key (optional)": "User/Group key (optional)",
|
|
148
|
+
"Choose your User/Group key for Pushmessage": "Choose your User/Group key for Pushmessage"
|
|
141
149
|
}
|
|
@@ -142,5 +142,13 @@
|
|
|
142
142
|
"Error Time for Instances": "Tiempo de error para instancias",
|
|
143
143
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "Aquí puede definir el tiempo de error de cada instancia. El valor estándar es de 20 segundos.",
|
|
144
144
|
"Choose which instances should have a longer downtime": "Elija qué instancias deben tener un tiempo de inactividad más largo",
|
|
145
|
-
"Time in seconds": "Tiempo en segundos"
|
|
145
|
+
"Time in seconds": "Tiempo en segundos",
|
|
146
|
+
"Choose your API/KEY Token for Pushmessage": "Elija su token API/KEY para Pushmessage",
|
|
147
|
+
"Instance deactivated message": "Mensaje de instancia desactivada",
|
|
148
|
+
"Receive a message when an instance is deactivated": "Recibir un mensaje cuando se desactive una instancia",
|
|
149
|
+
"Overview of deactivated instances": "Resumen de instancias desactivadas",
|
|
150
|
+
"Get a message with an overview of all deactivated instances": "Recibe un mensaje con una descripción general de todas las instancias desactivadas",
|
|
151
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "Elija los días en los que desea obtener la descripción general de las instancias desactivadas:",
|
|
152
|
+
"User/Group key (optional)": "Clave de usuario/grupo (opcional)",
|
|
153
|
+
"Choose your User/Group key for Pushmessage": "Elija su clave de usuario/grupo para Pushmessage"
|
|
146
154
|
}
|
|
@@ -142,5 +142,13 @@
|
|
|
142
142
|
"Error Time for Instances": "Heure d'erreur pour les instances",
|
|
143
143
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "Ici, vous pouvez définir le temps d'erreur de chaque instance. La valeur standard est de 20 secondes.",
|
|
144
144
|
"Choose which instances should have a longer downtime": "Choisissez les instances qui doivent avoir un temps d'arrêt plus long",
|
|
145
|
-
"Time in seconds": "Temps en secondes"
|
|
145
|
+
"Time in seconds": "Temps en secondes",
|
|
146
|
+
"Choose your API/KEY Token for Pushmessage": "Choisissez votre API/KEY Token pour Pushmessage",
|
|
147
|
+
"Instance deactivated message": "Message de désactivation de l'instance",
|
|
148
|
+
"Receive a message when an instance is deactivated": "Recevoir un message lorsqu'une instance est désactivée",
|
|
149
|
+
"Overview of deactivated instances": "Aperçu des instances désactivées",
|
|
150
|
+
"Get a message with an overview of all deactivated instances": "Recevez un message avec un aperçu de toutes les instances désactivées",
|
|
151
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "Choisissez le(s) jour(s) où vous souhaitez obtenir l'aperçu des instances désactivées :",
|
|
152
|
+
"User/Group key (optional)": "Clé utilisateur/groupe (facultatif)",
|
|
153
|
+
"Choose your User/Group key for Pushmessage": "Choisissez votre clé d'utilisateur/groupe pour Pushmessage"
|
|
146
154
|
}
|
|
@@ -142,5 +142,13 @@
|
|
|
142
142
|
"Error Time for Instances": "Tempo di errore per le istanze",
|
|
143
143
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "Qui puoi definire il tempo di errore di ogni istanza. Il valore standard è 20 secondi.",
|
|
144
144
|
"Choose which instances should have a longer downtime": "Scegli quali istanze dovrebbero avere un tempo di inattività più lungo",
|
|
145
|
-
"Time in seconds": "Tempo in secondi"
|
|
145
|
+
"Time in seconds": "Tempo in secondi",
|
|
146
|
+
"Choose your API/KEY Token for Pushmessage": "Scegli il tuo token API/KEY per Pushmessage",
|
|
147
|
+
"Instance deactivated message": "Messaggio di istanza disattivata",
|
|
148
|
+
"Receive a message when an instance is deactivated": "Ricevi un messaggio quando un'istanza viene disattivata",
|
|
149
|
+
"Overview of deactivated instances": "Panoramica delle istanze disattivate",
|
|
150
|
+
"Get a message with an overview of all deactivated instances": "Ricevi un messaggio con una panoramica di tutte le istanze disattivate",
|
|
151
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "Scegli il giorno o i giorni in cui vuoi ottenere la panoramica delle istanze disattivate:",
|
|
152
|
+
"User/Group key (optional)": "Chiave utente/gruppo (opzionale)",
|
|
153
|
+
"Choose your User/Group key for Pushmessage": "Scegli la tua chiave utente/gruppo per Pushmessage"
|
|
146
154
|
}
|
|
@@ -142,5 +142,13 @@
|
|
|
142
142
|
"Error Time for Instances": "Fouttijd voor instanties",
|
|
143
143
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "Hier kunt u de fouttijd van elke instantie definiëren. De standaardwaarde is 20 seconden.",
|
|
144
144
|
"Choose which instances should have a longer downtime": "Kies welke instanties een langere downtime moeten hebben",
|
|
145
|
-
"Time in seconds": "Tijd in seconden"
|
|
145
|
+
"Time in seconds": "Tijd in seconden",
|
|
146
|
+
"Choose your API/KEY Token for Pushmessage": "Kies uw API/KEY-token voor pushberichten",
|
|
147
|
+
"Instance deactivated message": "Instantie gedeactiveerd bericht",
|
|
148
|
+
"Receive a message when an instance is deactivated": "Ontvang een bericht wanneer een instantie wordt gedeactiveerd",
|
|
149
|
+
"Overview of deactivated instances": "Overzicht gedeactiveerde exemplaren",
|
|
150
|
+
"Get a message with an overview of all deactivated instances": "Krijg een bericht met een overzicht van alle gedeactiveerde instanties",
|
|
151
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "Kies de dag(en) waarop u het overzicht van gedeactiveerde instanties wilt zien:",
|
|
152
|
+
"User/Group key (optional)": "Gebruikers-/groepssleutel (optioneel)",
|
|
153
|
+
"Choose your User/Group key for Pushmessage": "Kies uw gebruikers-/groepssleutel voor pushberichten"
|
|
146
154
|
}
|
|
@@ -142,5 +142,13 @@
|
|
|
142
142
|
"Error Time for Instances": "Czas błędu dla instancji",
|
|
143
143
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "Tutaj możesz zdefiniować czas błędu dla każdej instancji. Standardowa wartość to 20 sekund.",
|
|
144
144
|
"Choose which instances should have a longer downtime": "Wybierz, które instancje powinny mieć dłuższe przestoje",
|
|
145
|
-
"Time in seconds": "Czas w sekundach"
|
|
145
|
+
"Time in seconds": "Czas w sekundach",
|
|
146
|
+
"Choose your API/KEY Token for Pushmessage": "Wybierz swój token API/KEY dla Pushmessage",
|
|
147
|
+
"Instance deactivated message": "Komunikat o dezaktywacji instancji",
|
|
148
|
+
"Receive a message when an instance is deactivated": "Odbierz wiadomość, gdy instancja zostanie dezaktywowana",
|
|
149
|
+
"Overview of deactivated instances": "Przegląd dezaktywowanych instancji",
|
|
150
|
+
"Get a message with an overview of all deactivated instances": "Otrzymaj wiadomość z przeglądem wszystkich dezaktywowanych instancji",
|
|
151
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "Wybierz dni, w których chcesz uzyskać przegląd dezaktywowanych instancji:",
|
|
152
|
+
"User/Group key (optional)": "Klucz użytkownika/grupy (opcjonalnie)",
|
|
153
|
+
"Choose your User/Group key for Pushmessage": "Wybierz klucz użytkownika/grupy dla wiadomości Push"
|
|
146
154
|
}
|
|
@@ -142,5 +142,13 @@
|
|
|
142
142
|
"Error Time for Instances": "Tempo de erro para instâncias",
|
|
143
143
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "Aqui você pode definir o tempo de erro de cada instância. O valor padrão é 20 segundos.",
|
|
144
144
|
"Choose which instances should have a longer downtime": "Escolha quais instâncias devem ter um tempo de inatividade mais longo",
|
|
145
|
-
"Time in seconds": "Tempo em segundos"
|
|
145
|
+
"Time in seconds": "Tempo em segundos",
|
|
146
|
+
"Choose your API/KEY Token for Pushmessage": "Escolha seu API/KEY Token para Pushmessage",
|
|
147
|
+
"Instance deactivated message": "Mensagem de instância desativada",
|
|
148
|
+
"Receive a message when an instance is deactivated": "Receba uma mensagem quando uma instância for desativada",
|
|
149
|
+
"Overview of deactivated instances": "Visão geral das instâncias desativadas",
|
|
150
|
+
"Get a message with an overview of all deactivated instances": "Receba uma mensagem com uma visão geral de todas as instâncias desativadas",
|
|
151
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "Escolha o(s) dia(s) em que deseja obter a visão geral das instâncias desativadas:",
|
|
152
|
+
"User/Group key (optional)": "Tecla Usuário/Grupo (opcional)",
|
|
153
|
+
"Choose your User/Group key for Pushmessage": "Escolha sua chave de usuário/grupo para Pushmessage"
|
|
146
154
|
}
|
|
@@ -142,5 +142,13 @@
|
|
|
142
142
|
"Error Time for Instances": "Время ошибки для экземпляров",
|
|
143
143
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "Здесь вы можете определить время ошибки каждого экземпляра. Стандартное значение составляет 20 секунд.",
|
|
144
144
|
"Choose which instances should have a longer downtime": "Выберите, какие экземпляры должны иметь более длительное время простоя",
|
|
145
|
-
"Time in seconds": "Время в секундах"
|
|
145
|
+
"Time in seconds": "Время в секундах",
|
|
146
|
+
"Choose your API/KEY Token for Pushmessage": "Выберите свой токен API/KEY для Pushmessage",
|
|
147
|
+
"Instance deactivated message": "Сообщение об отключении экземпляра",
|
|
148
|
+
"Receive a message when an instance is deactivated": "Получение сообщения, когда экземпляр деактивирован",
|
|
149
|
+
"Overview of deactivated instances": "Обзор деактивированных экземпляров",
|
|
150
|
+
"Get a message with an overview of all deactivated instances": "Получите сообщение с обзором всех деактивированных экземпляров",
|
|
151
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "Выберите день (дни), когда вы хотите получить обзор деактивированных экземпляров:",
|
|
152
|
+
"User/Group key (optional)": "Ключ пользователя/группы (необязательно)",
|
|
153
|
+
"Choose your User/Group key for Pushmessage": "Выберите ключ пользователя/группы для Pushmessage"
|
|
146
154
|
}
|
|
@@ -142,5 +142,13 @@
|
|
|
142
142
|
"Error Time for Instances": "Час помилки для екземплярів",
|
|
143
143
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "Тут ви можете визначити час помилки кожного екземпляра. Стандартне значення - 20 секунд.",
|
|
144
144
|
"Choose which instances should have a longer downtime": "Виберіть, які екземпляри повинні мати довший час простою",
|
|
145
|
-
"Time in seconds": "Час у секундах"
|
|
145
|
+
"Time in seconds": "Час у секундах",
|
|
146
|
+
"Choose your API/KEY Token for Pushmessage": "Виберіть маркер API/KEY для Pushmessage",
|
|
147
|
+
"Instance deactivated message": "Повідомлення про деактивацію екземпляра",
|
|
148
|
+
"Receive a message when an instance is deactivated": "Отримувати повідомлення, коли примірник дезактивовано",
|
|
149
|
+
"Overview of deactivated instances": "Огляд деактивованих примірників",
|
|
150
|
+
"Get a message with an overview of all deactivated instances": "Отримайте повідомлення з оглядом усіх дезактивованих екземплярів",
|
|
151
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "Виберіть день (дні), коли ви хочете отримати огляд дезактивованих екземплярів:",
|
|
152
|
+
"User/Group key (optional)": "Ключ користувача/групи (необов'язково)",
|
|
153
|
+
"Choose your User/Group key for Pushmessage": "Виберіть ключ користувача/групи для Pushmessage"
|
|
146
154
|
}
|
|
@@ -142,5 +142,13 @@
|
|
|
142
142
|
"Error Time for Instances": "实例的错误时间",
|
|
143
143
|
"Here you can define the error time of each instance. The standard value is 20 seconds.": "您可以在此处定义每个实例的错误时间。标准值为 20 秒。",
|
|
144
144
|
"Choose which instances should have a longer downtime": "选择哪些实例应该有更长的停机时间",
|
|
145
|
-
"Time in seconds": "时间以秒为单位"
|
|
145
|
+
"Time in seconds": "时间以秒为单位",
|
|
146
|
+
"Choose your API/KEY Token for Pushmessage": "为推送消息选择您的 API/KEY 令牌",
|
|
147
|
+
"Instance deactivated message": "实例停用消息",
|
|
148
|
+
"Receive a message when an instance is deactivated": "实例停用时接收消息",
|
|
149
|
+
"Overview of deactivated instances": "停用实例概览",
|
|
150
|
+
"Get a message with an overview of all deactivated instances": "获取包含所有已停用实例概览的消息",
|
|
151
|
+
"Choose the day(s) where you want to get the overview of deactivated instances:": "选择您希望获得已停用实例概览的日期:",
|
|
152
|
+
"User/Group key (optional)": "用户/组密钥(可选)",
|
|
153
|
+
"Choose your User/Group key for Pushmessage": "为推送消息选择您的用户/组密钥"
|
|
146
154
|
}
|
package/admin/jsonConfig.json
CHANGED
|
@@ -51,6 +51,13 @@
|
|
|
51
51
|
"lg": 3,
|
|
52
52
|
"label": "Deconz"
|
|
53
53
|
},
|
|
54
|
+
"ecovacsdeebotDevices": {
|
|
55
|
+
"type": "checkbox",
|
|
56
|
+
"sm": 6,
|
|
57
|
+
"md": 6,
|
|
58
|
+
"lg": 3,
|
|
59
|
+
"label": "Ecovacs-Deebot"
|
|
60
|
+
},
|
|
54
61
|
"enoceanDevices": {
|
|
55
62
|
"type": "checkbox",
|
|
56
63
|
"sm": 6,
|
|
@@ -170,6 +177,13 @@
|
|
|
170
177
|
"lg": 3,
|
|
171
178
|
"label": "Jeelink"
|
|
172
179
|
},
|
|
180
|
+
"loqedSmartLockDevices": {
|
|
181
|
+
"type": "checkbox",
|
|
182
|
+
"sm": 6,
|
|
183
|
+
"md": 6,
|
|
184
|
+
"lg": 3,
|
|
185
|
+
"label": "Loqed Smart Lock"
|
|
186
|
+
},
|
|
173
187
|
"lupusecDevices": {
|
|
174
188
|
"type": "checkbox",
|
|
175
189
|
"sm": 6,
|
|
@@ -482,6 +496,102 @@
|
|
|
482
496
|
"hidden": "!data.checkAdapterInstances",
|
|
483
497
|
"hideOnlyControl": false
|
|
484
498
|
},
|
|
499
|
+
"checkSendInstanceDeactivatedMsg": {
|
|
500
|
+
"newLine": "true",
|
|
501
|
+
"type": "checkbox",
|
|
502
|
+
"sm": 12,
|
|
503
|
+
"md": 12,
|
|
504
|
+
"lg": 6,
|
|
505
|
+
"label": "Instance deactivated message",
|
|
506
|
+
"help": "Receive a message when an instance is deactivated",
|
|
507
|
+
"hidden": "!data.checkAdapterInstances",
|
|
508
|
+
"hideOnlyControl": false
|
|
509
|
+
},
|
|
510
|
+
"checkSendInstanceDeactivatedDaily": {
|
|
511
|
+
"type": "checkbox",
|
|
512
|
+
"sm": 12,
|
|
513
|
+
"md": 12,
|
|
514
|
+
"lg": 6,
|
|
515
|
+
"label": "Overview of deactivated instances",
|
|
516
|
+
"help": "Get a message with an overview of all deactivated instances",
|
|
517
|
+
"hidden": "!data.checkAdapterInstances",
|
|
518
|
+
"hideOnlyControl": false
|
|
519
|
+
},
|
|
520
|
+
"_sendIntervallInstanceDeactivatedDay": {
|
|
521
|
+
"newLine": true,
|
|
522
|
+
"sm": 12,
|
|
523
|
+
"md": 12,
|
|
524
|
+
"lg": 6,
|
|
525
|
+
"hidden": "!data.checkSendInstanceDeactivatedDaily",
|
|
526
|
+
"hideOnlyControl": false,
|
|
527
|
+
"items": {
|
|
528
|
+
"_textDays": {
|
|
529
|
+
"type": "staticText",
|
|
530
|
+
"text": "Choose the day(s) where you want to get the overview of deactivated instances:",
|
|
531
|
+
"style": {
|
|
532
|
+
"fontSize": 16,
|
|
533
|
+
"marginTop": 20
|
|
534
|
+
}
|
|
535
|
+
},
|
|
536
|
+
"checkInstanceDeactivatedMonday": {
|
|
537
|
+
"newLine": true,
|
|
538
|
+
"type": "checkbox",
|
|
539
|
+
"label": "Mon"
|
|
540
|
+
},
|
|
541
|
+
"checkInstanceDeactivatedTuesday": {
|
|
542
|
+
"type": "checkbox",
|
|
543
|
+
"label": "Tue"
|
|
544
|
+
},
|
|
545
|
+
"checkInstanceDeactivatedWednesday": {
|
|
546
|
+
"type": "checkbox",
|
|
547
|
+
"label": "Wed"
|
|
548
|
+
},
|
|
549
|
+
"checkInstanceDeactivatedThursday": {
|
|
550
|
+
"type": "checkbox",
|
|
551
|
+
"label": "Thu"
|
|
552
|
+
},
|
|
553
|
+
"checkInstanceDeactivatedFriday": {
|
|
554
|
+
"type": "checkbox",
|
|
555
|
+
"label": "Fri"
|
|
556
|
+
},
|
|
557
|
+
"checkInstanceDeactivatedSaturday": {
|
|
558
|
+
"type": "checkbox",
|
|
559
|
+
"label": "Sat"
|
|
560
|
+
},
|
|
561
|
+
"checkInstanceDeactivatedSunday": {
|
|
562
|
+
"type": "checkbox",
|
|
563
|
+
"label": "Sun"
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
},
|
|
567
|
+
"_sendIntervallInstanceDeactivatedMsgTime": {
|
|
568
|
+
"sm": 12,
|
|
569
|
+
"md": 12,
|
|
570
|
+
"lg": 6,
|
|
571
|
+
"hidden": "!data.checkSendInstanceDeactivatedDaily",
|
|
572
|
+
"hideOnlyControl": false,
|
|
573
|
+
"items": {
|
|
574
|
+
"_textTime": {
|
|
575
|
+
"type": "staticText",
|
|
576
|
+
"text": "Choose the Time:",
|
|
577
|
+
"style": {
|
|
578
|
+
"fontSize": 16,
|
|
579
|
+
"marginTop": 20
|
|
580
|
+
}
|
|
581
|
+
},
|
|
582
|
+
"checkSendInstanceDeactivatedTime": {
|
|
583
|
+
"newLine": true,
|
|
584
|
+
"type": "text",
|
|
585
|
+
"help": "Format hh:mm"
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
},
|
|
589
|
+
"trennerInstanceDeactivated": {
|
|
590
|
+
"newLine": true,
|
|
591
|
+
"type": "divider",
|
|
592
|
+
"hidden": "!data.checkAdapterInstances",
|
|
593
|
+
"hideOnlyControl": false
|
|
594
|
+
},
|
|
485
595
|
"checkSendInstanceFailedMsg": {
|
|
486
596
|
"newLine": "true",
|
|
487
597
|
"type": "checkbox",
|
|
@@ -1056,6 +1166,16 @@
|
|
|
1056
1166
|
"hidden": "data.msgService !== 'pushover' && !data.instancePushover",
|
|
1057
1167
|
"hideOnlyControl": false
|
|
1058
1168
|
},
|
|
1169
|
+
"userPushover": {
|
|
1170
|
+
"type": "text",
|
|
1171
|
+
"sm": 12,
|
|
1172
|
+
"md": 4,
|
|
1173
|
+
"lg": 4,
|
|
1174
|
+
"label": "User/Group key (optional)",
|
|
1175
|
+
"help": "Choose your User/Group key for Pushmessage",
|
|
1176
|
+
"hidden": "data.msgService !== 'pushover' && !data.instancePushover",
|
|
1177
|
+
"hideOnlyControl": false
|
|
1178
|
+
},
|
|
1059
1179
|
"devicePushover": {
|
|
1060
1180
|
"type": "text",
|
|
1061
1181
|
"sm": 12,
|
|
@@ -1523,6 +1643,18 @@
|
|
|
1523
1643
|
"hidden": "!data.deconzDevices",
|
|
1524
1644
|
"hideOnlyControl": false
|
|
1525
1645
|
},
|
|
1646
|
+
"ecovacsdeebotMaxMinutes": {
|
|
1647
|
+
"type": "number",
|
|
1648
|
+
"min": -1,
|
|
1649
|
+
"max": 100000,
|
|
1650
|
+
"sm": 6,
|
|
1651
|
+
"md": 6,
|
|
1652
|
+
"lg": 3,
|
|
1653
|
+
"label": "Ecovacs-Deebot",
|
|
1654
|
+
"help": "in minutes",
|
|
1655
|
+
"hidden": "!data.ecovacsdeebotDevices",
|
|
1656
|
+
"hideOnlyControl": false
|
|
1657
|
+
},
|
|
1526
1658
|
"enoceanMaxMinutes": {
|
|
1527
1659
|
"type": "number",
|
|
1528
1660
|
"min": 1,
|
|
@@ -1727,6 +1859,18 @@
|
|
|
1727
1859
|
"hidden": "!data.jeelinkDevices",
|
|
1728
1860
|
"hideOnlyControl": false
|
|
1729
1861
|
},
|
|
1862
|
+
"loqedSmartLockMaxMinutes": {
|
|
1863
|
+
"type": "number",
|
|
1864
|
+
"min": -1,
|
|
1865
|
+
"max": 100000,
|
|
1866
|
+
"sm": 6,
|
|
1867
|
+
"md": 6,
|
|
1868
|
+
"lg": 3,
|
|
1869
|
+
"label": "Loqed Smart Lock",
|
|
1870
|
+
"help": "in minutes",
|
|
1871
|
+
"hidden": "!data.loqedSmartLockDevices",
|
|
1872
|
+
"hideOnlyControl": false
|
|
1873
|
+
},
|
|
1730
1874
|
"lupusecMaxMinutes": {
|
|
1731
1875
|
"type": "number",
|
|
1732
1876
|
"min": -1,
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "device-watcher",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.8.0",
|
|
5
5
|
"news": {
|
|
6
|
+
"2.8.0": {
|
|
7
|
+
"en": "Added: Support for LOQED Smart Lock\nAdded: Option to add user/group api key for Pushover\nAdded: Option to send notification if an instance was stopped\nAdded: Option to send shedule notifications with overview of stopped instances\nFixed: Issue if notifications was send of stopped instance but the option wasn't choosen\nFixed: Ignore battery values 0% if they were not smaller than 5% before",
|
|
8
|
+
"de": "Hinzugefügt: Unterstützung für LOQED Smart Lock\nHinzugefügt: Option zum Hinzufügen von Benutzer/Gruppen Api-Key für Pushover\nHinzugefügt: Option, um Benachrichtigung zu senden, wenn eine Instanz gestoppt wurde\nHinzugefügt: Option, um shedule Benachrichtigungen mit Überblick über gestoppte Instanzen zu senden\nFixed: Wenn Meldungen von einer gestoppten Instanz gesendet wurde, obwohl die Option nicht gewählt war\nFixed: Batteriewerte 0% ignorieren, wenn sie nicht kleiner als 5% vorher war",
|
|
9
|
+
"ru": "Добавлена: Поддержка LOQED Smart Lock\nДобавлена: Возможность добавления ключа пользователя/группы для Pushover\nДобавлена: Возможность отправки уведомления, если экземпляр был остановлен\nДобавлена: Возможность отправки уведомлений о прокладке с обзором остановленных экземпляров\nИсправлено: Проблема, если уведомления были отправлены с остановленным экземпляром, но вариант не был выбран\nИсправлено: Игнорировать значения батареи 0%, если они не были меньше 5% до",
|
|
10
|
+
"pt": "Adicionado: Suporte para bloqueio inteligente LOQED\nAdicionado: Opção para adicionar usuário / grupo api chave para Pushover\nAdicionado: Opção para enviar notificação se uma instância foi parada\nAdicionado: Opção para enviar notificações shedule com visão geral de instâncias paradas\nCorrigido: Emitir se as notificações foram enviadas de instância parada, mas a opção não foi escolhida\nCorrigido: Ignorar os valores da bateria 0 %s e não forem menores que 5% antes",
|
|
11
|
+
"nl": "Vertaling:\nOptie om gebruiker/group api sleutel toe te voegen voor Pushover\nOptie om een bericht te sturen als er een voorbeeld is gestopt\nOptie om Shedule-informatie te sturen met overzicht van gestopte instanties\nIssue of de inlichtingen verstuurd werden van gestopte instantie maar de optie werd niet gekozen\nIgnore batterijwaarden 0% als ze niet kleiner waren dan 5% eerder",
|
|
12
|
+
"fr": "Ajouté : Support pour la serrure intelligente LOQED\nAjouté: Option pour ajouter la clé api utilisateur/groupe pour Pushover\nAjouté: Option pour envoyer une notification si une instance a été arrêtée\nAjouté: Option pour envoyer des notifications de shedule avec aperçu des instances arrêtées\nCorrection : Question si les notifications ont été envoyées de l'instance arrêtée, mais l'option n'a pas été choisie\nFixe: Ignore les valeurs de la batterie 0 %s i elles n'étaient pas inférieures à 5% avant",
|
|
13
|
+
"it": "Aggiunto: Supporto per LOQED Smart Lock\nAggiunto: Opzione per aggiungere utente / gruppo api chiave per Pushover\nAggiunto: Opzione per inviare la notifica se un'istanza è stata fermata\nAggiunto: Opzione per inviare notifiche capannone con panoramica di istanze interrotte\nRisolto: Problema se le notifiche sono state inviate di istanza bloccata ma l'opzione non è stata scelta\nFisso: ignorare i valori della batteria 0 %s e non erano più piccoli del 5% prima",
|
|
14
|
+
"es": "Añadido: Soporte para bloqueo inteligente LOQED\nAñadido: Opción para añadir clave de usuario/grupo api para Pushover\nAñadido: Opción de enviar notificación si se detuvo una instancia\nAñadido: Option to send shedule notifications with overview of stopped instances\nCorregido: Edición si las notificaciones se envían de instancia parada pero la opción no fue elegida\nFijo: Ignorar los valores de la batería 0 %s i no eran menores de 5% antes",
|
|
15
|
+
"pl": "Added: wsparcie dla LOQED Smart Lock\nAdded: Option to add user/group api key\nAdded: Option, aby wysłać powiadomienie, czy instancja została zatrzymana\nAdded: Option to send castule notification with overview of a zatrzymane instancje\nFixed: Wydanie, jeśli powiadomienia zostały wysłane z przerwy, ale opcja nie została wybrana\nFixed: Ignore akumulatory 0%, jeśli nie były one mniejsze niż 5% przed rozpoczęciem budowy",
|
|
16
|
+
"uk": "Доданий: Підтримка LOQED Смарт блокування\nДодано: Параметри, щоб додати ключ користувача / групи Api для Pushover\nДоданий: Опція надсилати повідомлення, якщо було припинено\nДодано: Опція для відправки повідомлень про скидання з оглядом припинених екземплярів\nВиправлено: Питання, якщо повідомлення було відправлено припинено, але варіант не був обраний\nВиправлено: значення Ignore батареї 0%, якщо вони не менше 5% до",
|
|
17
|
+
"zh-cn": "增加:支持LOQED Smart Lock\n增 编:增加用户/集群的备选办法\n增加:如果某一例子被停止,可发出通知。\n增 编:发出简写通知,概述停止事件\nIxed:如果发出通知被阻止,但选择是选择的。\n固定:Ignore电池数值.0%"
|
|
18
|
+
},
|
|
19
|
+
"2.7.1": {
|
|
20
|
+
"en": "Added: Support for Ecovacs-Deebot\nUpdated: Dependencies\nImprovements: Small fixes",
|
|
21
|
+
"de": "Hinzugefügt: Unterstützung für Ecovacs-Deebot\nAktualisiert: Abhängigkeiten\nVerbesserungen: Kleine Verbesserungen",
|
|
22
|
+
"ru": "Добавлена: Поддержка Ecovacs-Deebot\nОбновлено: зависимости\nУлучшения: Небольшие исправления",
|
|
23
|
+
"pt": "Adicionado: Suporte para Ecovacs-Deebot\nAtualizado: Dependências\nMelhorias: Pequenas correções",
|
|
24
|
+
"nl": "Vertaling:\nOpgepast\nImprovementen: Kleine fixes",
|
|
25
|
+
"fr": "Ajouté: Soutien à Ecovacs-Deebot\nActualisé : dépenses\nAméliorations : Petites corrections",
|
|
26
|
+
"it": "Aggiunto: Supporto per Ecovacs-Deebot\nAggiornato: Dipendenze\nMiglioramenti: Piccole correzioni",
|
|
27
|
+
"es": "Añadido: Apoyo para Ecovacs-Deebot\nActualizado: Dependencias\nMejoras: Arreglos pequeños",
|
|
28
|
+
"pl": "Wsparcie dla Ecovac-Deebota\nZastrzeżenie: Zależność\nPoprawa: drobne rozwiązanie",
|
|
29
|
+
"uk": "Додано: Підтримка Ecovacs-Deebot\nОновлено: Залежності\nУдосконалення: Маленькі кріплення",
|
|
30
|
+
"zh-cn": "增加:支持Ecovacs-Deebot\n更新:属地\n改进: 小型配件"
|
|
31
|
+
},
|
|
6
32
|
"2.7.0": {
|
|
7
33
|
"en": "Added: Fully-MQTT\nAdded: Notification Service Matrix\nAdded: List and number of active instances\nAdded: HTML lists for instances/adapters\nAdded: HM-RPC device update pending datapoint\nAdded: User can define reporting time for error instances\nFixed: Send notification about adapter updates only if there are new ones\nImprovements: Hide notification services only if no instance is choosen\nImprovements: Some small code changes to avoid error messages",
|
|
8
34
|
"de": "Hinzugefügt: Fully-MQTT\nHinzugefügt: Notification Service Matrix\nHinzugefügt: Liste und Anzahl der aktiven Instanzen\nHinzugefügt: HTML-Listen für Instanzen/Adapter\nHinzugefügt: HM-RPC Geräteupdate Datenpunkt\nHinzugefügt: Benutzer kann Berichtszeit für Fehlerinstanzen definieren\nBehoben: Sende Benachrichtigung über Adapter-Updates nur, wenn es neue gibt\nVerbesserungen: Ausblenden von Benachrichtigungsdiensten nur, wenn keine Instanz davon gewählt wurde\nVerbesserungen: Einige kleine Codeänderungen, um Fehlermeldungen zu vermeiden",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "wysyłanie notyfikacji online i offline tylko wtedy, gdy połączenie z urządzeniem (zigbee stick etc.) jest dłuższe, wtedy kilka sekund. W razie potrzeby zapobiegać wielokrotnym wiadomościom w wyniku udaru\nzastrzeżenie, że wszystkie urządzenia zostały wymienione, mimo że wybrano tylko urządzenia fałszerskie",
|
|
68
94
|
"uk": "надсилайте онлайн і офлайн повідомлення тільки, якщо підключення до пристрою (зигніть палицю і т.д.) довший час, потім кілька секунд. Не допустити декількох повідомлень при інсульті\nвиправлено проблему, що всі пристрої були перераховані, хоча тільки пристрої баттері були вибрані",
|
|
69
95
|
"zh-cn": "只发出在线和线外通知,如果与装置(zigbee stick等)的联系较短。 如果能防止在场上的多条信息。\n尽管只选定电池器,但所有装置都列入了固定问题。"
|
|
70
|
-
},
|
|
71
|
-
"2.4.0": {
|
|
72
|
-
"en": "make onStateChanges only, when device instance is alive\nHomeconnect and Smartgarden Adapter added",
|
|
73
|
-
"de": "auf der Karte Änderungen nur, wenn Geräteinstanz lebendig ist\nHomeconnect und Smartgarden Adapter hinzugefügt",
|
|
74
|
-
"ru": "сделать onState Только изменения, когда экземпляр устройства жив\nHomeconnect и Smartgarden адаптер добавлен",
|
|
75
|
-
"pt": "make onState Alterações apenas, quando a instância do dispositivo está viva\nHomeconnect e Smartgarden Adapter adicionado",
|
|
76
|
-
"nl": "maak opState Verandert alleen, wanneer apparaat in leven is\nHomeconnect and Smartgarden Adapter toegevoegd",
|
|
77
|
-
"fr": "make onState Changements seulement, lorsque l'instance de périphérique est vivante\nAdaptateur Homeconnect et Smartgarden ajouté",
|
|
78
|
-
"it": "fare suState Modifiche solo, quando l'istanza del dispositivo è viva\nHomeconnect e adattatore Smartgarden aggiunto",
|
|
79
|
-
"es": "estado Cambios solamente, cuando la instancia del dispositivo está viva\nAdaptador Homeconnect y Smartgarden añadido",
|
|
80
|
-
"pl": "robić na State Zmiany są tylko wtedy, gdy instancja urządzenia jest żywa\nStrona internetowa firmy Smartgarden",
|
|
81
|
-
"uk": "зробити onState Зміни тільки, коли пристрій є живим\nHomeconnect і Smartgarden адаптер додано",
|
|
82
|
-
"zh-cn": "国家 仅发生变化,当装置是活性的。\n家庭联系和Smartgarden Adapter"
|
|
83
|
-
},
|
|
84
|
-
"2.3.1": {
|
|
85
|
-
"en": "changed HMRPC lowbat to lowbat_alarm\nchanged HMRPC unreach to unreach_alarm\nfixed nuki mqtt selector\nadded shelly charge datapoint to identify battery devices better\nfixed lowbat issues\nadded lowbat support for HMRPC: HM-CC-RT-DN\nadded additionally timeSelector for each adapter for better support",
|
|
86
|
-
"de": "hMRPC lowbat zu lowbat_alarm\nhMRPC unreach to unreach_alarm\nfeste nuki mqt selektion\nhinzugefügt shelly-ladedatenpunkt, um batteriegeräte besser zu identifizieren\nfeste lowbat-probleme\nzusätzliche Lowbat-Unterstützung für HMRPC: HM-CC-RT-DN\nzusätzliche ZeitSelector für jeden Adapter für bessere Unterstützung",
|
|
87
|
-
"ru": "изменено HMRPC lowbat на lowbat_alarm\nизменил HMRPC unreach к unreach_alarm\nфиксированный нуки mqtt selector\nдобавлена точка заряда оболочки, чтобы определить устройства батареи лучше\nфиксированные низкобатные вопросы\nдобавлена поддержка lowbat для HMRPC: HM-CC-RT-DN\nдобавлено дополнительно timeSelector для каждого адаптера для лучшей поддержки",
|
|
88
|
-
"pt": "mudou HMRPC lowbat para lowbat_alarm\nmudou HMRPC unreach para unreach_alarm\nseletor nuki mqtt fixo\nadicionado shelly carregar datapoint para identificar dispositivos de bateria melhor\nproblemas fixos\nsuporte adicional de lowbat para HMRPC: HM-CC-RT-DN\nadicionado adicionalmente tempoSeletor para cada adaptador para melhor suporte",
|
|
89
|
-
"nl": "veranderde HMRPC laagbat om te zakken\nveranderde HMRPC onbereikbaar om te ontrafelen\nvertaling:\nvoegde toegevoegde lading datapoint toe om accu apparatuur te identificeren\ngerepareerde lage problemen\nhM-C-RTN\nvoeg extra tijdsversneller toe voor elke adapter voor betere steun",
|
|
90
|
-
"fr": "changement de HMRPC basbat to lowbat_alarm\nchangé HMRPC unreach to unreach_alarm\nsélecteur fixe nuki mqt\nle point de données de charge shelly ajouté pour identifier les appareils de batterie mieux\nquestions de bas niveau\nsupport de faible teneur pour HMRPC: HM-CC-RT-DN\nsupplémentaire timeSelector pour chaque adaptateur pour un meilleur support",
|
|
91
|
-
"it": "cambiato HMRPC lowbat a lowbat_alarm\ncambiato HMRPC unreach a unreach_alarm\nselettore fisso nuki mqtt\naggiunto shelly carica datapoint per identificare meglio i dispositivi della batteria\nproblemi fissi a bassa pressione\nsupporto per HMRPC: HM-CC-RT-DN\naggiunto anche tempoSelettore per ogni adattatore per un miglior supporto",
|
|
92
|
-
"es": "cambio HMRPC bajobat a lowbat_alarm\ncambió HMRPC sin llegar a unreach_alarm\nfija nuki mqtt selector\nañadir datos de carga total para identificar dispositivos de batería mejor\ncuestiones fijas de baja reducción\nagregado soporte de bajavo para HMRPC: HM-CC-RT-DN\nañadido tiempoSeleccionador para cada adaptador para un mejor soporte",
|
|
93
|
-
"pl": "zmienił niskobudżetowy słupek HMRPC\nzmienił HMRPC nieodwracany\nnuki mqtt selektor\ndodany punkt ładowania sygnału do identyfikowania urządzeń baterii znacznie lepszy\nniskobata\nwsparcie dla HMRPC: HM-CC-RT-DN\ndodano dodatkowy czas dla każdego adaptera dla lepszego wsparcia",
|
|
94
|
-
"uk": "змінив HMRPC низькобажан до низької bat_alarm\nзмінив HMRPC unreach_alarm\nфіксований nuki mqtt selector\nдодана точка заряду оболонки для виявлення пристроїв акумулятора краще\nвиправлені проблеми з низькою вагою\nhM-CC-RT-DN\nдодано додатково часСелектор для кожного адаптера для кращої підтримки",
|
|
95
|
-
"zh-cn": "mR 低巴\nb. MRPC Unach的改变\n固定微基米特选\n增拨的炮击数据点,以查明电池装置,改善\n固定的低巴特问题\n减少对影响方案的支持:HM-CC-DNRT-DN\n每个适应者增加更多时间,以更好地支助"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
|
@@ -208,6 +208,8 @@
|
|
|
208
208
|
"bleMaxMinutes": 300,
|
|
209
209
|
"deconzDevices": false,
|
|
210
210
|
"deconzMaxMinutes": 0,
|
|
211
|
+
"ecovacsdeebotDevices": false,
|
|
212
|
+
"ecovacsdeebotMaxMinutes": 0,
|
|
211
213
|
"enoceanDevices": false,
|
|
212
214
|
"enoceanMaxMinutes": 300,
|
|
213
215
|
"esphomeDevices": false,
|
|
@@ -240,6 +242,8 @@
|
|
|
240
242
|
"hueextMaxMinutes": 0,
|
|
241
243
|
"innogyDevices": false,
|
|
242
244
|
"innogyMaxMinutes": 0,
|
|
245
|
+
"loqedSmartLockDevices": false,
|
|
246
|
+
"loqedSmartLockMaxMinutes": 0,
|
|
243
247
|
"jeelinkDevices": false,
|
|
244
248
|
"jeelinkMaxMinutes": 300,
|
|
245
249
|
"lupusecDevices": false,
|
|
@@ -329,6 +333,7 @@
|
|
|
329
333
|
"titlePushover": "",
|
|
330
334
|
"devicePushover": "",
|
|
331
335
|
"prioPushover": "",
|
|
336
|
+
"userPushover": "",
|
|
332
337
|
"instanceEmail": "",
|
|
333
338
|
"subjectEmail": "",
|
|
334
339
|
"sendToEmail": "",
|
|
@@ -374,6 +379,16 @@
|
|
|
374
379
|
"checkAdapterUpdateFriday": false,
|
|
375
380
|
"checkAdapterUpdateSaturday": false,
|
|
376
381
|
"checkAdapterUpdateSunday": false,
|
|
382
|
+
"checkSendInstanceDeactivatedMsg": false,
|
|
383
|
+
"checkSendInstanceDeactivatedDaily": false,
|
|
384
|
+
"checkInstanceDeactivatedMonday": false,
|
|
385
|
+
"checkInstanceDeactivatedTuesday": false,
|
|
386
|
+
"checkInstanceDeactivatedWednesday": false,
|
|
387
|
+
"checkInstanceDeactivatedThursday": false,
|
|
388
|
+
"checkInstanceDeactivatedFriday": false,
|
|
389
|
+
"checkInstanceDeactivatedSaturday": false,
|
|
390
|
+
"checkInstanceDeactivatedSunday": false,
|
|
391
|
+
"checkSendInstanceDeactivatedTime": "12:20",
|
|
377
392
|
"checkSendInstanceFailedMsg": false,
|
|
378
393
|
"checkSendInstanceFailedDaily": false,
|
|
379
394
|
"checkFailedInstancesMonday": false,
|
package/lib/arrApart.js
CHANGED
|
@@ -67,6 +67,18 @@ const arrApart = {
|
|
|
67
67
|
reach: '.reachable',
|
|
68
68
|
isLowBat: 'none',
|
|
69
69
|
},
|
|
70
|
+
ecovacsdeebot: {
|
|
71
|
+
Selektor: 'ecovacs-deebot.*.connection',
|
|
72
|
+
timeSelector: '.connection',
|
|
73
|
+
adapterID: 'ecovacsdeebot',
|
|
74
|
+
adapter: 'Ecovacs-Deebot',
|
|
75
|
+
rssiState: '.network.wifiSignal',
|
|
76
|
+
battery: '.battery',
|
|
77
|
+
reach: '.connection',
|
|
78
|
+
isLowBat: 'none',
|
|
79
|
+
id: '.deviceName',
|
|
80
|
+
upgrade: 'none',
|
|
81
|
+
},
|
|
70
82
|
enocean: {
|
|
71
83
|
Selektor: 'enocean.*.rssi',
|
|
72
84
|
timeSelector: '.rssi',
|
|
@@ -246,6 +258,16 @@ const arrApart = {
|
|
|
246
258
|
reach: 'none',
|
|
247
259
|
isLowBat: '.lowBatt',
|
|
248
260
|
},
|
|
261
|
+
loqedSmartLock: {
|
|
262
|
+
Selektor: 'loqed.*.connection',
|
|
263
|
+
timeSelector: '.lockStatus.batteryPercentage',
|
|
264
|
+
adapterID: 'loqedSmartLock',
|
|
265
|
+
adapter: 'Loqed Smart Lock',
|
|
266
|
+
battery: '.lockStatus.batteryPercentage',
|
|
267
|
+
rssiState: 'none',
|
|
268
|
+
reach: '.connection',
|
|
269
|
+
isLowBat: '.lowBatt',
|
|
270
|
+
},
|
|
249
271
|
lupusec: {
|
|
250
272
|
Selektor: 'lupusec.*.cond_ok',
|
|
251
273
|
timeSelector: '.cond_ok',
|
package/main.js
CHANGED
|
@@ -109,6 +109,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
109
109
|
apcups: this.config.apcupsDevices,
|
|
110
110
|
ble: this.config.bleDevices,
|
|
111
111
|
deconz: this.config.deconzDevices,
|
|
112
|
+
ecovacsdeebot: this.config.ecovacsdeebotDevices,
|
|
112
113
|
enocean: this.config.enoceanDevices,
|
|
113
114
|
esphome: this.config.esphomeDevices,
|
|
114
115
|
eusec: this.config.eusecDevices,
|
|
@@ -126,6 +127,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
126
127
|
hueExt: this.config.hueExtDevices,
|
|
127
128
|
innogy: this.config.innogyDevices,
|
|
128
129
|
jeelink: this.config.jeelinkDevices,
|
|
130
|
+
loqedSmartLock: this.config.loqedSmartLockDevices,
|
|
129
131
|
lupusec: this.config.lupusecDevices,
|
|
130
132
|
maxcube: this.config.maxcubeDevices,
|
|
131
133
|
meross: this.config.merossDevices,
|
|
@@ -163,6 +165,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
163
165
|
apcups: this.config.apcupsMaxMinutes,
|
|
164
166
|
ble: this.config.bleMaxMinutes,
|
|
165
167
|
deconz: this.config.deconzMaxMinutes,
|
|
168
|
+
ecovacsdeebot: this.config.ecovacsdeebotMaxMinutes,
|
|
166
169
|
enocean: this.config.enoceanMaxMinutes,
|
|
167
170
|
esphome: this.config.esphomeMaxMinutes,
|
|
168
171
|
eusec: this.config.eusecMaxMinutes,
|
|
@@ -180,6 +183,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
180
183
|
hueExt: this.config.hueextMaxMinutes,
|
|
181
184
|
innogy: this.config.innogyMaxMinutes,
|
|
182
185
|
jeelink: this.config.jeelinkMaxMinutes,
|
|
186
|
+
loqedSmartLock: this.config.loqedSmartLockMaxMinutes,
|
|
183
187
|
lupusec: this.config.lupusecMaxMinutes,
|
|
184
188
|
maxcube: this.config.maxcubeMaxMinutes,
|
|
185
189
|
meross: this.config.merossMaxMinutes,
|
|
@@ -300,6 +304,9 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
300
304
|
// send overview of updatable adapters
|
|
301
305
|
if (this.config.checkSendAdapterUpdateMsgDaily) this.sendScheduleNotifications('updateAdapter');
|
|
302
306
|
|
|
307
|
+
// send overview of deactivated instances
|
|
308
|
+
if (this.config.checkSendInstanceDeactivatedDaily) this.sendScheduleNotifications('deactivatedInstance');
|
|
309
|
+
|
|
303
310
|
// send overview of instances with error
|
|
304
311
|
if (this.config.checkSendInstanceFailedDaily) this.sendScheduleNotifications('errorInstance');
|
|
305
312
|
} catch (error) {
|
|
@@ -377,6 +384,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
377
384
|
let oldAdapterUpdatesCounts;
|
|
378
385
|
|
|
379
386
|
try {
|
|
387
|
+
// adapter updates
|
|
380
388
|
if (id.endsWith('updatesJson')) {
|
|
381
389
|
oldAdapterUpdatesCounts = this.countAdapterUpdates;
|
|
382
390
|
await this.getAdapterUpdateData(id);
|
|
@@ -395,8 +403,10 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
395
403
|
}
|
|
396
404
|
}
|
|
397
405
|
|
|
406
|
+
// instances
|
|
398
407
|
for (const [instance, instanceData] of this.listInstanceRaw) {
|
|
399
408
|
switch (id) {
|
|
409
|
+
// instance alive
|
|
400
410
|
case instanceData.instanceAlivePath:
|
|
401
411
|
if (state.val !== instanceData.isAlive) {
|
|
402
412
|
instanceStatusRaw = await this.setInstanceStatus(
|
|
@@ -410,7 +420,13 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
410
420
|
instanceData.status = instanceStatusRaw[0];
|
|
411
421
|
instanceData.isHealthy = instanceStatusRaw[2];
|
|
412
422
|
}
|
|
423
|
+
if (this.config.checkSendInstanceDeactivatedMsg && !this.blacklistInstancesNotify.includes(instanceData.instanceAlivePath)) {
|
|
424
|
+
if (!instanceData.isHealthy) {
|
|
425
|
+
await this.sendStateNotifications('deactivatedInstance', instance);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
413
428
|
break;
|
|
429
|
+
// instance connected host
|
|
414
430
|
case instanceData.connectedHostPath:
|
|
415
431
|
oldInstanceHostState = instanceData.isConnectedHost;
|
|
416
432
|
instanceData.isConnectedHost = state.val;
|
|
@@ -434,6 +450,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
434
450
|
}
|
|
435
451
|
}
|
|
436
452
|
break;
|
|
453
|
+
// instance connected device
|
|
437
454
|
case instanceData.connectedDevicePath:
|
|
438
455
|
oldInstanceDeviceState = instanceData.isConnectedDevice;
|
|
439
456
|
instanceData.isConnectedDevice = state.val;
|
|
@@ -463,12 +480,14 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
463
480
|
for (const [device, deviceData] of this.listAllDevicesRaw) {
|
|
464
481
|
// On statechange update available datapoint
|
|
465
482
|
switch (id) {
|
|
483
|
+
// device connection
|
|
466
484
|
case deviceData.instanceDeviceConnectionDP:
|
|
467
485
|
if (state.val !== deviceData.instancedeviceConnected) {
|
|
468
486
|
deviceData.instancedeviceConnected = state.val;
|
|
469
487
|
}
|
|
470
488
|
break;
|
|
471
489
|
|
|
490
|
+
// device updates
|
|
472
491
|
case deviceData.UpdateDP:
|
|
473
492
|
if (state.val !== deviceData.Upgradable) {
|
|
474
493
|
deviceData.Upgradable = state.val;
|
|
@@ -480,15 +499,18 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
480
499
|
}
|
|
481
500
|
break;
|
|
482
501
|
|
|
502
|
+
// device signal
|
|
483
503
|
case deviceData.SignalStrengthDP:
|
|
484
504
|
signalData = await this.calculateSignalStrength(state, deviceData.adapterID);
|
|
485
505
|
deviceData.SignalStrength = signalData[0];
|
|
486
506
|
|
|
487
507
|
break;
|
|
488
508
|
|
|
509
|
+
// device battery
|
|
489
510
|
case deviceData.batteryDP:
|
|
490
511
|
if (deviceData.isBatteryDevice) {
|
|
491
512
|
oldLowBatState = deviceData.LowBat;
|
|
513
|
+
if (state.val === 0 && deviceData.BatteryRaw >= 5) continue;
|
|
492
514
|
batteryData = await this.getBatteryData(state.val, oldLowBatState, deviceData.faultReport, deviceData.adapterID);
|
|
493
515
|
|
|
494
516
|
deviceData.Battery = batteryData[0];
|
|
@@ -509,6 +531,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
509
531
|
}
|
|
510
532
|
break;
|
|
511
533
|
|
|
534
|
+
// device low bat
|
|
512
535
|
case deviceData.LowBatDP:
|
|
513
536
|
if (deviceData.isBatteryDevice) {
|
|
514
537
|
oldLowBatState = deviceData.LowBat;
|
|
@@ -526,6 +549,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
526
549
|
}
|
|
527
550
|
break;
|
|
528
551
|
|
|
552
|
+
//device error / fault reports
|
|
529
553
|
case deviceData.faultReportDP:
|
|
530
554
|
if (deviceData.isBatteryDevice) {
|
|
531
555
|
oldLowBatState = deviceData.LowBat;
|
|
@@ -544,6 +568,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
544
568
|
}
|
|
545
569
|
break;
|
|
546
570
|
|
|
571
|
+
// device unreach
|
|
547
572
|
case deviceData.UnreachDP:
|
|
548
573
|
oldStatus = deviceData.Status;
|
|
549
574
|
deviceData.UnreachState = await this.getInitValue(deviceData.UnreachDP);
|
|
@@ -850,7 +875,6 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
850
875
|
= get Instanz =
|
|
851
876
|
=============================================*/
|
|
852
877
|
const instance = id.slice(0, id.indexOf('.') + 2);
|
|
853
|
-
if (id.endsWith('.')) continue; // ! Test - sometimes id's are wrong or has no name so break up here.
|
|
854
878
|
|
|
855
879
|
const instanceDeviceConnectionDP = `${instance}.info.connection`;
|
|
856
880
|
const instancedeviceConnected = await this.getInitValue(instanceDeviceConnectionDP);
|
|
@@ -938,6 +962,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
938
962
|
case 'hueExt':
|
|
939
963
|
case 'mihomeVacuum':
|
|
940
964
|
case 'mqttNuki':
|
|
965
|
+
case 'loqedSmartLock':
|
|
941
966
|
deviceBatteryStateDP = shortCurrDeviceString + this.selAdapter[i].battery;
|
|
942
967
|
deviceBatteryState = await this.getInitValue(deviceBatteryStateDP);
|
|
943
968
|
if (deviceBatteryState === undefined) {
|
|
@@ -989,7 +1014,12 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
989
1014
|
let unreachDP = currDeviceString + this.selAdapter[i].reach;
|
|
990
1015
|
const deviceStateSelectorDP = shortCurrDeviceString + this.selAdapter[i].stateValue;
|
|
991
1016
|
const rssiPeerSelectorDP = currDeviceString + this.selAdapter[i].rssiPeerState;
|
|
992
|
-
|
|
1017
|
+
let timeSelector = currDeviceString + this.selAdapter[i].timeSelector;
|
|
1018
|
+
|
|
1019
|
+
const timeSelectorState = await this.getInitValue(timeSelector);
|
|
1020
|
+
if (timeSelectorState === undefined) {
|
|
1021
|
+
timeSelector = shortCurrDeviceString + this.selAdapter[i].timeSelector;
|
|
1022
|
+
}
|
|
993
1023
|
|
|
994
1024
|
let deviceUnreachState = await this.getInitValue(unreachDP);
|
|
995
1025
|
if (deviceUnreachState === undefined) {
|
|
@@ -1121,6 +1151,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
1121
1151
|
case 'nukiExt':
|
|
1122
1152
|
case 'wled':
|
|
1123
1153
|
case 'mqttNuki':
|
|
1154
|
+
case 'loqedSmartLock':
|
|
1124
1155
|
if (shortDeviceObject && typeof shortDeviceObject === 'object') {
|
|
1125
1156
|
deviceName = shortDeviceObject.common.name;
|
|
1126
1157
|
}
|
|
@@ -2151,7 +2182,11 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2151
2182
|
instanceStatusString = 'Instanz okay';
|
|
2152
2183
|
} else {
|
|
2153
2184
|
// 2/3 - after 15 seconds
|
|
2154
|
-
await this.
|
|
2185
|
+
await this.delay(instanceErrorTime);
|
|
2186
|
+
|
|
2187
|
+
isAlive = await this.getInitValue(instanceAlivePath);
|
|
2188
|
+
if (!isAlive) return ['Instanz deaktiviert', false, null]; // if instance is turned off
|
|
2189
|
+
|
|
2155
2190
|
isDeviceConnected = await this.getInitValue(isDeviceConnctedPath);
|
|
2156
2191
|
isHostConnected = await this.getInitValue(hostConnectedPath);
|
|
2157
2192
|
|
|
@@ -2160,7 +2195,11 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2160
2195
|
instanceStatusString = 'Instanz okay';
|
|
2161
2196
|
} else {
|
|
2162
2197
|
// 3/3 - after 30 seconds in total or user time setting
|
|
2163
|
-
await this.
|
|
2198
|
+
await this.delay(instanceErrorTime);
|
|
2199
|
+
|
|
2200
|
+
isAlive = await this.getInitValue(instanceAlivePath);
|
|
2201
|
+
if (!isAlive) return ['Instanz deaktiviert', false, null]; // if instance is turned off
|
|
2202
|
+
|
|
2164
2203
|
isDeviceConnected = await this.getInitValue(isDeviceConnctedPath);
|
|
2165
2204
|
isHostConnected = await this.getInitValue(hostConnectedPath);
|
|
2166
2205
|
|
|
@@ -2649,8 +2688,8 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2649
2688
|
*/
|
|
2650
2689
|
async sendNotification(text) {
|
|
2651
2690
|
// Pushover
|
|
2652
|
-
|
|
2653
|
-
|
|
2691
|
+
if (this.config.instancePushover) {
|
|
2692
|
+
try {
|
|
2654
2693
|
//first check if instance is living
|
|
2655
2694
|
const pushoverAliveState = await this.getInitValue('system.adapter.' + this.config.instancePushover + '.alive');
|
|
2656
2695
|
|
|
@@ -2661,17 +2700,18 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2661
2700
|
message: text,
|
|
2662
2701
|
title: this.config.titlePushover,
|
|
2663
2702
|
device: this.config.devicePushover,
|
|
2703
|
+
user: this.config.userPushover,
|
|
2664
2704
|
priority: this.config.prioPushover,
|
|
2665
2705
|
});
|
|
2666
2706
|
}
|
|
2707
|
+
} catch (error) {
|
|
2708
|
+
this.errorReporting('[sendNotification Pushover]', error);
|
|
2667
2709
|
}
|
|
2668
|
-
} catch (error) {
|
|
2669
|
-
this.errorReporting('[sendNotification Pushover]', error);
|
|
2670
2710
|
}
|
|
2671
2711
|
|
|
2672
2712
|
// Telegram
|
|
2673
|
-
|
|
2674
|
-
|
|
2713
|
+
if (this.config.instanceTelegram) {
|
|
2714
|
+
try {
|
|
2675
2715
|
//first check if instance is living
|
|
2676
2716
|
const telegramAliveState = await this.getInitValue('system.adapter.' + this.config.instanceTelegram + '.alive');
|
|
2677
2717
|
|
|
@@ -2684,14 +2724,14 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2684
2724
|
chatId: this.config.chatIdTelegram,
|
|
2685
2725
|
});
|
|
2686
2726
|
}
|
|
2727
|
+
} catch (error) {
|
|
2728
|
+
this.errorReporting('[sendNotification Telegram]', error);
|
|
2687
2729
|
}
|
|
2688
|
-
} catch (error) {
|
|
2689
|
-
this.errorReporting('[sendNotification Telegram]', error);
|
|
2690
2730
|
}
|
|
2691
2731
|
|
|
2692
2732
|
// Whatsapp
|
|
2693
|
-
|
|
2694
|
-
|
|
2733
|
+
if (this.config.instanceWhatsapp) {
|
|
2734
|
+
try {
|
|
2695
2735
|
//first check if instance is living
|
|
2696
2736
|
const whatsappAliveState = await this.getInitValue('system.adapter.' + this.config.instanceWhatsapp + '.alive');
|
|
2697
2737
|
|
|
@@ -2703,14 +2743,14 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2703
2743
|
phone: this.config.phoneWhatsapp,
|
|
2704
2744
|
});
|
|
2705
2745
|
}
|
|
2746
|
+
} catch (error) {
|
|
2747
|
+
this.errorReporting('[sendNotification Whatsapp]', error);
|
|
2706
2748
|
}
|
|
2707
|
-
} catch (error) {
|
|
2708
|
-
this.errorReporting('[sendNotification Whatsapp]', error);
|
|
2709
2749
|
}
|
|
2710
2750
|
|
|
2711
2751
|
// Matrix
|
|
2712
|
-
|
|
2713
|
-
|
|
2752
|
+
if (this.config.instanceMatrix) {
|
|
2753
|
+
try {
|
|
2714
2754
|
//first check if instance is living
|
|
2715
2755
|
const matrixAliveState = await this.getInitValue('system.adapter.' + this.config.instanceMatrix + '.alive');
|
|
2716
2756
|
|
|
@@ -2722,14 +2762,14 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2722
2762
|
text: text,
|
|
2723
2763
|
});
|
|
2724
2764
|
}
|
|
2765
|
+
} catch (error) {
|
|
2766
|
+
this.errorReporting('[sendNotification Matrix]', error);
|
|
2725
2767
|
}
|
|
2726
|
-
} catch (error) {
|
|
2727
|
-
this.errorReporting('[sendNotification Matrix]', error);
|
|
2728
2768
|
}
|
|
2729
2769
|
|
|
2730
2770
|
// Signal
|
|
2731
|
-
|
|
2732
|
-
|
|
2771
|
+
if (this.config.instanceSignal) {
|
|
2772
|
+
try {
|
|
2733
2773
|
//first check if instance is living
|
|
2734
2774
|
const signalAliveState = await this.getInitValue('system.adapter.' + this.config.instanceSignal + '.alive');
|
|
2735
2775
|
|
|
@@ -2741,14 +2781,14 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2741
2781
|
phone: this.config.phoneSignal,
|
|
2742
2782
|
});
|
|
2743
2783
|
}
|
|
2784
|
+
} catch (error) {
|
|
2785
|
+
this.errorReporting('[sendNotification Signal]', error);
|
|
2744
2786
|
}
|
|
2745
|
-
} catch (error) {
|
|
2746
|
-
this.errorReporting('[sendNotification Signal]', error);
|
|
2747
2787
|
}
|
|
2748
2788
|
|
|
2749
2789
|
// Email
|
|
2750
|
-
|
|
2751
|
-
|
|
2790
|
+
if (this.config.instanceEmail) {
|
|
2791
|
+
try {
|
|
2752
2792
|
//first check if instance is living
|
|
2753
2793
|
const eMailAliveState = await this.getInitValue('system.adapter.' + this.config.instanceEmail + '.alive');
|
|
2754
2794
|
|
|
@@ -2761,14 +2801,14 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2761
2801
|
subject: this.config.subjectEmail,
|
|
2762
2802
|
});
|
|
2763
2803
|
}
|
|
2804
|
+
} catch (error) {
|
|
2805
|
+
this.errorReporting('[sendNotification eMail]', error);
|
|
2764
2806
|
}
|
|
2765
|
-
} catch (error) {
|
|
2766
|
-
this.errorReporting('[sendNotification eMail]', error);
|
|
2767
2807
|
}
|
|
2768
2808
|
|
|
2769
2809
|
// Jarvis Notification
|
|
2770
|
-
|
|
2771
|
-
|
|
2810
|
+
if (this.config.instanceJarvis) {
|
|
2811
|
+
try {
|
|
2772
2812
|
//first check if instance is living
|
|
2773
2813
|
const jarvisAliveState = await this.getInitValue('system.adapter.' + this.config.instanceJarvis + '.alive');
|
|
2774
2814
|
|
|
@@ -2781,14 +2821,14 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2781
2821
|
'{"title":"' + this.config.titleJarvis + ' (' + this.formatDate(new Date(), 'DD.MM.YYYY - hh:mm:ss') + ')","message": ' + jsonText + ',"display": "drawer"}',
|
|
2782
2822
|
);
|
|
2783
2823
|
}
|
|
2824
|
+
} catch (error) {
|
|
2825
|
+
this.errorReporting('[sendNotification Jarvis]', error);
|
|
2784
2826
|
}
|
|
2785
|
-
} catch (error) {
|
|
2786
|
-
this.errorReporting('[sendNotification Jarvis]', error);
|
|
2787
2827
|
}
|
|
2788
2828
|
|
|
2789
2829
|
// Lovelace Notification
|
|
2790
|
-
|
|
2791
|
-
|
|
2830
|
+
if (this.config.instanceLovelace) {
|
|
2831
|
+
try {
|
|
2792
2832
|
//first check if instance is living
|
|
2793
2833
|
const lovelaceAliveState = await this.getInitValue('system.adapter.' + this.config.instanceLovelace + '.alive');
|
|
2794
2834
|
|
|
@@ -2801,14 +2841,14 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2801
2841
|
'{"message":' + jsonText + ', "title":"' + this.config.titleLovelace + ' (' + this.formatDate(new Date(), 'DD.MM.YYYY - hh:mm:ss') + ')"}',
|
|
2802
2842
|
);
|
|
2803
2843
|
}
|
|
2844
|
+
} catch (error) {
|
|
2845
|
+
this.errorReporting('[sendNotification Lovelace]', error);
|
|
2804
2846
|
}
|
|
2805
|
-
} catch (error) {
|
|
2806
|
-
this.errorReporting('[sendNotification Lovelace]', error);
|
|
2807
2847
|
}
|
|
2808
2848
|
|
|
2809
2849
|
// Synochat Notification
|
|
2810
|
-
|
|
2811
|
-
|
|
2850
|
+
if (this.config.instanceSynochat) {
|
|
2851
|
+
try {
|
|
2812
2852
|
//first check if instance is living
|
|
2813
2853
|
const synochatAliveState = await this.getInitValue('system.adapter.' + this.config.instanceSynochat + '.alive');
|
|
2814
2854
|
|
|
@@ -2821,9 +2861,9 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2821
2861
|
this.log.warn('Synochat channel is not set. Message could not be sent. Please check your instance configuration.');
|
|
2822
2862
|
}
|
|
2823
2863
|
}
|
|
2864
|
+
} catch (error) {
|
|
2865
|
+
this.errorReporting('[sendNotification Synochat]', error);
|
|
2824
2866
|
}
|
|
2825
|
-
} catch (error) {
|
|
2826
|
-
this.errorReporting('[sendNotification Synochat]', error);
|
|
2827
2867
|
}
|
|
2828
2868
|
} // <-- End of sendNotification function
|
|
2829
2869
|
|
|
@@ -2898,6 +2938,11 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
2898
2938
|
message = `Instanz Watchdog:\n${objectData.InstanceName}: ${objectData.status}`;
|
|
2899
2939
|
setMessage(message);
|
|
2900
2940
|
break;
|
|
2941
|
+
case 'deactivatedInstance':
|
|
2942
|
+
objectData = this.listInstanceRaw.get(id);
|
|
2943
|
+
message = `Instanz Watchdog:\n${objectData.InstanceName}: ${objectData.status}`;
|
|
2944
|
+
setMessage(message);
|
|
2945
|
+
break;
|
|
2901
2946
|
}
|
|
2902
2947
|
}
|
|
2903
2948
|
|
|
@@ -3087,6 +3132,36 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
3087
3132
|
setMessage(message);
|
|
3088
3133
|
});
|
|
3089
3134
|
break;
|
|
3135
|
+
case 'deactivatedInstance':
|
|
3136
|
+
// push the selected days in list
|
|
3137
|
+
if (this.config.checkInstanceDeactivatedMonday) checkDays.push(1);
|
|
3138
|
+
if (this.config.checkInstanceDeactivatedTuesday) checkDays.push(2);
|
|
3139
|
+
if (this.config.checkInstanceDeactivatedWednesday) checkDays.push(3);
|
|
3140
|
+
if (this.config.checkInstanceDeactivatedThursday) checkDays.push(4);
|
|
3141
|
+
if (this.config.checkInstanceDeactivatedFriday) checkDays.push(5);
|
|
3142
|
+
if (this.config.checkInstanceDeactivatedSaturday) checkDays.push(6);
|
|
3143
|
+
if (this.config.checkInstanceDeactivatedSunday) checkDays.push(0);
|
|
3144
|
+
|
|
3145
|
+
time = this.config.checkSendInstanceDeactivatedTime.split(':');
|
|
3146
|
+
|
|
3147
|
+
if (checkDays.length === 0) {
|
|
3148
|
+
this.log.warn(`No days selected for daily instance deactivated message. Please check the instance configuration!`);
|
|
3149
|
+
return; // cancel function if no day is selected
|
|
3150
|
+
}
|
|
3151
|
+
this.log.debug(`Number of selected days for daily instance deactivated message: ${checkDays.length}. Send Message on: ${checkDays.join(', ')} ...`);
|
|
3152
|
+
cron = '5 ' + time[1] + ' ' + time[0] + ' * * ' + checkDays;
|
|
3153
|
+
schedule.scheduleJob(cron, () => {
|
|
3154
|
+
list = '';
|
|
3155
|
+
|
|
3156
|
+
for (const id of this.listDeactivatedInstances) {
|
|
3157
|
+
if (this.blacklistInstancesNotify.includes(id.instanceAlivePath)) continue;
|
|
3158
|
+
list = `${list}\n${id.Instance}`;
|
|
3159
|
+
}
|
|
3160
|
+
if (list.length === 0) return;
|
|
3161
|
+
message = `Tägliche Meldung über deaktivierte Instanzen: ${list}`;
|
|
3162
|
+
setMessage(message);
|
|
3163
|
+
});
|
|
3164
|
+
break;
|
|
3090
3165
|
}
|
|
3091
3166
|
}
|
|
3092
3167
|
|
|
@@ -4109,14 +4184,6 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
4109
4184
|
return {};
|
|
4110
4185
|
}
|
|
4111
4186
|
|
|
4112
|
-
/**
|
|
4113
|
-
* @param {number} ms
|
|
4114
|
-
*/
|
|
4115
|
-
async wait(ms) {
|
|
4116
|
-
if (isUnloaded) return;
|
|
4117
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
4118
|
-
}
|
|
4119
|
-
|
|
4120
4187
|
/**
|
|
4121
4188
|
* Get previous run of cron job schedule
|
|
4122
4189
|
* Requires cron-parser!
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.device-watcher",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"description": "Watchdog for devices",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Christian Behrends",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"url": "https://github.com/ciddi89/ioBroker.device-watcher"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@iobroker/adapter-core": "^2.6.
|
|
25
|
+
"@iobroker/adapter-core": "^2.6.8"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@alcalzone/release-script": "^3.5.9",
|
|
@@ -34,24 +34,24 @@
|
|
|
34
34
|
"@types/chai": "^4.3.4",
|
|
35
35
|
"@types/chai-as-promised": "^7.1.5",
|
|
36
36
|
"@types/mocha": "^10.0.1",
|
|
37
|
-
"@types/node": "^18.
|
|
37
|
+
"@types/node": "^18.15.11",
|
|
38
38
|
"@types/node-schedule": "^2.1.0",
|
|
39
39
|
"@types/proxyquire": "^1.3.28",
|
|
40
40
|
"@types/sinon": "^10.0.13",
|
|
41
41
|
"@types/sinon-chai": "^3.2.9",
|
|
42
42
|
"chai": "^4.3.7",
|
|
43
43
|
"chai-as-promised": "^7.1.1",
|
|
44
|
-
"cron-parser": "^4.
|
|
45
|
-
"eslint": "^8.
|
|
46
|
-
"eslint-config-prettier": "^8.
|
|
44
|
+
"cron-parser": "^4.8.1",
|
|
45
|
+
"eslint": "^8.37.0",
|
|
46
|
+
"eslint-config-prettier": "^8.8.0",
|
|
47
47
|
"eslint-plugin-prettier": "^4.2.1",
|
|
48
48
|
"mocha": "^10.2.0",
|
|
49
49
|
"node-schedule": "^2.1.1",
|
|
50
|
-
"prettier": "^2.8.
|
|
50
|
+
"prettier": "^2.8.7",
|
|
51
51
|
"proxyquire": "^2.1.3",
|
|
52
|
-
"sinon": "^15.0.
|
|
52
|
+
"sinon": "^15.0.3",
|
|
53
53
|
"sinon-chai": "^3.7.0",
|
|
54
|
-
"typescript": "~
|
|
54
|
+
"typescript": "~5.0.3"
|
|
55
55
|
},
|
|
56
56
|
"main": "main.js",
|
|
57
57
|
"files": [
|