An Elixir client library for Kevo's reverse engineered web API.
Kevo locks were launched by Kiwkset in 2016 and discontinued in 2022. While they're unlikely to receive support for Seam, the existing web API should (hopefully) remain (relatively) stable.
Add :kevo_ex
to your list of dependencies in mix.exs
:
def deps do
[
{:kevo_ex, "~> 0.2.0"}
]
end
Documentation is available on HexDocs and may also be generated with ExDoc.
Add Kevo
to your app's supervision tree:
kevo_opts = [
name: Kevo,
username: "username",
password: "password",
ws_callback_module: YourHandlerModule # optional
]
children = [
{Kevo, kevo_otps}
]
Or start the client dynamically:
Kevo.start_link([name: Kevo, username: "username", password: "password"])
-
:name
- Alias of the top-level supervisor. Can be provided if you intend to run multiple instances of kevo_ex. Defaults toKevo
. -
:username
- Your Kevo username (required). -
:password
- Your Kevo password (required). -
:ws_callback_module
- Websocket callback module. Defaults tonil
.
-
Kevo.get_locks/0
- Retrieves all locks visible to the logged in user. -
Kevo.get_lock/1
- Retrieves the given lock's state. -
Kevo.lock/1
- Locks the given lock. -
Kevo.unlock/1
- Unlocks the given lock. -
Kevo.get_events/3
- Gets the provided lock's event history. Follows the frontend's paging behavior.
A name
atom can be provided as an additional argument. Defaults to Kevo
.
To receive websocket events, provide a Kevo.Handler
compliant module using the ws_callback_module
option. When a message is recevied, handle_event/1
will be invoked, passing a map of the received JSON. See the page on example responses.
- API calls are made to be as concurrently as possible.
- Kevo's websocket accepts no messages and is receive only.
- The websocket will only be opened if
ws_callback_module
is provided. - This library is unopinionated about how you queue or broker events.
Special thanks to the following:
- dcmeglio, author of aiokevoplus (used as reference)
- Bahnburner, author of pykevoplus3
- cseelye, author of pykevoplus
- davidlang42
- b3nji