iobroker.zigbee2mqtt 3.0.3 → 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
@@ -22,6 +22,14 @@ 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.5 (2025-05-29)
26
+ - (arteck) add additional folder for some devices (like smoke detector)
27
+ - (arteck) state.js cleanup
28
+ - (arteck) set available State to true if device message include last_seen status
29
+
30
+ ### 3.0.4 (2025-05-11)
31
+ - (arteck) update admin
32
+
25
33
  ### 3.0.3 (2025-02-03)
26
34
  - (arteck) corr illuminance (del illuminance_raw)
27
35
  - (arteck) indicator.alarm.flood
@@ -44,6 +44,7 @@
44
44
  "Time of the automatic check": "Zeitpunkt der automatischen Prüfung",
45
45
  "More information": "Mehr Informationen",
46
46
  "Expert Settings. Please only use if you know what you're doing": "Expert Einstellungen. Bitte nur verwenden, wenn Du weisst was du machst",
47
- "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"
48
- }
47
+ "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",
48
+ "Allways update available state when message included last_seen status": "Aktualisiert immer den available Status, wenn die Nachricht last_seen Status enthält"
49
+
49
50
  }
@@ -44,5 +44,6 @@
44
44
  "Time of the automatic check": "Time of the automatic check",
45
45
  "More information": "More information",
46
46
  "Expert Settings. Please only use if you know what you're doing": "Expert Settings. Please only use if you know what you're doing",
47
- "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"
47
+ "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",
48
+ "Allways update available state when message included last_seen status": "Allways update available state when message included last_seen status"
48
49
  }
@@ -42,5 +42,6 @@
42
42
  "Automatic check for missing routers in the coordinator memory.": "Vérification automatique des routeurs manquants dans la mémoire du coordinateur.",
43
43
  "With which log level should a negative search be logged?": "Avec quel niveau de journalisation une recherche négative doit-elle être enregistrée ?",
44
44
  "Time of the automatic check": "Heure du contrôle automatique",
45
- "More information": "Plus d'information"
45
+ "More information": "Plus d'information",
46
+ "Allways update available state when message included last_seen status": "Mettre à jour l'état disponible lorsque le message inclut le statut last_seen"
46
47
  }
@@ -42,5 +42,6 @@
42
42
  "Automatic check for missing routers in the coordinator memory.": "Controllo automatico della presenza di router mancanti nella memoria del coordinatore.",
43
43
  "With which log level should a negative search be logged?": "Con quale livello di registro deve essere registrata una ricerca negativa?",
44
44
  "Time of the automatic check": "Orario del controllo automatico",
45
- "More information": "Maggiori informazioni"
45
+ "More information": "Maggiori informazioni",
46
+ "Allways update available state when message included last_seen status": "Aggiorna sempre lo stato disponibile quando il messaggio include lo stato last_seen"
46
47
  }
@@ -42,5 +42,6 @@
42
42
  "Automatic check for missing routers in the coordinator memory.": "Automatische controle op ontbrekende routers in het coördinatorgeheugen.",
43
43
  "With which log level should a negative search be logged?": "Met welk logniveau moet een negatieve zoekopdracht worden geregistreerd?",
44
44
  "Time of the automatic check": "Tijdstip van de automatische controle",
45
- "More information": "Meer informatie"
45
+ "More information": "Meer informatie",
46
+ "Allways update available state when message included last_seen status": "Altijd de beschikbare status bijwerken wanneer het bericht de last_seen-status bevat"
46
47
  }
@@ -42,5 +42,6 @@
42
42
  "Automatic check for missing routers in the coordinator memory.": "Automatyczne sprawdzanie brakujących routerów w pamięci koordynatora.",
43
43
  "With which log level should a negative search be logged?": "Na jakim poziomie rejestrowania należy rejestrować wyszukiwanie wykluczające?",
44
44
  "Time of the automatic check": "Czas automatycznego sprawdzenia",
45
- "More information": "Więcej informacji"
45
+ "More information": "Więcej informacji",
46
+ "Allways update available state when message included last_seen status": "Zawsze aktualizuj available stan, gdy wiadomość zawiera status last_seen"
46
47
  }
@@ -42,5 +42,6 @@
42
42
  "Automatic check for missing routers in the coordinator memory.": "Verificação automática de roteadores ausentes na memória do coordenador.",
43
43
  "With which log level should a negative search be logged?": "Com qual nível de log uma pesquisa negativa deve ser registrada?",
44
44
  "Time of the automatic check": "Hora da verificação automática",
45
- "More information": "Mais Informações"
45
+ "More information": "Mais Informações",
46
+ "Allways update available state when message included last_seen status": "Sempre atualize o estado disponível quando a mensagem incluir o status last_seen"
46
47
  }
@@ -42,5 +42,6 @@
42
42
  "Automatic check for missing routers in the coordinator memory.": "Автоматическая проверка отсутствия роутеров в памяти координатора.",
43
43
  "With which log level should a negative search be logged?": "На каком уровне журнала следует регистрировать отрицательный поиск?",
44
44
  "Time of the automatic check": "Время автоматической проверки",
45
- "More information": "Больше информации"
45
+ "More information": "Больше информации",
46
+ "Allways update available state when message included last_seen status": "Всегда обновляйте доступное состояние, когда сообщение включает статус last_seen"
46
47
  }
@@ -42,5 +42,6 @@
42
42
  "Automatic check for missing routers in the coordinator memory.": "Автоматична перевірка відсутності роутерів в пам'яті координатора.",
43
43
  "With which log level should a negative search be logged?": "На якому рівні журналу слід реєструвати негативний пошук?",
44
44
  "Time of the automatic check": "Час автоматичної перевірки",
45
- "More information": "Більше інформації"
45
+ "More information": "Більше інформації",
46
+ "Allways update available state when message included last_seen status": "Завжди оновлюйте доступний стан, коли повідомлення містить статус last_seen"
46
47
  }
@@ -42,5 +42,6 @@
42
42
  "Automatic check for missing routers in the coordinator memory.": "自动检查协调器内存中丢失的路由器。",
43
43
  "With which log level should a negative search be logged?": "应该使用哪个日志级别来记录负面搜索?",
44
44
  "Time of the automatic check": "自动检查时间",
45
- "More information": "更多信息"
45
+ "More information": "更多信息",
46
+ "Allways update available state when message included last_seen status": "当消息包含 last_seen 状态时,总是更新可用状态",
46
47
  }
@@ -10,7 +10,11 @@
10
10
  },
11
11
  "connectionType": {
12
12
  "label": "Select connection to Zigbee2MQTT",
13
- "sm": 5,
13
+ "xs": 12,
14
+ "sm": 12,
15
+ "md": 6,
16
+ "lg": 4,
17
+ "xl": 4,
14
18
  "type": "select",
15
19
  "options": [
16
20
  {
@@ -31,11 +35,21 @@
31
35
  "spacer01": {
32
36
  "type": "staticText",
33
37
  "text": "",
38
+ "xs": 12,
39
+ "sm": 12,
40
+ "md": 6,
41
+ "lg": 4,
42
+ "xl": 4,
34
43
  "newLine": true
35
44
  },
36
45
  "wsHeader": {
37
46
  "type": "staticText",
38
47
  "text": "Configure your Zigbee2MQTT connection",
48
+ "xs": 12,
49
+ "sm": 12,
50
+ "md": 6,
51
+ "lg": 4,
52
+ "xl": 4,
39
53
  "newLine": true
40
54
  },
41
55
  "wsScheme": {
@@ -52,11 +66,21 @@
52
66
  }
53
67
  ],
54
68
  "newLine": true,
69
+ "xs": 12,
70
+ "sm": 12,
71
+ "md": 6,
72
+ "lg": 4,
73
+ "xl": 4,
55
74
  "hidden": "data.connectionType != 'ws'"
56
75
  },
57
76
  "wsServerIP": {
58
77
  "type": "text",
59
78
  "label": "Websocket IP-Address",
79
+ "xs": 12,
80
+ "sm": 12,
81
+ "md": 6,
82
+ "lg": 4,
83
+ "xl": 4,
60
84
  "newLine": false,
61
85
  "hidden": "data.connectionType != 'ws'"
62
86
  },
@@ -64,18 +88,33 @@
64
88
  "type": "number",
65
89
  "label": "Websocket Port",
66
90
  "newLine": false,
91
+ "xs": 12,
92
+ "sm": 12,
93
+ "md": 6,
94
+ "lg": 4,
95
+ "xl": 4,
67
96
  "hidden": "data.connectionType != 'ws'"
68
97
  },
69
98
  "wsTokenEnabled": {
70
99
  "type": "checkbox",
71
100
  "label": "Use Auth-Token",
72
101
  "newLine": true,
102
+ "xs": 12,
103
+ "sm": 12,
104
+ "md": 6,
105
+ "lg": 4,
106
+ "xl": 4,
73
107
  "hidden": "data.connectionType != 'ws'"
74
108
  },
75
109
  "wsToken": {
76
110
  "type": "password",
77
111
  "label": "Auth-Token (special characters are not supported)",
78
112
  "newLine": true,
113
+ "xs": 12,
114
+ "sm": 12,
115
+ "md": 6,
116
+ "lg": 4,
117
+ "xl": 4,
79
118
  "lg": 5,
80
119
  "hidden": "data.wsTokenEnabled != true || data.connectionType != 'ws'"
81
120
  },
@@ -83,36 +122,66 @@
83
122
  "type": "checkbox",
84
123
  "label": "Create a dummy MQTT-Server for Zigbee2MQTT",
85
124
  "newLine": true,
125
+ "xs": 12,
126
+ "sm": 12,
127
+ "md": 6,
128
+ "lg": 4,
129
+ "xl": 4,
86
130
  "hidden": "data.connectionType != 'ws'"
87
131
  },
88
132
  "externalMqttServerIP": {
89
133
  "type": "text",
90
134
  "label": "External MQTT-Server IP-Address",
91
135
  "newLine": true,
136
+ "xs": 12,
137
+ "sm": 12,
138
+ "md": 6,
139
+ "lg": 4,
140
+ "xl": 4,
92
141
  "hidden": "data.connectionType != 'exmqtt'"
93
142
  },
94
143
  "externalMqttServerPort": {
95
144
  "type": "number",
96
145
  "label": "External MQTT-Server Port",
97
146
  "newLine": false,
147
+ "xs": 12,
148
+ "sm": 12,
149
+ "md": 6,
150
+ "lg": 4,
151
+ "xl": 4,
98
152
  "hidden": "data.connectionType != 'exmqtt'"
99
153
  },
100
154
  "externalMqttServerCredentials": {
101
155
  "type": "checkbox",
102
156
  "label": "Use MQTT Credentials",
103
157
  "newLine": true,
158
+ "xs": 12,
159
+ "sm": 12,
160
+ "md": 6,
161
+ "lg": 4,
162
+ "xl": 4,
104
163
  "hidden": "data.connectionType != 'exmqtt'"
105
164
  },
106
165
  "externalMqttServerUsername": {
107
166
  "type": "text",
108
167
  "label": "MQTT Username",
109
168
  "newLine": true,
169
+ "xs": 12,
170
+ "sm": 12,
171
+ "md": 6,
172
+ "lg": 4,
173
+ "xl": 4,
110
174
  "hidden": "data.externalMqttServerCredentials != true ||data.connectionType != 'exmqtt'"
111
175
  },
112
176
  "externalMqttServerPassword": {
113
177
  "type": "password",
114
178
  "label": "MQTT Password",
115
179
  "newLine": false,
180
+ "xs": 12,
181
+ "sm": 12,
182
+ "md": 6,
183
+ "lg": 4,
184
+ "xl": 4,
116
185
  "visible": true,
117
186
  "hidden": "data.externalMqttServerCredentials != true ||data.connectionType != 'exmqtt'"
118
187
  },
@@ -120,12 +189,22 @@
120
189
  "type": "ip",
121
190
  "label": "MQTT-Server IP-Address bind",
122
191
  "listenOnAllPorts": true,
192
+ "xs": 12,
193
+ "sm": 12,
194
+ "md": 6,
195
+ "lg": 4,
196
+ "xl": 4,
123
197
  "newLine": true,
124
198
  "hidden": "data.connectionType == 'exmqtt' || data.dummyMqtt == false && data.connectionType == 'ws'"
125
199
  },
126
200
  "mqttServerPort": {
127
201
  "type": "number",
128
202
  "label": "MQTT-Server Port",
203
+ "xs": 12,
204
+ "sm": 12,
205
+ "md": 6,
206
+ "lg": 4,
207
+ "xl": 4,
129
208
  "newLine": false,
130
209
  "hidden": "data.connectionType == 'exmqtt' || data.dummyMqtt == false && data.connectionType == 'ws'"
131
210
  },
@@ -154,16 +233,31 @@
154
233
  "value": "https"
155
234
  }
156
235
  ],
236
+ "xs": 12,
237
+ "sm": 12,
238
+ "md": 6,
239
+ "lg": 4,
240
+ "xl": 4,
157
241
  "newLine": true
158
242
  },
159
243
  "webUIServer": {
160
244
  "type": "text",
161
245
  "label": "WebUi Address",
246
+ "xs": 12,
247
+ "sm": 12,
248
+ "md": 6,
249
+ "lg": 4,
250
+ "xl": 4,
162
251
  "newLine": false
163
252
  },
164
253
  "webUIPort": {
165
254
  "type": "number",
166
255
  "label": "WebUi Port",
256
+ "xs": 12,
257
+ "sm": 12,
258
+ "md": 6,
259
+ "lg": 4,
260
+ "xl": 4,
167
261
  "newLine": false
168
262
  },
169
263
  "spacer03": {
@@ -237,6 +331,11 @@
237
331
  "type": "number",
238
332
  "label": "Size of the object icons in pixels",
239
333
  "min": 8,
334
+ "xs": 12,
335
+ "sm": 12,
336
+ "md": 6,
337
+ "lg": 4,
338
+ "xl": 4,
240
339
  "newLine": true
241
340
  },
242
341
  "otherHeader": {
@@ -283,6 +382,11 @@
283
382
  }
284
383
  ],
285
384
  "newLine": true,
385
+ "xs": 12,
386
+ "sm": 12,
387
+ "md": 6,
388
+ "lg": 4,
389
+ "xl": 4,
286
390
  "hidden": "data.coordinatorCheck != true"
287
391
  },
288
392
  "coordinatorCheckCron": {
@@ -320,6 +424,11 @@
320
424
  "type": "checkbox",
321
425
  "label": "Allways update state for occupancy when message arrives from zigbee2mqtt server (Only for true state). Increases load on ioBroker System",
322
426
  "newLine": true
427
+ },
428
+ "allwaysUpdateAvailableState": {
429
+ "type": "checkbox",
430
+ "label": "Allways update available state when message included last_seen status",
431
+ "newLine": true
323
432
  }
324
433
  }
325
434
  }
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zigbee2mqtt",
4
- "version": "3.0.3",
4
+ "version": "3.0.5",
5
5
  "news": {
6
+ "3.0.5": {
7
+ "en": "add additional folder for some devices (like smoke detector)\nstate.js cleanup\nset available State to true if device message include last_seen status",
8
+ "de": "zusätzliche ordner für einige geräte hinzufügen (wie rauchmelder)\nstate.js cleanup\neingestellt verfügbar Zustand, um wahr zu sein, wenn die Gerätenachricht last_seen status enthält",
9
+ "ru": "добавьте дополнительную папку для некоторых устройств (например, детектор дыма)\nочистка state.js\nустановленное состояние истинно, если сообщение устройства включает в себя статус last_seen",
10
+ "pt": "adicionar pasta adicional para alguns dispositivos (como detector de fumaça)\nlimpeza state.js\nset available Estado para true se a mensagem do dispositivo incluir status last_seen",
11
+ "nl": "extra map toevoegen voor sommige apparaten (zoals rookmelder)\nstate.js opruimen\nbeschikbare status instellen op true als apparaatbericht laatste_geziene status bevat",
12
+ "fr": "ajouter un dossier supplémentaire pour certains appareils (comme le détecteur de fumée)\nétat.js nettoyage\ndéfinir l'État disponible à true si le message de périphérique inclut le statut last_seen",
13
+ "it": "aggiungere cartella aggiuntiva per alcuni dispositivi (come rilevatore di fumo)\nstato.js pulizia\nse il messaggio del dispositivo include lo stato di last_seen",
14
+ "es": "añadir carpeta adicional para algunos dispositivos (como detector de humos)\nestado.js limpieza\nestado disponible para ver si el mensaje del dispositivo incluye el estado de último visto",
15
+ "pl": "dodaj dodatkowy folder dla niektórych urządzeń (np. czujnik dymu)\nstan. js cleanup\nustaw dostępny stan na true jeśli wiadomość urządzenia zawiera status last _ seen",
16
+ "uk": "додати додаткову папку для деяких пристроїв (наприклад, детектор диму)\nстан.js cleanup\nвстановити доступну державу, якщо повідомлення про пристрій включають статус останнього_seen",
17
+ "zh-cn": "为一些设备添加额外的文件夹( 如烟雾探测器)\n状态.js 清理\n如果设备消息包含最后的_ Seenn 状态, 将可用状态设定为 true"
18
+ },
19
+ "3.0.4": {
20
+ "en": "update admin",
21
+ "de": "admin",
22
+ "ru": "обновление admin",
23
+ "pt": "atualização admin",
24
+ "nl": "admin bijwerken",
25
+ "fr": "mettre à jour l'administrateur",
26
+ "it": "aggiornamento",
27
+ "es": "actualización admin",
28
+ "pl": "aktualizacja admin",
29
+ "uk": "оновлення адмін",
30
+ "zh-cn": "更新管理员"
31
+ },
6
32
  "3.0.3": {
7
33
  "en": "corr illuminance (del illuminance_raw)\nindicator.alarm.flood",
8
34
  "de": "korr illuminance (del illuminance_raw)\nindikator.alarm.flood",
@@ -67,32 +93,6 @@
67
93
  "pl": "corr package.json",
68
94
  "uk": "english, українська, français..",
69
95
  "zh-cn": "corr 软件包.json"
70
- },
71
- "2.13.10": {
72
- "en": "update dependecy\nadd available object for groups",
73
- "de": "aktualisierung abhängigkeit\nobjekt für gruppen hinzufügen",
74
- "ru": "обновление\nдобавить доступный объект для групп",
75
- "pt": "atualização\nadicionar objeto disponível para grupos",
76
- "nl": "afhankelijkheid bijwerken\nbeschikbaar object voor groepen toevoegen",
77
- "fr": "mettre à jour la dépendance\najouter un objet disponible pour les groupes",
78
- "it": "aggiornamento dipendenza\naggiungere oggetto disponibile per gruppi",
79
- "es": "dependencia de actualización\nañadir objeto disponible para grupos",
80
- "pl": "aktualizacja zależności\ndodaj dostępny obiekt dla grup",
81
- "uk": "оновлення залежності\nдодати доступний об'єкт для груп",
82
- "zh-cn": "更新依赖性\n为组添加可用对象"
83
- },
84
- "2.13.9": {
85
- "en": "fix lint\nupdate dependecy",
86
- "de": "lint zu entfernen\naktualisierung abhängigkeit",
87
- "ru": "фиксация линта\nобновление",
88
- "pt": "forro de correção\natualização",
89
- "nl": "fix pluis\nafhankelijkheid bijwerken",
90
- "fr": "fixer le lint\nmettre à jour la dépendance",
91
- "it": "fissaggio lunetta\naggiornamento dipendenza",
92
- "es": "\ndependencia de actualización",
93
- "pl": "fix lint\naktualizacja zależności",
94
- "uk": "засупу 10 ток\nоновлення залежності",
95
- "zh-cn": "修正线\n更新依赖性"
96
96
  }
97
97
  },
98
98
  "messages": [
@@ -226,9 +226,10 @@
226
226
  ],
227
227
  "globalDependencies": [
228
228
  {
229
- "admin": ">=5.1.13"
229
+ "admin": ">=6.6.14"
230
230
  }
231
- ]
231
+ ],
232
+ "installedFrom": "iobroker.zigbee2mqtt@3.0.4"
232
233
  },
233
234
  "native": {
234
235
  "connectionType": "ws",
@@ -263,7 +264,8 @@
263
264
  "coordinatorCheck": false,
264
265
  "coordinatorCheckLogLvl": "info",
265
266
  "coordinatorCheckCron": "0 3 * * *",
266
- "allwaysUpdateOccupancyState": false
267
+ "allwaysUpdateOccupancyState": false,
268
+ "allwaysUpdateAvailableState": false
267
269
  },
268
270
  "protectedNative": [
269
271
  "externalMqttServerPassword",
@@ -1,4 +1,4 @@
1
- const states = require('./states').states;
1
+ const statesDefs = require('./states').states;
2
2
  const createDeviceFromExposes = require('./exposes').createDeviceFromExposes;
3
3
  const utils = require('./utils');
4
4
  const colors = require('./colors.js');
@@ -55,10 +55,10 @@ class DeviceController {
55
55
  icon: undefined, // await imageController.getDeviceIcon(devicesMessag), device.definition.model
56
56
  optionsValues: {},
57
57
  states: [
58
- states.available,
59
- states.brightness,
60
- states.colortemp_move,
61
- states.transition,
58
+ statesDefs.available,
59
+ statesDefs.brightness,
60
+ statesDefs.colortemp_move,
61
+ statesDefs.transition,
62
62
  {
63
63
  id: 'state',
64
64
  prob: 'state',
package/lib/exposes.js CHANGED
@@ -1144,7 +1144,7 @@ async function createDeviceFromExposes(devicesMessag, adapter) {
1144
1144
  break;
1145
1145
 
1146
1146
  case 'battery_low':
1147
- state = statesDefs.heiman_batt_low;
1147
+ state = statesDefs.batt_low_t_f;
1148
1148
  break;
1149
1149
 
1150
1150
  case 'tamper':
@@ -1152,7 +1152,7 @@ async function createDeviceFromExposes(devicesMessag, adapter) {
1152
1152
  break;
1153
1153
 
1154
1154
  case 'water_leak':
1155
- state = statesDefs.water_detected;
1155
+ state = statesDefs.water_leak;
1156
1156
  break;
1157
1157
 
1158
1158
  case 'lock':
@@ -1220,10 +1220,10 @@ async function createDeviceFromExposes(devicesMessag, adapter) {
1220
1220
  pushToStates(statesDefs.climate_running_mode, prop.access);
1221
1221
  break;
1222
1222
  case 'local_temperature':
1223
- pushToStates(statesDefs.hvacThermostat_local_temp, prop.access);
1223
+ pushToStates(statesDefs.local_temperature, prop.access);
1224
1224
  break;
1225
1225
  case 'local_temperature_calibration':
1226
- pushToStates(statesDefs.hvacThermostat_local_temp_calibration, prop.access);
1226
+ pushToStates(statesDefs.local_temperature_calibration, prop.access);
1227
1227
  break;
1228
1228
  default:
1229
1229
  {