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

How have you determined the API calls in the first place so we could determine what is the current API call? Problem is related to the API key: 79fd0eb6-381d-4adf-95a0-47721289d1d9 - it seems to be blocked.

This is where I started from; https://github.com/jmaxxz/keymaker/blob/master/postman/august.postman_collection.json

A way forward may be to run the official app in an Android emulator and use mitm or similar tool to look at the traffic. Seems like login is where things have changed (could be more of course).

Arne

This here seems to work, so at least it is doable and not a “major” block: GitHub - bdraco/yalexs: Python API for Yale Access (formerly August) Smart Lock and Doorbell

Will look at the Postman collection you linked…

It is the x-august-api-key that must be updated. Found a working one but not sure how and where they are gotten from, so not posting it here, sent PM.

@nick_woodforth @jpalo New jars available (also listed the OH4 build). Please check if this fixes the problems.

sorry for taking so long to get back to you. the Bridge is online. can scan and find the lock but it is stuck at unknown. below is from openhab.log file

2023-08-24 12:41:08.829 [WARN ] [t.internal.handler.AugustLockHandler] - EB45BFD516DCF745ACBEB2C09181BD5C Error contacting lock
no.seime.openhab.binding.august.internal.comm.RestCommunicationException: Exception caught trying to communicate with API: Invalid credentials
	at no.seime.openhab.binding.august.internal.comm.RestApiClient.sendRequestInternal(RestApiClient.java:168) ~[bundleFile:?]
	at no.seime.openhab.binding.august.internal.comm.RestApiClient.sendRequest(RestApiClient.java:114) ~[bundleFile:?]
	at no.seime.openhab.binding.august.internal.handler.AugustLockHandler.handleLockStateCommand(AugustLockHandler.java:260) [bundleFile:?]
	at no.seime.openhab.binding.august.internal.handler.AugustLockHandler.handleCommandInternal(AugustLockHandler.java:225) [bundleFile:?]
	at no.seime.openhab.binding.august.internal.handler.AugustLockHandler.handleCommand(AugustLockHandler.java:216) [bundleFile:?]
	at jdk.internal.reflect.GeneratedMethodAccessor168.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
	at org.openhab.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [bundleFile:?]
	at com.sun.proxy.$Proxy1176.handleCommand(Unknown Source) [?:?]
	at org.openhab.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:85) [bundleFile:?]
	at org.openhab.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:48) [bundleFile:?]
	at jdk.internal.reflect.GeneratedMethodAccessor167.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
	at org.openhab.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: no.seime.openhab.binding.august.internal.ConfigurationException: Invalid credentials
	at no.seime.openhab.binding.august.internal.comm.RestApiClient.sendRequestInternal(RestApiClient.java:153) ~[bundleFile:?]
	... 21 more

Not sure why this happens. Upgraded to Yale Home setup? LockId correct?

Regards

Hi @seime , thank you for this binding!
I’ve managed to install the OH4 version correctly (I think) on OH4.0.3, but I can’t seem to discover the locks? I added the account thing, and the 2FA worked correctly.

My august.things file looks like the below (obviously with my real info :slight_smile: ):

Bridge august:account:accountName "Yale Access account" [ email="myemail@email.com", phone="+44123456789", password="mypassword", refreshInterval="3600", validationCode="xxxxxx", ecoSystem="YALE_HOME"] {
}

And the bridge shows as online:

2023-10-07 12:19:20.488 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'august:account:accountName' changed from UNKNOWN to ONLINE

But when I go to add something from the Things menu, there’s nothing in my inbox, and I’m not able to add anything manually?

Please let me know if I’ve done something wrong? Thank you in advance for your help, and again for writing the binding!

Cheers,

Andrew

sorry again for being silent.
i have always been on Yale Home. lockid is correct and lock ID is correct too. i have tried again today to see if the lock would come online but no luck yet.

Hi @S13_Mills, there was a snag in the addons.xml file.

Binding updated, same url as posted initially.

Cheers

1 Like

… it says. Is the user defined in your bridge config authorized to see the lock?

@seime I’ve just started using this binding for my Yale Conexis L2 lock. Works great, thanks for providing this!

I’ve noticed regular GET requests to the pubnub API since I’ve installed this binding, they’re logged as INFO in openhab.log and are all of the type GET https://ps.pndsn.com/v2/subscribe/{redacted GUIDs}

Can you confirm that these are legitimate for this binding. And is there a way they can be be suppressed?

Thanks

Martin

AFAIK those calls are connection keepalive for the push messages.

However on my side the push notifications now only works after sending a command to the lock or by simultaneously having the Yale Home app open on my phone. Happened maybe a month back. But it works smooth for you?

I’ll see if I can get the log level reduced.

Arne

If you are talking about the OkHttp logging try creating a logger in your log4j.xml and set the logging level to WARN. Logger name okhttp3

If the push notifications are supposed to get updates to the binding directly after a lock state change, then no I don’t think they’re working. I’ve noticed that on the majority of lock events, it will take some time before the state is updated through the binding. Sometimes < 1 minute, sometimes more. Sometimes I have had to restart the binding to get the updated state. As you stated above, opening the Yale App seems to also send an update.

Yep, no worries. I just wanted to make sure they were legitimate calls (and coming from this binding) before “making them go away” in the logs :wink:

Thanks Arne.

This worked great, thank you! Both of my locks are now (back) in OpenHAB after their access module upgrade.

Hi @seime, my push notifications appear to be behaving the same - lock state only updates in the binding if I send it a command (which works fine) or open the Yale app.

I’ve got 2x Conexis L1 - let me know if I can help with some logs or anything to troubleshoot this!

Update: Looking at the logs this morning, I see updates every 30 minutes (08:00, 08:30, etc) - so if there’s a periodic call for updates, that’s working perfectly!

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?