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 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.18",
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
 
@@ -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
- if (state.isEvent && state.isEvent == true) {
153
- if (state.type == 'boolean') {
154
- await this.setStateWithTimeoutAsync(stateName, state.getter(messageObj.payload), 450);
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.setStateSafelyAsync(stateName, state.getter(messageObj.payload));
162
+ await this.setStateChangedSafelyAsync(stateName, getterPayload);
157
163
  }
158
- // publish the action into action dp
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!`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zigbee2mqtt",
3
- "version": "3.0.18",
3
+ "version": "3.0.20",
4
4
  "description": "Zigbee2MQTT adapter for ioBroker",
5
5
  "author": {
6
6
  "name": "Dennis Rathjen and Arthur Rupp",