jeubanks / hubitat-mqtt-bridge

MIT License
28 stars 29 forks source link

Events sent to Locks don't seem to work #8

Closed CWSpear closed 4 years ago

CWSpear commented 4 years ago

I can see that hubitat/Front Door Lock/lock = unlocked is getting published when I trigger it in Home Assistant, but the lock is still locked.

Updates from Hubitat to Home Assistant work (unlocking it manually).

This is my Lock config:

- platform: mqtt
  name: Front Door Lock
  state_topic: hubitat/Front Door Lock/lock
  command_topic: hubitat/Front Door Lock/lock
  payload_lock: locked
  payload_unlock: unlocked
  state_locked: locked
  state_unlocked: unlocked
  optimistic: false
  qos: 1
  retain: true

I have a Schlage BE468/BE469 Lock.

When I press it in Home Assistant, I can see it in the MQTT Bridge Device Event log:

{"name":"Front Door Lock","type":"lock","value":"unlocked","command":true}

So I know the MQTT command is getting the event... it's a breakdown somewhere between there and actually unlocking the door (e.g. either the Zwave command isn't even being called, or else it's being rejected).

It does not work to unlock nor lock the door.

CWSpear commented 4 years ago

Ok, so the App is looking for lock and unlock payloads, whereas the event for when it un/locks is locked and unlocked, so this change:

-  payload_lock: locked
-  payload_unlock: unlocked
+  payload_lock: lock
+  payload_unlock: unlock

with the final result of:

- platform: mqtt
  name: Front Door Lock
  state_topic: hubitat/Front Door Lock/lock
  command_topic: hubitat/Front Door Lock/lock
  payload_lock: lock
  payload_unlock: unlock
  state_locked: locked
  state_unlocked: unlocked
  optimistic: false
  qos: 1
  retain: true

made it work.

I was coming from SmartThings, which uses unlocked/locked for both the state and payload, which is why I was confident it should have worked! :)

If we really wanted to be thorough, we could make the app support both with and without -ed for the command... but the way you have it also makes sense (no -ed for the payload is even the default (but state has the -ed)... if I'd just done nothing in terms of defining the payload/state, it would have worked!)