iobroker.zigbee 3.0.2 → 3.0.5

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 CHANGED
@@ -152,6 +152,18 @@ You can thank the authors by these links:
152
152
 
153
153
  -----------------------------------------------------------------------------------------------------
154
154
  ## Changelog
155
+ ### 3.0.5 (2025-08-27)
156
+ * (asgothian) fix random error where devices are not shown due to illegal groups
157
+ * (asgothian) drop support for node 18
158
+ * (asgothian) Required node Versions Node 20.19.0 or 22.11.0 or newer (courtesy of ZH 4.4.1 / ZHC 24.8.0)
159
+
160
+ ### 3.0.3 (2025-07-27)
161
+ * (asgothian) fix 'icon' error for unknown devices
162
+ * (asgothian) fix state for level.color.rgb role (hex_color, accepts only #rrggbb values
163
+ * (asgothian) ZH 4.4.1
164
+ * (asgothian) ZHC 23.72.1
165
+ * (asgothian) preparation for breaking change in ZHC 24.0.0
166
+
155
167
  ### 3.0.2 (2025-07-07)
156
168
  * (asgothian) fix images
157
169
 
Binary file
package/docs/de/readme.md CHANGED
@@ -37,7 +37,7 @@ Die Software wird unterteilt in "Konverter" und "Adapter".
37
37
  Das folgende Beispiel zeigt eine Linux-Installation auf einem Raspberry PI. Der Befehl `ls -la /dev/serial/by-id/` erzeugt die im Bild erkennbare Ausgabe.
38
38
  ![](img/Bild2.png)
39
39
  4. ioBroker -> ZigBee-Adapter installieren, hier als Beispiel die Version 1.8.10 <br> ![](img/Bild3.png) <br> Hiermit werden alle erforderlichen Softwareteile (Konverter und Adapter) installiert.
40
- 5. Konfiguration des Adapters öffnen. Das folgende Bild zeigt das Interface ab der Version 2.1.0.<br>![](img/Zigbee_config_de.jpg)<br>
40
+ 5. Konfiguration des Adapters öffnen. Das folgende Bild zeigt das Interface ab der Version 2.1.0.<br>![](img/Zigbee_config2_de.jpg)<br>
41
41
  Der Admin zeigt in dieser Situation an ob das Zigbee-Subsystem gestartet ist (A).
42
42
  6. Port zum Koordinator eintragen. (B) Im Fall von USB Koordinatoren ist das der zuvor ermittelte Device-Pfad. Im Fall von über das Netzwerk angesteuerten Koordinatoren muss an Stelle des Gerätepfades die Netzwerkaddresse samt port in der Form tcp://ip:port angegeben werden. Sofern der Adapter selber (nicht das Zigbee-Subsyste) aktiv ist steht eine Liste der verfügbaren seriellen Schnittstellen zur Auswahl zur Verfügung. Bei der Auswahl gilt:
43
43
  - Sofern am System mehrere Adapter mit unterschiedlichen USB Geräten zur Kommunikation verwendet werden und der ioBroker nativ auf dem System läuft (nicht in einem Container) sollte **unbedingt** ein Port aus dem Verzeichnis /dev/serial/by-id (sofern verfügbar) ausgewählt werden. Damit wird sicher gestellt das bei einem Neustart des Systems die Zuordnung des Adapters zum Koordinator erhalte bleibt.
@@ -53,6 +53,9 @@ Je nach Fehlerbild gibt es verschiedene mögliche Ursachen dafür das der Herdsm
53
53
  - Löschen des NVBackups. In diesem Fall bleibt die Konfiguration im Adapter wie sie ist. Dieses **erzwingt** einen Neuaufbau des Netzwerkes so das in der Folge alle bereits angelernten Geräte zurückgesetzt und neu angelernt werden müssen.<br>
54
54
  Die Ausgaben im Log sind auch dazu geeignet bei der Suche nach einer Lösung im [ioBroker Forum](https://forum.iobroker.net) eingesetzt zu werden. Dazu bitte die Meldungen markieren und **als Text** im Forum posten.
55
55
 
56
+ 10. Nachdem das Zigbee-Subsystem sauber konfiguriert wurde und anstandslos startet muss der Haken bei 'Start the zigbee network automatically' (G) gesetzt werden. Erst dann startet der Adapter das Zigbee Netzwerk automatisch beim Start.
57
+
58
+
56
59
  ## Pairing
57
60
  Jedes ZigBee-Gerät (Schalter, Lampe, Sensor, …) muss mit dem Koordinator gekoppelt werden (Pairing): <br>
58
61
 
package/docs/en/readme.md CHANGED
@@ -51,7 +51,7 @@ Depending on the error, there are various possible reasons why Herdsman may not
51
51
  - Reading the data from the NV backup. In this case, the adapter's configuration is adjusted.
52
52
  - Deleting the NV backup. In this case, the adapter's configuration remains as it is. This **forces** a rebuild of the network, which subsequently requires all previously trained devices to be reset and retrained.<br>
53
53
  The log output can also be used to search for a solution in the [ioBroker Forum](https://forum.iobroker.net). Please highlight the messages and post them **as text** in the forum.
54
-
54
+ 10. Once the zigbee network is configured correctly and starts without issues, it is time to set the adapter to automatically start the network at start. This is done by checking the checkbox labeled 'start the zigbee network automatically'.
55
55
  ## Pairing
56
56
  Each ZigBee device (switch, bulb, sensor, ...) must be paired with the coordinator (pairing): <br>
57
57
 
@@ -117,6 +117,7 @@ In both cases, restarting the adapter is sufficient – ​​the adapter's corr
117
117
  | ![](../de/img/Bild37.png)<br>![](../de/img/disconnected.png) | Strength of the ZigBee radio signal on this ZigBee device (<10 poor, <50 medium, >50 good). ZigBee is a wireless mesh network. Most mains-powered ZigBee devices (e.g., Philips Hue lamps) can act as ZigBee routers, i.e., as wireless nodes. ZigBee devices therefore do not necessarily have to establish a direct wireless connection to the coordinator, but can instead use any router in the network for a wireless connection. With each ZigBee router, the wireless range of the network is extended. All ZigBee devices regularly check whether there is a better wireless route and automatically switch over. However, this process can take several minutes.<br>Manually assigning devices to routers is **not** possible.<br> The red, crossed-out symbol is displayed when a device is considered 'not connected'. |
118
118
  | ![](../de/img/grp_ok.png) ![](../de/img/grp_nok.png) | Status of a group <br> A green circle indicates that a group has members and is functional; the red X appears when a group is empty or unusable for other reasons. |
119
119
  | ![](../de/img/info.png) | Info <br> Opens the information display for the device. The information shown on this page comes directly from the device. It is also available for unknown devices. |
120
+ | ![](../de/img/reconfigure.png) | (re)configure the device. <br> This button allows to trigger a device configuration, which is used to tell the device what data to report automatically to the coordinator. The configuration items are defined in the *converter* for this device. Note that the device needs to be active for a configuration attempt to be successful. If the device is not active, the attempt will time out, and the device will be placed in a queue of devices to be configured the next time the device i sends a message. |
120
121
  | ![](../de/img/debug.png) | Debug device <br> Enables / disables the generation of extended debug messages for this device. The color of the icon indicates the current status: (Black/White: no debug messages, Green: debug messages - can be deactivated with this button. Orange: debug messages via filter under zigbee.x.info.debugmessages. |
121
122
  | ![](../de/img/on_off.png) | On/Off <br> This button can be used to activate/deactivate a device. No communication takes place with deactivated devices. |
122
123
  | ![](../de/img/edit_image.png) | Assign image/name <br> This button allows you to specify a custom image and/or name for the device based on the device or device type. Settings made in this way are retained even if the device is deleted. |
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zigbee",
4
- "version": "3.0.2",
4
+ "version": "3.0.5",
5
5
  "news": {
6
+ "3.0.5": {
7
+ "en": "fix random error where devices are not shown due to illegal groups\ndrop support for node 18\nRequired node Versions Node 20.19.0 or 22.11.0 or newer (courtesy of ZH 4.4.1 / ZHC 24.8.0)",
8
+ "de": "fehler beheben, bei denen geräte wegen illegaler gruppen nicht angezeigt werden\ndrop-unterstützung für knoten 183\nErforderliche Knotenversionen Nr. 20.19.0 oder 22.11.0 oder neuer (courtesy of ZH 4.4.1 / ZHC 24.8.0)",
9
+ "ru": "исправить случайную ошибку, когда устройства не отображаются из-за незаконных групп\nподдержка drop для node 18\nТребуемый узел Версии Узел 20.19.0 или 22.11.0 или новее (документ ZH 4.4.1 / ZHC 24.8.0)",
10
+ "pt": "corrigir erro aleatório onde os dispositivos não são mostrados devido a grupos ilegais\nsuporte de gota para o nó 18\nNó necessário Versões Node 20.19.0 ou 22.11.0 ou mais recente (cortesia de ZH 4.4.1 / ZHC 24.8.0)",
11
+ "nl": "fix willekeurige fout wanneer apparaten niet worden getoond als gevolg van illegale groepen\ndrop ondersteuning voor knooppunt 18\nVereiste node Versies Node 20.19.0 of 22.11.0 of nieuwer (met dank aan ZH 4.4.1 / ZHC 24.8.0)",
12
+ "fr": "corriger une erreur aléatoire lorsque les appareils ne sont pas montrés en raison de groupes illégaux\nsupport de chute pour noeud 18\nVersion requise Node 20.19.0 ou 22.11.0 ou plus récent (avec la permission de ZH 4.4.1 / ZHC 248.0)",
13
+ "it": "correggere errore casuale in cui i dispositivi non vengono visualizzati a causa di gruppi illegali\nsupporto a goccia per nodo 18\nNodo richiesto Versioni Nodo 20.19.0 o 22.11.0 o più recente (cortesia di ZH 4.4.1 / ZHC 24.8.0)",
14
+ "es": "corregir errores aleatorios donde no se muestran dispositivos debido a grupos ilegales\napoyo a los nodos 18\nNodo requerido Versiones Nodo 20.19.0 o 22.11.0 o nuevo (cortesía de ZH 4.4.1 / ZHC 24.8.0)",
15
+ "pl": "naprawić błąd losowy w przypadku gdy urządzenia nie są wyświetlane z powodu nielegalnych grup\nobsługa zrzutu dla węzła 18\nWymagany węzeł Wersje Węzeł 20.19.0 lub 22.11.0 lub nowszy (uprzejmość ZH 4.4.1 / ZHC 24.8.0)",
16
+ "uk": "виправити випадкові помилки, де пристрої не відображаються через незаконні групи\nпідтримка крапель для вузла 18 років\nПотрібні версії вузла Node 20.19.0 або 22.11.0 або новачка (кількість ЗЗ 4.4.1 / ЗЖК 24.8.0)",
17
+ "zh-cn": "在设备因非法组而未显示时修复随机错误\n放弃节点支持 第 18 条\n要求的节点版本为20.19.0或22.11.0或更新(礼仪为ZH 4.4.1 / ZHC 24.8.0)"
18
+ },
19
+ "3.0.3": {
20
+ "en": "fix 'icon' error for unknown devices\nfix state for level.color.rgb role (hex_color, accepts only #rrggbb values\nZH 4.4.1\nZHC 23.72.1\npreparation for breaking change in ZHC 24.0.0",
21
+ "de": "'icon' fehler für unbekannte geräte beheben\nfix zustand für level.color.rgb rolle (hex_color, akzeptiert nur #rrggbb werte\nZH 4.4.1\nZHC 23.72.1\nvorbereitung auf den Bruchwechsel in ZHC 24.0.0",
22
+ "ru": "исправьте ошибку «икона» для неизвестных устройств\nисправить состояние для роли level.color.rgb (hex_color, принимает только значения #rrggbb)\nZH 4.4.1\nZHC 23.72.1\nподготовка к нарушению изменений в ZHC 24.0.0",
23
+ "pt": "corrigir erro 'icon' para dispositivos desconhecidos\nestado de correção para papel level.color.rgb (hex_color, aceita apenas valores #rrggbb\nZH 4.4.1\nZHC 23.72.1\npreparação para quebrar a mudança em ZHC 24.0.0",
24
+ "nl": "fix 'icon' fout voor onbekende apparaten\nfix status voor level.color.rgb role (hex_color, accepteert alleen #rrggbb waarden\nZH 4.4.1\nZHC 23,72,1\nvoorbereiding voor het breken van verandering in ZHC 24.0.0",
25
+ "fr": "correction de l'erreur 'icon' pour les périphériques inconnus\nfixer l'état pour le rôle level.color.rgb (hex_color, accepte uniquement les valeurs #rrggbb\nZH 4.4.1\nZHC 23,72.1\npréparation pour briser le changement dans ZHC 24.0.0",
26
+ "it": "correzione di errore 'icon' per dispositivi sconosciuti\nfix stato per livello.color.rgb ruolo (hex_color, accetta solo valori #rrrggbb\nZH 4.4.1\n23.7.2.1\npreparazione per rompere il cambiamento in ZHC 24.0.0",
27
+ "es": "corregir el error 'icon' para dispositivos desconocidos\nfijar estado para el nivel.color.rgb papel (hex_color, acepta sólo #rrggbb valores\nZH 4.4.1\nZHC 23.72.1\npreparación para romper el cambio en ZHC 24.0.0",
28
+ "pl": "naprawić błąd 'icon' dla nieznanych urządzeń\nfix state for level.color.rgb role (hex _ color, akceptuje tylko # rrggbb values\nZH 4.4.1\nZHC 23.72.1\nprzygotowanie do złamania zmian w ZHC 24.0.0",
29
+ "uk": "виправлено помилку 'icon' для невідомих пристроїв\nвиправити стан для рівня.color.rgb роль (hex_color, приймає тільки значення #rrggbb\nЗХ 4.4.1\nЗХК 23.72.1\nпідготовка до зміни розриву в ЗЖК 24.0.0",
30
+ "zh-cn": "修复未知设备的“ icon” 错误\n级的固定状态.color.rgb 角色(hex_color,只接受#rrggbb值)\n兹哈4.4.1\nZHC 23.72.1 电话\n准备打破ZHC 24.0"
31
+ },
6
32
  "3.0.2": {
7
33
  "en": "fix images",
8
34
  "de": "bilder",
@@ -67,32 +93,6 @@
67
93
  "pl": "powrót do 2.0.2",
68
94
  "uk": "до 2.0.2",
69
95
  "zh-cn": "返回到2.0.2"
70
- },
71
- "2.0.3": {
72
- "en": "fix configured info\nfix battery voltage (V -> mV)\nenable debug interface v1.0\nPush Zigbee-Herdsman to 3.5.7\nPush Zigbee-Herdsman-Converters to 23.1.1\nfix configure on message\nremove extra warning messages\nfix Adapter-Checker notes\nimprove base64 image detection\nremoved unused adaptert objects (info.groups, excludes) from adapter config\n",
73
- "de": "die konfigurierten informationen\nbatteriespannung fixieren (V -> mV)\ndebug interface v1.0\nPush Zigbee-Herdsman auf 3.5.7\nPush Zigbee-Herdsman-Konverter auf 23.1.1\nkonfigurieren der nachricht\nzusätzliche warnmeldungen entfernen\nfix Adapter-Checker-Noten\nverbesserung der bilderkennung von base64\nentfernte ungenutzte adapterobjekte (info.groups, ausgenommen) von adapter config\n",
74
- "ru": "исправить сконфигурированную информацию\nфиксировать напряжение батареи (V -> mV)\nвключить интерфейс отладки v1.0\nПодтолкнуть Зигби-Хердсмана к 3.5.7\nНажмите Zigbee-Herdsman-Converters на 23.1.1\nисправить конфигурацию на сообщение\nудалить дополнительные предупреждающие сообщения\nзаписи Adapter-Checker\nобнаружение изображений base64\nудаленные неиспользуемые объекты адаптера (info.groups, исключает) из конфигурации адаптера\n",
75
- "pt": "corrigir informações configuradas\ncorrigir a tensão da bateria (V -> mV)\nenable debug interface v1.0\nEmpurre Zigbee-Herdsman para 3.5.7\nEmpurre Zigbee-Herdsman-Converters para 23.1.1\ncorrigir configurar na mensagem\nremover mensagens de aviso extra\ncorrigir notas Adapter-Checker\nmelhorar a detecção de imagem base64\nremoveu objetos adaptadores não utilizados (info.groups, exclui) da configuração do adaptador\n",
76
- "nl": "fix geconfigureerde informatie\nvast te stellen batterijspanning (V -> mV)\ndebug interface v1.0 inschakelen\nDuw Zigbee-Herdsman naar 3.5.7\nDuw Zigbee-Herdsman-Converters naar 23.1.1\nfix configureren op bericht\nextra waarschuwingsberichten verwijderen\nfix Adapter-Checker notities\nverbeteren base64 beelddetectie\nverwijderd ongebruikte adapter objecten (info.groups, exclusief) uit adapter config\n",
77
- "fr": "correction des informations configurées\ncorrection de la tension de la batterie (V -> mV)\nactive l'interface debug v1.0\nPoussez Zigbee-Herdsman à 3.5.7\nPousser Zigbee-Herdsman-Converters à 23.1.1\ncorrection de configuration sur le message\nsupprimer les messages d'avertissement supplémentaires\ncorrection des notes de l'adaptateur-vérificateur\naméliorer la détection d'image de base64\nobjets de l'adaptateurt supprimés (info.groups, exclut) de la configuration de l'adaptateur\n",
78
- "it": "correzione delle informazioni configurate\ncorreggere la tensione della batteria (V -> mV)\nabilitare l'interfaccia di debug v1.0\nSpingere Zigbee-Herdsman a 3.5.7\nSpingere Zigbee-Herdsman-Converters a 23.1.1\ncorrezione configurare sul messaggio\nrimuovere i messaggi di avviso extra\nfissare le note dell'adattatore-Checker\nmigliorare il rilevamento delle immagini base64\nrimosso oggetti adattatori non utilizzati (info.groups, esclude) dalla configurazione dell'adattatore\n",
79
- "es": "fijar información configurada\ntensión de batería de fijación (V - título mV)\nhabilitar interfaz de depuración v1.0\nEmpuja Zigbee-Herdsman a 3.5.7\nEmpuja Zigbee-Herdsman-Converters a 23.1.1\nfijar configuración en el mensaje\neliminar mensajes de advertencia extra\nfijar las notas de Adaptador-Checker\nmejorar la detección de imágenes base64\nobjetos de adaptador no usados (info.groups, excluye) de configuración de adaptador\n",
80
- "pl": "naprawić skonfigurowane informacje\nstałe napięcie akumulatora (V - > mV)\nwłącz interfejs debugowania v1.0\nPush Zigbee-Herdsman do 3.5.7\nPush Zigbee- Herdsman- Konwertery do 23.1.1\nustaw konfigurację na wiadomości\nusuwa dodatkowe komunikaty ostrzegawcze\nfix Adapter- Notatki kontrolne\npoprawa wykrywania obrazu bazowego64\nusunięte niewykorzystane obiekty adaptert (info.groups, excluses) z konfiguracji adaptera\n",
81
- "uk": "виправлено налаштовану інформацію\nфіксатор напруги акумулятора (В -> мВ)\nувімкнути інтерфейс налагодження v1.0\nPush Zigbee-Herdsman до 3.5.7\nPush Zigbee-Herdsman-Converters до 23.1.1\nфіксувати налаштування на повідомлення\nвидалити додаткові повідомлення попередження\nвиправити адаптер-Checker ноти\nполіпшення базового64 виявлення зображень\nвидалити невикористані об'єкти адаптера (info.groups, виключає) з налаштування адаптера\n",
82
- "zh-cn": "修复已配置的信息\n固定电池电压(V - > mV)\n启用调试接口 v1.0\n将Zigbee-Herdsman推至3.5.7\n将Zigbee-Herdsman-Convers推向23.1.1\n固定信件的配置\n删除额外的警告信件\n修正适配器检查符\n改进基本64图像检测\n从适配器配置中删除未使用的适配对象( 信息组, 排除)\n"
83
- },
84
- "2.0.2": {
85
- "en": "fix expose generation with expose function requiring a device. (Issue #1842)\nfix failure to configure for devices needing multiple configurations (Issue #2375)\nfix hold/release and press/release action handling (Issue #2387)\nfix lib/legacy requirement for external converters (Issue #2376)\nimproved external converter handling\nfix OTA bug\nimproved message handling for devices which report values outside their defined ranges\npreparation for ZHC 22.x (model definition loaded on demand\nfix legacy definition for devices\nadded action state for remotes.\n",
86
- "de": "fix exponieren Erzeugung mit exponierender Funktion, die ein Gerät benötigt. (Ausgabe #1842)\nfehler beim Konfigurieren von Geräten, die mehrere Konfigurationen benötigen (Issue #2375)\nfix Hold/Release und Presse/Release-Action-Handling (Issue #2387)\nfix lib/legacy Anforderung für externe Konverter (Issue #2376)\nverbesserte externe konverterhandhabung\noTA Fehler beheben\nverbesserte nachrichtenbehandlung für geräte, die werte außerhalb ihrer definierten bereiche melden\nvorbereitung auf ZHC 22.x (Modelldefinition geladen auf Anfrage\nfix legacy definition für geräte\nden aktionszustand für remotes hinzugefügt.\n",
87
- "ru": "исправить генерацию экспозиции с функцией экспозиции, требующей устройства. (Выпуск #1842)\nисправление неисправности настройки для устройств, нуждающихся в нескольких конфигурациях (выпуск No 2375)\nфиксация удержания/выпуска и обработки нажатия/выпуска (выпуск No 2387)\nтребование к фиксации lib/legacy для внешних преобразователей (выпуск No 2376)\nулучшенная внешняя обработка конвертера\nисправить ошибку OTA\nулучшенная обработка сообщений для устройств, которые сообщают значения за пределами своих определенных диапазонов\nподготовка к ZHC 22.x (определение модели, загруженное по требованию)\nисправить устаревшее определение для устройств\nдобавлено состояние действия для пультов.\n",
88
- "pt": "corrigir a geração de exposição com a função de exposição que requer um dispositivo. (Issue #1842)\ncorrigir a falha de configurar para dispositivos que precisam de múltiplas configurações (Issue #2375)\ncorrigir o manuseio de ação de espera/lançamento e press/lançamento (Issue #2387)\ncorreção lib/legacy exigência para conversores externos (Issue #2376)\nmelhor desempenho do conversor externo\ncorrigir o erro OTA\nmelhor manuseio de mensagens para dispositivos que relatam valores fora de suas gamas definidas\npreparação para ZHC 22.x (definição modelo carregada sob demanda\ncorrigir a definição de legado para dispositivos\nestado de ação adicionado para controles remotos.\n",
89
- "nl": "fix ontmaskering generatie met ontmaskering functie vereist een apparaat. (Issue # 1842)\nvast te stellen fout bij het configureren van apparaten die meerdere configuraties nodig hebben (Issue #2375)\nfix hold/release and pers/release action handling (Issue #2387)\nfix lib/legacy eis voor externe converters (Issue #2376)\nverbeterde externe converterbehandeling\nfix OTA bug\nverbeterde berichtverwerking voor apparaten die waarden rapporteren buiten hun gedefinieerde bereik\nvoorbereiding voor ZHC 22.x (modeldefinitie op aanvraag geladen\nfix legacy definitie voor apparaten\ntoegevoegde actiestatus voor remotes.\n",
90
- "fr": "fixer la génération d'exposition avec la fonction d'exposition nécessitant un dispositif. (Numéro 1842)\ncorrection de l'échec à configurer pour les appareils nécessitant plusieurs configurations (Numéro #2375)\nfixer la tenue/la sortie et la prise en charge par la presse/la sortie (numéro d'émission 2387)\nfixer lib / légataire exigence pour les convertisseurs externes (Émission #2376)\namélioration de la manipulation du convertisseur externe\ncorrection du bug OTA\namélioration du traitement des messages pour les appareils qui déclarent des valeurs en dehors de leurs plages définies\npréparation pour ZHC 22.x (définition du modèle chargé sur demande\nfixer la définition du passé pour les appareils\nétat d'action ajouté pour les télécommandes.\n",
91
- "it": "risolvere esporre la generazione con la funzione di esporre che richiede un dispositivo. (Issue #1842)\ncorretto il mancato configurazione per i dispositivi che necessitano di più configurazioni (Essue #2375)\nfix hold/release e press/release action handling (Issue #2387)\nfix lib/legacy requisito per i convertitori esterni (Issue #2376)\nmigliore gestione del convertitore esterno\ncorrezione di bug OTA\nmigliore gestione dei messaggi per dispositivi che segnalano valori al di fuori dei loro intervalli definiti\npreparazione per ZHC 22.x (definizione modello caricata su richiesta\nfissare la definizione legacy per i dispositivi\nstato di azione aggiunto per i remoti.\n",
92
- "es": "fijar la generación expuesta con función expuesta que requiere un dispositivo. (Isue #1842)\nfijar el fallo de configuración para dispositivos que necesitan múltiples configuraciones (Isue #2375)\nfijación de sujeción / liberación y prensa / manejo de acción de liberación (Isue #2387)\nfijar el requisito de lib/legacy para convertidores externos (Isue #2376)\nmejor manejo del convertidor externo\ncorrección de OTA\nmejorar el manejo de mensajes para dispositivos que reportan valores fuera de sus rangos definidos\npreparación para ZHC 22.x (definición modelo cargada a la demanda\nfijar la definición heredada para los dispositivos\nestado de acción añadido para los remotos.\n",
93
- "pl": "naprawić generowanie ekspozycji z funkcją odsłaniania wymagającą urządzenia. (Wydanie # 1842)\nnaprawić awarię konfiguracji dla urządzeń wymagających wielu konfiguracji (wydanie # 2375)\nfix hold / release and press / release action handling (wydanie # 2387)\nfix lib / last requirement for external konwerters (issue # 2376)\nulepszona obsługa zewnętrznego konwertera\nnaprawić błąd OTA\nulepszona obsługa wiadomości dla urządzeń, które przekazują wartości poza określonymi zakresami\nprzygotowanie do ZHC 22.x (definicja modelu załadowana na żądanie\nnaprawić dotychczasową definicję urządzeń\ndodano stan działania pilotów.\n",
94
- "uk": "фіксувати генерацію висадки з функцією вистоювання, що вимагає пристрою. (Issue #1842)\nвиправлена відмова налаштовувати для пристроїв, які потребують декількох конфігурацій (Issue #2375)\nфіксувати передачу/випуск та прес/випуск дії (Issue #2387)\nфіксувати вимогу lib/legacy для зовнішніх перетворювачів (Issue #2376)\nпокращений зовнішній конвертер\nвиправлення помилок OTA\nпокращена обробка повідомлень для пристроїв, які повідомляють значення поза визначеними діапазонами\nпідготовка до ZHC 22.x (модельне визначення, завантажене на попит\nфіксувати визначення спадщини для пристроїв\nдодано стан дії для пультів.\n",
95
- "zh-cn": "固定需要设备的曝光函数的曝光生成。 (问题1842)\n为需要多个配置的设备设置固定失败( 问题 # 2375)\n固定持有/释放和按压/释放处理(第2387号问题)\n固定外部转换器的 lib/ legacy 要求(问题 # 2376)\n改进外部转换器处理\n修复OTA 错误\n改进对报告超出规定范围值的设备的信息处理\nzHC 22.x(按要求装入的模型定义)\n固定设备的遗留定义\n为远程添加动作状态 .\n"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -197,6 +197,58 @@
197
197
  }
198
198
  ],
199
199
  "messages": [
200
+ {
201
+ "condition": {
202
+ "operand": "and",
203
+ "rules": [
204
+ "oldVersion<3.0.0",
205
+ "newVersion>=3.0.0"
206
+ ]
207
+ },
208
+ "title": {
209
+ "en": "Important notice!",
210
+ "de": "Wichtiger Hinweis!",
211
+ "ru": "Важное замечание!",
212
+ "pt": "Notícia importante!",
213
+ "nl": "Belangrijke mededeling!",
214
+ "fr": "Avis important!",
215
+ "it": "Avviso IMPORTANTE!",
216
+ "es": "Noticia importante!",
217
+ "pl": "Ważna uwaga!",
218
+ "zh-cn": "重要通知!"
219
+ },
220
+ "text": {
221
+ "en": "\"BREAKING CHANGE. <br> Adapter version 3.x no longer automatically starts the zigbee network unless the adapter is configured to do so. When upgrading from a version <3.0, the option 'start the zigbee network automatically' needs to be set once the configuration of the adapter has been verified. Please check the documentation on Github for details",
222
+ "de": "\"BREAKING CHANGE. <br> Adapterversion 3.x startet das ZigBee-Netzwerk nicht mehr automatisch, es sei denn, der Adapter ist entsprechend konfiguriert. Beim Upgrade von einer Version <3.0 muss die Option 'ZigBee-Netzwerk automatisch starten' aktiviert werden, sobald die Konfiguration des Adapters überprüft wurde. Weitere Informationen finden Sie in der Dokumentation auf Github.",
223
+ "ru": "\"BREAKING CHANGE. <br> Адаптер версии 3.x больше не запускает сеть ZigBee автоматически, если только он не настроен соответствующим образом. При обновлении с версии ниже 3.0 необходимо включить опцию «Запускать сеть ZigBee автоматически» после проверки конфигурации адаптера. Подробности см. в документации на Github.",
224
+ "pt": "\"BREAKING CHANGE. <br> A versão 3. x do adaptador já não inicia a rede Zigbee automaticamente, a menos que o adaptador esteja configurado para tal. Ao atualizar a partir de uma versão inferior a 3.0, a opção 'iniciar a rede Zigbee automaticamente' necessita de ser definida após a verificação da configuração do adaptador. Consulte a documentação no GitHub para mais detalhes.",
225
+ "nl": "\"BREAKING CHANGE. <br> Adapterversie 3.x start het ZigBee-netwerk niet meer automatisch, tenzij de adapter hiervoor is geconfigureerd. Bij een upgrade vanaf een versie <3.0 moet de optie 'ZigBee-netwerk automatisch starten' worden ingeschakeld nadat de configuratie van de adapter is geverifieerd. Raadpleeg de documentatie op Github voor meer informatie.",
226
+ "fr": "\"BREAKING CHANGE. <br> La version 3.x de l'adaptateur ne démarre plus automatiquement le réseau Zigbee, sauf si l'adaptateur est configuré pour le faire. Lors d'une mise à niveau depuis une version antérieure à la version 3.0, l'option « Démarrer automatiquement le réseau Zigbee » doit être activée une fois la configuration de l'adaptateur vérifiée. Veuillez consulter la documentation sur GitHub pour plus de détails.",
227
+ "it": "\"BREAKING CHANGE. <br> La versione 3.x dell'adattatore non avvia più automaticamente la rete ZigBee, a meno che l'adattatore non sia configurato per farlo. Quando si esegue l'aggiornamento da una versione <3.0, è necessario impostare l'opzione 'Avvia automaticamente la rete ZigBee' una volta verificata la configurazione dell'adattatore. Per i dettagli, consultare la documentazione su Github.",
228
+ "es": "\"BREAKING CHANGE. <br> La versión 3.x del adaptador ya no inicia automáticamente la red Zigbee a menos que esté configurada para ello. Al actualizar desde una versión anterior a la 3.0, es necesario activar la opción 'Iniciar la red Zigbee automáticamente' una vez verificada la configuración del adaptador. Para más información, consulte la documentación en Github.",
229
+ "pl": "\"BREAKING CHANGE. <br> Wersja adaptera 3.x nie uruchamia już automatycznie sieci Zigbee, chyba że adapter jest odpowiednio skonfigurowany. Podczas aktualizacji z wersji <3.0, po zweryfikowaniu konfiguracji adaptera należy ustawić opcję 'Automatyczne uruchamianie sieci Zigbee'. Szczegółowe informacje można znaleźć w dokumentacji na Github.",
230
+ "uk": "\"BREAKING CHANGE. <br> Версія адаптера 3.x більше не запускає мережу ZigBee автоматично, якщо адаптер не налаштовано на це. Під час оновлення з версії <3.0 необхідно встановити опцію «автоматично запускати мережу ZigBee» після перевірки конфігурації адаптера. Будь ласка, перегляньте документацію на Github для отримання детальної інформації.",
231
+ "zh-cn": "\"BREAKING CHANGE. <br> 適配器 3.x 版不再自動啟動 Zigbee 網絡,除非適配器已配置為自動啟動。從低於 3.0 的版本升級時,需要在驗證適配器配置後設定「自動啟動 Zigbee 網路」選項。詳情請查看 Github 上的文件。"
232
+ },
233
+ "link": "https://github.com/ioBroker/ioBroker.zigbee/blob/master/README.md",
234
+ "level": "warn",
235
+ "linkText": {
236
+ "en": "Readme",
237
+ "de": "Liesmich",
238
+ "ru": "Прочти меня",
239
+ "pt": "Leia-me",
240
+ "nl": "Leesmij",
241
+ "fr": "Lisez-moi",
242
+ "it": "Leggimi",
243
+ "es": "Léame",
244
+ "pl": "Readme",
245
+ "zh-cn": "自述文件"
246
+ },
247
+ "buttons": [
248
+ "agree",
249
+ "cancel"
250
+ ]
251
+ },
200
252
  {
201
253
  "condition": {
202
254
  "operand": "and",
package/lib/colors.js CHANGED
@@ -431,10 +431,10 @@ function namedColorToRGBstring(name) {
431
431
  return '#0088FF';
432
432
  }
433
433
 
434
- function parseColor(rgbstring) {
434
+ function parseColor(rgbstring, disallowName) {
435
435
  if (typeof rgbstring === 'string') {
436
436
  const lowerName = rgbstring.toLowerCase();
437
- if (namedColors.hasOwnProperty(lowerName)) {
437
+ if (namedColors.hasOwnProperty(lowerName) && !disallowName) {
438
438
  rgbstring = namedColors[lowerName].rgb;
439
439
  }
440
440
  rgbstring = rgbstring.trim();
package/lib/commands.js CHANGED
@@ -196,7 +196,7 @@ class Commands {
196
196
  }
197
197
  catch (error) {
198
198
  const msg = `Unable to read nvBackup ${error && error.message ? error.message : 'no message given'}`;
199
- this.error(msg);
199
+ //this.error(msg);
200
200
  this.adapter.sendTo(from, command, {error:msg}, callback)
201
201
  }
202
202
  }
@@ -389,23 +389,25 @@ class Commands {
389
389
  if (groupmembers && groupmembers.length > 0) {
390
390
  const memberinfo = [];
391
391
  for (const member of groupmembers) {
392
- if (groups) {
393
- const grouparray = groups[member.ieee];
394
- if (grouparray) {
395
- if (!grouparray.includes(groupID)) {
396
- groups[member.ieee].push(groupID);
392
+ if (member && typeof member.ieee === 'string') {
393
+ if (groups) {
394
+ const grouparray = groups[member.ieee];
395
+ if (grouparray) {
396
+ if (!grouparray.includes(groupID)) {
397
+ groups[member.ieee].push(groupID);
398
+ }
399
+ } else {
400
+ groups[member.ieee] = [groupID];
397
401
  }
402
+ }
403
+ const device = await this.adapter.getObjectAsync(`${this.adapter.namespace}.${member.ieee.substr(2)}`);
404
+ if (device) {
405
+ member.device = device.common.name;
398
406
  } else {
399
- groups[member.ieee] = [groupID];
407
+ member.device = 'unknown';
400
408
  }
409
+ memberinfo.push(member);
401
410
  }
402
- const device = await this.adapter.getObjectAsync(`${this.adapter.namespace}.${member.ieee.substr(2)}`);
403
- if (device) {
404
- member.device = device.common.name;
405
- } else {
406
- member.device = 'unknown';
407
- }
408
- memberinfo.push(member);
409
411
  }
410
412
  devInfo.memberinfo = memberinfo;
411
413
  this.debug(`memberinfo for ${match[1]}: ${JSON.stringify(devInfo.memberinfo)}`);
@@ -464,7 +466,7 @@ class Commands {
464
466
  if (!id) {
465
467
  for (const d of pairedDevices) {
466
468
  const device = await this.zbController.resolveEntity(d.ieeeAddr);
467
- if (!device) {
469
+ if (!device || !device.device) {
468
470
  continue;
469
471
  }
470
472
  const exists = devices.find((dev) => (dev._id && device.device.ieeeAddr === getZbId(dev._id)));
package/lib/exposes.js CHANGED
@@ -259,7 +259,7 @@ function createFromExposes(model, def, device, log) {
259
259
 
260
260
  // maybee here check manufacturerName for tuya devices
261
261
  if (typeof def.exposes == 'function') {
262
- const expFunction = def.exposes(device, {}); // maybee here check manufacturerName for tuya devices
262
+ const expFunction = def.exposes(device === undefined ? {isDummyDevice: true} : device, {}); // maybee here check manufacturerName for tuya devices
263
263
  for (const expose of expFunction) {
264
264
  genStateFromExpose(expose);
265
265
  }
@@ -393,11 +393,52 @@ function createFromExposes(model, def, device, log) {
393
393
  }
394
394
  if (hasColorXY || hasColorHS) {
395
395
  const nameWithEp = expose.endpoint ? `color_${expose.endpoint}` : 'color';
396
+ if (hasColorXY) pushToStates({
397
+ id:`hex_${nameWithEp}`,
398
+ name: `Hex Color ${expose.endpoint ? expose.endpoint : ''}`.trim(),
399
+ icon: undefined,
400
+ role: 'level.color.rgb',
401
+ write: true,
402
+ read: true,
403
+ type: 'string',
404
+ setter: value => {
405
+ // hex color (no named allowed)
406
+ const rgbcolor = colors.ParseColor(value, true);
407
+ return rgbcolor;
408
+ },
409
+ setterOpt: (value, options) => {
410
+ const hasTransitionTime = options && options.hasOwnProperty('transition_time');
411
+ const transitionTime = hasTransitionTime ? options.transition_time : 0;
412
+ return {...options, transition: transitionTime};
413
+ },
414
+ getter: payload => {
415
+ try {
416
+ // JSON
417
+ const colorJSON = JSON.parse(payload.replaceAll("'",'"'));
418
+ const numProp = Object.keys(colorJSON).length;
419
+ if (hasMultipleProperties(colorJSON, ['r', 'g', 'b'], numProp)) {
420
+ const hexstring = (colorJSON.r*65536 + colorJSON.g * 256 + colorJSON.b).toString(16).padStart(6);
421
+ return `#${hexstring.substring(2)}`;
422
+ }
423
+ return undefined;
424
+ }
425
+ catch {
426
+ // intentionally empty;
427
+ }
428
+ if (payload.color.startsWith('#')) return payload.color;
429
+ const p = payload.replace('0x', '');
430
+ const m = p.match(/[0123456789abcdefABCDEF]+/);
431
+ if (p.length < 7 && m && m[0].length == p.length) return '#000000'.substring(0, 7-p.length) + p;
432
+ return undefined;
433
+ },
434
+ epname: expose.endpoint,
435
+ setattr: 'color',
436
+ }, (colorHSprop ? colorHSprop.access : colorXYprop.access));
396
437
  pushToStates({
397
438
  id: nameWithEp,
398
- name: `Color ${expose.endpoint ? expose.endpoint : ''}`.trim(),
439
+ name: `Mutable Color ${expose.endpoint ? expose.endpoint : ''}`.trim(),
399
440
  icon: undefined,
400
- role: 'level.color.rgb',
441
+ role: 'state',
401
442
  write: true,
402
443
  read: true,
403
444
  type: 'string',
@@ -94,7 +94,7 @@ class StatesController extends EventEmitter {
94
94
  this.warn(`icon ${dev_name} for undefined Device not available. Check your devices.`);
95
95
  } else {
96
96
  const modelDesc = await statesMapping.addExposeToDevices(device, this, model);
97
- const srcIcon = modelDesc.icon;
97
+ const srcIcon = (modelDesc ? modelDesc.icon : '');
98
98
  const model_modif = model.replace(/\//g, '-');
99
99
  const pathToAdminIcon = `img/${model_modif}.png`;
100
100
 
@@ -131,7 +131,7 @@ class StatesController extends EventEmitter {
131
131
  });
132
132
  return;
133
133
  }
134
- modelDesc.icon = pathToAdminIcon;
134
+ if (modelDesc) modelDesc.icon = pathToAdminIcon;
135
135
  this.adapter.fileExists(namespace, pathToAdminIcon, async(err, result) => {
136
136
  if (result) {
137
137
  this.debug(`icon ${modelDesc.icon} found - no copy needed`);
@@ -158,7 +158,7 @@ class StatesController extends EventEmitter {
158
158
  }
159
159
  fs.readFile(src, (err, data) => {
160
160
  if (err) {
161
- this.error('unable to read ' + src + ' : '+ (err && err.message? err.message:' no message given'))
161
+ this.error('unable to read ' + src + ' : '+ (err.message? err.message:' no message given'))
162
162
  return;
163
163
  }
164
164
  if (data) {
@@ -170,8 +170,8 @@ class StatesController extends EventEmitter {
170
170
  this.info('Updated image file ' + pathToAdminIcon);
171
171
  });
172
172
  }
173
- })
174
- })
173
+ });
174
+ });
175
175
  }
176
176
  }
177
177
  }
@@ -617,7 +617,10 @@ class StatesController extends EventEmitter {
617
617
  } else {
618
618
  new_common.name = `${new_name} ${new_common.name}`;
619
619
  }
620
- delete new_common.role;
620
+ // force allow change of level.color roles.
621
+ if (name.includes('color')) {
622
+ console.warn(`allowing role change for ${name}`)
623
+ } else delete new_common.role;
621
624
 
622
625
  // check whether any common property is different
623
626
  if (stobj.common) {
@@ -1230,4 +1233,4 @@ class StatesController extends EventEmitter {
1230
1233
 
1231
1234
  }
1232
1235
 
1233
- module.exports = StatesController;
1236
+ module.exports = StatesController;
package/main.js CHANGED
@@ -1020,10 +1020,10 @@ class Zigbee extends utils.Adapter {
1020
1020
  }
1021
1021
 
1022
1022
 
1023
- newDevice(entity) {
1023
+ async newDevice(entity) {
1024
1024
 
1025
1025
  if (this.debugActive) this.log.debug(`New device event: ${safeJsonStringify(entity)}`);
1026
- this.stController.AddModelFromHerdsman(entity.device, entity.mapped ? entity.mapped.model : entity.device.modelID)
1026
+ //this.stController.AddModelFromHerdsman(entity.device, entity.mapped ? entity.mapped.model : entity.device.modelID)
1027
1027
 
1028
1028
  const dev = entity.device;
1029
1029
  const model = (entity.mapped) ? entity.mapped.model : dev.modelID;
@@ -1033,7 +1033,7 @@ class Zigbee extends utils.Adapter {
1033
1033
  this.log.warn(msg);
1034
1034
  this.logToPairing(msg, true);
1035
1035
  }
1036
- this.stController.AddModelFromHerdsman(entity.device, model)
1036
+ await this.stController.AddModelFromHerdsman(entity.device, model)
1037
1037
  if (dev) {
1038
1038
  this.getObject(dev.ieeeAddr.substr(2), (err, obj) => {
1039
1039
  if (!obj) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zigbee",
3
- "version": "3.0.2",
3
+ "version": "3.0.5",
4
4
  "author": {
5
5
  "name": "Kirov Ilya",
6
6
  "email": "kirovilya@gmail.com"
@@ -15,7 +15,7 @@
15
15
  }
16
16
  ],
17
17
  "engines": {
18
- "node": ">=18"
18
+ "node": ">=20"
19
19
  },
20
20
  "optionalDependencies": {
21
21
  "serialport": "^13.0.0"
@@ -28,8 +28,8 @@
28
28
  "ajv": "^8.17.1",
29
29
  "uri-js": "^4.4.1",
30
30
  "typescript": "^5.8.3",
31
- "zigbee-herdsman": "4.0.0",
32
- "zigbee-herdsman-converters": "23.35.0"
31
+ "zigbee-herdsman": "4.4.1",
32
+ "zigbee-herdsman-converters": "24.8.0"
33
33
  },
34
34
  "description": "Zigbee devices",
35
35
  "devDependencies": {
@@ -38,11 +38,11 @@
38
38
  "@alcalzone/release-script-plugin-license": "^3.7.0",
39
39
  "@alcalzone/release-script-plugin-manual-review": "^3.7.0",
40
40
  "@iobroker/testing": "^5.0.4",
41
- "chai": "^5.1.2",
41
+ "chai": "^5.2.1",
42
42
  "chai-as-promised": "^7.1.1",
43
43
  "eslint": "^9.30.0",
44
44
  "eslint-config-prettier": "^9.1.0",
45
- "eslint-plugin-prettier": "^5.5.1",
45
+ "eslint-plugin-prettier": "^5.5.3",
46
46
  "gulp": "^4.0.2",
47
47
  "gulp-jsdoc3": "^3.0.0",
48
48
  "gulp-replace": "^1.1.4",