iobroker.zigbee2mqtt 3.0.15 → 3.0.16
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 +3 -0
- package/io-package.json +14 -14
- package/lib/exposes.js +12 -39
- package/lib/statesController.js +1 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,6 +22,9 @@ 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.16 (2026-01-28)
|
|
26
|
+
* (arteck) fix action dp
|
|
27
|
+
|
|
25
28
|
### 3.0.15 (2026-01-27)
|
|
26
29
|
* (arteck) update
|
|
27
30
|
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "zigbee2mqtt",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.16",
|
|
5
5
|
"news": {
|
|
6
|
+
"3.0.16": {
|
|
7
|
+
"en": "fix action dp",
|
|
8
|
+
"de": "funktion dp",
|
|
9
|
+
"ru": "исправить действие dp",
|
|
10
|
+
"pt": "corrigir ação dp",
|
|
11
|
+
"nl": "fix actie dp",
|
|
12
|
+
"fr": "corriger l'action dp",
|
|
13
|
+
"it": "fix azione dp",
|
|
14
|
+
"es": "arreglar acción dp",
|
|
15
|
+
"pl": "fix action dp",
|
|
16
|
+
"uk": "фіксувати дію dp",
|
|
17
|
+
"zh-cn": "固定动作 dp"
|
|
18
|
+
},
|
|
6
19
|
"3.0.15": {
|
|
7
20
|
"en": "update",
|
|
8
21
|
"de": "aktualisierung",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "Zaktualizowano zależności\nZmieniona rola 'color _ temp _ startup' stanu na 'poziom', aby uniknąć podwójnego 'level.temperature' w jednym urządzeniu\nfix ZBMINIR2 inching DP\nusuń odtwarzacz kolorów DP",
|
|
81
94
|
"uk": "Залежність було оновлено\nЗмінена роль `color_temp_startup` для `level`, щоб уникнути подвійного рівня `level. Температура` в одному пристрої\nзафіксувати ZBMINIR2 інвертор ДП\nвидалити DP Colortempstartup",
|
|
82
95
|
"zh-cn": "依赖关系已更新\n将“color_temp_startup”状态的作用改为“level”,以避免一个设备中的双“level.teperature”\n修补 ZBMINIR2 插入 DP\n删除 DP 调色符启动"
|
|
83
|
-
},
|
|
84
|
-
"3.0.9": {
|
|
85
|
-
"en": "queue up message parsing\nSupport for non-default MQTT base topics",
|
|
86
|
-
"de": "nachrichtenparsing löschen\nUnterstützung für nicht-Standard-MQTT-Basisthemen",
|
|
87
|
-
"ru": "очередь сообщения парсинг\nПоддержка базовых тем MQTT без по умолчанию",
|
|
88
|
-
"pt": "processamento de mensagens em fila\nSuporte para tópicos de base MQTT não padrão",
|
|
89
|
-
"nl": "wachtrij bericht ontleden\nOndersteuning voor niet-standaard MQTT-basisonderwerpen",
|
|
90
|
-
"fr": "analyse des messages en attente\nPrise en charge des sujets de base MQTT non par défaut",
|
|
91
|
-
"it": "code up messaggio parsing\nSupporto per argomenti di base MQTT non di default",
|
|
92
|
-
"es": "mensaje de búsqueda\nApoyo a los temas básicos de MQTT no predeterminados",
|
|
93
|
-
"pl": "kolejka w górę wiadomości parsing\nWsparcie dla niedomyślnych tematów bazowych MQTT",
|
|
94
|
-
"uk": "чергування повідомлень\nПідтримка нерозголошення MQTT базових тем",
|
|
95
|
-
"zh-cn": "排队分析信件\n支持非默认 MQTT 基础主题"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"messages": [
|
package/lib/exposes.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
'use strict';
|
|
2
3
|
|
|
3
4
|
const statesDefs = require('./states').states;
|
|
@@ -192,9 +193,7 @@ async function createDeviceFromExposes(devicesMessag, adapter) {
|
|
|
192
193
|
if (state === undefined) {
|
|
193
194
|
return 0;
|
|
194
195
|
}
|
|
195
|
-
if (access === undefined) {
|
|
196
|
-
access = z2mAccess.ALL;
|
|
197
|
-
}
|
|
196
|
+
if (access === undefined) {access = z2mAccess.ALL;}
|
|
198
197
|
state.readable = (access & z2mAccess.STATE) > 0;
|
|
199
198
|
state.writable = (access & z2mAccess.SET) > 0;
|
|
200
199
|
const stateExists = states.findIndex((x, _index, _array) => x.id === state.id);
|
|
@@ -754,14 +753,17 @@ access = z2mAccess.ALL;
|
|
|
754
753
|
break;
|
|
755
754
|
}
|
|
756
755
|
}
|
|
757
|
-
if (state) {
|
|
758
|
-
pushToStates(state, expose.access);
|
|
759
|
-
}
|
|
756
|
+
if (state) {pushToStates(state, expose.access);}
|
|
760
757
|
break;
|
|
761
758
|
|
|
762
759
|
case 'enum':
|
|
763
|
-
switch (expose.name) {
|
|
760
|
+
switch (expose.name) {
|
|
764
761
|
case 'action': {
|
|
762
|
+
// generate an 'action' state
|
|
763
|
+
state = genState(expose);
|
|
764
|
+
state.isEvent = true;
|
|
765
|
+
pushToStates(state, expose.access);
|
|
766
|
+
|
|
765
767
|
if (!Array.isArray(expose.values)) {
|
|
766
768
|
break;
|
|
767
769
|
}
|
|
@@ -1076,32 +1078,7 @@ pushToStates(state, expose.access);
|
|
|
1076
1078
|
expose.access
|
|
1077
1079
|
);
|
|
1078
1080
|
}
|
|
1079
|
-
|
|
1080
|
-
// pushToStates({
|
|
1081
|
-
// id: 'hue_move',
|
|
1082
|
-
// name: 'Hue move rate',
|
|
1083
|
-
// icon: undefined,
|
|
1084
|
-
// role: 'level.color.hue',
|
|
1085
|
-
// write: false,
|
|
1086
|
-
// read: true,
|
|
1087
|
-
// type: 'number',
|
|
1088
|
-
// min: 0,
|
|
1089
|
-
// max: 360,
|
|
1090
|
-
// def: 0,
|
|
1091
|
-
// isEvent: true,
|
|
1092
|
-
// getter: (payload) => {
|
|
1093
|
-
// if (payload.action != 'hue_move') {
|
|
1094
|
-
// return undefined;
|
|
1095
|
-
// }
|
|
1096
|
-
|
|
1097
|
-
// if (payload.action_level) {
|
|
1098
|
-
// return payload.action_level;
|
|
1099
|
-
// } else {
|
|
1100
|
-
// return undefined;
|
|
1101
|
-
// }
|
|
1102
|
-
// }
|
|
1103
|
-
// }, expose.access);
|
|
1104
|
-
// }
|
|
1081
|
+
|
|
1105
1082
|
else {
|
|
1106
1083
|
pushToStates(
|
|
1107
1084
|
{
|
|
@@ -1135,9 +1112,7 @@ pushToStates(state, expose.access);
|
|
|
1135
1112
|
state = genState(expose);
|
|
1136
1113
|
break;
|
|
1137
1114
|
}
|
|
1138
|
-
if (state) {
|
|
1139
|
-
pushToStates(state, expose.access);
|
|
1140
|
-
}
|
|
1115
|
+
if (state) {pushToStates(state, expose.access);}
|
|
1141
1116
|
break;
|
|
1142
1117
|
|
|
1143
1118
|
case 'binary':
|
|
@@ -1175,9 +1150,7 @@ pushToStates(state, expose.access);
|
|
|
1175
1150
|
break;
|
|
1176
1151
|
}
|
|
1177
1152
|
}
|
|
1178
|
-
if (state) {
|
|
1179
|
-
pushToStates(state, expose.access);
|
|
1180
|
-
}
|
|
1153
|
+
if (state) {pushToStates(state, expose.access);}
|
|
1181
1154
|
break;
|
|
1182
1155
|
|
|
1183
1156
|
case 'text':
|
package/lib/statesController.js
CHANGED
|
@@ -127,11 +127,7 @@ class StatesController {
|
|
|
127
127
|
// Is not an action
|
|
128
128
|
// check if its a motion sensor (occupancy state) and if configuration is set to update state every time
|
|
129
129
|
// if yes, use setStateSafelyAsync instead of setStateChangedSafelyAsync
|
|
130
|
-
else if (
|
|
131
|
-
this.adapter.config.allwaysUpdateOccupancyState === true &&
|
|
132
|
-
state.id === 'occupancy' &&
|
|
133
|
-
value === true
|
|
134
|
-
) {
|
|
130
|
+
else if (this.adapter.config.allwaysUpdateOccupancyState === true && state.id === 'occupancy' && value === true) {
|
|
135
131
|
await this.setStateSafelyAsync(stateName, value);
|
|
136
132
|
}
|
|
137
133
|
// end section for motion sensor update
|