Yale/August smart locks with WiFi support [3.3.0;3.5.0)

Yes, there is an infrequent polling that catchces up if push messages are not working/messages get lost.

You could test some other integrations and see whether they get the push messages or not. I’ve been looking a bit at GitHub - bdraco/yalexs: Python API for Yale Access (formerly August) Smart Lock and Doorbell when developing the binding, so give it a go. If it works, try capturing the network traffic to see whether some other headers or values are sent.

Arne

Hi everyone.

I’m glad to report that the binding can be successfully used with the Yale Linus Smart Lock (lockType 6), together with the Yale Wi-Fi Connect bridge.

It could be useful if the battery level of the Keypad could be reported.

One suggestion I would like to make for the documentation is to let users know that the password shouldn’t contain commas (,) or quotation marks ("); otherwise, the password will be truncated and the package may be malformed, causing a rejection.

One last question. What needs to be done for this binding to become official?

Thanks, added

I do not have such panel myself, but take a look at this postman collection and perform a request to list keypads. Capture logs and send to me and I’ll take a look. keymaker/postman/august.postman_collection.json at master · jmaxxz/keymaker · GitHub

I’ve added URL encoding of the password - feel free to test the lastest version.

I think the remaining maintainers of openHAB are doing a fantastic job, but I do not intend to add to the list of open PRs :slight_smile:

I’ll download Postman, learn how to use it, and then I’ll share the logs.

One thing I’ve experienced that I’ll need to debug is that the push notifications are unreliable. OH seems to receive some push notifications but most of the time I need to access the Yale Home app for the status to be refreshed and notified to OH.

To provide more background information, I use the keypad to lock and unlock the lock. The lock is almost instantly locked or unlocked; however, it can pass many minutes before something is notified to OH. I have seen cases where even the status isn’t updated after hours (even though the refreshInterval is set to 3600 secs.) and it is updated once I load the Yale Home app.

I’m not sure if the issues is the connection between the lock and the bridge, or from the bridge to OH. The bridge is less than 1 meter away from the lock, although there is a wall in between. I’ve placed the bridge in the second nearest plug, which is located a little more than 2 meters away but not within line of sight.
Whenever I have some time I’ll try to set some notifications and check where are things getting stuck.

It is a known problem that appeared earlier this autumn, see previous post in this thread Yale/August smart locks with WiFi support [3.3.0;3.5.0) - #73 by seime.

Yale has done something to keep us (the open source community) out. I’m tracking Yale Home - Global servers (via August integration) stop getting updates after a while · Issue #100798 · home-assistant/core · GitHub and Only sporadically receiving activity updates from locks · Issue #88 · bdraco/yalexs · GitHub hoping that someone will figure it out.

Please contribute in any way if you can! (maybe some of the other communities have figured how to bypass Yale’s blocking - anyone can google :slight_smile: )

1 Like

That sucks!

I’ve seen that they made a partnership with Homey and I wonder if someone from the highest ranks of OpenHAB can reach out to request an official partnership.
I believe it’s in Yale’s best interest to be more open if they want to compete with Nuki in the European market, but instead of trying to reverse engineer their solutions, we could officially knock on their door and try to collaborate.
It should also be in OpenHAB’s best interest as Yale is one of the biggest smart locks manufacturers, and it would give us good exposure (OpenHab Marketing is Lacking)

Please do reach out to them. Openhab is only community driven so I wouldnt expect anyone “official” to do it.

1 Like

There are no highest ranks of openHAB !

The community has no officials, don’t mix it up with the openHAB foundation, which is a non profit organisations, supporting the community.
We have seen some examples where companys asked a lot of money to become a partner.
Who is going to pay this ? The openHAB Foundation, for several many times explained reasons, cannot do this.

OK, call it the OpenHAB foundation. It’s could be more efficient when someone saying “Hi, I’m XXXX from the OpenHAB Foundation……” and provides some background and the reasons why we want to have an integration, than if we write “Hi, I’m an OpenHAB user and would like my platform to integrate with yours”.

Of course, we may omit companies asking for royalties to become partners, but there might be others that could be convinced to cooperate for a mutual benefit for free. In the end, the community developers do the integration and not them. I think it doesn’t hurt trying.

Nonetheless, I sent an email to Nuki and Yale, but I don’t expect a positive outcome, because in their eyes I’m not a decision maker.

1 Like

No, as you already checked the foundation website, you should have seen its constitution. This does not include anything in regard of development, therefore the foundation cannot do this.

@seime, I downloaded and installed the latest version but it can’t connect to the bridge.
I can see the following message, but I don’t know if it’s related

11/26/2023 23:12:58.455 [DEBUG] [internal.comm.PubNubMessageSubscriber] - Disposing pubNub
11/26/2023 23:12:58.457 [DEBUG] [internal.handler.AugustAccountHandler] - Initializing bridge
11/26/2023 23:12:58.458 [WARN ] [internal.handler.AugustAccountHandler] - Not setting API endpoint as it was already set to https://api.aaecosystem.com
11/26/2023 23:12:58.459 [DEBUG] [internal.handler.AugustAccountHandler] - No previous access token
11/26/2023 23:12:58.461 [DEBUG] [august.internal.logging.RequestLogger] - Request bridge1-1

I tried with all the validation codes I had received and even without any code. I had to restore the previous jar and that one connected immediately.

Are there any special steps to be followed when updating the binding?

I do not know which version you upgrade from, but if it was the previous there should not have been much. See commit log here; for every set of commits a new release is built given that unit tests pass.

The logs you submitted are too short to tell me anything, seems like they were cut right before the server response to the initial login request.

Regards

I upgraded from 4.1.0.202310080914 (working) to 4.1.0.202311251535 (not working).

Here is the full trace stack with the binding version 4.1.0.202311251535, with the same verification code that worked with the previous version of the binding (Note: I edited the email address, password, installation IDs, cookies, and tokens):

11/27/2023 17:52:35.871 [DEBUG] [internal.comm.PubNubMessageSubscriber] - Disposing pubNub
11/27/2023 17:52:35.872 [DEBUG] [internal.handler.AugustAccountHandler] - Initializing bridge
11/27/2023 17:52:35.874 [WARN ] [internal.handler.AugustAccountHandler] - Not setting API endpoint as it was already set to https://api.aaecosystem.com
11/27/2023 17:52:35.875 [DEBUG] [internal.handler.AugustAccountHandler] - No previous access token
11/27/2023 17:52:35.884 [DEBUG] [august.internal.logging.RequestLogger] - Request bridge1-1
bridge1-1 > POST https://api.aaecosystem.com/session
bridge1-1 > Accept-Encoding: gzip
bridge1-1 > User-Agent: August/2019.12.16.4708 CFNetwork/1121.2.2 Darwin/19.3.0
bridge1-1 > Accept: application/json
bridge1-1 > Content-Type: application/json
bridge1-1 > Accept-Version: 0.0.1
bridge1-1 > x-kease-api-key: d9984f29-07a6-816e-e1c9-44ec9d1be431
bridge1-1 > x-august-api-key: d9984f29-07a6-816e-e1c9-44ec9d1be431
bridge1-1 > x-august-access-token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpbnN0YWxsSWQiOiJvcGVuSEFCLWIyOTE4MWFmLWJhZGYtNDVmMy05ODU3LTFiMTVlYTFlMjQyYiIsInJlZ2lvbiI6IiIsImFwcGxpY2F0aW9uSWQiOiIiLCJ1c2VySWQiOiIiLCJ2SW5zdGFsbElkIjpmYWxzZSwidlBhc3N3b3JkIjpmYWxzZSwidkVtYWlsIjpmYWxzZSwidlBob25lIjpmYWxzZSwiaGFzSW5zdGFsbElkIjp0cnVlLCJoYXNQYXNzd29yZCI6dHJ......
bridge1-1 > Content-Type: application/json
bridge1-1 > Host: api.aaecosystem.com
bridge1-1 > Content-Length: 304
bridge1-1 > Cookie: __cf_bm=fxbKIimpLQIELEf2CjziG7pMp2IMKEquzDaOrPSBIsw-1701103150-0-AXv6DkeahremqbHAcnRKUhRe0SeQZMjMjRQmUgBYY0zlzG+SA9oEsqixUY8r9hnvU=

{
  "identifier": "email:my@email.com",
  "password": "%23q.%21E2%3CsZKo%7CJV%7C%3Amzfo%3DsF9VC%3DjU%25%40eRiv%7EVjU%2BzNo2OC3BgnV%29-%29v%29%25LS%7BJVd%5B%5E86%2B%299Wu.F%24%5EgT08%2G4%3D%25T",
  "installId": "openHAB-b29181af-badf-45f3-9857-1b"
}
11/27/2023 17:52:36.010 [DEBUG] [august.internal.logging.RequestLogger] - Response bridge1-1
bridge1-1 < HTTP/1.1 200 OK
bridge1-1 < Date: Mon, 27 Nov 2023 16:52:35 GMT
bridge1-1 < Content-Type: application/json
bridge1-1 < Transfer-Encoding: chunked
bridge1-1 < Connection: keep-alive
bridge1-1 < Vary: origin,access-control-request-method,access-control-request-headers
bridge1-1 < Content-Security-Policy: default-src 'self';base-uri 'self';block-all-mixed-content;font-src 'self' https: data:;frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests
bridge1-1 < X-DNS-Prefetch-Control: off
bridge1-1 < Expect-CT: max-age=0
bridge1-1 < X-Frame-Options: SAMEORIGIN
bridge1-1 < Strict-Transport-Security: max-age=15552000; includeSubDomains
bridge1-1 < X-Download-Options: noopen
bridge1-1 < X-Content-Type-Options: nosniff
bridge1-1 < X-Permitted-Cross-Domain-Policies: none
bridge1-1 < Referrer-Policy: no-referrer
bridge1-1 < X-XSS-Protection: 0
bridge1-1 < api-version: 0.0.1
bridge1-1 < x-august-access-token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpbnN0YWxsSWQiOiJvcGVuSEFCLWIyOTE4MWFmLWJhZGYtNDVmMy05ODU3LTFiMTVlYTFlMjQyYiIsInJlZ2lvbiI6IiIsImFwcGxpY2F0aW9uSWQiOiIiLCJ1c2VySWQiOiIiLCJ2SW5zdGFsbEEiOiIiLCJlbWFpbCI6WyJlbWFpbDpuZWxzb24uYXBvbnRlLmIreWFsZV9kZUBvdXRsb29rLmNvbSJdLCJwaG9uZSI6W10sImV4cGlyZXNBdCI6IjIwMjQtMDMtMjZUMTY6NTI6MzUuOTM0WiIsInRlbXBvcmFyeUFjY291bnRDcmVhdGlvblBhc3N3b3JkTGluayI6IiIsImlhdCI6MTcwMTEwMzk1NSwiZXhwIjoxNzExNDcxOTU1LCJzdGVwIjoiIiwiTGFzdE5hbWUiOiIiLCJGaXJzdE5hbWUiOiIifQ.NDCsntumW5Nks1OTbDhrUqrX_NHLXphmri0-OylMSbs
bridge1-1 < x-access-token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpbnN0YWxsSWQiOiJvcGVuSEFCLWIyOTE4MWFmLWJhZGYtNDVmMy05ODU3LTFiMTVlYTFlMjQyYiIsInJlZ2lvbiI6IiIsImFwcGxpY2F0aW9uSWQiOiIiLCJ1c2VySWQiOiIiLCJ2SW5zdGFsbElkIjpmYWxzZSwidlBhc3N3b3JkIjpmYWxzZSwidkVtYWlsIjpmYWxzZSwidlBob25lIjpmYWxzZSwiaGFzSW5zdGFsbElkIjp0cnVlLCJoYXNQYXNzd29yZDMtMjZUMTY6NTI6MzUuOTM0WiIsInRlbXBvcmFyeUFjY291bnRDcmVhdGlvblBhc3N3b3JkTGluayI6IiIsImlhdCI6MTcwMTEwMzk1NSwiZXhwIjoxNzExNDcxOTU1LCJzdGVwIjoiIiwiTGFzdE5hbWUiOiIiLCJGaXJzdE5hbWUiOiIifQ.NDCsntumW5Nks1OTbDhrUqrX_NHLXphmri0-OylMSbs
bridge1-1 < x-response-time: 56
bridge1-1 < CF-Cache-Status: DYNAMIC
bridge1-1 < Server: cloudflare
bridge1-1 < CF-RAY: 82cbe1ec5e08660a-AMS
bridge1-1 < Content-Encoding: gzip

{
  "installId": "openHAB-b29181af-badf-45f3-9857-1b15ea1e242b",
  "region": "",
  "applicationId": "",
  "userId": "",
  "vInstallId": false,
  "vPassword": false,
  "vEmail": false,
  "vPhone": false,
  "hasInstallId": true,
  "hasPassword": true,
  "hasEmail": true,
  "hasPhone": true,
  "isLockedOut": false,
  "oauth": null,
  "apiKey": null,
  "homeAccess": "",
  "captcha": "",
  "email": [
    "email:my@email.com"
  ],
  "phone": [],
  "expiresAt": "2024-03-26T16:52:35.934Z",
  "temporaryAccountCreationPasswordLink": "",
  "iat": 1701103955,
  "exp": 1711471955,
  "step": "",
  "LastName": "",
  "FirstName": ""
}
11/27/2023 17:52:36.013 [DEBUG] [internal.handler.AugustAccountHandler] - Storing new access token

and the one without any verification code:

11/27/2023 17:58:22.625 [DEBUG] [internal.comm.PubNubMessageSubscriber] - Disposing pubNub
11/27/2023 17:58:22.629 [DEBUG] [internal.handler.AugustAccountHandler] - Initializing bridge
11/27/2023 17:58:22.631 [WARN ] [internal.handler.AugustAccountHandler] - Not setting API endpoint as it was already set to https://api.aaecosystem.com
11/27/2023 17:58:22.633 [DEBUG] [internal.handler.AugustAccountHandler] - No previous access token
11/27/2023 17:58:22.635 [DEBUG] [august.internal.logging.RequestLogger] - Request bridge1-2
bridge1-2 > POST https://api.aaecosystem.com/session
bridge1-2 > Accept-Encoding: gzip
bridge1-2 > User-Agent: August/2019.12.16.4708 CFNetwork/1121.2.2 Darwin/19.3.0
bridge1-2 > Accept: application/json
bridge1-2 > Content-Type: application/json
bridge1-2 > Accept-Version: 0.0.1
bridge1-2 > x-kease-api-key: d9984f29-07a6-816e-e1c9-44ec9d1be431
bridge1-2 > x-august-api-key: d9984f29-07a6-816e-e1c9-44ec9d1be431
bridge1-2 > x-august-access-token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpbnN0YWxsSWQiOiJvcGVuSEFCLWIyOTE4MWFmLWJhZGYtNDVmMy05ODU3LTFiMTVlYTFlMjQyYiIsInJlZ2lvbiI6IiIsImFwcGxpY2F0aW9uSWQiOiIiLCJ1c2VySWQiOiIiLCJ2SW5zdGFsbElkIjpmYWxzZSwidlBhc3N3b3JkIjpmYWxzZSwidkVtYWlsIjpmYWxzZSwidlBob25lIjpmYWxzZSwiaGFzSW5zdGFsbElkIjp0cnVlLCJoYXNQYXNzdMtMjZUMTY6NTI6MzUuOTM0WiIsInRlbXBvcmFyeUFjY291bnRDcmVhdGlvblBhc3N3b3JkTGluayI6IiIsImlhdCI6MTcwMTEwMzk1NSwiZXhwIjoxNzExNDcxOTU1LCJzdGVwIjoiIiwiTGFzdE5hbWUiOiIiLCJGaXJzdE5hbWUiOiIifQ.NDCsntumW5Nks1OTbDhrUqrX_NHLXphmri0-OylMSbs
bridge1-2 > Content-Type: application/json
bridge1-2 > Host: api.aaecosystem.com
bridge1-2 > Content-Length: 304
bridge1-2 > Cookie: __cf_bm=fxbKIimpLQIELEf2CjziG7pMp2IMKEquzDaOrPSBIsw-1701103150-0-AXv6DkeahremqbHAcnRKUhRe0SeQZMjMjRQmUgBYY0zlzG+SA9qixUY8r9hnvU=

{
  "identifier": "email:my@email.com",
  "password": "%23q.%21E2%3CsZKo%7CJV%7C%3Amzfo%3DsF9VC%3DjU%25%40eRiv%7EVjU%2BzNo2OC3BgnV%29-%29v%29%25LS%7BJVd%5B%5E86%2B%299Wu.F%24%5EgT08hG4%3D%25T",
  "installId": "openHAB-b2981af-badf-45f3-9857-1b12b"
}
11/27/2023 17:58:22.758 [DEBUG] [august.internal.logging.RequestLogger] - Response bridge1-2
bridge1-2 < HTTP/1.1 200 OK
bridge1-2 < Date: Mon, 27 Nov 2023 16:58:22 GMT
bridge1-2 < Content-Type: application/json
bridge1-2 < Transfer-Encoding: chunked
bridge1-2 < Connection: keep-alive
bridge1-2 < Vary: origin,access-control-request-method,access-control-request-headers
bridge1-2 < Content-Security-Policy: default-src 'self';base-uri 'self';block-all-mixed-content;font-src 'self' https: data:;frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests
bridge1-2 < X-DNS-Prefetch-Control: off
bridge1-2 < Expect-CT: max-age=0
bridge1-2 < X-Frame-Options: SAMEORIGIN
bridge1-2 < Strict-Transport-Security: max-age=15552000; includeSubDomains
bridge1-2 < X-Download-Options: noopen
bridge1-2 < X-Content-Type-Options: nosniff
bridge1-2 < X-Permitted-Cross-Domain-Policies: none
bridge1-2 < Referrer-Policy: no-referrer
bridge1-2 < X-XSS-Protection: 0
bridge1-2 < api-version: 0.0.1
bridge1-2 < x-august-access-token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpbnN0YWxsSWQiOiJvcGVuSEFCLWIyOTE4MWFmLWJhZGYtNDVmMy05ODU3LTFiMTVlYTFlMjQyYiIsInJlZ2lvbiI6IiIsImFwcGxpY2F0aW9uSWQiOiIiLCJ1c2VySWQiOiIiLCJ2SW5zdGFsGEiOiIiLCJlbWFpbCI6WyJlbWFpbDpuZWxzb24uYXBvbnRlLmIreWFsZV9kZUBvdXRsb29rLmNvbSJdLCJwaG9uZSI6W10sImV4cGlyZXNBdCI6IjIwMjQtMDMtMjZUMTY6NTg6MjIuNjc0WiIsInRlbXBvcmFyeUFjY291bnRDcmVhdGlvblBhc3N3b3JkTGluayI6IiIsImlhdCI6MTcwMTEwNDMwMiwiZXhwIjoxNzExNDcyMzAyLCJzdGVwIjoiIiwiTGFzdE5hbWUiOiIiLCJGaXJzdE5hbWUiOiIifQ.VxpfpyX5xrVtlipCprFmrZ_r4ZLcpPujl7Qw2rdZbfs
bridge1-2 < x-access-token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpbnN0YWxsSWQiOiJvcGVuSEFCLWIyOTE4MWFmLWJhZGYtNDVmMy05ODU3LTFiMTVlYTFlMjQyYiIsInJlZ2lvbiI6IiIsImFwcGxpY2F0aW9uSWQiOiIiLCJ1c2VySWQiOiIiLCJ2SW5zdGFsbElkIjpmYWxzZSwidlBhc3N3b3JkIjpmYWxzZSwidkVtYWlsIjpmYWxzZSwidlBob25lIjpmYWxzZSwiaGFzSW5zdGFsbElkIjp0cnVlLCJoYXNQYXIjIwMjQMtMjZUMTY6NTg6MjIuNjc0WiIsInRlbXBvcmFyeUFjY291bnRDcmVhdGlvblBhc3N3b3JkTGluayI6IiIsImlhdCI6MTcwMTEwNDMwMiwiZXhwIjoxNzExNDcyMzAyLCJzdGVwIjoiIiwiTGFzdE5hbWUiOiIiLCJGaXJzdE5hbWUiOiIifQ.VxpfpyX5xrVtlipCprFmrZ_r4ZLcpPujl7Qw2rdZbfs
bridge1-2 < x-response-time: 60
bridge1-2 < CF-Cache-Status: DYNAMIC
bridge1-2 < Set-Cookie: __cf_bm=hYM_6Ptcxpe5Nh_Fy5G1bVCUkeVmsccAeLAN-0-AV9qtv2ut3nQeUwphMVbXknY2Q3L8R2UEIh0YGTp/rCfY5QGDJaDuAC7b14iVNFFg97C/DJb3Fk/NOCihYVu/VM=; path=/; expires=Mon, 27-Nov-23 17:28:22 GMT; domain=.aaecosystem.com; HttpOnly; Secure; SameSite=None
bridge1-2 < Server: cloudflare
bridge1-2 < CF-RAY: 82cbea638bb3660a-AMS
bridge1-2 < Content-Encoding: gzip

{
  "installId": "openHAB-b2981af-badf-45f3-9857-1b152b",
  "region": "",
  "applicationId": "",
  "userId": "",
  "vInstallId": false,
  "vPassword": false,
  "vEmail": false,
  "vPhone": false,
  "hasInstallId": true,
  "hasPassword": true,
  "hasEmail": true,
  "hasPhone": true,
  "isLockedOut": false,
  "oauth": null,
  "apiKey": null,
  "homeAccess": "",
  "captcha": "",
  "email": [
    "email:my@email.com"
  ],
  "phone": [],
  "expiresAt": "2024-03-26T16:58:22.674Z",
  "temporaryAccountCreationPasswordLink": "",
  "iat": 1701104302,
  "exp": 1711472302,
  "step": "",
  "LastName": "",
  "FirstName": ""
}
11/27/2023 17:58:22.761 [DEBUG] [internal.handler.AugustAccountHandler] - Storing new access token
11/27/2023 17:58:22.768 [DEBUG] [internal.handler.AugustAccountHandler] - Initializing bridge
11/27/2023 17:58:22.770 [WARN ] [internal.handler.AugustAccountHandler] - Not setting API endpoint as it was already set to https://api.aaecosystem.com
11/27/2023 17:58:22.771 [DEBUG] [internal.handler.AugustAccountHandler] - No previous access token
11/27/2023 17:58:22.773 [DEBUG] [august.internal.logging.RequestLogger] - Request bridge1-3

I noticed that after I restored the previous version of the binding, it worked even without the verification code, which makes me wonder if some cached data is interfering with the connection.

By the way, I realized that sometimes I don’t receive the push notifications from the Yale Home app on my phone, so I reported it to them. Let’s see if the whole issue that OH doesn’t get updated is just a software bug.

The binding stores the accesstoken and installId as well as the authentication state in json db storage.

Could possibly be that the password shouldn’t be URL encoded like in the last. I just reverted it, a new build should be available in a few minutes.

Good. If they are using AI to filter, make sure they get feedback that it isn’t working well. Heck, maybe even let them train their model to allow openhab :wink:

1 Like

I just downloaded the latest version (4.1.0.202311271732), and this time it worked like a charm.
The Unlatched state is also much appreciated!

I’ll keep you updated after the response from Yale and I will create a separate topic to handle the keypad, as soon as I learn how to use Postman.

Thanks a lot for your prompt support!

Hi, @seime.

I started to look into your suggestion to capture some logs with Postman.

I’m wondering if I should open a separate thread for that, or would you prefer to have it in this one?
I managed to get some data:

{
    "_id": "655f74e09954e22f3f",
    "serialNumber": "K2IC007",
    "appBrand": "yale",
    "appID": "aa-yale-app-ios-v01",
    "createdAt": "2023-11-23T15:50:56.597Z",
    "cypher": {
        "low": "7b0f98c",
        "high": "d9fee9"
    },
    "lockID": "B18C51817E998AB16963A230D9",
    "updatedAt": "2023-11-29T20:24:58.013Z",
    "currentFirmwareVersion": "2.27.0",
    "firmwareVersionHistory": {
        "2:27:0": {
            "firstNotified": "2023-11-23T15:50:58.672Z",
            "firstReported": "2023-11-23T15:52:33.008Z"
        },
        "1:75:4": {
            "firstReported": "2023-11-23T15:50:58.672Z"
        }
    },
    "battery": {},
    "batteryWarningState": "keypad_state_battery_warning_none",
    "batteryLevel": "Full",
    "batteryRaw": 189,
    "deviceBrand": "yale"
}

After setting the binding logging to TRACE level, I realized that you are already getting the data like this:

"keypad": {
    "_id": "655f74e09954e22f3f",
    "serialNumber": "K2IC007",
    "lockID": "B18C51817EA061053A230D9",
    "currentFirmwareVersion": "2.27.0",
    "battery": null,
    "batteryLevel": "Full",
    "batteryRaw": 189
  },

Could you also share the request you did?

Regards

Sure!

GET https://api.aaecosystem.com/keypads/655f74e099fc3facb3f: {
  "Network": {
    "addresses": {
      "local": {
        "address": "XX.XX.XX.XX",
        "family": "IPv4",
        "port": 49197
      },
      "remote": {
        "address": "XX.XX.73.30",
        "family": "IPv4",
        "port": 443
      }
    },
    "tls": {
      "reused": false,
      "authorized": true,
      "authorizationError": null,
      "cipher": {
        "name": "TLS_AES_128_GCM_SHA256",
        "standardName": "TLS_AES_128_GCM_SHA256",
        "version": "TLSv1/SSLv3"
      },
      "protocol": "TLSv1.3",
      "ephemeralKeyInfo": {},
      "peerCertificate": {
        "subject": {
          "country": "IE",
          "locality": "Dublin",
          "organization": "SECURITY & RISK COMMUNICATIONS LIMITED",
          "commonName": "*.aaecosystem.com",
          "alternativeNames": "DNS:*.aaecosystem.com"
        },
        "issuer": {
          "country": "US",
          "organization": "DigiCert Inc",
          "commonName": "DigiCert TLS RSA SHA256 2020 CA1"
        },
        "validFrom": "Feb  7 00:00:00 2023 GMT",
        "validTo": "Mar  9 23:59:59 2024 GMT",
        "fingerprint": "14:68:3D:92:1E:2D:3D:D7:A0:38:9:14:51:54:88:5A",
        "serialNumber": "0a290a16b178cbbb89935ae2"
      }
    }
  },
  "Request Headers": [
    {
      "key": "Content-Type",
      "value": "application/json"
    },
    {
      "id": 1,
      "key": "x-august-api-key",
      "value": "d9984f29-07a6-81ec9d1be431"
    },
    {
      "id": 3,
      "key": "x-august-access-token",
      "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpbnN0YWxsSWQiOiJvcGVuSEFCLWIyOTE4MWFmLWJhZGYtNDVMTcwMTExMjI3MCwiZXhwIjoxNzExNjU2NzQ0LCJzdGVwIjoiIiwiTGFzdE5hbWUiOiJBcG9udGUiLCJGaXJzdE5hbWUiOiJOZWxzb24ifQ.yh2CR7v9hZUYFI0lN3TyyAsqtWMyqa4oB5QSR4Gr-EQ"
    },
    {
      "key": "User-Agent",
      "value": "PostmanRuntime/7.32.1",
      "system": true
    },
    {
      "key": "Accept",
      "value": "*/*",
      "system": true
    },
    {
      "key": "Cache-Control",
      "value": "no-cache",
      "system": true
    },
    {
      "key": "Postman-Token",
      "value": "6752eb47-c570-678974e08b",
      "system": true
    },
    {
      "key": "Host",
      "value": "api.aaecosystem.com",
      "system": true
    },
    {
      "key": "Accept-Encoding",
      "value": "gzip, deflate, br",
      "system": true
    },
    {
      "key": "Connection",
      "value": "keep-alive",
      "system": true
    }
  ],
  "Request Body": "\"\"",
  "Response Headers": [
    {
      "key": "Date",
      "value": "Thu, 30 Nov 2023 15:17:31 GMT"
    },
    {
      "key": "Content-Type",
      "value": "application/json"
    },
    {
      "key": "Transfer-Encoding",
      "value": "chunked"
    },
    {
      "key": "Connection",
      "value": "keep-alive"
    },
    {
      "key": "vary",
      "value": "origin,access-control-request-method,access-control-request-headers"
    },
    {
      "key": "Content-Security-Policy",
      "value": "default-src 'self';base-uri 'self';block-all-mixed-content;font-src 'self' https: data:;frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"
    },
    {
      "key": "X-DNS-Prefetch-Control",
      "value": "off"
    },
    {
      "key": "Expect-CT",
      "value": "max-age=0"
    },
    {
      "key": "X-Frame-Options",
      "value": "SAMEORIGIN"
    },
    {
      "key": "Strict-Transport-Security",
      "value": "max-age=15552000; includeSubDomains"
    },
    {
      "key": "X-Download-Options",
      "value": "noopen"
    },
    {
      "key": "X-Content-Type-Options",
      "value": "nosniff"
    },
    {
      "key": "X-Permitted-Cross-Domain-Policies",
      "value": "none"
    },
    {
      "key": "Referrer-Policy",
      "value": "no-referrer"
    },
    {
      "key": "X-XSS-Protection",
      "value": "0"
    },
    {
      "key": "api-version",
      "value": "0.0.1"
    },
    {
      "key": "x-august-access-token",
      "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpbnN0YWxsSWQiOiJvcGVuSEFCLWIyOTE4MWFmLWJhZGYtNDVIjIwMjExMjI3MCwiZXhwIjoxNzExNzI1NDUxLCJzdGVwIjoiIiwiTGFzdE5hbWUiOiJBcG9udGUiLCJGaXJzdE5hbWUiOiJOZWxzb24ifQ.c3j0cD9p523luewHgPXfzZnBgtrTsU_lo1P_V-kBLSk"
    },
    {
      "key": "x-access-token",
      "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpbnN0YWxsSWQiOiJvcGVuSEFCLWIyOTE4MWFmLWJhZGYtNDVmMy05ODU3LTFiMTVlYTFlMjQyYiIsInJlZ2lvbiI6IiIsImFwcGxpY2F0aW9uSWQiOiIiLCJ1c2VySWQiOnRydWUsInZFbWFpbCI6ZmFsc2UsInZQaG9uZSI6ZmFscIjoiIiwiTGFzdE5hbWUiOiJBcG9udGUiLCJGaXJzdE5hbWUiOiJOZWxzb24ifQ.c3j0cD9p523luewHgPXfzZnBgtrTsU_lo1P_V-kBLSk"
    },
    {
      "key": "x-response-time",
      "value": "8"
    },
    {
      "key": "CF-Cache-Status",
      "value": "DYNAMIC"
    },
    {
      "key": "Set-Cookie",
      "value": "__cf_bm=PYQPJ6jEDqA.et9zl35+9KpyjCQg1kqJpTmrK/owKvyJdY5XXBzrmvLrMH9ECg=; path=/; expires=Thu, 30-Nov-23 15:47:31 GMT; domain=.aaecosystem.com; HttpOnly; Secure; SameSite=None"
    },
    {
      "key": "Server",
      "value": "cloudflare"
    },
    {
      "key": "CF-RAY",
      "value": "82e40ec0e7-FRA"
    },
    {
      "key": "Content-Encoding",
      "value": "gzip"
    }
  ],
  "Response Body": "{\"_id\":\"655f74e2fc3facb3f\",\"serialNumber\":\"K2ICW7\",\"appBrand\":\"yale\",\"appID\":\"aa-yale-app-ios-v01\",\"createdAt\":\"2023-11-23T15:50:56.597Z\",\"cypher\":{\"low\":\"7b0f918c\",\"high\":\"d90ffee9\"},\"lockID\":\"B18C51817E93A230D9\",\"updatedAt\":\"2023-11-30T10:36:53.840Z\",\"currentFirmwareVersion\":\"2.27.0\",\"firmwareVersionHistory\":{\"2:27:0\":{\"firstNotified\":\"2023-11-23T15:50:58.672Z\",\"firstReported\":\"2023-11-23T15:52:33.008Z\"},\"1:75:4\":{\"firstReported\":\"2023-11-23T15:50:58.672Z\"}},\"battery\":{},\"batteryWarningState\":\"keypad_state_battery_warning_none\",\"batteryLevel\":\"Full\",\"batteryRaw\":188,\"deviceBrand\":\"yale\"}"
}

I didn’t read your response properly :innocent: , but now I have added another channel on the lock called batteryKeypad. Also some core properties have been added on the thing if a keypad is installed.

Thanks for contributing!

New version published.

I’ve downloaded and installed the latest version of the binding ( Release Latest Build · seime/openhab-august · GitHub) but don’t see any new channels on the lock thing. Is there anything I need to do to make them appear?