iobroker.zigbee2mqtt 3.0.7 → 3.0.9

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
@@ -22,8 +22,16 @@ This adapter allows to control the data points of the devices of a Zigbee2MQTT i
22
22
  [Adapter Documentation](https://github.com/arteck/ioBroker.zigbee2mqtt/blob/main/docs/wiki.md)
23
23
 
24
24
  ## Changelog
25
+ ### 3.0.9 (2025-06-19)
26
+ - (bjoernbusch) queue up message parsing
27
+ - (dotcom84) Support for non-default MQTT base topics
28
+
29
+ ### 3.0.8 (2025-06-08)
30
+ - (arteck) fix device is deleted
31
+ - (arteck) fix translation
32
+
25
33
  ### 3.0.7 (2025-06-07)
26
- - (arteck) fix jsconconf
34
+ - (arteck) fix jsonconf
27
35
 
28
36
  ### 3.0.6 (2025-05-31)
29
37
  - (arteck) settings restructure
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "click for Documentation": "hier geht es zur Dokumentation",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "Eine ausführliche Dokumentation mit Erklärungen und allen weiteren Informationen findest Du auf dieser GitHub-Seite:",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "Eine ausführliche Dokumentation mit Erklärungen und allen weiteren Informationen findest Du auf dieser GitHub-Seite:",
4
4
  "zigbee2mqtt adapter settings": "Adaptereinstellungen für Zigbee2MQTT",
5
5
  "Select and configure your Zigbee2MQTT connection": "Konfiguriere die Zigbee2MQTT anbindung",
6
6
  "Select connection to Zigbee2MQTT": "Zigbee2MQTT Verbindung auswählen",
@@ -11,6 +11,7 @@
11
11
  "Websocket IP-Address": "Websocket IP-Adresse",
12
12
  "Websocket Port": "Websocket Port",
13
13
  "Create a dummy MQTT-Server for Zigbee2MQTT": "Internen MQTT-Server für Zigbee2MQTT erstellen",
14
+ "Base MQTT topic": "MQTT Basis-Topic",
14
15
  "External MQTT-Server IP-Address": "IP-Adresse des externen MQTT-Servers",
15
16
  "External MQTT-Server Port": "Externer MQTT-Server Port",
16
17
  "MQTT-Server IP-Address bind": "MQTT-Server IP-Adresse binden",
@@ -46,7 +47,7 @@
46
47
  "Time of the automatic check": "Zeitpunkt der automatischen Prüfung",
47
48
  "More information": "Mehr Informationen",
48
49
  "Expert Settings. Please only use if you know what you're doing": "Expert Einstellungen. Bitte nur verwenden, wenn Du weisst was du machst",
49
- "Allways update state for occupancy when message arrives from zigbee2mqtt server (Only for true state). Increases load on ioBroker System" : "Aktualisiert immer den Status für die Bewegung, wenn eine Nachricht vom zigbee2mqtt-Server eintrifft (nur bei true). Erhöht die Last auf dem ioBroker",
50
- "Allways update available state when message included last_seen status": "Aktualisiert immer den available Status, wenn die Nachricht last_seen Status enthält"
50
+ "Always update state for occupancy when message arrives from zigbee2mqtt server (Only for true state). Increases load on ioBroker System" : "Aktualisiert immer den Status für die Bewegung, wenn eine Nachricht vom zigbee2mqtt-Server eintrifft (nur bei true). Erhöht die Last auf dem ioBroker",
51
+ "Always update available state when message included last_seen status": "Aktualisiert immer den available Status, wenn die Nachricht last_seen Status enthält"
51
52
 
52
53
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "click for Documentation": "click for Documentation",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "A detailed documentation with explanations and all further information can be found on this GitHub page:",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "A detailed documentation with explanations and all further information can be found on this GitHub page:",
4
4
  "zigbee2mqtt adapter settings": "Adapter settings for zigbee2mqtt",
5
5
  "Select and configure your Zigbee2MQTT connection": "Select and configure Zigbee2MQTT connection",
6
6
  "Select connection to Zigbee2MQTT": "Select connection to Zigbee2MQTT",
@@ -10,10 +10,11 @@
10
10
  "Configure your Zigbee2MQTT connection": "Configure your Zigbee2MQTT connection",
11
11
  "Websocket IP-Address": "Websocket IP-Address",
12
12
  "Websocket Port": "Websocket Port",
13
- "Use Auth-Token": "Use Auth-Token",
14
- "Auth-Token (special characters are not supported)": "Auth-Token (special characters are not supported)",
15
- "Create a dummy MQTT-Server for Zigbee2MQTT": "Create a dummy MQTT-Server for Zigbee2MQTT",
16
- "External MQTT-Server IP-Address": "External MQTT-Server IP-Address",
13
+ "Use Auth-Token": "Use Auth-Token",
14
+ "Auth-Token (special characters are not supported)": "Auth-Token (special characters are not supported)",
15
+ "Create a dummy MQTT-Server for Zigbee2MQTT": "Create a dummy MQTT-Server for Zigbee2MQTT",
16
+ "Base MQTT topic": "Base MQTT topic",
17
+ "External MQTT-Server IP-Address": "External MQTT-Server IP-Address",
17
18
  "External MQTT-Server Port": "External MQTT-Server Port",
18
19
  "MQTT-Server IP-Address bind": "MQTT-Server IP-Address bind",
19
20
  "MQTT-Server Port": "MQTT-Server Port",
@@ -46,6 +47,6 @@
46
47
  "Time of the automatic check": "Time of the automatic check",
47
48
  "More information": "More information",
48
49
  "Expert Settings. Please only use if you know what you're doing": "Expert Settings. Please only use if you know what you're doing",
49
- "Allways update state for occupancy when message arrives from zigbee2mqtt server (Only for true state). Increases load on ioBroker System" : "Allways update state for occupancy when message arrives from zigbee2mqtt server (Only for true state). Increases load on ioBroker System",
50
- "Allways update available state when message included last_seen status": "Allways update available state when message included last_seen status"
50
+ "Always update state for occupancy when message arrives from zigbee2mqtt server (Only for true state). Increases load on ioBroker System" : "Always update state for occupancy when message arrives from zigbee2mqtt server (Only for true state). Increases load on ioBroker System",
51
+ "Always update available state when message included last_seen status": "Always update available state when message included last_seen status"
51
52
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "click for Documentation": "haz clic para ver la documentación",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "Una documentación detallada con explicaciones y toda la información adicional se puede encontrar en esta página de GitHub:",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "Una documentación detallada con explicaciones y toda la información adicional se puede encontrar en esta página de GitHub:",
4
4
  "zigbee2mqtt adapter settings": "Configuración del adaptador para zigbee2mqtt",
5
5
  "Select and configure your Zigbee2MQTT connection": "Seleccionar y configurar la conexión Zigbee2MQTT",
6
6
  "Select connection to Zigbee2MQTT": "Seleccionar conexión a Zigbee2MQTT",
@@ -13,6 +13,7 @@
13
13
  "Use Auth-Token": "Usar token de autenticación",
14
14
  "Auth-Token (special characters are not supported)": "Auth-Token (los caracteres especiales no son compatibles)",
15
15
  "Create a dummy MQTT-Server for Zigbee2MQTT": "Cree un servidor MQTT ficticio para Zigbee2MQTT",
16
+ "Base MQTT topic": "Tema base MQTT",
16
17
  "External MQTT-Server IP-Address": "Dirección IP del servidor MQTT externo",
17
18
  "External MQTT-Server Port": "Puerto de servidor MQTT externo",
18
19
  "MQTT-Server IP-Address bind": "Enlace de dirección IP del servidor MQTT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "click for Documentation": "cliquez pour la documentation",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "Une documentation détaillée avec des explications et toutes les informations complémentaires peut être trouvée sur cette page GitHub :",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "Une documentation détaillée avec des explications et toutes les informations complémentaires peut être trouvée sur cette page GitHub :",
4
4
  "zigbee2mqtt adapter settings": "Paramètres de l'adaptateur pour zigbee2mqtt",
5
5
  "Select and configure your Zigbee2MQTT connection": "Sélectionnez et configurez la connexion Zigbee2MQTT",
6
6
  "Select connection to Zigbee2MQTT": "Sélectionnez la connexion à Zigbee2MQTT",
@@ -13,6 +13,7 @@
13
13
  "Use Auth-Token": "Utiliser le jeton d'authentification",
14
14
  "Auth-Token (special characters are not supported)": "Auth-Token (les caractères spéciaux ne sont pas pris en charge)",
15
15
  "Create a dummy MQTT-Server for Zigbee2MQTT": "Créer un serveur MQTT factice pour Zigbee2MQTT",
16
+ "Base MQTT topic": "Sujet MQTT de base",
16
17
  "External MQTT-Server IP-Address": "Adresse IP du serveur MQTT externe",
17
18
  "External MQTT-Server Port": "Port serveur MQTT externe",
18
19
  "MQTT-Server IP-Address bind": "Liaison d'adresse IP MQTT-Server",
@@ -45,5 +46,5 @@
45
46
  "With which log level should a negative search be logged?": "Avec quel niveau de journalisation une recherche négative doit-elle être enregistrée ?",
46
47
  "Time of the automatic check": "Heure du contrôle automatique",
47
48
  "More information": "Plus d'information",
48
- "Allways update available state when message included last_seen status": "Mettre à jour l'état disponible lorsque le message inclut le statut last_seen"
49
+ "Always update available state when message included last_seen status": "Mettre à jour l'état disponible lorsque le message inclut le statut last_seen"
49
50
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "click for Documentation": "clicca per la documentazione",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "Una documentazione dettagliata con spiegazioni e tutte le ulteriori informazioni può essere trovata su questa pagina GitHub:",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "Una documentazione dettagliata con spiegazioni e tutte le ulteriori informazioni può essere trovata su questa pagina GitHub:",
4
4
  "zigbee2mqtt adapter settings": "Impostazioni dell'adattatore per zigbee2mqtt",
5
5
  "Select and configure your Zigbee2MQTT connection": "Seleziona e configura la connessione Zigbee2MQTT",
6
6
  "Select connection to Zigbee2MQTT": "Seleziona la connessione a Zigbee2MQTT",
@@ -13,6 +13,7 @@
13
13
  "Use Auth-Token": "Usa token di autenticazione",
14
14
  "Auth-Token (special characters are not supported)": "Auth-Token (i caratteri speciali non sono supportati)",
15
15
  "Create a dummy MQTT-Server for Zigbee2MQTT": "Crea un server MQTT fittizio per Zigbee2MQTT",
16
+ "Base MQTT topic": "Topic MQTT base",
16
17
  "External MQTT-Server IP-Address": "Indirizzo IP del server MQTT esterno",
17
18
  "External MQTT-Server Port": "Porta server MQTT esterna",
18
19
  "MQTT-Server IP-Address bind": "Binding dell'indirizzo IP del server MQTT",
@@ -45,5 +46,5 @@
45
46
  "With which log level should a negative search be logged?": "Con quale livello di registro deve essere registrata una ricerca negativa?",
46
47
  "Time of the automatic check": "Orario del controllo automatico",
47
48
  "More information": "Maggiori informazioni",
48
- "Allways update available state when message included last_seen status": "Aggiorna sempre lo stato disponibile quando il messaggio include lo stato last_seen"
49
+ "Always update available state when message included last_seen status": "Aggiorna sempre lo stato disponibile quando il messaggio include lo stato last_seen"
49
50
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "click for Documentation": "klik voor documentatie",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "Een gedetailleerde documentatie met uitleg en alle verdere informatie is te vinden op deze GitHub-pagina:",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "Een gedetailleerde documentatie met uitleg en alle verdere informatie is te vinden op deze GitHub-pagina:",
4
4
  "zigbee2mqtt adapter settings": "Adapterinstellingen voor zigbee2mqtt",
5
5
  "Select and configure your Zigbee2MQTT connection": "Selecteer en configureer de Zigbee2MQTT-verbinding",
6
6
  "Select connection to Zigbee2MQTT": "Selecteer verbinding met Zigbee2MQTT",
@@ -13,6 +13,7 @@
13
13
  "Use Auth-Token": "Gebruik Auth-Token",
14
14
  "Auth-Token (special characters are not supported)": "Auth-Token (speciale tekens worden niet ondersteund)",
15
15
  "Create a dummy MQTT-Server for Zigbee2MQTT": "Maak een dummy MQTT-server voor Zigbee2MQTT",
16
+ "Base MQTT topic": "Basis MQTT-topic",
16
17
  "External MQTT-Server IP-Address": "Extern MQTT-server IP-adres",
17
18
  "External MQTT-Server Port": "Externe MQTT-serverpoort",
18
19
  "MQTT-Server IP-Address bind": "MQTT-server IP-adres binding",
@@ -45,5 +46,5 @@
45
46
  "With which log level should a negative search be logged?": "Met welk logniveau moet een negatieve zoekopdracht worden geregistreerd?",
46
47
  "Time of the automatic check": "Tijdstip van de automatische controle",
47
48
  "More information": "Meer informatie",
48
- "Allways update available state when message included last_seen status": "Altijd de beschikbare status bijwerken wanneer het bericht de last_seen-status bevat"
49
+ "Always update available state when message included last_seen status": "Altijd de beschikbare status bijwerken wanneer het bericht de last_seen-status bevat"
49
50
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "click for Documentation": "kliknij, aby uzyskać dokumentację",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "Szczegółowa dokumentacja z wyjaśnieniami i wszystkimi dalszymi informacjami można znaleźć na tej stronie GitHub:",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "Szczegółowa dokumentacja z wyjaśnieniami i wszystkimi dalszymi informacjami można znaleźć na tej stronie GitHub:",
4
4
  "zigbee2mqtt adapter settings": "Ustawienia adaptera dla zigbee2mqtt",
5
5
  "Select and configure your Zigbee2MQTT connection": "Wybierz i skonfiguruj połączenie Zigbee2MQTT",
6
6
  "Select connection to Zigbee2MQTT": "Wybierz połączenie z Zigbee2MQTT",
@@ -13,6 +13,7 @@
13
13
  "Use Auth-Token": "Użyj tokena uwierzytelniającego",
14
14
  "Auth-Token (special characters are not supported)": "Auth-Token (znaki specjalne nie są obsługiwane)",
15
15
  "Create a dummy MQTT-Server for Zigbee2MQTT": "Utwórz fikcyjny serwer MQTT dla Zigbee2MQTT",
16
+ "Base MQTT topic": "Podstawowy temat MQTT",
16
17
  "External MQTT-Server IP-Address": "Adres IP zewnętrznego serwera MQTT",
17
18
  "External MQTT-Server Port": "Zewnętrzny port serwera MQTT",
18
19
  "MQTT-Server IP-Address bind": "Powiązanie adresu IP serwera MQTT",
@@ -45,5 +46,5 @@
45
46
  "With which log level should a negative search be logged?": "Na jakim poziomie rejestrowania należy rejestrować wyszukiwanie wykluczające?",
46
47
  "Time of the automatic check": "Czas automatycznego sprawdzenia",
47
48
  "More information": "Więcej informacji",
48
- "Allways update available state when message included last_seen status": "Zawsze aktualizuj available stan, gdy wiadomość zawiera status last_seen"
49
+ "Always update available state when message included last_seen status": "Zawsze aktualizuj available stan, gdy wiadomość zawiera status last_seen"
49
50
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "click for Documentation": "clique para ver a documentação",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "Uma documentação detalhada com explicações e toda a informação adicional pode ser encontrada nesta pagina do GitHub:",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "Uma documentação detalhada com explicações e toda a informação adicional pode ser encontrada nesta pagina do GitHub:",
4
4
  "zigbee2mqtt adapter settings": "Configurações do adaptador para zigbee2mqtt",
5
5
  "Select and configure your Zigbee2MQTT connection": "Selecione e configure a conexão Zigbee2MQTT",
6
6
  "Select connection to Zigbee2MQTT": "Selecione a conexão com Zigbee2MQTT",
@@ -13,6 +13,7 @@
13
13
  "Use Auth-Token": "Usar token de autenticação",
14
14
  "Auth-Token (special characters are not supported)": "Auth-Token (caracteres especiais não são suportados)",
15
15
  "Create a dummy MQTT-Server for Zigbee2MQTT": "Crie um servidor MQTT fictício para Zigbee2MQTT",
16
+ "Base MQTT topic": "Tópico MQTT base",
16
17
  "External MQTT-Server IP-Address": "Endereço IP do servidor MQTT externo",
17
18
  "External MQTT-Server Port": "Porta externa do servidor MQTT",
18
19
  "MQTT-Server IP-Address bind": "Vinculação de endereço IP do servidor MQTT",
@@ -45,5 +46,5 @@
45
46
  "With which log level should a negative search be logged?": "Com qual nível de log uma pesquisa negativa deve ser registrada?",
46
47
  "Time of the automatic check": "Hora da verificação automática",
47
48
  "More information": "Mais Informações",
48
- "Allways update available state when message included last_seen status": "Sempre atualize o estado disponível quando a mensagem incluir o status last_seen"
49
+ "Always update available state when message included last_seen status": "Sempre atualize o estado disponível quando a mensagem incluir o status last_seen"
49
50
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "click for Documentation": "нажмите для документации",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "Подробная документация с объяснениями и всеми дальними информаций можно найти на этом GitHub-странице:",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "Подробная документация с объяснениями и всеми дальними информаций можно найти на этом GitHub-странице:",
4
4
  "zigbee2mqtt adapter settings": "Настройки адаптера для zigbee2mqtt",
5
5
  "Select and configure your Zigbee2MQTT connection": "Выберите и настройте соединение Zigbee2MQTT",
6
6
  "Select connection to Zigbee2MQTT": "Выберите подключение к Zigbee2MQTT",
@@ -13,6 +13,7 @@
13
13
  "Use Auth-Token": "Использовать авторизационный токен",
14
14
  "Auth-Token (special characters are not supported)": "Auth-Token (специальные символы не поддерживаются)",
15
15
  "Create a dummy MQTT-Server for Zigbee2MQTT": "Создайте фиктивный MQTT-сервер для Zigbee2MQTT",
16
+ "Base MQTT topic": "Базовая тема MQTT",
16
17
  "External MQTT-Server IP-Address": "IP-адрес внешнего MQTT-сервера",
17
18
  "External MQTT-Server Port": "Порт внешнего MQTT-сервера",
18
19
  "MQTT-Server IP-Address bind": "Привязка IP-адреса MQTT-сервера",
@@ -45,5 +46,5 @@
45
46
  "With which log level should a negative search be logged?": "На каком уровне журнала следует регистрировать отрицательный поиск?",
46
47
  "Time of the automatic check": "Время автоматической проверки",
47
48
  "More information": "Больше информации",
48
- "Allways update available state when message included last_seen status": "Всегда обновляйте доступное состояние, когда сообщение включает статус last_seen"
49
+ "Always update available state when message included last_seen status": "Всегда обновляйте доступное состояние, когда сообщение включает статус last_seen"
49
50
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "click for Documentation": "натисніть для документації",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "Детальна документація з поясненнями і всім більшою інформацією можна знайти на цій GitHub-сторінці:",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "Детальна документація з поясненнями і всім більшою інформацією можна знайти на цій GitHub-сторінці:",
4
4
  "zigbee2mqtt adapter settings": "Налаштування адаптера для zigbee2mqtt",
5
5
  "Select and configure your Zigbee2MQTT connection": "Виберіть і налаштуйте підключення Zigbee2MQTT",
6
6
  "Select connection to Zigbee2MQTT": "Виберіть підключення до Zigbee2MQTT",
@@ -13,6 +13,7 @@
13
13
  "Use Auth-Token": "Використовуйте Auth-Token",
14
14
  "Auth-Token (special characters are not supported)": "Auth-Token (спеціальні символи не підтримуються)",
15
15
  "Create a dummy MQTT-Server for Zigbee2MQTT": "Створіть фіктивний MQTT-сервер для Zigbee2MQTT",
16
+ "Base MQTT topic": "Базова тема MQTT",
16
17
  "External MQTT-Server IP-Address": "IP-адреса зовнішнього MQTT-сервера",
17
18
  "External MQTT-Server Port": "Зовнішній порт MQTT-сервера",
18
19
  "MQTT-Server IP-Address bind": "Прив’язка IP-адреси MQTT-сервера",
@@ -45,5 +46,5 @@
45
46
  "With which log level should a negative search be logged?": "На якому рівні журналу слід реєструвати негативний пошук?",
46
47
  "Time of the automatic check": "Час автоматичної перевірки",
47
48
  "More information": "Більше інформації",
48
- "Allways update available state when message included last_seen status": "Завжди оновлюйте доступний стан, коли повідомлення містить статус last_seen"
49
+ "Always update available state when message included last_seen status": "Завжди оновлюйте доступний стан, коли повідомлення містить статус last_seen"
49
50
  }
@@ -1,48 +1,52 @@
1
1
  {
2
- "click for Documentation": "点击查看文档",
3
- "A detailed documentation with explanations and all further information can be found on this GitHub page:": "有关更多信息,请参见 GitHub 页面上的详细说明和解释:",
4
- "zigbee2mqtt adapter settings": "zigbee2mqtt 的适配器设置",
5
- "Select and configure your Zigbee2MQTT connection": "选择并配置 Zigbee2MQTT 连接",
6
- "Select connection to Zigbee2MQTT": "选择与 Zigbee2MQTT 的连接",
7
- "Websocket": "网络套接字",
8
- "External MQTT-Server": "外部 MQTT 服务器",
9
- "Internal MQTT-Server": "内部 MQTT 服务器",
10
- "Configure your Zigbee2MQTT connection": "配置您的 Zigbee2MQTT 连接",
11
- "Websocket IP-Address": "Websocket IP 地址",
12
- "Websocket Port": "Websocket 端口",
13
- "Use Auth-Token": "使用授权令牌",
14
- "Auth-Token (special characters are not supported)": "Auth-Token(不支持特殊字符)",
15
- "Create a dummy MQTT-Server for Zigbee2MQTT": "为 Zigbee2MQTT 创建虚拟 MQTT 服务器",
16
- "External MQTT-Server IP-Address": "外部 MQTT 服务器 IP 地址",
17
- "External MQTT-Server Port": "外部 MQTT 服务器端口",
18
- "MQTT-Server IP-Address bind": "MQTT-服务器IP地址绑定",
19
- "MQTT-Server Port": "MQTT-服务器端口",
20
- "Configure your Zigbee2MQTT WebUi connection": "配置 Zigbee2MQTT WebUi 连接",
21
- "WebUi Address": "WebUi地址",
22
- "WebUi Port": "WebUi端口",
23
- "Color configurations": "颜色配置",
24
- "Color temperature sync with color": "色温与颜色同步",
25
- "Use Kelvin instead of mired for the color temps": "使用 Kelvin 而不是 mired 的色温",
26
- "Other configurations": "其他配置",
27
- "Proxy Zigbee2MQTT logs to ioBroker logs": "代理 Zigbee2MQTT 日志到 ioBroker 日志",
28
- "Brightness step should also turn the light on or off": "亮度步骤也应该打开或关闭灯",
29
- "The events such as 'Device removed' or 'Disabled' are displayed in the description instead of in the name.": "“设备已移除”或“已禁用”等事件显示在描述中而不是名称中。",
30
- "Scheme": "方案",
31
- "Use MQTT Credentials": "使用 MQTT 凭证",
32
- "MQTT Username": "MQTT 用户名",
33
- "MQTT Password": "MQTT 密码",
34
- "Download device images from Zigbee2Mqtt and use them as object icons.": " Zigbee2Mqtt 下载设备图像并将其用作对象图标。",
35
- "Generate simple 'Hold' and 'Release' states": "生成简单的“保持”和“释放”状态",
36
- "When enabled, the 'Hold' and 'Release' states are combined and the 'Hold' data point remains true until the 'Release' event arrives.": "启用后,“保持”和“释放”状态会结合在一起,并且“保持”数据点保持为真,直到“释放”事件到达。",
37
- "Generate simple 'Move' and 'Stop' states": "生成简单的“移动”和“停止”状态",
38
- "When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "启用后,“移动”和“停止”状态将组合在一起,并且“移动”数据点保持为真,直到“停止”事件到达。",
39
- "State configurations": "状态配置",
40
- "Generate simple 'Press' and 'Release' states": "生成简单的“按下”和“释放”状态",
41
- "When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "启用后,“按下”和“释放”状态将组合在一起,并且“按下”数据点保持为真,直到“释放”事件到达。",
42
- "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> 请注意,图标存储在对象中,因此不应过大!",
43
- "Automatic check for missing routers in the coordinator memory.": "自动检查协调器内存中丢失的路由器。",
44
- "With which log level should a negative search be logged?": "应该使用哪个日志级别来记录负面搜索?",
45
- "Time of the automatic check": "自动检查时间",
46
- "More information": "更多信息",
47
- "Allways update available state when message included last_seen status": "当消息包含 last_seen 状态时,总是更新可用状态",
2
+ "click for Documentation": "点击查看文档",
3
+ "A detailed documentation with explanations and all further information can be found on this GitHub page": "详细的文档和所有其他信息可在此 GitHub 页面找到:",
4
+ "zigbee2mqtt adapter settings": "zigbee2mqtt 适配器设置",
5
+ "Select and configure your Zigbee2MQTT connection": "选择并配置您的 Zigbee2MQTT 连接",
6
+ "Select connection to Zigbee2MQTT": "选择 Zigbee2MQTT 连接",
7
+ "Websocket": "Websocket",
8
+ "External MQTT-Server": "外部 MQTT 服务器",
9
+ "Internal MQTT-Server": "内部 MQTT 服务器",
10
+ "Configure your Zigbee2MQTT connection": "配置您的 Zigbee2MQTT 连接",
11
+ "Websocket IP-Address": "Websocket IP 地址",
12
+ "Websocket Port": "Websocket 端口",
13
+ "Use Auth-Token": "使用认证令牌",
14
+ "Auth-Token (special characters are not supported)": "认证令牌(不支持特殊字符)",
15
+ "Create a dummy MQTT-Server for Zigbee2MQTT": "为 Zigbee2MQTT 创建虚拟 MQTT 服务器",
16
+ "Base MQTT topic": "MQTT 基础主题",
17
+ "External MQTT-Server IP-Address": "外部 MQTT 服务器 IP 地址",
18
+ "External MQTT-Server Port": "外部 MQTT 服务器端口",
19
+ "MQTT-Server IP-Address bind": "MQTT 服务器绑定的 IP 地址",
20
+ "MQTT-Server Port": "MQTT 服务器端口",
21
+ "Configure your Zigbee2MQTT WebUi connection": "配置您的 Zigbee2MQTT WebUi 连接",
22
+ "WebUi Address": "WebUi 地址",
23
+ "WebUi Port": "WebUi 端口",
24
+ "Color configurations": "颜色配置",
25
+ "Color temperature sync with color": "颜色温度与颜色同步",
26
+ "Use Kelvin instead of mired for the color temps": "使用开尔文而不是迈尔德表示色温",
27
+ "Other configurations": "其他配置",
28
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "将 Zigbee2MQTT 日志代理到 ioBroker 日志",
29
+ "Brightness move should also turn the light on or off": "亮度调节应同时控制灯的开关",
30
+ "Brightness step should also turn the light on or off": "亮度步骤应同时控制灯的开关",
31
+ "The events such as 'Device removed' or 'Disabled' are displayed in the description instead of in the name.": "‘设备移除’或‘已禁用’等事件显示在描述中,而不是名称中。",
32
+ "Scheme": "方案",
33
+ "Use MQTT Credentials": "使用 MQTT 凭证",
34
+ "MQTT Username": "MQTT 用户名",
35
+ "MQTT Password": "MQTT 密码",
36
+ "Download device images from Zigbee2Mqtt and use them as object icons.": "从 Zigbee2Mqtt 下载设备图像并用作对象图标。",
37
+ "Generate simple 'Hold' and 'Release' states": "生成简单的‘按住’和‘释放’状态",
38
+ "When enabled, the 'Hold' and 'Release' states are combined and the 'Hold' data point remains true until the 'Release' event arrives.": "启用后,‘按住’和‘释放’状态将合并,‘按住’数据点在‘释放’事件到来前保持为真。",
39
+ "Generate simple 'Move' and 'Stop' states": "生成简单的‘移动’和‘停止’状态",
40
+ "When enabled, the 'Move' and 'Stop' states are combined and the 'Move' data point remains true until the 'Stop' event arrives.": "启用后,‘移动’和‘停止’状态将合并,‘移动’数据点在‘停止’事件到来前保持为真。",
41
+ "State configurations": "状态配置",
42
+ "Generate simple 'Press' and 'Release' states": "生成简单的‘按下’和‘释放’状态",
43
+ "When enabled, the 'Press' and 'Release' states are combined and the 'Press' data point remains true until the 'Release' event arrives.": "启用后,‘按下’和‘释放’状态将合并,‘按下’数据点在‘释放’事件到来前保持为真。",
44
+ "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>请注意,图标存储在对象中,因此不应过大!",
45
+ "Automatic check for missing routers in the coordinator memory.": "自动检查协调器内存中缺失的路由器。",
46
+ "With which log level should a negative search be logged?": "应使用哪个日志级别记录失败的搜索?",
47
+ "Time of the automatic check": "自动检查时间",
48
+ "More information": "更多信息",
49
+ "Expert Settings. Please only use if you know what you're doing": "专家设置。请仅在您清楚操作的情况下使用",
50
+ "Always update state for occupancy when message arrives from zigbee2mqtt server (Only for true state). Increases load on ioBroker System": "当来自 zigbee2mqtt 服务器的消息到达时始终更新占用状态(仅限为 true 的状态)。会增加 ioBroker 系统负载",
51
+ "Always update available state when message included last_seen status": "当消息包含 last_seen 状态时始终更新可用状态"
48
52
  }
@@ -72,6 +72,17 @@
72
72
  ],
73
73
  "newLine": true
74
74
  },
75
+ "baseTopic": {
76
+ "type": "text",
77
+ "label": "Base MQTT topic",
78
+ "xs": 12,
79
+ "sm": 12,
80
+ "md": 6,
81
+ "lg": 4,
82
+ "xl": 4,
83
+ "default": "zigbee2mqtt",
84
+ "hidden": "data.connectionType != 'exmqtt'"
85
+ },
75
86
  "spacer01": {
76
87
  "type": "staticText",
77
88
  "text": "",
@@ -250,6 +261,11 @@
250
261
  "spacer02": {
251
262
  "type": "staticText",
252
263
  "text": "",
264
+ "xs": 12,
265
+ "sm": 12,
266
+ "md": 6,
267
+ "lg": 4,
268
+ "xl": 4,
253
269
  "newLine": true,
254
270
  "hidden": "data.connectionType == 'ws'"
255
271
  },
@@ -516,13 +532,18 @@
516
532
  "spacer04": {
517
533
  "type": "staticText",
518
534
  "text": "",
535
+ "xs": 12,
536
+ "sm": 12,
537
+ "md": 12,
538
+ "lg": 12,
539
+ "xl": 12,
519
540
  "newLine": true,
520
541
  "hidden": "data.coordinatorCheck != true"
521
542
  },
522
543
 
523
544
  "allwaysUpdateOccupancyState": {
524
545
  "type": "checkbox",
525
- "label": "Allways update state for occupancy when message arrives from zigbee2mqtt server (Only for true state). Increases load on ioBroker System",
546
+ "label": "Always update state for occupancy when message arrives from zigbee2mqtt server (Only for true state). Increases load on ioBroker System",
526
547
  "xs": 12,
527
548
  "sm": 12,
528
549
  "md": 12,
@@ -532,7 +553,7 @@
532
553
  },
533
554
  "allwaysUpdateAvailableState": {
534
555
  "type": "checkbox",
535
- "label": "Allways update available state when message included last_seen status",
556
+ "label": "Always update available state when message included last_seen status",
536
557
  "xs": 12,
537
558
  "sm": 12,
538
559
  "md": 12,
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zigbee2mqtt",
4
- "version": "3.0.7",
4
+ "version": "3.0.9",
5
5
  "news": {
6
+ "3.0.9": {
7
+ "en": "queue up message parsing\nSupport for non-default MQTT base topics",
8
+ "de": "nachrichtenparsing löschen\nUnterstützung für nicht-Standard-MQTT-Basisthemen",
9
+ "ru": "очередь сообщения парсинг\nПоддержка базовых тем MQTT без по умолчанию",
10
+ "pt": "processamento de mensagens em fila\nSuporte para tópicos de base MQTT não padrão",
11
+ "nl": "wachtrij bericht ontleden\nOndersteuning voor niet-standaard MQTT-basisonderwerpen",
12
+ "fr": "analyse des messages en attente\nPrise en charge des sujets de base MQTT non par défaut",
13
+ "it": "code up messaggio parsing\nSupporto per argomenti di base MQTT non di default",
14
+ "es": "mensaje de búsqueda\nApoyo a los temas básicos de MQTT no predeterminados",
15
+ "pl": "kolejka w górę wiadomości parsing\nWsparcie dla niedomyślnych tematów bazowych MQTT",
16
+ "uk": "чергування повідомлень\nПідтримка нерозголошення MQTT базових тем",
17
+ "zh-cn": "排队分析信件\n支持非默认 MQTT 基础主题"
18
+ },
19
+ "3.0.8": {
20
+ "en": "fix device is deleted\nfix translation",
21
+ "de": "fix device wird gelöscht\nbersetzung",
22
+ "ru": "фиксировать устройство удалено\nперевод",
23
+ "pt": "dispositivo de correção é excluído\ncorrigir tradução",
24
+ "nl": "fix apparaat wordt verwijderd\nfix vertaling",
25
+ "fr": "le dispositif de correction est supprimé\ncorriger la traduction",
26
+ "it": "dispositivo di correzione viene eliminato\ncorrezione della traduzione",
27
+ "es": "dispositivo de solución se elimina\ntraducción",
28
+ "pl": "urządzenie naprawcze zostaje usunięte\ntłumaczenie",
29
+ "uk": "видалити пристрій\nфіксувати переклад",
30
+ "zh-cn": "固定设备被删除\n固定翻译"
31
+ },
6
32
  "3.0.7": {
7
33
  "en": "fix jsconconf",
8
34
  "de": "fix jsconf",
@@ -67,32 +93,6 @@
67
93
  "pl": "krzak świetlny (del luminance _ raw)\nindicator.alarm.powódź",
68
94
  "uk": "апошні\nіндикатор.alarm.flood",
69
95
  "zh-cn": "corr 灯光( del 灯光_ raw)\n指标. alarm.flood"
70
- },
71
- "3.0.2": {
72
- "en": "corr WebSocket connection",
73
- "de": "korr WebSocket Verbindung",
74
- "ru": "гофровое соединение WebSocket",
75
- "pt": "conexão da WebSocket",
76
- "nl": "corr WebSocket-verbinding",
77
- "fr": "corr Connexion WebSocket",
78
- "it": "collegamento corr WebSocket",
79
- "es": "corr WebSocket connection",
80
- "pl": "połączenie corr WebSocket",
81
- "uk": "корр WebSocket підключення",
82
- "zh-cn": "corr WebSocket 连接"
83
- },
84
- "3.0.1": {
85
- "en": "corr icon download",
86
- "de": "corr icon herunterladen",
87
- "ru": "скачать значок",
88
- "pt": "corrimento ícone download",
89
- "nl": "corr pictogramdownload",
90
- "fr": "corr icon télécharger",
91
- "it": "icona corr scaricare",
92
- "es": "corr icono descargar",
93
- "pl": "pobierz ikonę corr",
94
- "uk": "cкачати ігру corr",
95
- "zh-cn": "corr 图标下载"
96
96
  }
97
97
  },
98
98
  "messages": [
@@ -238,6 +238,7 @@
238
238
  "wsTokenEnabled": false,
239
239
  "wsToken": "",
240
240
  "dummyMqtt": false,
241
+ "baseTopic": "zigbee2mqtt",
241
242
  "externalMqttServerIP": "",
242
243
  "externalMqttServerPort": 1883,
243
244
  "externalMqttServerCredentials": false,
@@ -251,9 +251,7 @@ class DeviceController {
251
251
  }
252
252
  }
253
253
 
254
- if (!this.createCache[device.ieee_address] ||
255
- this.createCache[device.ieee_address].name != deviceName ||
256
- this.createCache[device.ieee_address].description != description) {
254
+ if (!this.createCache[device.ieee_address] || this.createCache[device.ieee_address].name != deviceName || this.createCache[device.ieee_address].description != description) {
257
255
  const deviceObj = {
258
256
  type: 'device',
259
257
  common: {
@@ -298,20 +296,18 @@ class DeviceController {
298
296
  }
299
297
  }
300
298
 
301
- for (const state of device.states) {
302
- if (
303
- state &&
304
- (!this.createCache[device.ieee_address][state.id] ||
305
- this.createCache[device.ieee_address][state.id].name != state.name)
306
- ) {
307
- const iobState = {
308
- type: 'state',
309
- common: await this.copyAndCleanStateObj(state),
310
- native: {},
311
- };
299
+ if (device != undefined && device.states != undefined) {
300
+ for (const state of device.states) {
301
+ if (state && (!this.createCache[device.ieee_address][state.id] || this.createCache[device.ieee_address][state.id].name != state.name)) {
302
+ const iobState = {
303
+ type: 'state',
304
+ common: await this.copyAndCleanStateObj(state),
305
+ native: {},
306
+ };
312
307
 
313
- await this.adapter.extendObjectAsync(`${device.ieee_address}.${state.id}`, iobState);
314
- this.createCache[device.ieee_address][state.id] = { name: state.name, created: true };
308
+ await this.adapter.extendObjectAsync(`${device.ieee_address}.${state.id}`, iobState);
309
+ this.createCache[device.ieee_address][state.id] = {name: state.name, created: true};
310
+ }
315
311
  }
316
312
  }
317
313
  }
package/main.js CHANGED
@@ -32,6 +32,8 @@ let z2mController;
32
32
  let websocketController;
33
33
  let mqttServerController;
34
34
 
35
+ let messageParseMutex = Promise.resolve();
36
+
35
37
  class Zigbee2mqtt extends core.Adapter {
36
38
  constructor(options) {
37
39
  super({
@@ -129,7 +131,7 @@ class Zigbee2mqtt extends core.Adapter {
129
131
  );
130
132
  });
131
133
 
132
- mqttClient.subscribe('zigbee2mqtt/#');
134
+ mqttClient.subscribe(`${this.config.baseTopic}/#`);
133
135
 
134
136
  mqttClient.on('message', (topic, payload) => {
135
137
  const newMessage = `{"payload":${payload.toString() == '' ? '"null"' : payload.toString()},"topic":"${topic.slice(topic.search('/') + 1)}"}`;
@@ -177,107 +179,118 @@ class Zigbee2mqtt extends core.Adapter {
177
179
  }
178
180
 
179
181
  async messageParse(message) {
180
- // If the MQTT output type is set to attribute_and_json, the non-valid JSON must be checked here.
181
- if (utils.isJson(message) == false) {
182
- return;
183
- }
182
+ // Mutex lock: queue up calls to messageParse
183
+ let release;
184
+ const lock = new Promise((resolve) => (release = resolve));
185
+ const prev = messageParseMutex;
186
+ messageParseMutex = lock;
187
+ await prev;
188
+ try {
189
+ // If the MQTT output type is set to attribute_and_json, the non-valid JSON must be checked here.
190
+ if (utils.isJson(message) == false) {
191
+ return;
192
+ }
184
193
 
185
- const messageObj = JSON.parse(message);
194
+ const messageObj = JSON.parse(message);
186
195
 
187
- switch (messageObj.topic) {
188
- case 'bridge/config':
189
- break;
190
- case 'bridge/info':
191
- if (showInfo) {
192
- zigbee2mqttInfo(messageObj.payload, this.log);
193
- checkConfig(messageObj.payload.config, this.log, messageObj.payload.version);
194
- showInfo = false;
195
- }
196
- break;
197
- case 'bridge/state':
198
- if (messageObj.payload.state != 'online') {
199
- statesController.setAllAvailableToFalse();
200
- }
201
- this.setStateChanged('info.connection', messageObj.payload.state == 'online', true);
202
- break;
203
- case 'bridge/devices':
204
- await deviceController.createDeviceDefinitions(messageObj.payload);
205
- await deviceController.createOrUpdateDevices();
206
- await deviceController.checkAndProgressDeviceRemove();
207
- await statesController.subscribeWritableStates();
208
- statesController.processQueue();
209
- break;
210
- case 'bridge/groups':
211
- await deviceController.createGroupDefinitions(messageObj.payload);
212
- await deviceController.createOrUpdateDevices();
213
- await statesController.subscribeWritableStates();
214
- statesController.processQueue();
215
- break;
216
- case 'bridge/event':
217
- break;
218
- case 'bridge/response/coordinator_check':
219
- deviceController.processCoordinatorCheck(messageObj.payload);
220
- break;
221
- case 'bridge/response/device/remove':
222
- break;
223
- case 'bridge/response/device/options':
224
- break;
225
- case 'bridge/response/permit_join':
226
- break;
227
- case 'bridge/extensions':
228
- break;
229
- case 'bridge/logging':
230
- if (this.config.proxyZ2MLogs == true) {
231
- z2mController.proxyZ2MLogs(messageObj);
232
- }
233
- break;
234
- case 'bridge/response/device/configure':
235
- break;
236
- case 'bridge/response/device/rename':
237
- await deviceController.renameDeviceInCache(messageObj);
238
- await deviceController.createOrUpdateDevices();
239
- statesController.processQueue();
240
- break;
241
- case 'bridge/response/networkmap':
242
- break;
243
- case 'bridge/response/touchlink/scan':
244
- break;
245
- case 'bridge/response/touchlink/identify':
246
- break;
247
- case 'bridge/response/touchlink/factory_reset':
248
- break;
249
- default:
250
- {
251
- // is the payload an availability status?
252
- if (messageObj.topic.endsWith('/availability')) {
253
- // If an availability message for an old device ID comes with a payload of NULL, this is the indicator that a device has been unnamed.
254
- if (messageObj.payload == 'null') {
255
- return;
256
- }
257
- // is it a viable payload?
258
- if (messageObj.payload && messageObj.payload.state) {
259
- // {"payload":{"state":"online"},"topic":"FL.Licht.Links/availability"} ----> {"payload":{"available":true},"topic":"FL.Licht.Links"}
260
- const newMessage = {
261
- payload: { available: messageObj.payload.state == 'online' },
262
- topic: messageObj.topic.replace('/availability', ''),
263
- };
264
- statesController.processDeviceMessage(newMessage);
265
- }
266
- // States
267
- } else {
268
- // With the MQTT output type attribute_and_json, primitive payloads arrive here that must be discarded.
269
- if (utils.isObject(messageObj.payload) == false) {
270
- return;
271
- }
272
- // If MQTT is used, I have to filter the self-sent 'set' commands.
273
- if (messageObj.topic.endsWith('/set')) {
274
- return;
196
+ switch (messageObj.topic) {
197
+ case 'bridge/config':
198
+ break;
199
+ case 'bridge/info':
200
+ if (showInfo) {
201
+ zigbee2mqttInfo(messageObj.payload, this.log);
202
+ checkConfig(messageObj.payload.config, this.log, messageObj.payload.version);
203
+ showInfo = false;
204
+ }
205
+ break;
206
+ case 'bridge/state':
207
+ if (messageObj.payload.state != 'online') {
208
+ statesController.setAllAvailableToFalse();
209
+ }
210
+ this.setStateChanged('info.connection', messageObj.payload.state == 'online', true);
211
+ break;
212
+ case 'bridge/devices':
213
+ await deviceController.createDeviceDefinitions(messageObj.payload);
214
+ await deviceController.createOrUpdateDevices();
215
+ await deviceController.checkAndProgressDeviceRemove();
216
+ await statesController.subscribeWritableStates();
217
+ statesController.processQueue();
218
+ break;
219
+ case 'bridge/groups':
220
+ await deviceController.createGroupDefinitions(messageObj.payload);
221
+ await deviceController.createOrUpdateDevices();
222
+ await statesController.subscribeWritableStates();
223
+ statesController.processQueue();
224
+ break;
225
+ case 'bridge/event':
226
+ break;
227
+ case 'bridge/response/coordinator_check':
228
+ deviceController.processCoordinatorCheck(messageObj.payload);
229
+ break;
230
+ case 'bridge/response/device/remove':
231
+ break;
232
+ case 'bridge/response/device/options':
233
+ break;
234
+ case 'bridge/response/permit_join':
235
+ break;
236
+ case 'bridge/extensions':
237
+ break;
238
+ case 'bridge/logging':
239
+ if (this.config.proxyZ2MLogs == true) {
240
+ z2mController.proxyZ2MLogs(messageObj);
241
+ }
242
+ break;
243
+ case 'bridge/response/device/configure':
244
+ break;
245
+ case 'bridge/response/device/rename':
246
+ await deviceController.renameDeviceInCache(messageObj);
247
+ await deviceController.createOrUpdateDevices();
248
+ statesController.processQueue();
249
+ break;
250
+ case 'bridge/response/networkmap':
251
+ break;
252
+ case 'bridge/response/touchlink/scan':
253
+ break;
254
+ case 'bridge/response/touchlink/identify':
255
+ break;
256
+ case 'bridge/response/touchlink/factory_reset':
257
+ break;
258
+ default:
259
+ {
260
+ // is the payload an availability status?
261
+ if (messageObj.topic.endsWith('/availability')) {
262
+ // If an availability message for an old device ID comes with a payload of NULL, this is the indicator that a device has been unnamed.
263
+ if (messageObj.payload == 'null') {
264
+ return;
265
+ }
266
+ // is it a viable payload?
267
+ if (messageObj.payload && messageObj.payload.state) {
268
+ // {"payload":{"state":"online"},"topic":"FL.Licht.Links/availability"} ----> {"payload":{"available":true},"topic":"FL.Licht.Links"}
269
+ const newMessage = {
270
+ payload: { available: messageObj.payload.state == 'online' },
271
+ topic: messageObj.topic.replace('/availability', ''),
272
+ };
273
+
274
+ statesController.processDeviceMessage(newMessage);
275
+ }
276
+ // States
277
+ } else {
278
+ // With the MQTT output type attribute_and_json, primitive payloads arrive here that must be discarded.
279
+ if (utils.isObject(messageObj.payload) == false) {
280
+ return;
281
+ }
282
+ // If MQTT is used, I have to filter the self-sent 'set' commands.
283
+ if (messageObj.topic.endsWith('/set')) {
284
+ return;
285
+ }
286
+
287
+ statesController.processDeviceMessage(messageObj);
275
288
  }
276
-
277
- statesController.processDeviceMessage(messageObj);
278
289
  }
279
- }
280
- break;
290
+ break;
291
+ }
292
+ } finally {
293
+ release();
281
294
  }
282
295
  }
283
296
 
@@ -358,7 +371,7 @@ class Zigbee2mqtt extends core.Adapter {
358
371
  const message = (await z2mController.createZ2MMessage(id, state)) || { topic: '', payload: '' };
359
372
 
360
373
  if (['exmqtt', 'intmqtt'].includes(this.config.connectionType)) {
361
- mqttClient.publish(`zigbee2mqtt/${message.topic}`, JSON.stringify(message.payload));
374
+ mqttClient.publish(`${this.config.baseTopic}/${message.topic}`, JSON.stringify(message.payload));
362
375
  } else if (this.config.connectionType == 'ws') {
363
376
  websocketController.send(JSON.stringify(message));
364
377
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zigbee2mqtt",
3
- "version": "3.0.7",
3
+ "version": "3.0.9",
4
4
  "description": "Zigbee2MQTT adapter for ioBroker",
5
5
  "author": {
6
6
  "name": "Dennis Rathjen and Arthur Rupp",