iobroker.zigbee 1.10.13 → 1.10.14

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2018-2024 Kirov Ilya <kirovilya@gmail.com>
3
+ Copyright (c) 2018-2025 Kirov Ilya <kirovilya@gmail.com>
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -137,6 +137,11 @@ You can thank the authors by these links:
137
137
 
138
138
  -----------------------------------------------------------------------------------------------------
139
139
  ## Changelog
140
+ ### 1.10.14 (2025-01-01)
141
+ * (arteck) Herdsman 2.1.9, Converters 20.58.0
142
+ * (asgothian) Fix: Aqara T1M (CL-L02D)
143
+ * (arteck) deleteDeviceStates change to deleteObj
144
+
140
145
  ### 1.10.13 (2024-11-10)
141
146
  * (arteck) corr icon download bug (axios)
142
147
 
@@ -193,407 +198,7 @@ You can thank the authors by these links:
193
198
  * (arteck) new zigbee-herdsman-converters 18.x
194
199
  * (arteck) configure message is now a warning
195
200
 
196
- ### 1.9.7 (2024-01-05)
197
- * (arteck) corr configure for some devices
198
-
199
- ### 1.9.6 (2024-01-01)
200
- * (arteck) corr ikea bug
201
- * (crckmc) trv child lock works
202
-
203
- ### 1.9.5 (2023-12-29)
204
- * (arteck) update dependency
205
- * (arteck) min node 18.x.
206
-
207
- ### 1.9.4 (2023-12-29)
208
- * (arteck) typo
209
-
210
- ### 1.9.3 (2023-12-26)
211
- * (arteck) last zhc Version 16.x
212
- * (arteck) corr reboot in statecontroller
213
-
214
- ### 1.9.2 (2023-12-25)
215
- * (arteck) gen states from exposes as function
216
- * (arteck) rebuild dev_names.json with state cleanup button
217
-
218
- ### 1.9.1 (2023-12-23)
219
- * (arteck) corr TypeError: Cannot read properties of undefined (reading 'state')
220
-
221
- ### 1.9.0 (2023-12-22)
222
- * (arteck) up to new zhc
223
- * (arteck) update dependency
224
-
225
- ### 1.8.27 (2023-12-22)
226
- * (arteck) update dependency
227
-
228
- ### 1.8.26 (2023-12-22)
229
- * (arteck) corr toZigbee message
230
- * (arteck) add deviceManager
231
-
232
- ### 1.8.25 (2023-12-17)
233
- * zhc 16.x
234
- * (arteck) corr group from exclude dialog
235
-
236
- ### 1.8.24 (2023-09-05)
237
- * (arteck) switch to exposes tab for some Aqara Devices [more infos](https://github.com/ioBroker/ioBroker.zigbee/wiki/Exposes-for-device-integration)
238
-
239
- ### 1.8.23 (2023-08-10)
240
- * (arteck) query from xiaomi is now better
241
-
242
- ### 1.8.22 (2023-08-05)
243
- * (arteck) crash when meta is empty
244
-
245
- ### 1.8.21 (2023-07-31)
246
- * (arteck) no converter found
247
-
248
- ### 1.8.20 (2023-07-31)
249
- * (arteck) add log
250
-
251
- ### 1.8.19 (2023-07-31)
252
- * (arteck) fix occupancy_timeout
253
- * (arteck) fix battery percentage and voltage
254
-
255
- ### 1.8.18 (2023-07-16)
256
- * (arteck) little fix sentry and error log
257
-
258
- ### 1.8.17 (2023-07-15)
259
- * (arteck) sentry corr
260
-
261
- ### 1.8.16 (2023-07-11)
262
- * (arteck) battery corr
263
-
264
- ### 1.8.15 (2023-07-11)
265
- * (arteck) corr battery status
266
-
267
- ### 1.8.13 (2023-07-09)
268
- * (arteck) ota corr
269
- * (arteck) devices are wrong with enum exposes
270
- * (arteck) select field for groups is larger
271
- * (kirovilya) tuya.whitelabel corr
272
-
273
- ### 1.8.12 (2023-06-30)
274
- * (arteck) new Documentation (thx Stefan)
275
-
276
- ### 1.8.11 (2022-12-10)
277
- * (arteck) fix compsite exposes with a list
278
-
279
- ### 1.8.10 (2022-12-12)
280
- * (asgothian) fix group access
281
- * (asgothian) add option for pairing code:
282
- A new icon allows opening the network after first entering a pairing code
283
- listed on the device
284
- * (asgothian) easier use of external converters
285
- - external converters can now be placed in the zigbee adapter data folder
286
- - no absolite path is required to access them
287
- - external converters posted on the GitHub for zigbee-herdsman-converters
288
- should work as they are - folders for libraries are rewritten to match
289
- the expected location when 'required' from within the zigbee adapter
290
- - Log entries will identify which files are entered as converters. Errors
291
- in these files should not cause the adapter to crash - instead, use of
292
- external converters may be unavailable.
293
-
294
- ### 1.8.9 (2022-12-10)
295
- * (arteck) fix lidl plug
296
-
297
- ### 1.8.7 (2022-12-01)
298
- * (arteck) fix exposes
299
-
300
- ### 1.8.5 (2022-11-30)
301
- * (arteck) fix for new code
302
-
303
- ### 1.8.3 (2022-11-30)
304
- * (arteck) back to old source
305
-
306
- ### 1.8.1 (2022-11-28)
307
- * (bluefox) Packages updated
308
- * (bluefox) Added names of serial ports in configuration dialog
309
-
310
- ### 1.7.7 (2022-11-24)
311
- * dep update
312
-
313
- ### 1.7.6 (2022-07-23)
314
- * (kirovilya) fix selecting nodes in admin
315
- * (arteck) ikea fix
316
-
317
- ### 1.7.5 (2022-06-01)
318
- * (arteck) error message for undefined devices or icons
319
-
320
- ### 1.7.4 (2022-05-30)
321
- * (arteck) missing icons with multiple description
322
-
323
- ### 1.7.2 (2022-05-28)
324
- * (arteck) download missing icons corr
325
-
326
- ### 1.7.1 (2022-05-28)
327
- * (arteck) available status in admin is colored
328
- * (arteck) disable Backups checkbox in settings
329
- * (arteck) we keep last 10 backup files
330
- * (arteck) download missing icons automatically (manual upload needed)
331
-
332
- ### 1.6.18 (2022-04-21)
333
- * (arteck) fix pairing modus
334
-
335
- ### 1.6.17 (2022-04)
336
- rollback
337
-
338
- ### 1.6.16 (2022-02-16)
339
- * (arteck) admin dep fix
340
- * (arteck) colored objects for online/offline state
341
-
342
- ### 1.6.15 (2022-02-08)
343
- * (arteck) Battery status % calculation was changed for xiaomi devices
344
-
345
- ### 1.6.14 (2022-01)
346
- * (asgothian) OTA limitation
347
- - devices with the available state set to false are excluded from OTA updates (and the update check)
348
- - devices with link_quality 0 are excluded from OTA updates (and the update check)
349
- * (asgothian) Device deactivation:
350
- - Devices can be marked inactive from the device card.
351
- - inactive devices are not pinged
352
- - state changes by the user are not sent to inactive devices.
353
- - when a pingable device is marked active (from being inactive) it will be pinged again.
354
- - inactive devices are excluded from OTA updates.
355
- * (asgothian) Group rework part 2:
356
- - state device.groups will now be deleted with state Cleanup
357
- - state info.groups is now obsolete and will be deleted at adapter start (after transferring data to
358
- the new storage)
359
- * (asgothian) Device name persistance.
360
- - Changes to device names made within the zigbee adapter are stored in the file dev_names.json. This file
361
- is not deleted when the adapter is removed, and will be referenced when a device is added to the zigbee adapter. Deleting and reinstalling the adapter will no longer remove custom device names, nor will deleting and adding the device anew.
362
- * (asgothian) Readme edit to reflect the current information on zigbee coordinator hardware.
363
- * (arteck) Zigbee-Herdsman 0.14.4, Zigbee-Herdsman-Converters 14.0.394
364
-
365
- ### 1.6.13 (2022-01)
366
-
367
- * (kirovilya) update to Zigbee-Herdsman 0.14
368
-
369
- ### 1.6.12 (2022-01)
370
- * (asgothian) Groups were newly revised (read [here](https://github.com/ioBroker/ioBroker.zigbee/pull/1327) )
371
- - object device.groups is obsolet..the old one is no longer up to date
372
-
373
- ### 1.6.9 (2021-12)
374
- * (simatec) fix admin Dark-Mode
375
- * (asgothian) Expose Access Handling
376
- * (arteck) translations
377
- * (asgothian) fix groups
378
- * (agross) use different normalization rules
379
-
380
- ### 1.6.1 (2021-08)
381
- * (kirovilya) herdsman compatibility
382
-
383
- ### 1.6.0 (2021-08-09)
384
-
385
- ### 1.5.6 (2021-05-26)
386
- * (kirovilya) new UI add
387
-
388
- ### 1.5.5 (2021-05-05)
389
- * Fixes for new zigbee-herdsman-converters
390
- * UI fixes
391
-
392
- ### 1.5.3 (2021-04-30)
393
- * (arteck) Fix for js-controller 3.3.*
394
-
395
- ### 1.5.2 (2021-04-29)
396
- * (asgothian) Groups on dashboard
397
-
398
- ### 1.5.1 (2021-04-14)
399
- * (kirovilya) Dashboard
400
- * (asgothian) Groups (reworked)
401
- * [Experimental support EZSP protocol for EFR32 chips](https://github.com/Koenkk/zigbee-herdsman/issues/319) (zigbee-herdsman)
402
-
403
- ### 1.4.4 (2021-02-14)
404
- * (kirovilya) External converters https://www.zigbee2mqtt.io/information/configuration.html#external-converters-configuration
405
- * (asgothian) Enhancement ping process
406
- * (asgothian) Devive query state-button
407
- * (asgothian) State Cleanup button
408
- * (arteck) Setting to use exposes instead of internal device description
409
-
410
- ### 1.4.1 (2020-12)
411
- * (o0shojo0o) added a kelvin possibility into colortemp
412
- * (asgothian) Hue_calibration for exposed devices (Use requires PR on zigbee-herdsman-converters, PR is being worked on)
413
- * (asgothian) fix Tuya Thermostat: restore lost property "preset"
414
- * (asgothian) Change for Device Availability: Stagger initial ping by 200 ms to prevent network congestion due to a large number of ping requests
415
- * (asgothian) Change for Device Availability: Ping request triggered on reconnect. Before the herdsman Ping function is used, the adapter attempts to read the "state" dp. If this is successful, no ping is sent and the state is set
416
- * (asgothian) Change for Device Availability: Set link Quality to 0 when a device is not connected, 10 when it is reconnecting.
417
- * (asgothian) fix for message "illegal properties x,y" - remove color and color_temp from readable states on device available again (Issue #607)
418
- * (asgothian) RGB Color can now be entered as "named" color. Implemented names are taken from the list of extended web colors on wikipedia (https://en.wikipedia.org/wiki/Web_colors)
419
- * (asgothian) change in how RGB color is parsed. Incomplete colors will now be parsed successfully. #FFF will result in R 0, G 15, B 255
420
- * (asgothian) change in OTA: Message that a device does not respond for OTA query downgraded to "info" from "error"
421
- * (asgothian) new coordinator card
422
-
423
- ### 1.4.0 (2020-12)
424
- * Many new devices available
425
-
426
- Starting from version 1.4.0, new devices in iobroker.zigbee will be added automatically, based on the *exposes* described in zigbee-herdsman-converters.
427
- The *exposes* section describes the device's capabilities, events and control commands. In iobroker.zigbee these descriptions are converted to iobroker states.
428
- This means that the new device is described correctly enough in zigbee-herdsman-converters to start working with iobroker.zigbee (do not need to add it to our /lib/devices files.js and /lib/states.js).
429
-
430
- The only thing that is not described (yet, it may change in the future) in zigbee-herdsman-converters is the device image. This is why the device icon on network map uses external links to the resource https://www.zigbee2mqtt.io/images/devices/*.
431
- If you want to use local images, then you need to put the image file in /admin/img and briefly describe the device in the /lib/devices.js file without the *states*:
432
- ```
433
- {
434
- models: [‘01MINIZB’],
435
- icon: 'img/ITEAD01ZBMINI. png',
436
- }
437
- ```
438
- in this case, the *states* attribute will be formed based on the *exposes* description and the image will be local.
439
-
440
- ### 1.3.1 (2020-10-30)
441
- * [Experimental Zigate support](https://github.com/Koenkk/zigbee-herdsman/issues/242) (zigbee-herdsman)
442
- * New devices by:
443
- asgothian, arteck, kirovilya, PaulchenPlump
444
-
445
- ### 1.3.0 (2020-10-07)
446
- * More stable (zigbee-herdsman)
447
- * Backup prior database and nv-data (for z-stack 3) before start adapter
448
- * Allow to select bind cluster
449
- * Admin Tab support (experimental)
450
- * (UncleSamSwiss, DutchmanNL) Translation
451
- * New devices by:
452
- arteck, kirovilya, Shade, krumbholz, fre, Alex18081, ae, asgothian,
453
- Strunzdesign, kairauer, VLGorskij, Hesse-Bub, PaulchenPlump, blackrozes
454
-
455
- ### 1.2.1 (2020-08-16)
456
- * Fixes after changing device identify method
457
- * (Garfonso) Allow unbinding from coordinator
458
-
459
- ### 1.2.0 (2020-08-09)
460
- * Serialport 9.0.0. (zigbee-herdsman)
461
- * Drop support Node < 10 (zigbee-herdsman)
462
- * Device now identify (for zigbee-herdsman-converters) by model not zigbeeModel
463
-
464
- Improvements and fixes:
465
- * (Strunzdesign) Fixed the mapping between bulb levels and adapter levels
466
- * (kirovilya) Fix ota for unavailable devices
467
- * (kirovilya) Lazy states - created only when an event arrives
468
- * (kirovilya) States generator - states are created depending on the device and its endpoints
469
- * (Shade) Fixed WXKG11LM clicks
470
- * (allofmex) Improved DeveloperTab logs
471
- * (allofmex) Add humidity and temperature calibration state to Tuya RH3052
472
- * (kirovilya) Fixed a typo due to which extPanID was not set
473
- * (allofmex) Retry reconnect gateway all the time for TCP-connected gateway
474
- * (kirovilya) Allow collecting zigbee-herdsman logs to iobroker logs
475
- * (kirovilya) Additional states for QBKG12LM
476
-
477
- New devices:
478
- * (kirovilya) BlitzWolf BW-IS3, Paulmann 500.67, Paulmann 798.09
479
- * (kirovilya) DiY Geiger counter https://modkam.ru/?p=1591
480
- * (kirovilya) DiY 8 Relays + 8 switches https://modkam.ru/?p=1638
481
- * (kirovilya) DiY Freepad https://github.com/diyruz/freepad
482
- * (kirovilya) Neo Zigbee Siren Alarm https://szneo.com/en/products/show.php?id=241
483
- * (Shade) RB 278 T
484
- * (arteck) TS0601_thermostat
485
- * (arteck) TS0121
486
- * (arteck) GL-D-004Z
487
- * (Shade) WXKG07LM
488
- * (drohne200) 1746430P7
489
- * (sebastian) 4058075816459
490
- * (itProfi) SGMHM-I1
491
- * (arteck) owvfni3
492
- * (arteck) TS0001, TS0111
493
- * (Daniel Dreier) Paulmann 500.45
494
- * (arteck) ZK-EU-2U
495
- * (Newan) Busch-Jaeger 6735/6736/6737
496
- * (andrico21) ZM-L03E-Z
497
- * (arteck) 915005106701, 9290018187B
498
- * (frankjoke) HGZB-20-UK, GL-W-001Z
499
- * (arteck) 4034031P7, 3435011P7
500
- * (arteck) TS0041
501
- * (agross) 5062231P7, 5062431P7
502
- * (kirovilya) TI0001-switch, TI0001-socket
503
- * (arteck) RB 178 T
504
- * (arteck) HGZB-07A, AV2010/22, AV2010/22A, TS0041, TS0043
505
- * (nbars) E1744
506
- * (Florian Look) GS361A-H04
507
- * (arteck) ICZB-IW11SW
508
- * (kirovilya) HS2WD-E
509
- * (Sacred-Shadow) FL 130 C
510
- * (arteck) HS3SA, 9290022169, 4096730U7, AC10787, SP 220, SP 222, SP 224, 07004D, BW-IS2, InstaRemote
511
- * (kirovilya) MCLH-08, MCLH-05
512
- * (Sacred-Shadow) 1746130P7
513
- * (mar565) GUNNARP panel round
514
- * (Erdnuss3003) 4090531P7
515
-
516
- ### 1.1.1 (2020-04-17)
517
- * (kirovilya) Critical. Fixed error starting adapter if cc-chip was only flashed
518
- * (kirovilya) Nue/3A FNB56-ZSW02LX2.0
519
- * (Strunzdesign) Added missing raw button events for Philips Hue Smart Button ROM001
520
- * (Sacred-Shadow) Fix Color for Outdoor Lantern W RGBW OSRAM
521
-
522
- ### 1.1.0 (2020-04-12)
523
- new Zigbee-herdsman features:
524
- * ConBee/RaspBee (experimental support) https://github.com/Koenkk/zigbee-herdsman/issues/72
525
- * OTA update for some devices (IKEA, OSRAM and other) https://github.com/Koenkk/zigbee2mqtt/issues/2921
526
- * Touchlink reset and join https://github.com/Koenkk/zigbee2mqtt/issues/2396
527
- * Green Power devices support https://github.com/Koenkk/zigbee2mqtt/issues/3322
528
- * (peterfido) iCasa KPD14S und KPD18S hinzu
529
- * (kirovilya) Moes Zigbee Thermostatic Radiator
530
- * (kirovilya) LifeControl power plug MCLH-03, bulb MCLH-02, water leak MCLH-07, door sensor MCLH-04
531
- * (kirovilya) Philips LCT002, LCT011, LTW015, LWG004
532
- * (kirovilya) Gledopto GL-C-007 with a channel
533
- * (MultivitaminJuice) Iluminize 511.040
534
- * (Sacred-Shadow) Bitron 902010/24
535
- * (kirovilya) Color indication of LQI and Battery icon
536
- * (kirovilya) Device info modal dialog
537
- * (arteck) Philips LCT026
538
- * (obakuhl) Improvements Osram switch mini
539
- * (arteck) Nue / 3A FB56+ZSW1GKJ2.5, LXN-1S27LX1.0
540
- * (agross) Philips Signe Floor and Table
541
- * (arteck) TRADFRI bulb E14 WS 470lm, OSRAM PAR16 TW Z3
542
- * (kirovilya) Smart remote controller (4 buttons)
543
- * (allofmex) OTA updates
544
- * (kirovilya) Aqara opple change mode keys (for binding)
545
- * (palsch) Heiman HS2WD-E siren
546
-
547
- ### 1.0.4 (2020-03-14)
548
- * (kirovilya) Philips Hue Adore Bathroom Mirror Light
549
- * (kirovilya) Oujiabao Gas and carbon monoxide alarm
550
- * (kirovilya) Tuya SOS button
551
- * (Erdnuss3003) Schwaiger ZBT-DIMLight-GLS0800
552
- * (arteck) Smart Home Pty FB56-ZCW11HG1.4, LXT56-LS27LX1.7
553
- * (arteck) Xiaomi plug lumi.plug.mmeu01
554
- * (arteck) Innr RS 228 T, RS 230 C
555
- * (arteck) Gledopto GL-MC-001, GL-D-003ZS
556
- * (allmyjoes) Bitron AV2010/21A
557
- * (arteck) Osram Panel TW 595 UGR22
558
- * (kirovilya) IKEA SURTE door WS 38x64
559
- * (andigandi) Philips Hue LCG002, Hue LTG002
560
- * (arteck) iCasa ICZB-FC
561
- * (arteck) Osram A60 DIM Z3
562
- * (arteck) Paulmann 371000001
563
- * (DaCHRIS) Osram PAR16 DIM Z3
564
- * (DaCHRIS) Philips LWG001
565
- * (DaCHRIS) Illuminize 511.202
566
- * (SchumyHao) TERNCY-SD01 knob dimmer
567
- * (SchumyHao) Xiaomi lumi.lock.aq1
568
- * (kirovilya) New eWeLink devices: button, TH sensor, contact sensor, motion sensor
569
- * (kirovilya) Allow pairing to routers (again)
570
- * (Erdnuss3003) Philips Hue LCT021
571
- * (root) Trust ZWLD-100 water leak sensor
572
- * (smartpran) Bitron AV2010/32
573
-
574
- ### 1.0.3 (2020-02-09)
575
- * (Tw1nh34d) Hornbach FLAIR LED
576
- * (asgothian) Hue smart button, Heiman smoke sensor
577
- * (kirovilya) Philips LTC014, LTC015
578
- * (kirovilya) Power states for QBKG11LM
579
- * (Garfonso) Change role for occupancy state to 'sensor.motion'
580
- * (kirovilya) Change illuminance state to illuminance_lux (for lux value)
581
- * (arteck) Philips LCF002
582
- * (arteck) TRADFRI open/close remote
583
- * (kirovilya) Tuya sensor TS0201
584
-
585
- ### 1.0.2 (2020-01-29)
586
- * (kirovilya) All button events for Aqara Opple switch
587
- * (ma-john) OSRAM PAR16 RGBW Z3
588
- * (arteck) Phillips LWA004
589
- * (MiniMe6666) Heiman SmokeSendor-N-3.0
590
- * (kirovilya) Force remove device
591
- * (kirovilya) Fix some networkmap bugs
592
- * (kirovilya) Extended info button
593
- * (kirovilya) Long press for WXKG01LM
594
-
595
- ### 1.0.1 (2020-01-23)
596
- * fix for old z-stack firmware
201
+ ***********************************************
597
202
 
598
203
  ### 1.0.0 (2020-01-22)
599
204
  * Powered by new [zigbee-herdsman](https://github.com/Koenkk/zigbee-herdsman) library and new [converters database](https://github.com/Koenkk/zigbee-herdsman-converters)
@@ -603,25 +208,4 @@ new Zigbee-herdsman features:
603
208
  * Some design update
604
209
  * Binding
605
210
 
606
- ## License
607
- The MIT License (MIT)
608
-
609
- Copyright (c) 2018-2024 Kirov Ilya <kirovilya@gmail.com>
610
-
611
- Permission is hereby granted, free of charge, to any person obtaining a copy
612
- of this software and associated documentation files (the "Software"), to deal
613
- in the Software without restriction, including without limitation the rights
614
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
615
- copies of the Software, and to permit persons to whom the Software is
616
- furnished to do so, subject to the following conditions:
617
-
618
- The above copyright notice and this permission notice shall be included in
619
- all copies or substantial portions of the Software.
620
-
621
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
622
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
623
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
624
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
625
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
626
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
627
- THE SOFTWARE.
211
+ ------------------------------------------------------------------------------
Binary file
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zigbee",
4
- "version": "1.10.13",
4
+ "version": "1.10.14",
5
5
  "news": {
6
+ "1.10.14": {
7
+ "en": "Herdsman 2.1.9, Converters 20.58.0\nFix: Aqara T1M (CL-L02D) \ndeleteDeviceStates change to deleteObj",
8
+ "de": "Herdsman 2.1.9, Konverter 20.58.0\nFix: Aqara T1M (CL-L02D)\nlöschen DeviceState Änderung zum Löschen Ob",
9
+ "ru": "Herdsman 2.1.9, Converters 20.58.0\nFix: Aqara T1M (CL-L02D)\nудалить Устройства меняются для удаления Obj",
10
+ "pt": "Herdsman 2.1.9, Conversores 20.58.0\nFix: Aqara T1M (CL-L02D)\nexcluir DeviceStates mudam para excluir Objecção",
11
+ "nl": "Herdsman 2.1.9, Converters 20.58.0\nFix: Aqara T1M (CL-L02D)\nverwijderen Apparaatstaten wijzigen om te verwijderen Obj",
12
+ "fr": "Herdsman 2.1.9, Convertisseurs 20.58.0\nCorrection: Aqara T1M (CL-L02D)\nsupprimer Les états de périphérique changent pour supprimer OBJ",
13
+ "it": "Herdsman 2.1.9, Convertitori 20.58.0\nFisso: Aqara T1M (CL-L02D)\ncancella DeviceStates modifica per eliminare Obj",
14
+ "es": "Herdsman 2.1.9, convertidores 20.58.0\nFijación: Aqara T1M (CL-L02D)\nborrar Los Estados de dispositivos cambian para eliminar Obj",
15
+ "pl": "Herdsman 2.1.9, konwertery 20.58.0\nFix: Aqara T1M (CL- L02D)\nusuń DeviceStates zmienić, aby usunąć Obj",
16
+ "uk": "Herdsman 2.1.9, Конвертер 20.58.0\nФіксація: Aqara T1M (CL-L02D)\nвидалити Зміна стану пристроїв для видалення Офіціант",
17
+ "zh-cn": "牧民2.1.9,转换器 20.58.0\n修补:Aqara T1M(CL-L02D)\n删除 设备状态更改以删除 欧比"
18
+ },
6
19
  "1.10.13": {
7
20
  "en": "corr icon download bug (axios)",
8
21
  "de": "corr icon download bug (axios)",
@@ -80,19 +93,6 @@
80
93
  "pl": "ustawienia admin corr\ndodaj nową wersję eslint\n",
81
94
  "uk": "корр налаштування адміністратора\nдодати нову версію eslint\n",
82
95
  "zh-cn": "corr 管理员设置\n添加新的 eslint 版本\n"
83
- },
84
- "1.10.7": {
85
- "en": "add flow control option \nadd new NewHerdsman\nadd new ezsp coordinator Firmware (7.4.1.0)",
86
- "de": "möglichkeit der durchflussregelung\nneues hinzufügen NewHerdsman\nezsp Koordinator Firmware hinzufügen (7.4.1.0)",
87
- "ru": "добавить параметр управления потоком\nдобавить новый NewHerdsman\nдобавить новый координатор ezsp Firmware (7.4.1.0)",
88
- "pt": "adicionar opção de controle de fluxo\nadicionar novo NewHerdsman\nadicionar novo coordenador ezsp Firmware (7.4.1.0)",
89
- "nl": "flow control optie toevoegen\nnieuwe NewHerdsman toevoegen\nnieuwe ezsp coördinator Firmware (7.4.1.0) toevoegen",
90
- "fr": "ajouter l'option de contrôle du débit\najouter un nouveau NewHerdsman\najouter un nouveau logiciel ezsp coordinator (7.4.1.0)",
91
- "it": "aggiungere opzione di controllo del flusso\naggiungere nuovo NewHerdsman\naggiungere nuovo coordinatore ezsp Firmware (7.4.1.0)",
92
- "es": "añadir opción de control de flujo\nañadir nuevo NewHerdsman\nañadir nuevo coordinador de ezsp Firmware (7.4.1.0)",
93
- "pl": "dodaj opcję kontroli przepływu\ndodaj nowy NewHerdsman\ndodaj nowego koordynatora ezsp Firmware (7.4.1.0)",
94
- "uk": "додати варіант контролю потоку\nдодати новийHerdsman\nadd new ezsp manager Прошивка (7.4.1.0)",
95
- "zh-cn": "添加流量控制选项\n添加新赫兹曼\n添加新的 ezsp 协调员 Firmware (7.4.1.0)"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/lib/commands.js CHANGED
@@ -474,13 +474,13 @@ class Commands {
474
474
  if (!dev) {
475
475
  this.debug('Not found!');
476
476
  this.debug(`Try delete dev ${devId} from iobroker.`);
477
- this.stController.deleteDeviceStates(devId, () =>
477
+ this.stController.deleteObj(devId, () =>
478
478
  this.adapter.sendTo(from, command, {}, callback));
479
479
  return;
480
480
  }
481
481
  this.zbController.remove(sysid, force, err => {
482
482
  if (!err) {
483
- this.stController.deleteDeviceStates(devId, () =>
483
+ this.stController.deleteObj(devId, () =>
484
484
  this.adapter.sendTo(from, command, {}, callback));
485
485
  } else {
486
486
  this.debug(`Error on remove! ${err}`);
package/lib/devices.js CHANGED
@@ -306,7 +306,8 @@ const generator = {
306
306
  setattr: 'state',
307
307
  });
308
308
  }
309
- if (endpoint.supportsOutputCluster('genMultistateInput')) {
309
+ if (endpoint.supportsOutputCluster('genMultistateInput') || endpoint.clusters.hasOwnProperty('genMultistateInput'))
310
+ {
310
311
  devstates.push({
311
312
  id: `channel_${epID}.click`,
312
313
  prop: 'action',
@@ -343,6 +344,18 @@ const generator = {
343
344
  isEvent: true,
344
345
  getter: payload => payload.action === `tripple_${epName}` ? true : undefined,
345
346
  });
347
+ devstates.push({
348
+ id: `channel_${epID}.hold`,
349
+ prop: 'action',
350
+ name: `long click event`,
351
+ icon: undefined,
352
+ role: 'button',
353
+ write: false,
354
+ read: true,
355
+ type: 'boolean',
356
+ isEvent: true,
357
+ getter: payload => payload.action === `hold_${epName}` ? true : undefined,
358
+ });
346
359
  }
347
360
  if (endpoint.supportsOutputCluster('genLevelCtrl')) {
348
361
  devstates.push({
@@ -487,7 +500,7 @@ const generator = {
487
500
  });
488
501
  return icasa_states;
489
502
  },
490
- ptvo_switch: (entity) => {
503
+ /*ptvo_switch: (entity) => {
491
504
  const devstates = [];
492
505
  for (const endpoint of entity.device.endpoints) {
493
506
  const epID = endpoint.ID;
@@ -566,7 +579,7 @@ const generator = {
566
579
  }
567
580
  }
568
581
  return devstates;
569
- },
582
+ },*/
570
583
  };
571
584
 
572
585
  function states_with_epname(entity, states) {
@@ -3094,6 +3107,10 @@ const devices = [
3094
3107
  models: ['E2204'],
3095
3108
  icon: 'img/E2204.png',
3096
3109
  },
3110
+ {
3111
+ models: ['L1(ZW)'],
3112
+ icon: 'img/TS0502B.png',
3113
+ },
3097
3114
  ];
3098
3115
 
3099
3116
  const commonStates = [
package/lib/groups.js CHANGED
@@ -93,28 +93,28 @@ class Groups {
93
93
 
94
94
  async getGroups(obj) {
95
95
  const response = {groups: {}};
96
- try {
97
- // const groupsState = await this.adapter.getStateAsync('info.groups');
98
- const herdsmanGroups = await this.zbController.getGroups();
99
-
100
- // const groups = (groupsState && groupsState.val) ? JSON.parse(groupsState.val) : {};
101
96
 
102
- const groups = {};
103
- if (typeof herdsmanGroups === 'object') {
104
- for (const group of herdsmanGroups) {
105
- const gid = group.groupID;
106
- if (gid) {
107
- groups[gid] = this.stController.verifyDeviceName(`group_${gid}`, `Group ${gid}`);
97
+ const isEnable = await this.adapter.getStateAsync('info.connection');
98
+ if (isEnable.val) {
99
+ try {
100
+ const herdsmanGroups = await this.zbController.getGroups();
101
+ const groups = {};
102
+ if (typeof herdsmanGroups === 'object') {
103
+ for (const group of herdsmanGroups) {
104
+ const gid = group.groupID;
105
+ if (gid) {
106
+ groups[gid] = this.stController.verifyDeviceName(`group_${gid}`, `Group ${gid}`);
107
+ }
108
108
  }
109
109
  }
110
+ this.debug(`getGroups result: ${JSON.stringify(groups)}`);
111
+ response.groups = groups;
112
+ } catch (error) {
113
+ response.error = `res getGroups: caught error: ${error}`;
114
+ this.error(`getGroups: caught error: ${error}`);
115
+ } finally {
116
+ obj && this.adapter.sendTo(obj.from, obj.command, response, obj.callback);
110
117
  }
111
- this.debug(`getGroups result: ${JSON.stringify(groups)}`);
112
- response.groups = groups;
113
- } catch (error) {
114
- response.error = `getGroups: caught error: ${error}`;
115
- this.error(`getGroups: caught error: ${error}`);
116
- } finally {
117
- obj && this.adapter.sendTo(obj.from, obj.command, response, obj.callback);
118
118
  }
119
119
  return response.groups;
120
120
  }
@@ -207,7 +207,7 @@ class Groups {
207
207
 
208
208
  async deleteGroup(from, command, message) {
209
209
  await this.zbController.removeGroupById(message);
210
- await this.stController.deleteGroupById(`group_${parseInt(message)}`);
210
+ await this.stController.deleteObj(`group_${parseInt(message)}`);
211
211
  }
212
212
 
213
213
  async renameGroup(from, command, message) {
@@ -223,8 +223,6 @@ class Groups {
223
223
  this.warn(`renameGroup caught error ${JSON.stringify(e.code)}`);
224
224
  }
225
225
  }
226
- // objGroups[message.id.toString()] = message.name;
227
- // await this.adapter.setStateAsync('info.groups', JSON.stringify(objGroups), true);
228
226
 
229
227
  const group = await this.adapter.getStateAsync(id);
230
228
  if (!group) {
@@ -306,7 +304,7 @@ class Groups {
306
304
  if (dev.common.type === 'group') {
307
305
  const groupid = parseInt(dev.native.id);
308
306
  if (!usedGroupsIds.includes(groupid)) {
309
- this.stController.deleteDeviceStates(`group_${groupid}`);
307
+ this.stController.deleteObj(`group_${groupid}`);
310
308
  }
311
309
  }
312
310
  });
@@ -8,7 +8,7 @@ const fs = require('fs');
8
8
  const axios = require('axios');
9
9
 
10
10
  let savedDeviceNamesDB = {};
11
- const knownUndefinedDevices = {};
11
+
12
12
 
13
13
  class StatesController extends EventEmitter {
14
14
  constructor(adapter) {
@@ -75,7 +75,6 @@ class StatesController extends EventEmitter {
75
75
  }
76
76
  });
77
77
 
78
- this.adapter.setStateAsync(`info.undefinedDevices`, JSON.stringify(knownUndefinedDevices), true);
79
78
  }
80
79
 
81
80
  checkDebugDevice(dev) {
@@ -95,9 +94,6 @@ class StatesController extends EventEmitter {
95
94
  if (!this.adapter.zbController || !this.adapter.zbController.connected()) {
96
95
  return;
97
96
  }
98
- if (this.debugDevices === undefined) {
99
- this.getDebugDevices();
100
- }
101
97
  if (state && !state.ack) {
102
98
  if (id.endsWith('pairingCountdown') || id.endsWith('pairingMessage') || id.endsWith('connection')) {
103
99
  return;
@@ -112,7 +108,8 @@ class StatesController extends EventEmitter {
112
108
  return;
113
109
  }
114
110
 
115
- if (this.checkDebugDevice(id)) this.warn(`ELEVATED: User stateChange ${id} ${JSON.stringify(state)}`);
111
+ if (this.checkDebugDevice(id))
112
+ this.warn(`ELEVATED O1: User state change of state ${id} with value ${state.val} (ack: ${state.ack}) from ${state.from}`);
116
113
 
117
114
  this.debug(`User stateChange ${id} ${JSON.stringify(state)}`);
118
115
  const devId = getAdId(this.adapter, id); // iobroker device id
@@ -191,13 +188,7 @@ class StatesController extends EventEmitter {
191
188
  } else {
192
189
  stateModel = statesMapping.findModel(model);
193
190
  if (!stateModel) {
194
- if (knownUndefinedDevices[deviceId]) {
195
- knownUndefinedDevices[deviceId]++;
196
- } else {
197
- knownUndefinedDevices[deviceId] = 1;
198
- this.info(`Device ${deviceId} "${model}" not present in statesMapping - relying on exposes for device definition.`);
199
- }
200
- this.adapter.setStateAsync(`info.undefinedDevices`, JSON.stringify(knownUndefinedDevices), true);
191
+ this.info(`Device ${deviceId} "${model}" not present in statesMapping - relying on exposes for device definition.`);
201
192
  states = statesMapping.commonStates;
202
193
  } else {
203
194
  states = stateModel.states;
@@ -217,15 +208,14 @@ class StatesController extends EventEmitter {
217
208
  }
218
209
 
219
210
  async publishFromState(deviceId, model, stateKey, state, options) {
220
- if (this.debugDevices === undefined) this.getDebugDevices();
221
211
  this.debug(`Change state '${stateKey}' at device ${deviceId} type '${model}'`);
222
212
  const elevated = this.checkDebugDevice(deviceId);
223
213
 
224
- if (elevated) this.warn(`ELEVATED Change state '${stateKey}' at device ${deviceId} type '${model}'`);
214
+ if (elevated) this.warn(`ELEVATED O2: Change state '${stateKey}' at device ${deviceId} type '${model}'`);
225
215
 
226
216
  const devStates = await this.getDevStates(deviceId, model);
227
217
  if (!devStates) {
228
- if (elevated) this.error(`ELEVATED no device states for device ${deviceId} type '${model}'`);
218
+ if (elevated) this.error(`ELEVATED OE1: no device states for device ${deviceId} type '${model}'`);
229
219
  return;
230
220
  }
231
221
  const commonStates = statesMapping.commonStates.find(statedesc => stateKey === statedesc.id);
@@ -238,7 +228,8 @@ class StatesController extends EventEmitter {
238
228
 
239
229
  const value = state.val;
240
230
  if (value === undefined || value === '') {
241
- if (elevated) this.error(`ELEVATED no value for device ${deviceId} type '${model}'`);
231
+ if (elevated)
232
+ this.error(`ELEVATED OE2: no value for device ${deviceId} type '${model}'`);
242
233
  return;
243
234
  }
244
235
  let stateList = [{stateDesc: stateDesc, value: value, index: 0, timeout: 0}];
@@ -308,18 +299,7 @@ class StatesController extends EventEmitter {
308
299
  return savedDeviceNamesDB[savedId];
309
300
  }
310
301
 
311
- deleteDeviceStates(devId, callback) {
312
- this.adapter.getStatesOf(devId, (err, states) => {
313
- if (!err && states) {
314
- states.forEach(state =>
315
- this.adapter.deleteState(devId, null, state._id));
316
- }
317
- this.adapter.delObject(devId, () =>
318
- callback && callback());
319
- });
320
- }
321
-
322
- async deleteGroupById(devId) {
302
+ async deleteObj(devId) {
323
303
  const options = { recursive:true };
324
304
  try {
325
305
  this.adapter.delObject(devId,options), (err) => { }
@@ -329,7 +309,6 @@ class StatesController extends EventEmitter {
329
309
  }
330
310
  }
331
311
 
332
-
333
312
  async deleteOrphanedDeviceStates(ieeeAddr, model, force, callback) {
334
313
  const devStates = await this.getDevStates(ieeeAddr, model);
335
314
  const commonStates = statesMapping.commonStates;
@@ -620,19 +599,20 @@ class StatesController extends EventEmitter {
620
599
  async publishToState(devId, model, payload) {
621
600
  const devStates = await this.getDevStates(`0x${devId}`, model);
622
601
  let has_debug = false;
623
- if (this.debugDevices === undefined) this.getDebugDevices();
624
602
  if (this.checkDebugDevice(devId))
625
603
  {
626
604
  if (!payload.hasOwnProperty('msg_from_zigbee')) {
627
- this.warn(`ELEVATED publishToState: message received '${JSON.stringify(payload)}' from device ${devId} type '${model}'`);
605
+ this.warn(`ELEVATED I1: message received '${JSON.stringify(payload)}' from device ${devId} type '${model}'`);
628
606
  has_debug = true;
629
607
  }
630
608
  }
631
609
  if (!devStates) {
632
- if (has_debug) this.error(`ELEVATED publishToState: no device states for device ${devId} type '${model}'`)
610
+ if (has_debug) this.error(`ELEVATED IE2: no device states for device ${devId} type '${model}'`)
633
611
  return;
634
612
  }
635
613
  // find states for payload
614
+ let has_published = false;
615
+
636
616
  if (devStates.states !== undefined) {
637
617
  try {
638
618
  const states = statesMapping.commonStates.concat(
@@ -655,7 +635,7 @@ class StatesController extends EventEmitter {
655
635
  let stateID = statedesc.id;
656
636
 
657
637
  if (has_debug && statedesc.id !== 'msg_from_zigbee') {
658
- this.warn(`ELEVATED publishToState: value generated '${JSON.stringify(value)}' from device ${devId} for '${statedesc.name}'`);
638
+ this.warn(`ELEVATED I2: value generated '${JSON.stringify(value)}' from device ${devId} for '${statedesc.name}'`);
659
639
  }
660
640
 
661
641
  const common = {
@@ -693,11 +673,22 @@ class StatesController extends EventEmitter {
693
673
  this.updateState(devId, stateID, value, common);
694
674
  }
695
675
  }
676
+ has_published = true;
696
677
  }
697
678
  } catch (e) {
698
679
  this.debug(`No states in device ${devId} : payload ${JSON.stringify(payload)}`);
680
+ if (has_debug)
681
+ this.error(`ELEVATED IE3: error when enumerating states of ${devId} for payload ${JSON.stringify(payload)}, ${(e ? e.name : 'undefined')} (${(e ? e.message : '')}).`);
682
+ }
683
+ if (!has_published && has_debug) {
684
+ this.error(`ELEVATED IE4: No value published for device ${devId}`);
685
+
699
686
  }
700
687
  }
688
+ else {
689
+ if (has_debug)
690
+ this.error(`ELEVATED IE5: No states matching the payload ${JSON.stringify(payload)} for device ${devId}`);
691
+ }
701
692
  }
702
693
  }
703
694
 
package/main.js CHANGED
@@ -441,7 +441,7 @@ class Zigbee extends utils.Adapter {
441
441
 
442
442
  Promise.all(chain)
443
443
  .then(() =>
444
- this.stController.deleteDeviceStates(devId, () =>
444
+ this.stController.deleteObj(devId, () =>
445
445
  this.stController.updateDev(devId, model, model, async () => {
446
446
  await this.stController.syncDevStates(device, model);
447
447
  resolve();
@@ -467,7 +467,9 @@ class Zigbee extends utils.Adapter {
467
467
  const devId = device.ieeeAddr.substr(2);
468
468
  const meta = {device};
469
469
 
470
- if (this.stController.checkDebugDevice(devId)) {
470
+ const has_elevated_debug = this.stController.checkDebugDevice(devId);
471
+
472
+ if (has_elevated_debug) {
471
473
  const shortMessage = {};
472
474
  for(const propertyName in message) {
473
475
  shortMessage[propertyName] = message[propertyName];
@@ -475,7 +477,7 @@ class Zigbee extends utils.Adapter {
475
477
  shortMessage.device = device.ieeeAddr;
476
478
  shortMessage.meta = undefined;
477
479
  shortMessage.endpoint = (message.endpoint.ID ? message.endpoint.ID: -1);
478
- this.log.warn(`ELEVATED: Zigbee Event of Type ${type} from device ${safeJsonStringify(device.ieeeAddr)}, incoming event: ${safeJsonStringify(shortMessage)}`);
480
+ this.log.warn(`ELEVATED I0: Zigbee Event of Type ${type} from device ${safeJsonStringify(device.ieeeAddr)}, incoming event: ${safeJsonStringify(shortMessage)}`);
479
481
  }
480
482
  // this assigment give possibility to use iobroker logger in code of the converters, via meta.logger
481
483
  meta.logger = this.log;
@@ -558,6 +560,8 @@ class Zigbee extends utils.Adapter {
558
560
  if (!converters.length) {
559
561
  if (type !== 'readResponse') {
560
562
  this.log.debug(`No converter available for '${mappedModel.model}' '${devId}' with cluster '${cluster}' and type '${type}'`);
563
+ if (has_elevated_debug)
564
+ this.log.warn(`ELEVATED IE0: No converter available for '${mappedModel.model}' '${devId}' with cluster '${cluster}' and type '${type}'`);
561
565
  }
562
566
  return;
563
567
  }
@@ -639,7 +643,7 @@ class Zigbee extends utils.Adapter {
639
643
 
640
644
  if (!mappedModel) {
641
645
  this.log.debug(`No mapped model for ${model}`);
642
- if (has_elevated_debug) this.log.warn(`ELEVATED: No mapped model for ${model}`)
646
+ if (has_elevated_debug) this.log.warn(`ELEVATED O2: No mapped model for ${model}`)
643
647
  return;
644
648
  }
645
649
 
@@ -715,26 +719,29 @@ class Zigbee extends utils.Adapter {
715
719
 
716
720
  if (!c.hasOwnProperty('convertSet')) continue;
717
721
  this.log.debug(`Type of toZigbee is '${typeof c}', Contains key ${(c.hasOwnProperty('key')?JSON.stringify(c.key):'false ')}`)
718
- if (!c.hasOwnProperty('key') && c.hasOwnProperty('convertSet') && converter === undefined)
722
+ if (!c.hasOwnProperty('key'))
719
723
  {
720
- converter = c;
721
-
722
- if (has_elevated_debug) this.log.warn(`ELEVATED: setting converter to keyless converter for ${deviceId} of type ${model}`)
723
- this.log.debug('setting converter to keyless converter')
724
+ if (c.hasOwnProperty('convertSet') && converter === undefined)
725
+ {
726
+ converter = c;
727
+ if (has_elevated_debug)
728
+ this.log.warn(`ELEVATED O3A: Setting converter to keyless converter for ${deviceId} of type ${model}`)
729
+ this.log.debug('setting converter to keyless converter')
730
+ }
731
+ else
732
+ {
733
+ if (has_elevated_debug) this.log.warn(`ELEVATED O3B: ignoring keyless converter for ${deviceId} of type ${model}`)
734
+ this.log.debug('ignoring keyless converter')
735
+ }
724
736
  continue;
725
737
  }
726
738
  if (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id))
727
739
  {
728
740
  this.log.debug(`${(converter===undefined?'Setting':'Overriding')}' converter to converter with key(s)'${JSON.stringify(c.key)}}`)
729
- if (has_elevated_debug) this.log.warn(`ELEVATED: ${(converter===undefined?'Setting':'Overriding')}' converter to converter with key(s)'${JSON.stringify(c.key)}}`)
741
+ if (has_elevated_debug) this.log.warn(`ELEVATED O3C: ${(converter===undefined?'Setting':'Overriding')}' converter to converter with key(s)'${JSON.stringify(c.key)}}`)
730
742
  converter = c;
731
743
  }
732
-
733
744
  }
734
- /*
735
- if (!mappedModel.toZigbee[0].hasOwnProperty('key') && mappedModel.toZigbee[0].hasOwnProperty('convertSet')) converter = mappedModel.toZigbee[0];
736
- converter = mappedModel.toZigbee.find(c => c && c.hasOwnProperty('key') && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id)));
737
- */
738
745
  if (converter === undefined) {
739
746
  this.log.error(`No converter available for '${model}' with key '${stateDesc.id}' `);
740
747
  this.sendError(`No converter available for '${model}' with key '${stateDesc.id}' `);
@@ -755,9 +762,9 @@ class Zigbee extends utils.Adapter {
755
762
  }
756
763
 
757
764
  const epName = stateDesc.epname !== undefined ? stateDesc.epname : (stateDesc.prop || stateDesc.id);
758
- const key = stateDesc.prop || stateDesc.id || stateDesc.setattr;
765
+ const key = stateDesc.setattr || stateDesc.prop || stateDesc.id;
759
766
  this.log.debug(`convert ${key}, ${safeJsonStringify(preparedValue)}, ${safeJsonStringify(preparedOptions)}`);
760
- if (has_elevated_debug) this.log.warn(`ELEVATED: convert ${key}, ${safeJsonStringify(preparedValue)}, ${safeJsonStringify(preparedOptions)} for device ${deviceId}`);
767
+ if (has_elevated_debug) this.log.warn(`ELEVATED O4: convert ${key}, ${safeJsonStringify(preparedValue)}, ${safeJsonStringify(preparedOptions)} for device ${deviceId} with Endpoint ${epName}`);
761
768
 
762
769
  let target;
763
770
  if (model === 'group') {
@@ -797,24 +804,21 @@ class Zigbee extends utils.Adapter {
797
804
  try {
798
805
  const result = await converter.convertSet(target, key, preparedValue, meta);
799
806
  this.log.debug(`convert result ${safeJsonStringify(result)}`);
800
- if (has_elevated_debug) this.log.warn(`ELEVATED: convert result ${safeJsonStringify(result)} for device ${deviceId}`);
807
+ if (has_elevated_debug) this.log.warn(`ELEVATED O5: convert result ${safeJsonStringify(result)} for device ${deviceId}`);
801
808
  if (result !== undefined) {
802
809
  if (stateModel && !isGroup) {
803
810
  this.acknowledgeState(deviceId, model, stateDesc, value);
804
811
  }
805
812
  // process sync state list
806
813
  this.processSyncStatesList(deviceId, model, syncStateList);
807
-
808
- // if (isGroup) {
809
- // await this.callPluginMethod('queryGroupMemberState', [deviceId, stateDesc]);
810
- // this.acknowledgeState(deviceId, model, stateDesc, value);
811
- // }
812
814
  }
813
815
  else
814
- if (has_elevated_debug) this.log.warn(`Error convert result for ${key} with ${safeJsonStringify(preparedValue)} is undefined on device ${deviceId}.`);
816
+ if (has_elevated_debug)
817
+ this.log.error(`ELEVATED OE2: Error convert result for ${key} with ${safeJsonStringify(preparedValue)} is undefined on device ${deviceId}.`);
815
818
 
816
819
  } catch (error) {
817
- if (has_elevated_debug) this.log.warn(`caught error ${safeJsonStringify(error)} is undefined on device ${deviceId}.`);
820
+ if (has_elevated_debug)
821
+ this.log.error(`ELEVATED OE3: caught error ${safeJsonStringify(error)} when setting value for device ${deviceId}.`);
818
822
  this.filterError(`Error ${error.code} on send command to ${deviceId}.` +
819
823
  ` Error: ${error.stack}`, `Send command to ${deviceId} failed with`, error);
820
824
  }
@@ -934,7 +938,7 @@ class Zigbee extends utils.Adapter {
934
938
  if (ieeeAddr) {
935
939
  const devId = ieeeAddr.substr(2);
936
940
  this.log.debug(`Delete device ${devId} from iobroker.`);
937
- this.stController.deleteDeviceStates(devId);
941
+ this.stController.deleteObj(devId);
938
942
  }
939
943
  }
940
944
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zigbee",
3
- "version": "1.10.13",
3
+ "version": "1.10.14",
4
4
  "author": {
5
5
  "name": "Kirov Ilya",
6
6
  "email": "kirovilya@gmail.com"
@@ -28,8 +28,8 @@
28
28
  "ajv": "^8.17.1",
29
29
  "uri-js": "^4.4.1",
30
30
  "typescript": "^5.6.3",
31
- "zigbee-herdsman": "2.1.4",
32
- "zigbee-herdsman-converters": "20.28.0"
31
+ "zigbee-herdsman": "2.1.9",
32
+ "zigbee-herdsman-converters": "20.58.0"
33
33
  },
34
34
  "description": "Zigbee devices",
35
35
  "devDependencies": {
@@ -40,7 +40,7 @@
40
40
  "@iobroker/testing": "^5.0.0",
41
41
  "chai": "^5.1.2",
42
42
  "chai-as-promised": "^7.1.1",
43
- "eslint": "^9.13.0",
43
+ "eslint": "^9.17.0",
44
44
  "eslint-config-prettier": "^9.1.0",
45
45
  "eslint-plugin-prettier": "^5.2.1",
46
46
  "gulp": "^4.0.2",