Skip to content

Updated DDF for frient Intelligent Keypad (KEPZB-110) - #8154

Merged
manup merged 4 commits into
dresden-elektronik:masterfrom
ebaauw:frient_keypad
Apr 1, 2025
Merged

Updated DDF for frient Intelligent Keypad (KEPZB-110)#8154
manup merged 4 commits into
dresden-elektronik:masterfrom
ebaauw:frient_keypad

Conversation

@ebaauw

@ebaauw ebaauw commented Mar 31, 2025

Copy link
Copy Markdown
Collaborator

Updated DDF for frient Intelligent Keypad.

Most notable changes with respect to the current DDF:

  • Elevate status from Bronze to Gold;
  • Base swversion on Develco-specific firmware attribute;
  • Expose capabilities/otau;
  • While the keypad detects proximity (and even ambient light level), these features aren't exposed over Zigbee - remove the ZHAPresence /sensors resource;
  • Fix config/battery not being populated;
  • Expose the IAS Zone cluster as a separate ZHAAlarm /sensors resource. API clients need a separate state/lastupdated for the IAS ACE to expose button actions, see Alarm systems and IAS ACE devices #8141.
{
  "capabilities": {
    "otau": {
      "file_version": 131077,
      "image_type": 915,
      "manufacturer_code": 4117
    },
    "sleeper": false
  },
  "config": {
    "battery": 100,
    "on": true,
    "reachable": true
  },
  "ddf_hash": null,
  "ddf_policy": "latest_prefer_stable",
  "ep": 44,
  "etag": "24eb11587375c2478b4cde718d739af5",
  "lastannounced": null,
  "lastseen": "2025-03-31T08:33Z",
  "manufacturername": "frient A/S",
  "modelid": "KEPZB-110",
  "name": "Keypad",
  "nwkaddress": 35463,
  "state": {
    "action": "disarmed",
    "lastupdated": "2025-03-21T08:22:04.407",
    "panel": "armed_away",
    "seconds_remaining": 0
  },
  "swversion": "2.0.5",
  "type": "ZHAAncillaryControl",
  "uniqueid": "00:15:bc:00:43:00:62:9a-2c-0501",
  "zonetype": 541
}
{
  "capabilities": {
    "otau": {
      "file_version": 131077,
      "image_type": 915,
      "manufacturer_code": 4117
    },
    "sleeper": false
  },
  "config": {
    "battery": 100,
    "on": true,
    "reachable": true
  },
  "ddf_hash": null,
  "ddf_policy": "latest_prefer_stable",
  "ep": 44,
  "etag": "9def282eb0ba45829a797e0b796152ba",
  "lastannounced": null,
  "lastseen": "2025-03-31T08:33Z",
  "manufacturername": "frient A/S",
  "modelid": "KEPZB-110",
  "name": "Keypad",
  "nwkaddress": 35463,
  "state": {
    "alarm": false,
    "lastupdated": "2025-03-31T08:31:20.179",
    "lowbattery": false,
    "tampered": false
  },
  "swversion": "2.0.5",
  "type": "ZHAAlarm",
  "uniqueid": "00:15:bc:00:43:00:62:9a-2c-0500",
  "zonetype": 541
}

@ebaauw ebaauw added Device Request Device Improvement Additional tag to attach to a existing issue. labels Mar 31, 2025
@github-actions

github-actions Bot commented Mar 31, 2025

Copy link
Copy Markdown
Contributor

Hey @ebaauw, thanks for your pull request!

Tip

Modified bundles can be downloaded here.
Relative expire date

DDB changes

Modified

  • frient/kepzb-110_keypad.json : Intelligent Keypad (KEPZB-110) ✔️

Validation

Tip

Everything is fine !

🕗 Updated for commit 8555bf6

@ebaauw

ebaauw commented Mar 31, 2025

Copy link
Copy Markdown
Collaborator Author

Validation fails; @Zehir can you help me?

The offline validator incorrectly assumes the IAS Zone attributes need to be included in the ZHAAncillaryControl /sensors resource:

$ ddf-tools validate -d .
- Using validator version 2.32.0
✔ Found 685 files to validate
Skipping file danalock/danalock_v3.json because it has the ddfvalidate option set to false
Skipping file legrand/cable_outlet.json because it has the ddfvalidate option set to false
Skipping file nodon/SIN-4-FP-21.json because it has the ddfvalidate option set to false
✔ Loaded 272 generic files and 410 DDF files from disk
✔ No errors found in 272 generic files
✖ Found 1 error in 410 ddf files
  File: frient/kepzb-110_keypad.json
    The device should have the item "config/enrolled" because it is mandatory for devices of type "$TYPE_ANCILLARY_CONTROL" at "subdevices[0].items"
    The device should have the item "config/pending" because it is mandatory for devices of type "$TYPE_ANCILLARY_CONTROL" at "subdevices[0].items"
    The device should have the item "state/lowbattery" because it is mandatory for devices of type "$TYPE_ANCILLARY_CONTROL" at "subdevices[0].items"
    The device should have the item "state/tampered" because it is mandatory for devices of type "$TYPE_ANCILLARY_CONTROL" at "subdevices[0].items"

I have no clue what the online validator is complaining about; it looks like a configuration error?

CI DDF BundlesBundler finished with validation errors
CI DDF Bundles: /devices/frient/kepzb-110_keypad.json#L0The device is missing the device definition (subdevice1.schema.json) for the type "$TYPE_ANCILLARY_CONTROL"
CI DDF Bundles: /devices/generic/subdevices/ancillary_control.json#L0Invalid enum value. Expected item from generic attributes definition, received 'config/pending'
CI DDF Bundles2 validation errors for DDB /home/runner/work/deconz-rest-plugin/deconz-rest-plugin/devices/frient/kepzb-110_keypad.json

@Zehir

Zehir commented Mar 31, 2025

Copy link
Copy Markdown
Collaborator

Hello @ebaauw ,

The offline validator incorrectly assumes the IAS Zone attributes need to be included in the ZHAAncillaryControl /sensors resource:

Then you need to put theses resources in the items_optional array like in this one ;

"items_optional": [
"cap/alert/trigger_effect",
"cap/bri/move_with_onoff",
"cap/groups/not_supported",
"cap/on/off_with_effect",
"cap/transition_block",
"config/bri/execute_if_off",
"config/bri/startup",
"config/color/ct/startup",
"config/color/execute_if_off",
"config/on/startup"
]

For the $TYPE_ANCILLARY_CONTROL

{
"schema": "subdevice1.schema.json",
"type": "$TYPE_ANCILLARY_CONTROL",
"name": "ZHAAncillaryControl",
"restapi": "/sensors",
"order": 20,
"uuid": [
"$address.ext",
"0x01",
"0x0501"
],
"items": [
"config/battery",
"config/enrolled",
"config/on",
"config/pending",
"config/reachable",
"state/action",
"state/lastupdated",
"state/lowbattery",
"state/seconds_remaining",
"state/panel",
"state/tampered"
]
}

They are using the same validator version, not sure why the error message is different.

Could you try to update the generic file for ZHAAncillaryControl ?

@ebaauw

ebaauw commented Mar 31, 2025

Copy link
Copy Markdown
Collaborator Author

Could you try to update the generic file for ZHAAncillaryControl?

{
  "schema": "subdevice1.schema.json",
  "type": "$TYPE_ANCILLARY_CONTROL",
  "name": "ZHAAncillaryControl",
  "restapi": "/sensors",
  "order": 20,
  "uuid": [
    "$address.ext",
    "0x01",
    "0x0501"
  ],
  "items": [
    "config/battery",
    "config/on",
    "config/reachable",
    "state/action",
    "state/lastupdated",
    "state/seconds_remaining",
    "state/panel"
  ],
  "items_optional": [
    "config/enrolled",
    "config/pending",
    "state/lowbattery",
    "state/tampered"
  ]
}

That works, thanks. I'd rather these attributes weren't defined on ZHAAnciallaryControl at all, but there is one other DDF (for the Xfinity security keypad) that uses them. I don't know if there are any IAS ACE devices supported through legacy code.

Shall I create a separate PR for the subdevice change? Or include it in this PR?

@Zehir

Zehir commented Mar 31, 2025

Copy link
Copy Markdown
Collaborator

Both could work but if you are making an other for it you will need to rebase this PR.

What do you think @manup ?

@manup

manup commented Mar 31, 2025

Copy link
Copy Markdown
Member

For a clean history a separate PR would be nice.

Make _IAS Zone_ attributes optional, see #8141.
@manup manup added this to the v2.29.3-beta milestone Mar 31, 2025
@manup

manup commented Apr 1, 2025

Copy link
Copy Markdown
Member

With the other PR merged, this PR is ready for merging too?

@ebaauw

ebaauw commented Apr 1, 2025

Copy link
Copy Markdown
Collaborator Author

Yes, please

@manup
manup merged commit a056455 into dresden-elektronik:master Apr 1, 2025
@github-actions

github-actions Bot commented Apr 1, 2025

Copy link
Copy Markdown
Contributor

This pull request is now merged. The new DDB files have been uploaded to the store.

DDB Files

Modified

  • frient/kepzb-110_keypad.json : Intelligent Keypad (KEPZB-110) : with hash (cc47873bde)

🕓 Updated for commit a056455

@ebaauw
ebaauw deleted the frient_keypad branch April 1, 2025 21:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Device Improvement Additional tag to attach to a existing issue. Device Request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants