iobroker.zigbee2mqtt 2.11.0 → 2.13.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 +14 -1
- package/admin/i18n/de/translations.json +6 -1
- package/admin/i18n/en/translations.json +6 -1
- package/admin/i18n/es/translations.json +6 -1
- package/admin/i18n/fr/translations.json +6 -1
- package/admin/i18n/it/translations.json +6 -1
- package/admin/i18n/nl/translations.json +6 -1
- package/admin/i18n/pl/translations.json +6 -1
- package/admin/i18n/pt/translations.json +6 -1
- package/admin/i18n/ru/translations.json +6 -1
- package/admin/i18n/uk/translations.json +6 -1
- package/admin/i18n/zh-cn/translations.json +6 -1
- package/admin/jsonConfig.json +79 -11
- package/io-package.json +73 -28
- package/lib/deviceController.js +16 -1
- package/lib/imageController.js +6 -5
- package/lib/messages.js +3 -0
- package/lib/statesController.js +1 -0
- package/lib/z2mController.js +4 -0
- package/main.js +26 -12
- package/package.json +7 -5
package/README.md
CHANGED
|
@@ -32,11 +32,24 @@ This adapter allows to control the data points of the devices of a Zigbee2MQTT i
|
|
|
32
32
|
Placeholder for the next version (at the beginning of the line):
|
|
33
33
|
### **WORK IN PROGRESS**
|
|
34
34
|
-->
|
|
35
|
+
### 2.13.0 (2023-09-07)
|
|
36
|
+
|
|
37
|
+
- (o0shojo0o) added state `info.coordinator_check` ([#247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247))
|
|
38
|
+
- (o0shojo0o) added state `info.missing_routers` ([#247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247))
|
|
39
|
+
- (o0shojo0o) added state `info.missing_routers_count` ([#247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247))
|
|
40
|
+
- (o0shojo0o) added option `Automatic check for missing routers in the coordinator memory` ([#247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247))
|
|
41
|
+
|
|
42
|
+
### 2.12.0 (2023-09-05)
|
|
43
|
+
|
|
44
|
+
- (o0shojo0o) added option `Size of the object icons in pixels`
|
|
45
|
+
|
|
35
46
|
### 2.11.0 (2023-08-24)
|
|
36
47
|
|
|
37
48
|
- (o0shojo0o) added automatic download of device image from zigbee2mqtt to meta-storage
|
|
49
|
+
- (o0shojo0o) device images from Meta-Storage added to the object
|
|
50
|
+
- (o0shojo0o) device images from Meta-Storage auto resize to 28x28 pixel for smaller object
|
|
38
51
|
- (o0shojo0o) added option `Download device images from Zigbee2Mqtt and use them as object icons.`
|
|
39
|
-
- (o0shojo0o) fixed Hue_Move
|
|
52
|
+
- (o0shojo0o) fixed Hue_Move ([#223](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/223))
|
|
40
53
|
- (o0shojo0o) added option `Generate simple 'Hold' and 'Release' states`
|
|
41
54
|
- (o0shojo0o) added option `Generate simple 'Move' and 'Stop' states`
|
|
42
55
|
- (o0shojo0o) added option `Generate simple 'Press' and 'Release' states`
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "Bei Aktivierung werden die Datenpunkte „Move“ und „Stop“ kombiniert und der Datenpunkt „Move“ bleibt true, bis das Ereignis „Stop“ eintrifft.",
|
|
38
38
|
"State configurations": "State konfigurationen",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "Generieren einfache „Press“ und „Release“ States",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Wenn diese Option aktiviert ist, werden die Zustände „Press“ und „Release“ kombiniert und der Datenpunkt „Press“ bleibt true, bis das Ereignis „Release“ eintrifft."
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Wenn diese Option aktiviert ist, werden die Zustände „Press“ und „Release“ kombiniert und der Datenpunkt „Press“ bleibt true, bis das Ereignis „Release“ eintrifft.",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "Wird die Größe später auf einen größeren Wert geändert, müssen die bereits heruntergeladenen Bilder gelöscht werden. <br> Bitte beachten Sie, dass Icons im Objekt gespeichert werden und daher nicht unnötig groß sein sollten!",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "Automatische Prüfung auf fehlende Router im Speicher des Koordinators.",
|
|
43
|
+
"With which log level should a negative search be logged?": "Mit welcher Loglevel soll ein negatives Suchergebnis protokolliert werden?",
|
|
44
|
+
"Time of the automatic check": "Zeitpunkt der automatischen Prüfung",
|
|
45
|
+
"More information": "Mehr Informationen"
|
|
41
46
|
}
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.",
|
|
38
38
|
"State configurations": "State configurations",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "Generate simple 'Press' and 'Release' states",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives."
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "Automatic check for missing routers in the coordinator memory.",
|
|
43
|
+
"With which log level should a negative search be logged?": "With which log level should a negative search be logged?",
|
|
44
|
+
"Time of the automatic check": "Time of the automatic check",
|
|
45
|
+
"More information": "More information"
|
|
41
46
|
}
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "Cuando está habilitado, los estados 'Mover' y 'Detener' se combinan y el punto de datos 'Mover' permanece verdadero hasta que llega el evento 'Detener'.",
|
|
38
38
|
"State configurations": "Configuraciones de estado",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "Genere estados simples de \"Presionar\" y \"Liberar\"",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Cuando está habilitado, los estados \"Presionar\" y \"Liberar\" se combinan y el punto de datos \"Presionar\" permanece verdadero hasta que llega el evento \"Liberar\"."
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Cuando está habilitado, los estados \"Presionar\" y \"Liberar\" se combinan y el punto de datos \"Presionar\" permanece verdadero hasta que llega el evento \"Liberar\".",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "Si posteriormente se cambia el tamaño a un valor mayor, se deben eliminar las imágenes ya descargadas. <br> ¡Tenga en cuenta que los iconos se almacenan en el objeto y, por lo tanto, no deben ser innecesariamente grandes!",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "Comprobación automática de enrutadores faltantes en la memoria del coordinador.",
|
|
43
|
+
"With which log level should a negative search be logged?": "¿Con qué nivel de registro se debe registrar una búsqueda negativa?",
|
|
44
|
+
"Time of the automatic check": "Hora del control automático",
|
|
45
|
+
"More information": "Más información"
|
|
41
46
|
}
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "Lorsqu'il est activé, les états 'Move' et 'Stop' sont combinés et le point de données 'Move' reste vrai jusqu'à ce que l'événement 'Stop' arrive.",
|
|
38
38
|
"State configurations": "Configurations d'état",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "Générer des états simples « Presser » et « Relâcher »",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Lorsqu'ils sont activés, les états « Press » et « Release » sont combinés et le point de données « Press » reste vrai jusqu'à ce que l'événement « Release » arrive."
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Lorsqu'ils sont activés, les états « Press » et « Release » sont combinés et le point de données « Press » reste vrai jusqu'à ce que l'événement « Release » arrive.",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "Si la taille est ultérieurement modifiée pour une valeur plus grande, les images déjà téléchargées doivent être supprimées. <br> Veuillez noter que les icônes sont stockées dans l'objet et ne doivent donc pas être inutilement grandes !",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "Vérification automatique des routeurs manquants dans la mémoire du coordinateur.",
|
|
43
|
+
"With which log level should a negative search be logged?": "Avec quel niveau de journalisation une recherche négative doit-elle être enregistrée ?",
|
|
44
|
+
"Time of the automatic check": "Heure du contrôle automatique",
|
|
45
|
+
"More information": "Plus d'information"
|
|
41
46
|
}
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "Se abilitato, gli stati 'Move' e 'Stop' vengono combinati e il punto dati 'Move' rimane vero fino all'arrivo dell'evento 'Stop'.",
|
|
38
38
|
"State configurations": "Configurazioni di stato",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "Genera semplici stati \"Stampa\" e \"Rilascio\".",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Se abilitati, gli stati \"Press\" e \"Rilascio\" vengono combinati e il punto dati \"Press\" rimane vero fino all'arrivo dell'evento \"Rilascio\"."
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Se abilitati, gli stati \"Press\" e \"Rilascio\" vengono combinati e il punto dati \"Press\" rimane vero fino all'arrivo dell'evento \"Rilascio\".",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "Se la dimensione viene successivamente modificata con un valore maggiore, le immagini già scaricate dovranno essere cancellate. <br> Tieni presente che le icone sono memorizzate nell'oggetto e quindi non dovrebbero essere inutilmente grandi!",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "Controllo automatico della presenza di router mancanti nella memoria del coordinatore.",
|
|
43
|
+
"With which log level should a negative search be logged?": "Con quale livello di registro deve essere registrata una ricerca negativa?",
|
|
44
|
+
"Time of the automatic check": "Orario del controllo automatico",
|
|
45
|
+
"More information": "Maggiori informazioni"
|
|
41
46
|
}
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "Indien ingeschakeld, worden de toestanden 'Verplaatsen' en 'Stop' gecombineerd en blijft het gegevenspunt 'Verplaatsen' waar totdat de gebeurtenis 'Stop' arriveert.",
|
|
38
38
|
"State configurations": "Staat configuraties",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "Genereer eenvoudige 'Druk'- en 'loslaat'-statussen",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Indien ingeschakeld, worden de statussen 'Press' en 'Release' gecombineerd en blijft het datapunt 'Press' waar totdat de gebeurtenis 'Release' arriveert."
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Indien ingeschakeld, worden de statussen 'Press' en 'Release' gecombineerd en blijft het datapunt 'Press' waar totdat de gebeurtenis 'Release' arriveert.",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "Als de grootte later wordt gewijzigd naar een grotere waarde, moeten de reeds gedownloade afbeeldingen worden verwijderd. <br> Let op: iconen worden in het object opgeslagen en mogen dus niet onnodig groot zijn!",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "Automatische controle op ontbrekende routers in het coördinatorgeheugen.",
|
|
43
|
+
"With which log level should a negative search be logged?": "Met welk logniveau moet een negatieve zoekopdracht worden geregistreerd?",
|
|
44
|
+
"Time of the automatic check": "Tijdstip van de automatische controle",
|
|
45
|
+
"More information": "Meer informatie"
|
|
41
46
|
}
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "Po włączeniu stany „Przenieś” i „Zatrzymaj” są łączone, a punkt danych „Przenieś” pozostaje prawdziwy do momentu nadejścia zdarzenia „Zatrzymaj”.",
|
|
38
38
|
"State configurations": "Konfiguracje stanów",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "Generuj proste stany „Naciśnij” i „Zwolnij”.",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Po włączeniu stany „Naciśnij” i „Zwolnij” są łączone, a punkt danych „Naciśnij” pozostaje prawdziwy do momentu pojawienia się zdarzenia „Zwolnij”."
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Po włączeniu stany „Naciśnij” i „Zwolnij” są łączone, a punkt danych „Naciśnij” pozostaje prawdziwy do momentu pojawienia się zdarzenia „Zwolnij”.",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "Jeśli rozmiar zostanie później zmieniony na większy, już pobrane obrazy muszą zostać usunięte. <br> Należy pamiętać, że ikony są przechowywane w obiekcie i dlatego nie powinny być niepotrzebnie duże!",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "Automatyczne sprawdzanie brakujących routerów w pamięci koordynatora.",
|
|
43
|
+
"With which log level should a negative search be logged?": "Na jakim poziomie rejestrowania należy rejestrować wyszukiwanie wykluczające?",
|
|
44
|
+
"Time of the automatic check": "Czas automatycznego sprawdzenia",
|
|
45
|
+
"More information": "Więcej informacji"
|
|
41
46
|
}
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "Quando ativado, os estados 'Mover' e 'Parar' são combinados e o ponto de dados 'Mover' permanece verdadeiro até que o evento 'Parar' chegue.",
|
|
38
38
|
"State configurations": "configurações de estado",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "Gere estados simples de 'Pressionar' e 'Liberar'",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Quando ativado, os estados 'Press' e 'Release' são combinados e o ponto de dados 'Press' permanece verdadeiro até que o evento 'Release' chegue."
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Quando ativado, os estados 'Press' e 'Release' são combinados e o ponto de dados 'Press' permanece verdadeiro até que o evento 'Release' chegue.",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "Se o tamanho for alterado posteriormente para um valor maior, as imagens já baixadas deverão ser excluídas. <br> Observe que os ícones são armazenados no objeto e, portanto, não devem ser desnecessariamente grandes!",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "Verificação automática de roteadores ausentes na memória do coordenador.",
|
|
43
|
+
"With which log level should a negative search be logged?": "Com qual nível de log uma pesquisa negativa deve ser registrada?",
|
|
44
|
+
"Time of the automatic check": "Hora da verificação automática",
|
|
45
|
+
"More information": "Mais Informações"
|
|
41
46
|
}
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "Когда эта функция включена, состояния «Перемещение» и «Стоп» объединяются, и точка данных «Перемещение» остается истинной до тех пор, пока не наступит событие «Стоп».",
|
|
38
38
|
"State configurations": "Конфигурации состояния",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "Создавайте простые состояния «Нажмите» и «Отпустите».",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Если этот параметр включен, состояния «Нажатие» и «Отпуск» объединяются, и точка данных «Нажатие» остается истинной до тех пор, пока не произойдет событие «Отпуск»."
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Если этот параметр включен, состояния «Нажатие» и «Отпуск» объединяются, и точка данных «Нажатие» остается истинной до тех пор, пока не произойдет событие «Отпуск».",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "Если размер позже будет изменен на большее значение, уже загруженные изображения необходимо удалить. <br> Обратите внимание, что значки хранятся в объекте и поэтому не должны быть излишне большими!",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "Автоматическая проверка отсутствия роутеров в памяти координатора.",
|
|
43
|
+
"With which log level should a negative search be logged?": "На каком уровне журнала следует регистрировать отрицательный поиск?",
|
|
44
|
+
"Time of the automatic check": "Время автоматической проверки",
|
|
45
|
+
"More information": "Больше информации"
|
|
41
46
|
}
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "Якщо ввімкнено, стани «Переміщення» та «Зупинити» поєднуються, а точка даних «Переміщення» залишається істинною, доки не надійде подія «Зупинити».",
|
|
38
38
|
"State configurations": "Конфігурації стану",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "Створення простих станів «Натиснути» та «Випустити».",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Якщо ввімкнено, стани «Натиснути» та «Випустити» поєднуються, а точка даних «Натиснути» залишається істинною, доки не надійде подія «Випуск»."
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "Якщо ввімкнено, стани «Натиснути» та «Випустити» поєднуються, а точка даних «Натиснути» залишається істинною, доки не надійде подія «Випуск».",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "Якщо пізніше розмір буде змінено на більше, уже завантажені зображення необхідно видалити. <br> Зверніть увагу, що піктограми зберігаються в об'єкті, тому вони не повинні бути надмірно великими!",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "Автоматична перевірка відсутності роутерів в пам'яті координатора.",
|
|
43
|
+
"With which log level should a negative search be logged?": "На якому рівні журналу слід реєструвати негативний пошук?",
|
|
44
|
+
"Time of the automatic check": "Час автоматичної перевірки",
|
|
45
|
+
"More information": "Більше інформації"
|
|
41
46
|
}
|
|
@@ -37,5 +37,10 @@
|
|
|
37
37
|
"When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "启用后,“移动”和“停止”状态将组合在一起,并且“移动”数据点保持为真,直到“停止”事件到达。",
|
|
38
38
|
"State configurations": "状态配置",
|
|
39
39
|
"Generate simple 'Press' and 'Release' states": "生成简单的“按下”和“释放”状态",
|
|
40
|
-
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "启用后,“按下”和“释放”状态将组合在一起,并且“按下”数据点保持为真,直到“释放”事件到达。"
|
|
40
|
+
"When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "启用后,“按下”和“释放”状态将组合在一起,并且“按下”数据点保持为真,直到“释放”事件到达。",
|
|
41
|
+
"If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!": "如果稍后将大小更改为更大的值,则必须删除已下载的图像。 <br> 请注意,图标存储在对象中,因此不应过大!",
|
|
42
|
+
"Automatic check for missing routers in the coordinator memory.": "自动检查协调器内存中丢失的路由器。",
|
|
43
|
+
"With which log level should a negative search be logged?": "应该使用哪个日志级别来记录负面搜索?",
|
|
44
|
+
"Time of the automatic check": "自动检查时间",
|
|
45
|
+
"More information": "更多信息"
|
|
41
46
|
}
|
package/admin/jsonConfig.json
CHANGED
|
@@ -210,12 +210,6 @@
|
|
|
210
210
|
"help": "When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.",
|
|
211
211
|
"newLine": true
|
|
212
212
|
},
|
|
213
|
-
"otherHeader": {
|
|
214
|
-
"type": "header",
|
|
215
|
-
"text": "Other configurations",
|
|
216
|
-
"size": 2,
|
|
217
|
-
"newLine": true
|
|
218
|
-
},
|
|
219
213
|
"brightnessMoveOnOff": {
|
|
220
214
|
"type": "checkbox",
|
|
221
215
|
"label": "Brightness move should also turn the light on or off",
|
|
@@ -226,6 +220,85 @@
|
|
|
226
220
|
"label": "Brightness step should also turn the light on or off",
|
|
227
221
|
"newLine": true
|
|
228
222
|
},
|
|
223
|
+
"imageHeader": {
|
|
224
|
+
"type": "header",
|
|
225
|
+
"text": "Device image configurations",
|
|
226
|
+
"size": 2,
|
|
227
|
+
"newLine": true
|
|
228
|
+
},
|
|
229
|
+
"useDeviceIcons": {
|
|
230
|
+
"type": "checkbox",
|
|
231
|
+
"label": "Download device images from Zigbee2Mqtt and use them as object icons.",
|
|
232
|
+
"help": "If the size is later changed to a larger value, the images already downloaded must be deleted. <br> Please note that icons are stored in the object and should therefore not be unnecessarily large!",
|
|
233
|
+
"newLine": true
|
|
234
|
+
},
|
|
235
|
+
"deviceIconsSize": {
|
|
236
|
+
"type": "number",
|
|
237
|
+
"label": "Size of the object icons in pixels",
|
|
238
|
+
"min": 8,
|
|
239
|
+
"newLine": true
|
|
240
|
+
},
|
|
241
|
+
"otherHeader": {
|
|
242
|
+
"type": "header",
|
|
243
|
+
"text": "Other configurations",
|
|
244
|
+
"size": 2,
|
|
245
|
+
"newLine": true
|
|
246
|
+
},
|
|
247
|
+
"coordinatorCheck": {
|
|
248
|
+
"type": "checkbox",
|
|
249
|
+
"label": "Automatic check for missing routers in the coordinator memory.",
|
|
250
|
+
"help": "More information",
|
|
251
|
+
"helpLink": "https://www.zigbee2mqtt.io/guide/usage/mqtt_topics_and_messages.html#zigbee2mqtt-bridge-request-coordinator-check",
|
|
252
|
+
"newLine": true
|
|
253
|
+
},
|
|
254
|
+
"coordinatorCheckLogLvl": {
|
|
255
|
+
"type": "select",
|
|
256
|
+
"sm": 3,
|
|
257
|
+
"label": "With which log level should a negative search be logged?",
|
|
258
|
+
"options": [
|
|
259
|
+
{
|
|
260
|
+
"label": {
|
|
261
|
+
"en": "Debug"
|
|
262
|
+
},
|
|
263
|
+
"value": "debug"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"label": {
|
|
267
|
+
"en": "Info"
|
|
268
|
+
},
|
|
269
|
+
"value": "info"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"label": {
|
|
273
|
+
"en": "Warning"
|
|
274
|
+
},
|
|
275
|
+
"value": "warn"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"label": {
|
|
279
|
+
"en": "Error"
|
|
280
|
+
},
|
|
281
|
+
"value": "error"
|
|
282
|
+
}
|
|
283
|
+
],
|
|
284
|
+
"newLine": true,
|
|
285
|
+
"hidden": "data.coordinatorCheck != true"
|
|
286
|
+
},
|
|
287
|
+
"coordinatorCheckCron": {
|
|
288
|
+
"type": "cron",
|
|
289
|
+
"label": "Time of the automatic check",
|
|
290
|
+
"help": "Default: 0 3 * * * (At 03:00 every day)",
|
|
291
|
+
"simple": true,
|
|
292
|
+
"newLine": true,
|
|
293
|
+
"sm": 3,
|
|
294
|
+
"hidden": "data.coordinatorCheck != true"
|
|
295
|
+
},
|
|
296
|
+
"spacer04": {
|
|
297
|
+
"type": "staticText",
|
|
298
|
+
"text": "",
|
|
299
|
+
"newLine": true,
|
|
300
|
+
"hidden": "data.coordinatorCheck != true"
|
|
301
|
+
},
|
|
229
302
|
"proxyZ2MLogs": {
|
|
230
303
|
"type": "checkbox",
|
|
231
304
|
"label": "Proxy Zigbee2MQTT logs to ioBroker logs",
|
|
@@ -235,11 +308,6 @@
|
|
|
235
308
|
"type": "checkbox",
|
|
236
309
|
"label": "The events such as 'Device removed' or 'Disabled' are displayed in the description instead of in the name.",
|
|
237
310
|
"newLine": true
|
|
238
|
-
},
|
|
239
|
-
"useDeviceIcons": {
|
|
240
|
-
"type": "checkbox",
|
|
241
|
-
"label": "Download device images from Zigbee2Mqtt and use them as object icons.",
|
|
242
|
-
"newLine": true
|
|
243
311
|
}
|
|
244
312
|
}
|
|
245
313
|
}
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "zigbee2mqtt",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.13.0",
|
|
5
5
|
"news": {
|
|
6
|
+
"2.13.0": {
|
|
7
|
+
"en": "added state `info.coordinator_check` ([#247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247))\nadded state `info.missing_routers` ([#247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247))\nadded state `info.missing_routers_count` ([#247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247))\nadded option `Automatic check for missing routers in the coordinator memory` ([#247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247))",
|
|
8
|
+
"de": "zusätzlich state info.coordinator_check #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\nzusätzlich state info.missing_routers #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\nzusätzlich state info.missing_routers_count #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\nzusätzliche Option `Automatische Überprüfung fehlender Router im Koordinatorspeicher` #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)",
|
|
9
|
+
"ru": "добавлено состояние info.coordinator_check #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)\nдобавлено состояние info.missing_routers #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)\nдобавлено состояние info.missing_routers_count #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)\nдобавлена опция `Автоматическая проверка для пропавших маршрутизаторов в памяти координатора` #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)",
|
|
10
|
+
"pt": "adicionado state info.coordinator_check #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)\nadicionado state info.missing_routers #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)\nadicionado state info.missing_routers_count #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)\nopção adicionada `Verificação automática de roteadores ausentes na memória do coordenador #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)",
|
|
11
|
+
"nl": "quality over Quantity (QoQ) Releases Vertaling:\nquality over Quantity (QoQ) Releases Vertaling:\nvoegde staatsinformatie toe, mislukt jroutmount 47, httub,com/0shojoo/ioBroker\nvoegde optie 'Automatische cheque toe voor vermiste routers in de coördinator geheugen 47) (htttub,com/0hojoo/ioBroker",
|
|
12
|
+
"fr": "infos supplémentaires.coordinator_check #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\ninfos supplémentaires.missing_routers #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\ninfo état ajoutée.missing_routers_count #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\noption ajoutée `Automatic check for missing routers in the Coordinator memory` #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)",
|
|
13
|
+
"it": "#[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\n#[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\naggiunto stato info.missing_routers_count #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\nopzione aggiuntiva `Controllo automatico dei router mancanti nella memoria coordinatore` #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)",
|
|
14
|
+
"es": "añadido información del estado.coordinator_check #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\nañadido información del estado.missing_routers #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)\nañadido información del estado.missing_routers_count #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)\nañadido la opción `Automatic check for missing routers in the coordinator memory` #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)",
|
|
15
|
+
"pl": "info.coordinator_check #247(https:/github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247) (ang.)\ninfo.missing_routers #247(https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247) (ang.)\ninfo.missing_routers_count #247 (https:/github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247) (ang.)\nautomatic check for missing routers in the coordinator memory` #247(https:/github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247) (ang.)",
|
|
16
|
+
"uk": "додано державну інформацію.coordinator_check #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)\nдодано державну інформацію.missing_routers #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/products/247)\nдодано державну інформацію.missing_routers_count #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)\nдодано варіант `Автоматичний чек для відсутніх маршрутизаторів в зоні пам'яті координатора #[247](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/247)",
|
|
17
|
+
"zh-cn": "补充国家:控制编号[247](http://github.com/oshojo0o/ioBroker.zigbee2mqt/issues/247)\n添加以下国家:F.missing_routers #[247](http://github.com/oshojo0o/ioBroker.zigbee2mqt/issues/247)\n增列国家:F.missing_routers_count.[247](http://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)\n添加了“协调员记忆中的缺失路线者进行现场检查”的备选办法[247](http://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/247)。"
|
|
18
|
+
},
|
|
19
|
+
"2.12.0": {
|
|
20
|
+
"en": "added option `Size of the object icons in pixels`",
|
|
21
|
+
"de": "zusätzliche Option ` Größe der Objektsymbole in Pixeln`",
|
|
22
|
+
"ru": "добавлена опция `Размер иконок объекта в пикселях`",
|
|
23
|
+
"pt": "opção adicionada `Tamanho dos ícones do objeto em pixels`",
|
|
24
|
+
"nl": "voegde optie van het object in pixels",
|
|
25
|
+
"fr": "option ajoutée ` Taille de l'objet icônes en pixels`",
|
|
26
|
+
"it": "opzione aggiunta `Size delle icone dell'oggetto in pixel`",
|
|
27
|
+
"es": "opción agregada `Tamaño de los iconos objeto en pixels`",
|
|
28
|
+
"pl": "dodano opcję `Size of the object icons in pixels'",
|
|
29
|
+
"uk": "додано опцію `Size іконок об’єкта у пікселях`",
|
|
30
|
+
"zh-cn": "添加了“白盔”的选项。"
|
|
31
|
+
},
|
|
6
32
|
"2.11.0": {
|
|
7
33
|
"en": "added automatic download of device image from zigbee2mqtt to meta-storage\nadded option `Download device images from Zigbee2Mqtt and use them as object icons.`\nfixed Hue_Move \nadded option `Generate simple 'Hold' and 'Release' states`\nadded option `Generate simple 'Move' and 'Stop' states`\nadded option `Generate simple 'Press' and 'Release' states`",
|
|
8
34
|
"de": "automatischer download des gerätebildes von zigbee2mqtt zu meta-storage\n` Gerätebilder von Zigbee2Mqtt herunterladen und als Objektsymbole verwenden. `\nhue_Move\nzusatzoption `Generieren Sie einfache Halte- und Freigabezustände `\nzusätzliche Option `Generieren Sie einfache Verschiebe- und Stopp-Zustände `\nzusätzliche Option `Generieren Sie einfache Presse- und Freigabezustände `",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "dodano obsługę stron internetowych (#191(https:/github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/191)\ndrobne rozwiązanie",
|
|
68
94
|
"uk": "javaScript licenses API Веб-сайт Go1.13.8\nмаленькі кріплення",
|
|
69
95
|
"zh-cn": "增加了WSS支助网络联系([第191](http://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/191)\n小型配件"
|
|
70
|
-
},
|
|
71
|
-
"2.7.5": {
|
|
72
|
-
"en": "added state `last_seen` contains date/time of last Zigbee message ([#131](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/131))",
|
|
73
|
-
"de": "add state last_seen enthält Datum/Zeit der letzten Zigbee-Nachricht [#131](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/131)",
|
|
74
|
-
"ru": "добавленное состояние last_seen содержит дату/время последнего сообщения Zigbee [#131](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/131)",
|
|
75
|
-
"pt": "adicionado estado last_seen contém data/hora da última mensagem Zigbee [#131](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/131)",
|
|
76
|
-
"nl": "vertaling:",
|
|
77
|
-
"fr": "add state last_seen contains date/time of last Zigbee message [#131](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/131)",
|
|
78
|
-
"it": "aggiunto state last_seen contiene data/ora dell'ultimo messaggio Zigbee [#131](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/131)",
|
|
79
|
-
"es": "añadido state last_seen contiene fecha/hora del último mensaje de Zigbee [#131](https://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/131)",
|
|
80
|
-
"pl": "dodano stan ostatni_seen:/time of last Zigbee message #131(https:/github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/131)",
|
|
81
|
-
"uk": "додано стан last_seen містить дату/час останнього повідомлення Zigbee [#131](https://github.com/o0shojo0o/ioBroker.zigbee2mqtt/issues/131)",
|
|
82
|
-
"zh-cn": "添加国家:见最后Zigbee信息的日期/时间[第131号](http://github.com/o0shojo0o/ioBroker.zigbee2mqt/issues/131)"
|
|
83
|
-
},
|
|
84
|
-
"2.7.4": {
|
|
85
|
-
"en": "fix for Aqara presence detector FP1 `reset_nopresence_status`",
|
|
86
|
-
"de": "fix für Aqara Präsenzmelder FP1 reset_nopresence_status",
|
|
87
|
-
"ru": "фикс для Aqara детектор присутствия FP1 reset_nopresence_status",
|
|
88
|
-
"pt": "correção para o detector de presença de Aqara FP1 reset_nopresence_status",
|
|
89
|
-
"nl": "vertaling:",
|
|
90
|
-
"fr": "fix pour détecteur de présence Aqara FP1 reset_nopresence_status",
|
|
91
|
-
"it": "correzione per rilevatore di presenza Aqara FP1 reset_nopresence_status",
|
|
92
|
-
"es": "fijado para el detector de presencia Aqara FP1 reset_nopresence_status",
|
|
93
|
-
"pl": "reset_nopresence_status (ang.)",
|
|
94
|
-
"uk": "фіксація для датчика присутності Aqara FP1 скидання_nopresence_status",
|
|
95
|
-
"zh-cn": "fix Aqara存在探测器FP1 重新定位_nopreence_status"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"messages": [
|
|
@@ -249,9 +249,13 @@
|
|
|
249
249
|
"brightnessStepOnOff": false,
|
|
250
250
|
"useEventInDesc": true,
|
|
251
251
|
"useDeviceIcons": false,
|
|
252
|
+
"deviceIconsSize": 28,
|
|
252
253
|
"simpleHoldReleaseState": true,
|
|
253
254
|
"simpleMoveStopState": false,
|
|
254
|
-
"simplePressReleaseState": false
|
|
255
|
+
"simplePressReleaseState": false,
|
|
256
|
+
"coordinatorCheck": false,
|
|
257
|
+
"coordinatorCheckLogLvl": "info",
|
|
258
|
+
"coordinatorCheckCron": "0 3 * * *"
|
|
255
259
|
},
|
|
256
260
|
"protectedNative": [
|
|
257
261
|
"externalMqttServerPassword",
|
|
@@ -290,6 +294,7 @@
|
|
|
290
294
|
"common": {
|
|
291
295
|
"name": "Log changes as warnings for",
|
|
292
296
|
"type": "string",
|
|
297
|
+
"role": "state",
|
|
293
298
|
"read": true,
|
|
294
299
|
"write": true,
|
|
295
300
|
"def": ""
|
|
@@ -302,12 +307,52 @@
|
|
|
302
307
|
"common": {
|
|
303
308
|
"name": "Logs matching filters are ignored by the LogProxy",
|
|
304
309
|
"type": "string",
|
|
310
|
+
"role": "state",
|
|
305
311
|
"read": true,
|
|
306
312
|
"write": true,
|
|
307
313
|
"def": ""
|
|
308
314
|
},
|
|
309
315
|
"native": {}
|
|
310
316
|
},
|
|
317
|
+
{
|
|
318
|
+
"_id": "info.coordinator_check",
|
|
319
|
+
"type": "state",
|
|
320
|
+
"common": {
|
|
321
|
+
"name": "It checks whether routers are missing from the coordinator's memory.",
|
|
322
|
+
"role": "button",
|
|
323
|
+
"write": true,
|
|
324
|
+
"read": true,
|
|
325
|
+
"type": "boolean",
|
|
326
|
+
"def": true
|
|
327
|
+
},
|
|
328
|
+
"native": {}
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"_id": "info.missing_routers",
|
|
332
|
+
"type": "state",
|
|
333
|
+
"common": {
|
|
334
|
+
"name": "Routers missing in the coordinator's memory.",
|
|
335
|
+
"type": "json",
|
|
336
|
+
"role": "json",
|
|
337
|
+
"read": true,
|
|
338
|
+
"write": false,
|
|
339
|
+
"def": []
|
|
340
|
+
},
|
|
341
|
+
"native": {}
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"_id": "info.missing_routers_count",
|
|
345
|
+
"type": "state",
|
|
346
|
+
"common": {
|
|
347
|
+
"name": "Count of missing routers missing in the coordinator's memory.",
|
|
348
|
+
"type": "number",
|
|
349
|
+
"role": "state",
|
|
350
|
+
"read": true,
|
|
351
|
+
"write": false,
|
|
352
|
+
"def": 0
|
|
353
|
+
},
|
|
354
|
+
"native": {}
|
|
355
|
+
},
|
|
311
356
|
{
|
|
312
357
|
"_id": "",
|
|
313
358
|
"type": "meta",
|
package/lib/deviceController.js
CHANGED
|
@@ -282,7 +282,7 @@ class DeviceController {
|
|
|
282
282
|
}
|
|
283
283
|
|
|
284
284
|
for (const state of device.states) {
|
|
285
|
-
if (!this.createCache[device.ieee_address][state.id] || this.createCache[device.ieee_address][state.id].name != state.name) {
|
|
285
|
+
if (state && (!this.createCache[device.ieee_address][state.id] || this.createCache[device.ieee_address][state.id].name != state.name)) {
|
|
286
286
|
const iobState = {
|
|
287
287
|
type: 'state',
|
|
288
288
|
common: await this.copyAndCleanStateObj(state),
|
|
@@ -376,6 +376,21 @@ class DeviceController {
|
|
|
376
376
|
getDeviceDescription(device) {
|
|
377
377
|
return device.description ? device.description : '';
|
|
378
378
|
}
|
|
379
|
+
|
|
380
|
+
processCoordinatorCheck(payload) {
|
|
381
|
+
if (payload && payload.data && payload.data.missing_routers) {
|
|
382
|
+
const missingRoutersCount = payload.data.missing_routers.length;
|
|
383
|
+
this.adapter.setState('info.missing_routers', JSON.stringify(payload.data.missing_routers), true);
|
|
384
|
+
this.adapter.setState('info.missing_routers_count', missingRoutersCount, true);
|
|
385
|
+
|
|
386
|
+
if (missingRoutersCount > 0) {
|
|
387
|
+
this.adapter.log[this.config.coordinatorCheckLogLvl](`Coordinator check: ${missingRoutersCount} missing routers were found, please check the data point 'zigbee2mqtt.x.info.missing_routers'!`);
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
this.adapter.log.info('Coordinator check: No missing router was found.');
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
379
394
|
}
|
|
380
395
|
|
|
381
396
|
module.exports = {
|
package/lib/imageController.js
CHANGED
|
@@ -27,11 +27,12 @@ class ImageController {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
async getDeviceIcon(device) {
|
|
30
|
-
|
|
31
30
|
if (this.adapter.config.useDeviceIcons == false) {
|
|
32
31
|
return '';
|
|
33
32
|
}
|
|
34
33
|
|
|
34
|
+
const imageSize = this.adapter.config.deviceIconsSize;
|
|
35
|
+
|
|
35
36
|
const z2mIconFileName = `${this.sanitizeZ2MDeviceName(device.definition.model)}.jpg`;
|
|
36
37
|
const slsIconFileName = `${this.sanitizeModelIDForImageUrl(device.model_id)}.png`;
|
|
37
38
|
|
|
@@ -67,13 +68,13 @@ class ImageController {
|
|
|
67
68
|
// Load Image Metadata
|
|
68
69
|
const origIconMeta = await sharp(icon.file).metadata();
|
|
69
70
|
// Check whether the image needs to be resized
|
|
70
|
-
if ((origIconMeta.height && origIconMeta.height >
|
|
71
|
+
if ((origIconMeta.height && origIconMeta.height > imageSize) || (origIconMeta.width && origIconMeta.width > imageSize)) {
|
|
71
72
|
// Resize image to 28x28 pixel
|
|
72
|
-
this.adapter.log.info(`Resize image for device model ${device.definition.model} from: ${origIconMeta.width}x${origIconMeta.height} to
|
|
73
|
+
this.adapter.log.info(`Resize image for device model ${device.definition.model} from: ${origIconMeta.width}x${origIconMeta.height} to ${imageSize}x${imageSize}`);
|
|
73
74
|
icon.file = await sharp(icon.file)
|
|
74
75
|
.resize({
|
|
75
|
-
width:
|
|
76
|
-
height:
|
|
76
|
+
width: imageSize,
|
|
77
|
+
height: imageSize,
|
|
77
78
|
fit: sharp.fit.cover,
|
|
78
79
|
position: sharp.strategy.entropy
|
|
79
80
|
})
|
package/lib/messages.js
CHANGED
|
@@ -33,6 +33,9 @@ async function adapterInfo(config, log) {
|
|
|
33
33
|
log.info(`|| Use Simple Hold/Release State: ${config.simpleHoldReleaseState ? 'yes' : 'no'}`);
|
|
34
34
|
log.info(`|| Use Simple Move/Stop State: ${config.simpleMoveStopState ? 'yes' : 'no'}`);
|
|
35
35
|
log.info(`|| Use Simple Press/Release State: ${config.simplePressReleaseState ? 'yes' : 'no'}`);
|
|
36
|
+
log.info(`|| Use Automatic Coordinator Check: ${config.coordinatorCheck ? 'yes' : 'no'}`);
|
|
37
|
+
log.info(`|| Coordinator Check Loglevel: ${config.coordinatorCheckLogLvl}`);
|
|
38
|
+
log.info(`|| Coordinator Check Cron : ${config.coordinatorCheckCron}`);
|
|
36
39
|
log.info('==================================================================================');
|
|
37
40
|
}
|
|
38
41
|
|
package/lib/statesController.js
CHANGED
package/lib/z2mController.js
CHANGED
package/main.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
const core = require('@iobroker/adapter-core');
|
|
9
9
|
const mqtt = require('mqtt');
|
|
10
10
|
const utils = require('./lib/utils');
|
|
11
|
+
const schedule = require('node-schedule');
|
|
11
12
|
const checkConfig = require('./lib/check').checkConfig;
|
|
12
13
|
const adapterInfo = require('./lib/messages').adapterInfo;
|
|
13
14
|
const zigbee2mqttInfo = require('./lib/messages').zigbee2mqttInfo;
|
|
@@ -64,6 +65,14 @@ class Zigbee2mqtt extends core.Adapter {
|
|
|
64
65
|
// @ts-ignore
|
|
65
66
|
logCustomizations.logfilter = String(logfilterState.val).split(';').filter(x => x); // filter removes empty strings here
|
|
66
67
|
}
|
|
68
|
+
|
|
69
|
+
if (this.config.coordinatorCheck == true) {
|
|
70
|
+
try {
|
|
71
|
+
schedule.scheduleJob('coordinatorCheck', this.config.coordinatorCheckCron, () => this.onStateChange('manual_trigger._.info.coordinator_check', { ack: false }));
|
|
72
|
+
} catch (e) {
|
|
73
|
+
this.log.error(e);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
67
76
|
// MQTT
|
|
68
77
|
if (['exmqtt', 'intmqtt'].includes(this.config.connectionType)) {
|
|
69
78
|
// External MQTT-Server
|
|
@@ -127,18 +136,20 @@ class Zigbee2mqtt extends core.Adapter {
|
|
|
127
136
|
websocketController = new WebsocketController(this);
|
|
128
137
|
const wsClient = websocketController.initWsClient();
|
|
129
138
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
139
|
+
if (wsClient) {
|
|
140
|
+
wsClient.on('open', () => {
|
|
141
|
+
this.log.info('Connect to Zigbee2MQTT over websocket connection.');
|
|
142
|
+
});
|
|
133
143
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
144
|
+
wsClient.on('message', (message) => {
|
|
145
|
+
this.messageParse(message);
|
|
146
|
+
});
|
|
137
147
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
148
|
+
wsClient.on('close', async () => {
|
|
149
|
+
this.setStateChanged('info.connection', false, true);
|
|
150
|
+
await statesController.setAllAvailableToFalse();
|
|
151
|
+
});
|
|
152
|
+
}
|
|
142
153
|
}
|
|
143
154
|
|
|
144
155
|
async messageParse(message) {
|
|
@@ -180,6 +191,9 @@ class Zigbee2mqtt extends core.Adapter {
|
|
|
180
191
|
break;
|
|
181
192
|
case 'bridge/event':
|
|
182
193
|
break;
|
|
194
|
+
case 'bridge/response/coordinator_check':
|
|
195
|
+
deviceController.processCoordinatorCheck(messageObj.payload);
|
|
196
|
+
break;
|
|
183
197
|
case 'bridge/response/device/remove':
|
|
184
198
|
break;
|
|
185
199
|
case 'bridge/response/device/options':
|
|
@@ -307,12 +321,12 @@ class Zigbee2mqtt extends core.Adapter {
|
|
|
307
321
|
|
|
308
322
|
async onStateChange(id, state) {
|
|
309
323
|
if (state && state.ack == false) {
|
|
310
|
-
if (id.
|
|
324
|
+
if (id.endsWith('info.debugmessages')) {
|
|
311
325
|
logCustomizations.debugDevices = state.val;
|
|
312
326
|
this.setState(id, state.val, true);
|
|
313
327
|
return;
|
|
314
328
|
}
|
|
315
|
-
if (id.
|
|
329
|
+
if (id.endsWith('info.logfilter')) {
|
|
316
330
|
logCustomizations.logfilter = state.val.split(';').filter(x => x); // filter removes empty strings here
|
|
317
331
|
this.setState(id, state.val, true);
|
|
318
332
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.zigbee2mqtt",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.13.0",
|
|
4
4
|
"description": "Zigbee2MQTT adapter for ioBroker",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Dennis Rathjen",
|
|
@@ -22,8 +22,9 @@
|
|
|
22
22
|
"@iobroker/adapter-core": "^3.0.3",
|
|
23
23
|
"aedes": "^0.50.0",
|
|
24
24
|
"aedes-persistence-nedb": "^2.0.3",
|
|
25
|
-
"mqtt": "^5.0.
|
|
25
|
+
"mqtt": "^5.0.4",
|
|
26
26
|
"net": "^1.0.2",
|
|
27
|
+
"node-schedule": "^2.1.1",
|
|
27
28
|
"sharp": "^0.32.5",
|
|
28
29
|
"ws": "^8.13.0"
|
|
29
30
|
},
|
|
@@ -38,17 +39,18 @@
|
|
|
38
39
|
"@types/chai": "^4.3.5",
|
|
39
40
|
"@types/chai-as-promised": "^7.1.5",
|
|
40
41
|
"@types/mocha": "^10.0.1",
|
|
41
|
-
"@types/node": "^20.5.
|
|
42
|
+
"@types/node": "^20.5.7",
|
|
43
|
+
"@types/node-schedule": "^2.1.0",
|
|
42
44
|
"@types/proxyquire": "^1.3.28",
|
|
43
45
|
"@types/sinon": "^10.0.16",
|
|
44
46
|
"@types/sinon-chai": "^3.2.9",
|
|
45
47
|
"chai": "^4.3.8",
|
|
46
48
|
"chai-as-promised": "^7.1.1",
|
|
47
|
-
"eslint": "^8.
|
|
49
|
+
"eslint": "^8.48.0",
|
|
48
50
|
"eslint-config-prettier": "^9.0.0",
|
|
49
51
|
"eslint-plugin-prettier": "^5.0.0",
|
|
50
52
|
"mocha": "^10.2.0",
|
|
51
|
-
"prettier": "^3.0.
|
|
53
|
+
"prettier": "^3.0.3",
|
|
52
54
|
"proxyquire": "^2.1.3",
|
|
53
55
|
"sinon": "^15.2.0",
|
|
54
56
|
"sinon-chai": "^3.7.0",
|