iobroker.zigbee2mqtt 3.0.18 → 3.0.20
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 +6 -0
- package/io-package.json +27 -27
- package/lib/exposes.js +1 -0
- package/lib/statesController.js +12 -12
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,6 +22,12 @@ 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.20 (2026-01-29)
|
|
26
|
+
* (arteck) check payload if undefined
|
|
27
|
+
|
|
28
|
+
### 3.0.19 (2026-01-28)
|
|
29
|
+
* (arteck) modify action dp
|
|
30
|
+
|
|
25
31
|
### 3.0.18 (2026-01-28)
|
|
26
32
|
* (arteck) typo
|
|
27
33
|
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "zigbee2mqtt",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.20",
|
|
5
5
|
"news": {
|
|
6
|
+
"3.0.20": {
|
|
7
|
+
"en": "check payload if undefined",
|
|
8
|
+
"de": "prüfen sie die nutzlast",
|
|
9
|
+
"ru": "проверьте полезную нагрузку, если не определено",
|
|
10
|
+
"pt": "verificar a carga útil se não for definida",
|
|
11
|
+
"nl": "payload controleren indien niet gedefinieerd",
|
|
12
|
+
"fr": "vérifier la charge utile si elle n'est pas définie",
|
|
13
|
+
"it": "controllare il carico utile se non definito",
|
|
14
|
+
"es": "check payload si no está definido",
|
|
15
|
+
"pl": "sprawdzanie ładunku użytecznego, jeżeli nie określono",
|
|
16
|
+
"uk": "перевірити навантаження, якщо не визначено",
|
|
17
|
+
"zh-cn": "检查未定义的有效载荷"
|
|
18
|
+
},
|
|
19
|
+
"3.0.19": {
|
|
20
|
+
"en": "modify action dp",
|
|
21
|
+
"de": "änderung der aktion dp",
|
|
22
|
+
"ru": "модифицировать действие dp",
|
|
23
|
+
"pt": "modificar ação dp",
|
|
24
|
+
"nl": "actie dp wijzigen",
|
|
25
|
+
"fr": "modifier l'action dp",
|
|
26
|
+
"it": "modificare l'azione",
|
|
27
|
+
"es": "modificar la acción dp",
|
|
28
|
+
"pl": "modyfikacja działania dp",
|
|
29
|
+
"uk": "змінити дію dp",
|
|
30
|
+
"zh-cn": "修改动作 dp"
|
|
31
|
+
},
|
|
6
32
|
"3.0.18": {
|
|
7
33
|
"en": "typo",
|
|
8
34
|
"de": "typo",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "powrót do sharp 0,33,5",
|
|
68
94
|
"uk": "назад до sharp 0.33.5",
|
|
69
95
|
"zh-cn": "回到清晰的 0.33.5"
|
|
70
|
-
},
|
|
71
|
-
"3.0.13": {
|
|
72
|
-
"en": "add action dp",
|
|
73
|
-
"de": "aktion dp hinzufügen",
|
|
74
|
-
"ru": "добавить действие dp",
|
|
75
|
-
"pt": "adicionar ação dp",
|
|
76
|
-
"nl": "actie dp toevoegen",
|
|
77
|
-
"fr": "ajouter action dp",
|
|
78
|
-
"it": "aggiungere azione",
|
|
79
|
-
"es": "añadir acción dp",
|
|
80
|
-
"pl": "dodaj działanie dp",
|
|
81
|
-
"uk": "додати дію dp",
|
|
82
|
-
"zh-cn": "添加动作 dp"
|
|
83
|
-
},
|
|
84
|
-
"3.0.12": {
|
|
85
|
-
"en": "Dependencies have been updated\ntypo fix",
|
|
86
|
-
"de": "Abhängigkeiten wurden aktualisiert\ntypo fix",
|
|
87
|
-
"ru": "Зависимости были обновлены\nисправление опечаток",
|
|
88
|
-
"pt": "As dependências foram atualizadas\nerro de digitação",
|
|
89
|
-
"nl": "Afhankelijkheden zijn bijgewerkt\ntypo-fix",
|
|
90
|
-
"fr": "Les dépendances ont été actualisées\ncorrection du type",
|
|
91
|
-
"it": "Le dipendenze sono state aggiornate\ncorrezione di errore",
|
|
92
|
-
"es": "Se han actualizado las dependencias\ntypo fix",
|
|
93
|
-
"pl": "Zaktualizowano zależności\nfix typo",
|
|
94
|
-
"uk": "Залежність було оновлено\nтипофікс",
|
|
95
|
-
"zh-cn": "依赖关系已更新\n类型修复"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"messages": [
|
package/lib/exposes.js
CHANGED
|
@@ -762,6 +762,7 @@ async function createDeviceFromExposes(devicesMessag, adapter) {
|
|
|
762
762
|
// generate an 'action' state
|
|
763
763
|
state = genState(expose);
|
|
764
764
|
state.isEvent = true;
|
|
765
|
+
state.getter = (payload) => payload.action;
|
|
765
766
|
pushToStates(state, expose.access);
|
|
766
767
|
state = null;
|
|
767
768
|
|
package/lib/statesController.js
CHANGED
|
@@ -28,7 +28,7 @@ class StatesController {
|
|
|
28
28
|
*/
|
|
29
29
|
processDeviceMessage(messageObj) {
|
|
30
30
|
// Is payload present?
|
|
31
|
-
if (messageObj.payload == '') {
|
|
31
|
+
if (messageObj.payload == '' || messageObj.payload == undefined || messageObj.payload == null) {
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -149,19 +149,19 @@ class StatesController {
|
|
|
149
149
|
const stateName = `${device.ieee_address}.${state.id}`;
|
|
150
150
|
|
|
151
151
|
try {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
const getterPayload = state.getter(messageObj.payload);
|
|
153
|
+
if (getterPayload != undefined) {
|
|
154
|
+
if (state.isEvent && state.isEvent == true) {
|
|
155
|
+
if (state.type == 'boolean') {
|
|
156
|
+
await this.setStateWithTimeoutAsync(stateName, getterPayload, 250);
|
|
157
|
+
|
|
158
|
+
} else {
|
|
159
|
+
await this.setStateSafelyAsync(stateName, getterPayload);
|
|
160
|
+
}
|
|
155
161
|
} else {
|
|
156
|
-
await this.
|
|
162
|
+
await this.setStateChangedSafelyAsync(stateName, getterPayload);
|
|
157
163
|
}
|
|
158
|
-
|
|
159
|
-
if (state.prop && state.prop == 'action') {
|
|
160
|
-
await this.setStateSafelyAsync(`${device.ieee_address}.action`, messageObj.payload.action);
|
|
161
|
-
}
|
|
162
|
-
} else {
|
|
163
|
-
await this.setStateChangedSafelyAsync(stateName, state.getter(messageObj.payload));
|
|
164
|
-
}
|
|
164
|
+
}
|
|
165
165
|
} catch (err) {
|
|
166
166
|
incStatsQueue[incStatsQueue.length] = messageObj;
|
|
167
167
|
this.adapter.log.debug(`Can not set ${stateName}, queue state in incStatsQueue!`);
|