iobroker.zigbee2mqtt 0.1.0 → 1.0.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 CHANGED
@@ -15,6 +15,10 @@
15
15
 
16
16
  Zigbee2MQTT adapter for ioBroker
17
17
 
18
+ ## Adapter Documentation
19
+
20
+ [Adapter Documentation](./docs/wiki.md)
21
+
18
22
  ## Changelog
19
23
 
20
24
  <!--
@@ -26,6 +30,32 @@ Zigbee2MQTT adapter for ioBroker
26
30
  Placeholder for the next version (at the beginning of the line):
27
31
  ### **WORK IN PROGRESS**
28
32
  -->
33
+ ### 1.0.0 (2022-10-09)
34
+
35
+ **!!!BREAKING CHANGE!!!**
36
+
37
+ - (o0shojo0o) added options for external MQTT-Server
38
+ - (o0shojo0o) connection to zigbe2mqtt completely reworked and changed to MQTT
39
+ - (o0shojo0o) lots of bugfixes
40
+ - (o0shojo0o) automatically set button actions back to false
41
+ - (o0shojo0o) added support for Zigbee2MQTT feature simulated_brightness
42
+ - (o0shojo0o) added config check
43
+ - (arteck) added log output about coordinator details
44
+
45
+ ### 0.2.0 (2022-10-04)
46
+
47
+ - (o0shojo0o) group states corrected
48
+ - (o0shojo0o) added option 'Use Kelvin instead of mired for the color temps'
49
+ - (o0shojo0o) remove available logic, now will use the information from z2m
50
+ - (o0shojo0o) rename noLogDevices to logfilter
51
+ - (o0shojo0o) lots of bugfixes
52
+ - (arteck) added noLogDevices functionality
53
+ - (arteck) added debugmessage for specific device functionality
54
+ - (arteck) added some states are default false
55
+ - (o0shojo0o) added support for scenes defined on a device
56
+ - (o0shojo0o) fix available state role
57
+ - (o0shojo0o) fix subscribeWritableStates
58
+
29
59
  ### 0.1.0 (2022-09-29)
30
60
 
31
61
  - (o0shojo0o) first release
@@ -1,5 +1,12 @@
1
1
  {
2
- "zigbee2mqtt adapter settings": "Adaptereinstellungen für zigbee2mqtt",
3
- "option1": "Option 1",
4
- "option2": "Option 2"
5
- }
2
+ "zigbee2mqtt adapter settings": "Adaptereinstellungen für zigbee2mqtt",
3
+ "External MQTT-Server IP-Adress": "IP-Adresse des externen MQTT-Servers",
4
+ "External MQTT-Server Port": "Port des externen MQTT-Servers",
5
+ "Use external MQTT-Server": "Externen MQTT-Server verwenden",
6
+ "MQTT-Server IP-Adress bind": "MQTT-Server IP-Adresse binden",
7
+ "MQTT-Server Port": "MQTT-Server Port",
8
+ "WebUi Address": "WebUi Adresse",
9
+ "WebUi Port": "WebUi Port",
10
+ "Use Kelvin instead of mired for the color temps": "Verwenden Sie Kelvin anstelle von Mired für die Farbtemperaturen",
11
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "Proxy Zigbee2MQTT-Protokolle zu ioBroker-Protokollen"
12
+ }
@@ -1,5 +1,12 @@
1
1
  {
2
2
  "zigbee2mqtt adapter settings": "Adapter settings for zigbee2mqtt",
3
- "option1": "option1",
4
- "option2": "option2"
5
- }
3
+ "External MQTT-Server IP-Adress": "External MQTT-Server IP-Adress",
4
+ "External MQTT-Server Port": "External MQTT-Server Port",
5
+ "Use external MQTT-Server": "Use external MQTT-Server",
6
+ "MQTT-Server IP-Adress bind": "MQTT-Server IP-Adress bind",
7
+ "MQTT-Server Port": "MQTT-Server Port",
8
+ "WebUi Address": "WebUi Address",
9
+ "WebUi Port": "WebUi Port",
10
+ "Use Kelvin instead of mired for the color temps": "Use Kelvin instead of mired for the color temps",
11
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "Proxy Zigbee2MQTT logs to ioBroker logs"
12
+ }
@@ -1,5 +1,12 @@
1
1
  {
2
- "zigbee2mqtt adapter settings": "Ajustes del adaptador para zigbee2mqtt",
3
- "option1": "Opción 1",
4
- "option2": "opcion 2"
2
+ "zigbee2mqtt adapter settings": "Configuración del adaptador para zigbee2mqtt",
3
+ "External MQTT-Server IP-Adress": "Dirección IP del servidor MQTT externo",
4
+ "External MQTT-Server Port": "Puerto de servidor MQTT externo",
5
+ "Use external MQTT-Server": "Usar servidor MQTT externo",
6
+ "MQTT-Server IP-Adress bind": "Enlace de dirección IP del servidor MQTT",
7
+ "MQTT-Server Port": "Puerto del servidor MQTT",
8
+ "WebUi Address": "Dirección de interfaz de usuario web",
9
+ "WebUi Port": "Puerto WebUi",
10
+ "Use Kelvin instead of mired for the color temps": "Use Kelvin en lugar de mired para las temperaturas de color",
11
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "Proxy de registros Zigbee2MQTT a registros de ioBroker"
5
12
  }
@@ -1,5 +1,12 @@
1
1
  {
2
- "zigbee2mqtt adapter settings": "Paramètres d'adaptateur pour zigbee2mqtt",
3
- "option1": "Option 1",
4
- "option2": "Option 2"
2
+ "zigbee2mqtt adapter settings": "Paramètres de l'adaptateur pour zigbee2mqtt",
3
+ "External MQTT-Server IP-Adress": "Adresse IP du serveur MQTT externe",
4
+ "External MQTT-Server Port": "Port serveur MQTT externe",
5
+ "Use external MQTT-Server": "Utiliser un serveur MQTT externe",
6
+ "MQTT-Server IP-Adress bind": "Liaison d'adresse IP MQTT-Server",
7
+ "MQTT-Server Port": "Port du serveur MQTT",
8
+ "WebUi Address": "Adresse de l'interface Web",
9
+ "WebUi Port": "Port WebUI",
10
+ "Use Kelvin instead of mired for the color temps": "Utilisez Kelvin au lieu de embourbé pour les températures de couleur",
11
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "Proxy Zigbee2MQTT se connecte aux journaux ioBroker"
5
12
  }
@@ -1,5 +1,12 @@
1
1
  {
2
- "zigbee2mqtt adapter settings": "Impostazioni dell'adattatore per zigbee2mqtt",
3
- "option1": "opzione 1",
4
- "option2": "opzione 2"
2
+ "zigbee2mqtt adapter settings": "Impostazioni dell'adattatore per zigbee2mqtt",
3
+ "External MQTT-Server IP-Adress": "Indirizzo IP del server MQTT esterno",
4
+ "External MQTT-Server Port": "Porta del server MQTT esterno",
5
+ "Use external MQTT-Server": "Utilizzare un server MQTT esterno",
6
+ "MQTT-Server IP-Adress bind": "Bind dell'indirizzo IP del server MQTT",
7
+ "MQTT-Server Port": "Porta server MQTT",
8
+ "WebUi Address": "Indirizzo WebUi",
9
+ "WebUi Port": "Porta WebUi",
10
+ "Use Kelvin instead of mired for the color temps": "Usa Kelvin invece di mired per le temperature di colore",
11
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "Proxy Zigbee2MQTT registra nei registri di ioBroker"
5
12
  }
@@ -1,5 +1,12 @@
1
1
  {
2
- "zigbee2mqtt adapter settings": "Adapterinstellingen voor zigbee2mqtt",
3
- "option1": "Optie 1",
4
- "option2": "Optie 2"
2
+ "zigbee2mqtt adapter settings": "Adapterinstellingen voor zigbee2mqtt",
3
+ "External MQTT-Server IP-Adress": "Extern MQTT-server IP-adres",
4
+ "External MQTT-Server Port": "Externe MQTT-serverpoort",
5
+ "Use external MQTT-Server": "Externe MQTT-server gebruiken",
6
+ "MQTT-Server IP-Adress bind": "MQTT-server IP-adres binden",
7
+ "MQTT-Server Port": "MQTT-serverpoort",
8
+ "WebUi Address": "WebUi-adres",
9
+ "WebUi Port": "WebUi-poort",
10
+ "Use Kelvin instead of mired for the color temps": "Gebruik Kelvin in plaats van mired voor de kleurtemperaturen",
11
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "Proxy Zigbee2MQTT logt in op ioBroker logs"
5
12
  }
@@ -1,5 +1,12 @@
1
1
  {
2
- "zigbee2mqtt adapter settings": "Ustawienia adaptera dla zigbee2mqtt",
3
- "option1": "opcja 1",
4
- "option2": "Opcja 2"
2
+ "zigbee2mqtt adapter settings": "Ustawienia adaptera dla zigbee2mqtt",
3
+ "External MQTT-Server IP-Adress": "Zewnętrzny adres IP serwera MQTT",
4
+ "External MQTT-Server Port": "Zewnętrzny port serwera MQTT",
5
+ "Use external MQTT-Server": "Użyj zewnętrznego serwera MQTT",
6
+ "MQTT-Server IP-Adress bind": "Powiązanie adresu IP serwera MQTT",
7
+ "MQTT-Server Port": "Port serwera MQTT",
8
+ "WebUi Address": "Adres WebUI",
9
+ "WebUi Port": "Port WebUI",
10
+ "Use Kelvin instead of mired for the color temps": "Użyj Kelvina zamiast mired dla temperatury kolorów",
11
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "Proxy Zigbee2MQTT loguje do logów ioBroker"
5
12
  }
@@ -1,5 +1,12 @@
1
1
  {
2
- "zigbee2mqtt adapter settings": "Configurações do adaptador para zigbee2mqtt",
3
- "option1": "Opção 1",
4
- "option2": "opção 2"
2
+ "zigbee2mqtt adapter settings": "Configurações do adaptador para zigbee2mqtt",
3
+ "External MQTT-Server IP-Adress": "Endereço IP do Servidor MQTT Externo",
4
+ "External MQTT-Server Port": "Porta externa do servidor MQTT",
5
+ "Use external MQTT-Server": "Usar servidor MQTT externo",
6
+ "MQTT-Server IP-Adress bind": "Ligação de endereço IP do servidor MQTT",
7
+ "MQTT-Server Port": "Porta do servidor MQTT",
8
+ "WebUi Address": "Endereço WebUi",
9
+ "WebUi Port": "Porta WebUI",
10
+ "Use Kelvin instead of mired for the color temps": "Use Kelvin em vez de atolado para as temperaturas de cor",
11
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "Proxy Zigbee2MQTT logs para logs ioBroker"
5
12
  }
@@ -1,5 +1,12 @@
1
1
  {
2
- "zigbee2mqtt adapter settings": "Настройки адаптера для zigbee2mqtt",
3
- "option1": "Опция 1",
4
- "option2": "вариант 2"
2
+ "zigbee2mqtt adapter settings": "Настройки адаптера для zigbee2mqtt",
3
+ "External MQTT-Server IP-Adress": "IP-адрес внешнего MQTT-сервера",
4
+ "External MQTT-Server Port": "Порт внешнего MQTT-сервера",
5
+ "Use external MQTT-Server": "Использовать внешний MQTT-сервер",
6
+ "MQTT-Server IP-Adress bind": "Привязка IP-адреса MQTT-сервера",
7
+ "MQTT-Server Port": "Порт MQTT-сервера",
8
+ "WebUi Address": "Адрес веб-интерфейса",
9
+ "WebUi Port": "Порт веб-интерфейса",
10
+ "Use Kelvin instead of mired for the color temps": "Используйте шкалу Кельвина вместо майреда для цветовой температуры.",
11
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "Проксировать журналы Zigbee2MQTT в журналы ioBroker"
5
12
  }
@@ -1,5 +1,12 @@
1
1
  {
2
- "zigbee2mqtt adapter settings": "zigbee2mqtt的适配器设置",
3
- "option1": "选项1",
4
- "option2": "选项2"
2
+ "zigbee2mqtt adapter settings": "zigbee2mqtt 的适配器设置",
3
+ "External MQTT-Server IP-Adress": "外部 MQTT-服务器 IP 地址",
4
+ "External MQTT-Server Port": "外部 MQTT 服务器端口",
5
+ "Use external MQTT-Server": "使用外部 MQTT-Server",
6
+ "MQTT-Server IP-Adress bind": "MQTT-服务器 IP 地址绑定",
7
+ "MQTT-Server Port": "MQTT-服务器端口",
8
+ "WebUi Address": "网页界面地址",
9
+ "WebUi Port": "WebUI 端口",
10
+ "Use Kelvin instead of mired for the color temps": "使用 Kelvin 而不是 mired 作为色温",
11
+ "Proxy Zigbee2MQTT logs to ioBroker logs": "代理 Zigbee2MQTT 日志到 ioBroker 日志"
5
12
  }
@@ -2,25 +2,79 @@
2
2
  "i18n": true,
3
3
  "type": "panel",
4
4
  "items": {
5
- "server": {
5
+ "externalMqttServerIP": {
6
6
  "type": "text",
7
- "label": "Server",
7
+ "label": "External MQTT-Server IP-Adress",
8
+ "newLine": true,
9
+ "disabled": "!data.useExternalMqtt"
10
+ },
11
+ "externalMqttServerPort": {
12
+ "type": "number",
13
+ "label": "External MQTT-Server Port",
14
+ "newLine": false,
15
+ "disabled": "!data.useExternalMqtt"
16
+ },
17
+ "useExternalMqtt": {
18
+ "type": "checkbox",
19
+ "label": "Use external MQTT-Server",
20
+ "newLine": true
21
+ },
22
+ "staticText0": {
23
+ "type": "staticText",
24
+ "text": "",
25
+ "newLine": true
26
+ },
27
+ "mqttServerIPBind": {
28
+ "type": "ip",
29
+ "label": "MQTT-Server IP-Adress bind",
30
+ "listenOnAllPorts": true,
31
+ "newLine": true,
32
+ "disabled": "data.useExternalMqtt"
33
+ },
34
+ "mqttServerPort": {
35
+ "type": "number",
36
+ "label": "MQTT-Server Port",
37
+ "newLine": false,
38
+ "disabled": "data.useExternalMqtt"
39
+ },
40
+ "staticText1": {
41
+ "type": "staticText",
42
+ "text": "",
8
43
  "newLine": true
9
44
  },
10
- "port": {
45
+ "webUIScheme": {
46
+ "type": "select",
47
+ "options": [
48
+ {
49
+ "label": "HTTP",
50
+ "value": "http"
51
+ },
52
+ {
53
+ "label": "HTTPS",
54
+ "value": "https"
55
+ }
56
+ ],
57
+ "newLine": true
58
+ },
59
+ "webUIServer": {
60
+ "type": "text",
61
+ "label": "WebUi Address",
62
+ "newLine": false
63
+ },
64
+ "webUIPort": {
11
65
  "type": "number",
12
- "label": "Port",
66
+ "label": "WebUi Port",
13
67
  "newLine": false
14
68
  },
15
- "debugLogEnabled": {
69
+ "useKelvin": {
16
70
  "type": "checkbox",
17
- "label": "Debug Log Enabled",
71
+ "label": "Use Kelvin instead of mired for the color temps",
18
72
  "newLine": true
19
73
  },
20
74
  "proxyZ2MLogs": {
21
75
  "type": "checkbox",
22
76
  "label": "Proxy Zigbee2MQTT logs to ioBroker logs",
23
- "newLine": false
77
+ "newLine": true
24
78
  }
25
79
  }
26
80
  }
package/io-package.json CHANGED
@@ -1,8 +1,32 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zigbee2mqtt",
4
- "version": "0.1.0",
4
+ "version": "1.0.0",
5
5
  "news": {
6
+ "1.0.0": {
7
+ "en": "*!!!BREAKING CHANGE!!!**\n\nadded options for external MQTT-Server\nconnection to zigbe2mqtt completely reworked and changed to MQTT\nlots of bugfixes\nautomatically set button actions back to false\nadded support for Zigbee2MQTT feature simulated_brightness\nadded config check\nadded log output about coordinator details",
8
+ "de": "*! BREAKING CHANGE*\n\nweitere Optionen für externen MQTT-Server\nanschluss an Zickbe2mqt komplett überarbeitet und in MQTT geändert\nviele bugfixes\nautomatisch schaltfläche aktionen wieder auf false setzen\nunterstützung für Zigbee2MQTT Funktion simuliert_brightness\nzusatzprüfung\nlog ausgabe von koordinatordaten hinzugefügt",
9
+ "ru": "*! ИЗМЕНЕНИЕ ЗАВТРА*\n\nдобавлены опции для внешнего MQTT-Server\nподключение к zigbe2mqtt полностью переработано и изменено в MQTT\nмного багфиксов\nавтоматически установите кнопки действия назад к ложному\nдобавлена поддержка функции Zigbee2MQTT simulated_brightness\nдобавлено config check\nдобавил выход журнала о деталях координатора",
10
+ "pt": "*! QUE GRANDE MUDANÇA\n\nopções adicionadas para MQTT-Server externo\nconexão com zigbe2mqtt completamente retrabalhado e alterado para MQTT\nlotes de correções de bugs\nautomaticamente definir as ações do botão de volta ao falso\nsuporte adicionado para recurso Zigbee2MQTT simulado_brightness\nverificação de configuração adicionada\nadicionado saída de log sobre detalhes do coordenador",
11
+ "nl": "♪ \n\nvoegde opties toe voor externe MQT-Server\nverbinding met Zigbe2mqt volledig herwerkt en veranderd in MQT\nveel insectenfixen\nautomatisch de knoppen opzetten naar valse\nsteun toegevoegd voor Zigbee2MQT\nvoegde config check toe\nvertaling:",
12
+ "fr": "*! CHANGE DE BREAKING*\n\noptions supplémentaires pour MQTT-Server externe\nconnexion à zigbe2mqtt complètement retravaillé et changé à MQTT\nbeaucoup de bugfixes\ndéfinir automatiquement les actions de bouton retour à false\nsupport ajouté pour la fonction Zigbee2MQTT simulée_brightness\nconfig check ajouté\nproduit log ajouté sur les coordonnées des coordonnateurs",
13
+ "it": "# CAMBIAMENTO\n\nopzioni aggiuntive per MQTT-Server esterno\nconnessione a zigbe2mqt completamente rielaborato e cambiato in MQTT\nmolti bugfix\nautomaticamente impostare le azioni del pulsante indietro a false\nsupporto aggiunto per Zigbee2MQTT funzione simulated_brightness\ncontrollo configurazione aggiunto\nuscita di log aggiunto sui dettagli del coordinatore",
14
+ "es": "*! ¡CAMBIANDO\n\nopciones adicionales para MQTT-Server externo\nconexión a zigbe2mqtt completamente rediseñado y cambiado a MQTT\nmuchos bugfixes\nautomáticamente poner las acciones del botón de nuevo a falso\nsoporte añadido para función Zigbee2MQTT simulado_brightness\ncontrol de configuración añadido\nproducción de registro agregada sobre detalles de coordinadores",
15
+ "pl": "! BREAKING CHANGE! (ANG.)\n\nobsługa MQTT-Server\nzigbe2mqtt całkowicie przerobił i zmienił MQTT\nwiele błędów\nautomatycznie ustawione akcje przycisku\ndodano obsługę Zigbee2MQTT\nsprawdzać\ndokładna produkcja logów na temat szczegółów koordynacji",
16
+ "zh-cn": "页:1 BREAKREANGE*\n\n外贸总协定\n与zigbe2mqt完全重新工作,并改装到外贸总协定\n批发\n自动建立但顿行动回到虚假的行动\n对Zigbee2MQTT特征的增援\n增幅检查\n协调员的产出"
17
+ },
18
+ "0.2.0": {
19
+ "en": "group states corrected\nadded option 'Use Kelvin instead of mired for the color temps'\nremove available logic, now will use the information from z2m\nrename noLogDevices to logfilter\nlots of bugfixes\nadded noLogDevices functionality\nadded debugmessage for specific device functionality\nadded some states are default false\nadded support for scenes defined on a device\nfix available state role\nfix subscribeWritableStates",
20
+ "de": "gruppenzustände korrigiert\nzusatzoption 'Use Kelvin anstelle von mired für die Farbe Tempos '\ndie verfügbare logik entfernen, jetzt die informationen von z2m verwenden\numbenennen noLogDevices zum Logfilter\nviele bugfixes\nnoLogDevices Funktionalität hinzugefügt\ndebugmessage für spezifische gerätefunktionalität\neinige zustände standardmäßig falsch hinzugefügt\nunterstützung für szenen, die auf einem gerät definiert sind\nfix verfügbare zustandsrolle\nabonnierenWritableState",
21
+ "ru": "исправлены состояния группы\nдобавлена опция 'Используйте Kelvin вместо mired для цветовых темп « »\nудалить доступную логику, теперь будет использовать информацию из z2m\nпереименовать noLogDevices для logfilter\nмного багфиксов\nдобавлена функция noLogDevices\nдобавлено debugmessage для конкретной функциональности устройства\nдобавлены некоторые государства по умолчанию false\nдобавлена поддержка сцен, определенных на устройстве\nисправить доступную государственную роль\nисправить подпискуWritableStates",
22
+ "pt": "estados do grupo corrigidos\nopção adicionada 'Use Kelvin em vez de mired para os temps de cor '\nremover a lógica disponível, agora usará as informações do z2m\nrenomear noLogDevices para logfilter\nlotes de correções de bugs\nadicionado noLogDevices funcionalidade\nadicionado debugmessage para funcionalidade específica do dispositivo\nadicionado alguns estados são padrão falso\nsuporte adicionado para cenas definidas em um dispositivo\ncorrigir a função estadual disponível\ncorrigir assinantesEstados disponíveis",
23
+ "nl": "de groep zegt:\nvoegde optie 'Use Kelvin' in plaats van de kleuren tempen '\nverwijder de logica, nu zal de informatie van z2m gebruiken\nnoLog Devices\nveel insectenfixen\nnoLog Devices functionaliteit\nvoegde debugmesage toe voor specifieke apparaat functionaliteit\nsommige staten zijn vals\nsteun voor scènes gedefinieerd op een apparaat\nbeschikbare staatsrol\nvertaling:",
24
+ "fr": "états de groupe corrigés\noption ajoutée 'Utiliser Kelvin au lieu de mired pour le temps de couleur '\nsupprimer la logique disponible, maintenant utilisera les informations de z2m\nrenommer noLogDevices to logfilter\nbeaucoup de bugfixes\najout de fonctionnalité noLogDevices\najout debugmessage pour la fonctionnalité de périphérique spécifique\ncertains états ajoutés sont par défaut faux\nsupport ajouté pour les scènes définies sur un appareil\nle rôle de l ' état\nfixer souscrire",
25
+ "it": "gruppo stati corretti\nopzione aggiunta 'Usa Kelvin invece di mired per le tentazioni di colore '\nrimuovere la logica disponibile, ora userà le informazioni da z2m\nrinominare noLogDevices per logfilter\nmolti bugfix\naggiunto noLogDevices funzionalità\ndebugmessage aggiunto per funzionalità specifiche del dispositivo\naggiunto alcuni stati sono falsi di default\nsupporto aggiunto per scene definite su un dispositivo\ncorrezione del ruolo di stato disponibile\nfissare abbonamentiWritableStates",
26
+ "es": "estados del grupo corregidos\nopción agregada 'Use Kelvin en lugar de mired para el color temps '\neliminar la lógica disponible, ahora utilizará la información de z2m\nnoLogDevices to logfilter\nmuchos bugfixes\nnoLogDevices funcionalidad\ndebugmesage añadido para la funcionalidad específica del dispositivo\nañadido algunos estados son falsos\nsoporte añadido para escenas definidas en un dispositivo\nfijar la función estatal disponible\nfijar suscriptosEstados disponibles",
27
+ "pl": "państwa grupowe poprawiły\ndodał opcję 'Use Kelvin' zamiast śmiać kolorowe tempo. '\nzdejmowanie dostępnej logiki wykorzystuje obecnie informacje z 2 m\nnazwa NoLogDevices (ang.)\nwiele błędów\ndodano obsługę NoLogDevices\ndodanie debugmessage dla konkretnej funkcjonalności\ndodanie niektórych stanów jest fałszywe\ndodano wsparcie dla scen zdefiniowanych na urządzenie\nfunkcja stanowa\nrecovery",
28
+ "zh-cn": "更正\n加上“Use Kelvin”的备选办法,而不是对色彩的诱惑。 评 注\n删除现有逻辑,现在将使用兹2m的信息。\n目 录\n批发\n增加无车辆功能\n增加特定装置功能的碎片\n另有一些国家的违约情况\n对一个装置所界定的场地的更多支持\nf 现有国家作用\nfix 有线性的国家"
29
+ },
6
30
  "0.1.0": {
7
31
  "en": "first release",
8
32
  "de": "erste veröffentlichung",
@@ -57,10 +81,12 @@
57
81
  "Dennis Rathjen <dennis.rathjen@outlook.de>"
58
82
  ],
59
83
  "keywords": [
60
- "ioBroker",
61
- "template",
62
- "Smart Home",
63
- "home automation"
84
+ "zigbee",
85
+ "zigbee2mqtt",
86
+ "hue",
87
+ "tradfri",
88
+ "aqara",
89
+ "tuya"
64
90
  ],
65
91
  "license": "MIT",
66
92
  "platform": "Javascript/Node.js",
@@ -91,9 +117,14 @@
91
117
  "pl": "Zigbee2MQTT",
92
118
  "zh-cn": "Zigbee2MQTT"
93
119
  },
94
- "link": "http://%server%:%port%",
120
+ "link": "%webUIScheme%://%webUIServer%:%webUIPort%",
95
121
  "fa-icon": "</i><img style='width:24px;margin-bottom:-6px;' src='/adapter/zigbee2mqtt/zigbee2mqtt.png'><i>"
96
122
  },
123
+ "localLinks": {
124
+ "_default": {
125
+ "link": "%webUIScheme%://%webUIServer%:%webUIPort%"
126
+ }
127
+ },
97
128
  "dependencies": [
98
129
  {
99
130
  "js-controller": ">=3.3.22"
@@ -106,10 +137,17 @@
106
137
  ]
107
138
  },
108
139
  "native": {
109
- "server": "",
110
- "port": "8080",
140
+ "useExternalMqtt": false,
141
+ "externalMqttServerIP": "",
142
+ "externalMqttServerPort": 1883,
143
+ "mqttServerIPBind": "0.0.0.0",
144
+ "mqttServerPort": 1885,
145
+ "webUIScheme": "http",
146
+ "webUIServer": "",
147
+ "webUIPort": 8080,
111
148
  "debugLogEnabled": false,
112
- "proxyZ2MLogs": true
149
+ "proxyZ2MLogs": true,
150
+ "useKelvin": false
113
151
  },
114
152
  "objects": [],
115
153
  "instanceObjects": [
@@ -133,6 +171,30 @@
133
171
  "def": false
134
172
  },
135
173
  "native": {}
174
+ },
175
+ {
176
+ "_id": "info.debugmessages",
177
+ "type": "state",
178
+ "common": {
179
+ "name": "Log changes as warnings for",
180
+ "type": "string",
181
+ "read": true,
182
+ "write": true,
183
+ "def": ""
184
+ },
185
+ "native": {}
186
+ },
187
+ {
188
+ "_id": "info.logfilter",
189
+ "type": "state",
190
+ "common": {
191
+ "name": "Logs matching filters are ignored by the LogProxy",
192
+ "type": "string",
193
+ "read": true,
194
+ "write": true,
195
+ "def": ""
196
+ },
197
+ "native": {}
136
198
  }
137
199
  ]
138
200
  }
package/lib/check.js ADDED
@@ -0,0 +1,37 @@
1
+
2
+ async function checkConfig(config, log) {
3
+ const checkAPIOptions = {
4
+ legacy_api_enabled: config.advanced.legacy_api != false,
5
+ legacy_availability_payload_enabled: config.advanced.legacy_availability_payload != false,
6
+ device_legacy_enabled: config.device_options.legacy != false
7
+ };
8
+
9
+ if (Object.values(checkAPIOptions).filter(x => x == true).length > 0) {
10
+ log.error('===================================================');
11
+ log.error('===================================================');
12
+ if (checkAPIOptions.legacy_api_enabled == true) {
13
+ log.error('Legacy api is activated, so the adapter can not work correctly!!!');
14
+ log.error('Please add the following lines to your Zigbee2MQTT configuration.yaml:');
15
+ log.error('legacy_api: false');
16
+ log.error('');
17
+ }
18
+ if (checkAPIOptions.legacy_availability_payload_enabled == true) {
19
+ log.error('Legacy Availability Payload is activated, thus the adapter cannot represent the availability of the devices!!!');
20
+ log.error('Please add the following lines to your Zigbee2MQTT configuration.yaml:');
21
+ log.error('legacy_availability_payload: false');
22
+ log.error('');
23
+ }
24
+ if (checkAPIOptions.device_legacy_enabled == true) {
25
+ log.error('Device Legacy Payload is activated, therefore the adapter may process the states of the devices correctly!!!');
26
+ log.error('Please add the following lines to your Zigbee2MQTT configuration.yaml:');
27
+ log.error('device_options:');
28
+ log.error(' legacy: false');
29
+ }
30
+ log.error('===================================================');
31
+ log.error('===================================================');
32
+ }
33
+ }
34
+
35
+ module.exports = {
36
+ checkConfig: checkConfig,
37
+ };
@@ -0,0 +1,182 @@
1
+ const states = require('./states').states;
2
+ const defineDeviceFromExposes = require('./exposes').defineDeviceFromExposes;
3
+ const utils = require('./utils');
4
+ const createCache = {};
5
+
6
+ class DeviceController {
7
+ constructor(adapter, deviceCache, groupCache, useKelvin) {
8
+ this.adapter = adapter;
9
+ this.groupCache = groupCache;
10
+ this.deviceCache = deviceCache;
11
+ this.useKelvin = useKelvin;
12
+ }
13
+
14
+ async createDeviceDefinitions(exposes) {
15
+ utils.clearArray(this.deviceCache);
16
+ for (const expose of exposes) {
17
+ if (expose.definition != null) {
18
+ // search for scenes in the endpoints and build them into an array
19
+ let scenes = [];
20
+ for (const key in expose.endpoints) {
21
+ if (expose.endpoints[key].scenes) {
22
+ scenes = scenes.concat(expose.endpoints[key].scenes);
23
+ }
24
+ }
25
+ await defineDeviceFromExposes(this.deviceCache, expose.friendly_name, expose.ieee_address, expose.definition, expose.power_source, scenes, this.useKelvin);
26
+ }
27
+ }
28
+ }
29
+
30
+
31
+ async defineGroupDevice(devices, groupID, ieee_address, scenes, useKelvin) {
32
+ const newDevice = {
33
+ id: groupID,
34
+ ieee_address: ieee_address,
35
+ icon: undefined,
36
+ states: [
37
+ states.state,
38
+ states.brightness,
39
+ states.color,
40
+ states.brightness_move,
41
+ states.colortemp_move,
42
+ ],
43
+ };
44
+
45
+ const colortemp = {
46
+ id: 'colortemp',
47
+ prop: 'color_temp',
48
+ name: 'Color temperature',
49
+ icon: undefined,
50
+ role: 'level.color.temperature',
51
+ write: true,
52
+ read: true,
53
+ type: 'number',
54
+ unit: useKelvin == true ? 'K' : 'mired',
55
+ setter: (value) => {
56
+ return utils.toMired(value);
57
+ },
58
+ getter: (payload) => {
59
+ if (useKelvin == true) {
60
+ return utils.miredKelvinConversion(payload.color_temp);
61
+ }
62
+ else {
63
+ return payload.color_temp;
64
+ }
65
+ },
66
+ };
67
+
68
+ // @ts-ignore
69
+ newDevice.states.push(colortemp);
70
+
71
+ // Create buttons for scenes
72
+ for (const scene of scenes) {
73
+ const sceneSate = {
74
+ id: `scene_${scene.id}`,
75
+ prop: `scene_recall`,
76
+ name: scene.name,
77
+ icon: undefined,
78
+ role: 'button',
79
+ write: true,
80
+ read: true,
81
+ type: 'boolean',
82
+ setter: (value) => (value) ? scene.id : undefined
83
+ };
84
+ // @ts-ignore
85
+ newDevice.states.push(sceneSate);
86
+ }
87
+
88
+ // if the device is already present in the cache, remove it
89
+ utils.removeDeviceByIeee(devices, ieee_address);
90
+ devices.push(newDevice);
91
+ }
92
+ async createGroupDefinitions(exposes) {
93
+ utils.clearArray(this.groupCache);
94
+ for (const expose of exposes) {
95
+ await this.defineGroupDevice(this.groupCache, expose.friendly_name, `group_${expose.id}`, expose.scenes, this.useKelvin);
96
+ }
97
+ }
98
+
99
+ async createOrUpdateDevices() {
100
+ for (const device of this.groupCache.concat(this.deviceCache)) {
101
+ const deviceName = device.id == device.ieee_address ? '' : device.id;
102
+ if (!createCache[device.ieee_address] || createCache[device.ieee_address].common.name != deviceName) {
103
+ const deviceObj = {
104
+ type: 'device',
105
+ common: {
106
+ name: deviceName,
107
+ },
108
+
109
+ native: {}
110
+ };
111
+
112
+ if (!device.ieee_address.includes('group_')) {
113
+ deviceObj.common.statusStates = {
114
+ onlineId: `${this.adapter.name}.${this.adapter.instance}.${device.ieee_address}.available`
115
+ };
116
+ }
117
+
118
+ //@ts-ignore
119
+ await this.adapter.extendObjectAsync(device.ieee_address, deviceObj);
120
+ createCache[device.ieee_address] = deviceObj;
121
+ }
122
+
123
+ // Here it is checked whether the scenes match the current data from z2m.
124
+ // If necessary, scenes are automatically deleted from ioBroker.
125
+ const sceneStates = await this.adapter.getStatesAsync(`${device.ieee_address}.scene_*`);
126
+ const sceneIDs = Object.keys(sceneStates);
127
+ for (const sceneID of sceneIDs) {
128
+ const stateID = sceneID.split('.')[3];
129
+ if (device.states.find(x => x.id == stateID) == null) {
130
+ this.adapter.delObject(sceneID);
131
+ }
132
+ }
133
+
134
+ for (const state of device.states) {
135
+ if (!createCache[device.ieee_address][state.id] || createCache[device.ieee_address][state.id].name != state.name) {
136
+ const iobState = await this.copyAndCleanStateObj(state);
137
+ await this.adapter.extendObjectAsync(`${device.ieee_address}.${state.id}`, {
138
+ type: 'state',
139
+ common: iobState,
140
+ native: {},
141
+ });
142
+ createCache[device.ieee_address][state.id] = state.name;
143
+ }
144
+ }
145
+ }
146
+ }
147
+
148
+ async renameDeviceInCache(messageObj) {
149
+ const renamedDevice = this.groupCache.concat(this.deviceCache).find(x => x.id == messageObj.payload.data.from);
150
+ renamedDevice.id = messageObj.payload.data.to;
151
+ }
152
+
153
+ async processRemoveEvent(messageObj) {
154
+ if (messageObj.payload && messageObj.payload.type == 'device_leave') {
155
+ this.adapter.setStateAsync(`${messageObj.payload.data.ieee_address}.available`, false, true);
156
+ this.adapter.extendObject(`${messageObj.payload.data.ieee_address}`, { common: { name: 'Device removed!', } });
157
+ }
158
+ }
159
+
160
+ async copyAndCleanStateObj(state) {
161
+ const iobState = { ...state };
162
+ const blacklistedKeys = [
163
+ 'setter',
164
+ 'setterOpt',
165
+ 'getter',
166
+ 'setattr',
167
+ 'readable',
168
+ 'writable',
169
+ 'isOption',
170
+ 'inOptions',
171
+ 'isEvent',
172
+ ];
173
+ for (const blacklistedKey of blacklistedKeys) {
174
+ delete iobState[blacklistedKey];
175
+ }
176
+ return iobState;
177
+ }
178
+ }
179
+
180
+ module.exports = {
181
+ DeviceController
182
+ };