Longshot
Pre-releaseContributors:
The following users have been contributing to this release. Thank you for that!
@Big4SMK, @Mimiix, @Smanar, @SwoopX, @ebaauw, @manup and @tarasfilonenko
Changes
Support delete device and its REST resources @manup (#4736):
The new deleteDevice(extAddress)
function has following side effects:
- Delete all related Sensor and LightNodes;
- Delete device related entries from database;
- Send ZDP Mgmt_Leave_req to device to remove it from network (also sleeping end-devices).
Coming with v2.11.0 this can be invoked from the GUI via Delete key or node context menu.
Raise C++ version to C++14 @manup (#4741):
Compared to C++11 it brings mainly some improvements for lambda auto
deduction and constexpr
.
Since we still support Raspbian Stretch C++17 isn't in reach until 2024.
Initial support for ZGP PTM216Z switch @manup (#4677):
Treated as Friends of Hue switch, but this module works differently as the known FoH switches when parsing messages.
No test done yet if and how it works with the Philips Hue bridge.
Therefore the modelid
and manufacturername
might need to change in future versions.
Button Events
x is the button number 1...8
x000 Initial press
x001 Hold
x002 Short release
x003 Long release
Button events check for duplicated sequence number (IKEA, Tuya and LIDL) @manup (#4716):
- Limited to IKEA and Tuya devices (also LIDL) to discard duplicated commands;
- For all other devices a warning is printed so we can track the issue;
- Sensor.previousSequenceNumber changed to uint16_t with initial value 0xffff to not accidantly discard valid commands.
This PR is successor for #4265 but only addresses the duplicate switch events.
The whole ZCL Default Response needs to be fixed at a higher level for all handlers in a separate PR.
Put R_GetProductId() and isTuyaManufacturerName() in own module @manup (#4717):
New files product_match.[cpp,h]
to provide functions to identify products.
The PR removes resource.cpp
dependency on the whole plugin which was included via tuya.h
.
@Smanar I haven't looked through all PRs in detail, but if some of them extend the product map this would conflict.
I can resolve the conflicts when mergin the PRs.
Stop Tuya devices getting Heiman as manufacturer name @SwoopX (#4710):
Especially for Tuya devices, preservation of the given manufacturer name for lights and sensors is required to have the devices set up correctly. For sensors, this is quite easily done, however, for lights, this requires to step away from assigning the manufacturer name based on the manufacturer code.
Add SKIP_EMPTY_PARTS define for QString::split() @manup (#4719):
Will be used to fix depreacted warning after Qt 5.14
** Add Github Action to validate button_maps.json for PRs @manup (#4705):**
This will run for each PR with changes to button maps.
Update de_web_plugin.cpp @ebaauw (#4692):
Bug fix: 20f3e8b causes no buttonevents for IKEA SYMFONISK Sound Controller.
Allow Xiaomi Aqara Single Switch Module T1 to create sensor resources @SwoopX (#4660):
Depends on #4649
Add support for Mi version of light detector (lumi.sen_ill.mgl01) @SwoopX (#4649):
See #4648
Tested and confirmed to be working.
FIX, Improve integration for the tuya siren @Smanar (#4617):
This device works actualy only for the manufacture number = 0x0000.
Not working totaly, need too the PR #4616 because of R_GetProductId issue.
Updated button_maps.json with RGBgenie ZB-5004 @tarasfilonenko (#4667):
As per @SwoopX suggestion here #4645
Update issue templates @Mimiix (#4682):
Added line to keep headers in the template on issue creation.
IKEA STYRBAR and Minor changes @ebaauw (#4627):
- Add support for IKEA STYRBAR, see #4572.
- Whitelist device in
de_web_plugin.cpp
; - Add commands to
button_map.json
; - Hack in
checkSensorButtonEvent()
to ignore additional commands on holding left or right button (see issue); - Streamline code for SHORTCUT and SYMFONISK, in line with STYRBAR:
- Only bind OnOff client cluster to group;
- Discard unicast from client cluster to prevent double button events;
- Fix bugs in verifying bindings/reporting;
- Remove unneeded code for binding SYMFONISK to coordinator, as it sends commands to coordinator already by default.
- TODO: Check older IKEA end devices for double button events (haven't seen any reports, so don't expect any;
- TODO: Check whether old wireless dimmer (with dial) sends commands to coordinator by default as well;
- TODO: Check whether old IKEA end devices can do with one client binding as well.
- Whitelist device in
- Add support for Aqara Opple in controller mode, see #4589. No support for switching modes, though; you'll need to do this manually through the GUI (as describes in the issue)... every time deCONZ restarts;
- Add commands to
button_map.json
; - Add support for Step Color Temperature command in
checkSensorButtonEvent()
;
- Add commands to
- Add to
general.xml
the IKEA-specific scene commands as sent by the TRADFRI remote control on the left and right buttons, so they can be sent from the GUI. Still cannot get them to work, though... - Add new button mapping for TRADFRI wireless dimmer, under
mode
1, see Wiki. - Disable check for "too fast event", as this interferes with the correct function of several IKEA and Hue devices.
Refactor getFreeSensorId(); fix reuse of deleted sensor ids @manup (#4635):
- Make it a free standing function, since there is no Database class yet. This is a forecast to remove database code dependency of the plugin, which will ultimately result in a proper testable Database class;
- Remove sqliteGetAllSensorIdsCallback() dependency from plugin class;
- Make
sensorIds
a local variable since it's only used here; - Modernize code and and reduce unperformant code paths;
- Ensure new sensor ids only grow, don't reuse sensor ids which where formerly deleted.
Code has been tested in debugger for various cases.
The PR also fixes that formerly deleted sensor ids from the database were reused under certain conditions. Which was the whole point to actually access the database in this function, but it never worked. I'm not sure if this is too useful other than to prevent clients which still somehow access old ids getting confused by new completely different sensors with the same id. If that isn't needed the code can be simplified to not use the database at all.
Resource code simplify @manup (#4622):
- Remove duplicated code by reusing
Resource
andResourceItem
move assignment operator in move constructor; ResourceItem::rulesInvolved()
return by const reference rather when copy thestd::vector<int>
.
Add initial support for ZHADoorLock sensor. @Smanar (#4540):
This code create ZHAdoorlock sensor for new doorlock, older one are not impacted and still use "light" type.
The JSON look like this one
{
"config": {
"battery": 100,
"lock": false,
"on": true,
"reachable": true
},
"ep": 11,
"etag": "a43862f76b7fa48b0fbb9107df123b0e",
"lastseen": "2021-03-06T22:25Z",
"manufacturername": "Onesti Products AS",
"modelid": "easyCodeTouch_v1",
"name": "easyCodeTouch_v1",
"state": {
"lastupdated": "2021-03-06T21:25:45.624",
"lockstate": "unlocked"
},
"swversion": "20201211",
"type": "ZHADoorLock",
"uniqueid": "xx:xx:xx:xx:xx:xx:xx:xx-xx-0101"
}
The code add too some attribute and fonction to the GUI for doorlock cluster 0x0101
It add support for thoses devices.
- Yale YRD226 TSDB
- Yale YRD226/246 TSDB
- Yale YRD256L TSDB SL
- Yale YRD220/240 TSDB
- Yale YRD256 TSDB
- Kwikset 914 ZigBee smart lock
- Datek ID Lock 150
Not all are tested, have some issue for the EasyAccess EasyCodeTouch #4253
To unlock/lock the device, use config/lock.
State/lockstate give the device state (locked/unlocked/undefined/not fully locked)
Lasted issue used #3750
Add initial support for Tuya covering Ds82 @Smanar (#4529):
- Add support for DS82 model.
- Correct the "reverse" command for all tuya covering using the tuya cluster.
- Make the code more generic.
Reuse existing button map for RC-EF-3.0 @SwoopX (#4606):
FIX tuya Moe TRV @Smanar (#4643):
Re enable "mode "field" in the api for some TRV devices.
FIX, Better Tuya reconization @Smanar (#4616):
This PR make 2 things, It creates a battery sensor for some tuya covring, and can help for pairing because the sensor can be used to get the manufacture name for the "light" device creation.
It help too for checks, previously I was using
if (manufacturer.endsWith(QLatin1String("0yu2xgi")))
And now
R_GetProductId(&lightNode) == QLatin1String("NAS-AB02B0 Siren"))
But the problem is R_GetProductId need manufacture name AND model id, but with this modification, only the manufacture name is usefull.
Add initial support for ORVIBO open/close sensor SM11 @SwoopX (#4465):
See #4403
When support has been added, you should enter sensor search in Phoscon and pair the device. However, you also need to keep an eye on deconz GUI for the device to show up, as the manufacturer name and model ID might not be read automatically. When it appears in deconz GUI, you need to read the basic cluster's attributes while sensor search is still running (which is the case even when Phoscon already issued the greenish success message) for the sensor resource to be created.
Add support for Develco External Meter Interface ZHEMI101 @SwoopX (#4426):
Tested and working.
Introduce RConfigPulseConfiguration
and RConfigInterfaceMode
to API
Add Lonsonho Tuya Zigbee 3 gang switch (TS0043 / _TZ3000_a7ouggvs) @Big4SMK (#4522):
Fixes #4520
Add initial support for Tuya ZigBee Multi-Sensor 4 in 1 @Smanar (#4518):
Nothing special, just ading the device in whitelist : #4511
Add initial support for Tuya extender. @Smanar (#4474):
This PR make the tuya extender visible in API.
Add initial support for Orvibo smoke sensor SF30 @SwoopX (#4466):
See #4363
Add initial support for Feibit FB56-DOS06HM1.3 door/window sensor @SwoopX (#4427):
See #4400