/kevo-mqtt

MQTT Binding for Kwikset Kevo Smart Locks

Primary LanguagePython

Kevo Plus MQTT Binding =======

Remote lock/unlock and get status of your Kwikset Kevo locks via MQTT. Simply publish a message like:

{
  "type": "lock",
  "lock_id": "a95a788a-e774-4561-8fc8-2225b3dccc21"
}

lock and unlock types are supported.

A simpler message format is also supported:

UNLOCK a95a788a-e774-4561-8fc8-2225b3dccc21

The Lock status will be polled at a user-defined interval and published to the topic as well as printed to the console.

{
  "lock_id": "a95a788a-e774-4561-8fc8-2225b3dccc21",
  "type": "lockState",
  "state": "Locked"
}

A Kevo Plus bridge is required. You can get the lock IDs manually by logging into mykevo.com, click Details for the lock, click Settings, the lock ID is on the right.

Thanks to Carl Seelye for pynello.

Run as Docker container -----------

docker run --name kevoplus -d --restart=always -e KEVO_USERNAME=my@account.com -e KEVO_PASSWORD=password -e KEVO_REFRESH_INTERVAL=180 -e KEVO_LOCK_ID=a95a788a-e774-4561-8fc8-2225b3dccc21 -e MQTT_TOPIC=home/kevo -e MQTT_BROKER=localhost salanki/kevo-mqtt:latest

Usage with OpenHAB -----------

Simply use the MQTT Binding. A custom transform/kevostate.js is required.

(function(i) {
  var json = JSON.parse(i);
  if (json.type == 'Locked') {
    return 'ON';
  } else {
    return 'OFF';
  }
})(input)
Switch DoorLock { mqtt=">[mybroker:home/kevo:command:ON:LOCK a95a788a-e774-4561-8fc8-2225b3dccc21],>[mybroker:home/kevo:command:OFF:UNLOCK a95a788a-e774-4561-8fc8-2225b3dccc21],<[mybroker:home/kevo:state:JS(kevostate.js):.*lockState.*" }