Contributors:
The following users have been contributing to this release. Thank you for that!
@1doubleDD1, @AndreKoepke, @BabaIsYou, @MichaelHeimann, @Smanar, @SwoopX, @Zehir, @aryelevin, @dimitripb, @ebaauw, @flexy2dd, @manup, @pimw1 and @sevrinrobstad
Changes
Initial macOS alpha support
deCONZ runs now on macOS, the support is marked alpha since the release isn't notarized and backup creation/loading not implemented yet. As a temporary workaround please refer to deCONZ-on-macOS Wiki
Phoscon App
The version is now synced with the newer version already contained in the native Android App. Most notably the the device sections behind the menu button like switches, sensors, blinds and plugs are updated.
Build system progress
While this release is still compiled with the old QMake build system, the new the new CMake based one has further progressed. The Windows version can now be build from Linux in our CI system (this was completely manual before). Future Linux packages for Debian and Ubuntu are build on Debian Buster, so we only need one package per architecture, before the builds needed to be done per distribution and architecture — this is made possible due less hard linking of dynamic libraries like OpenSSL and supporting multiple versions. The plan is to automate releases completely via the Gitlab CI system.
Device Support
- DDF for Loratape 3-gang remote (_TZ3000_yw5tvzsk) #7110
- DDF for OWON AC201 thermostat #7133
- DDF update the Tuya air quality sensor _TZE200_dwcarsat with "state/measured_value" #7121
- DDF add support for the Adeo LDSENK09 Key FOB 4 buttons #6990
- DDF add support for _TZE204_sxm7l9xa mmWave radar sensor #7051
- DDF Add support for Paulmann Zigbee Switch 501.34 #7087
- DDF for Hue ZB3 white ambiance lights #7092
- DDF update for H2L-ZBPH-RS roller shutter #7023
- DDF for iluminize motion sensor (5128.10) #7046
- DDF for Eva Powermeter #7034
- DDF cleanup for Osram lights #7120
- DDF for Osram Classic B40 TW #7032
- DDF for Osram Classic A60 RGBW #7030
- DDF for Osram Classic A60 TW #7029
- DDF for Osram CLA60 TW OSRAM #7028
- DDF for Osram Classic A60 W clear #7031
- DDF add support for TZ3000_air9m6af and _TZ3000_bppxj3sf from LELLKI #7052
- DDF for Philips Hue Ensis black edition and Philips Hue Luster White and Color Ambiance lights #7065
- DDF for Hue Zigbee-3 White lights #7093
Enhancements
- Enable changing trigger distance of Tuya presence sensor (_TZE204_sxm7l9xa) #7132
- Refactor gateway password code #7128
- Add generic measured_value items #7119
- Delete h2l-zbph-rs.json #7024
- Support setting ZCL frame control (optional) in "zcl:cmd" #7117
- Add macOS build script (Intel / x86_64) #7126
- Move _TYZB01_SM0201_temp_hum_sensor.json to devices/tuya #7122
- Add Attr.index to Javascript engine #7118
- Add dynamic ResourceItemDescriptors #7098
- DDF Update for the Owon THS317-ET #7044
- CMake support locating OpenSSL #7100
- DDF set state to "Gold" from "Silver" for the Tuya Soil Sensor _TZE200_myd45weu #7078
- Add DDF validator action #6989
Bug Fixes
- Fix Linux USB devices not recognized due a regression in upstream Debian
- Fix missing battery resource item for Bosch thermostat II #7062
- Fix DDF validation errors for samjin_multi_sensor.json #7089
- Fix Aqara FP1 trigger distance not updated from special atttribute #7090
- Fix false water detection for lumi_sensor_wleak_aq1 #7091
- Fix unsafe sprintf warning, replace with snprintf (xmas strip) #7129
- Fix humidity values for _TZE200_bjawzodf sensor #7109
- Fix Bosch thermostat RBSH-TRV0-ZB-EU battery refresh interval #7116
- DEV handle Mgmt_Bind_rsp NOT_PERMITTED status #7112
- Fix OpenSSL 1.x and 3.x support for scrypt usage #7102
- Fix QByteArray::replace() deprecated warnings #7101
- Fix rand() deprecated warnings #7099
- Fix Aubess multi sensor config/battery parse function #7097
- Fix Zigfred Plus use cap/color/* #7096
- Fix Sengled E12-N1E use cap/color/* #7095
- Fix Ikea E27 CWS Opal 600lm use cap/color/* and code cleanup #7086
- Fix Linkind ZBT-CCTLight-D0106 use cap/color/* and fix poll interval #7085
- Fix Linkind ZBT-CCTLight-M3500107 use cap/color/* and fix poll interval #7084
- Fix Zigfred Uno use cap/color/* and poll intervals #7083
- Fix dresden elektronik FLS-PP lp use cap/color/* #7082
- Fix ubisys LD6 use cap/color/* #7081
- Fix 3A-Nue LXT56-LS27LX1.7 use cap/color/* #7080
- Fix Tint GU10 spot use cap/color/* #7079
- Fix Sengled E12-N1E use cap/color/ct/[min | max] #7077
- Fix ubisys LD6 use cap/color/ct/[min | max] #7076
- Fix Xiaomi tunable white bulb (aqcn02) use cap/color/ct/[min | max] #7075
- Fix Tuya SM0201 config.battery refresh.interval #7074
Development insights
As mentioned previously over time deCONZ core and the REST-API will get rid of Qt and the (legacy) GUI made a separate application. Currently a headless deCONZ setup requires dozens of libraries to be installed like Qt5, X11 server and their dependencies which easily results in hundreds of mega bytes just to turn on your lights.
Behind the scenes, the first larger step of "Getting rid of Qt" is now done by having build replacements for some the nice APIs that Qt provides like: String handling, plugin loading, JSON parsing, multi threading and most important signal/slots/events. The replacements are separate small libraries created over the last months as Open Source under BSD license. They will and partly are already used by deCONZ but aren't restricted to it. E. g. they are also used in other projects like GCFFlasher4, DDF bundler and the new GUI.
- CJ JSON parser
- actor_model actor model and message passing
- u_threads multi threading
- u_library dynamic libraries and plug-ins
- u_sstream safe string handling
- u_bstream safe binary data handling
- bitmatch bit/binary data pattern matching
These libraries are extreme portable (CJ for example compiles on 30 years old compilers), tiny, fast and tested for memory safety.
The Actor Model is the main milestone as it allows us to replace Qt signals/slots with a multi threaded message passing system. It will be first used to connect the OTA plugin to the REST-API. Further to decouple the GUI from deCONZ core and the plug-ins, after that the GUI can be separated into its own application since the Actor Model works across the network too. This will be described in much more detail in the respective documentation.