Add support for editing individual lock code slots
Some checks failed
/ build-container (push) Has been cancelled

This commit is contained in:
Finn 2024-11-22 22:25:39 -08:00
parent 6ec7434ab6
commit cafbd63f98
7 changed files with 44 additions and 8 deletions

View file

@ -111,9 +111,27 @@ func lockCodeEditHandler(c echo.Context) error {
return err
}
newCode := c.FormValue("code")
zwaveClient := c.Get(contextKeyZWaveClient).(*zwavejs.Client)
enabled := c.FormValue("enabled") == "on"
enabledInt := 0
if enabled {
enabledInt = 1
}
err = zwaveClient.SetNodeValue(ctx, int(lock.ZwaveDeviceID), zwavejs.NodeValue{
CCVersion: 1,
CommandClassName: zwavejs.CommandClassNameUserCode,
CommandClass: zwavejs.CommandClassUserCode,
Endpoint: 0,
Property: zwavejs.AnyType{Type: zwavejs.AnyTypeString, String: string(zwavejs.PropertyUserIDStatus)},
PropertyName: zwavejs.AnyType{Type: zwavejs.AnyTypeString, String: string(zwavejs.PropertyUserIDStatus)},
PropertyKey: zwavejs.AnyType{Type: zwavejs.AnyTypeInt, Int: int(slot)},
}, zwavejs.AnyType{Type: zwavejs.AnyTypeInt, Int: enabledInt})
if err != nil {
return fmt.Errorf("error pushing enabled state to lock %s (ZWaveDeviceID=%d ID=%d): %v", lock.Name, lock.ZwaveDeviceID, lock.ID, err)
}
newCode := c.FormValue("code")
err = zwaveClient.SetNodeValue(ctx, int(lock.ZwaveDeviceID), zwavejs.NodeValue{
CCVersion: 1,
CommandClassName: zwavejs.CommandClassNameUserCode,
@ -131,7 +149,8 @@ func lockCodeEditHandler(c echo.Context) error {
Lock: lockID,
Slot: slot,
Code: newCode,
Enabled: true,
Name: c.FormValue("name"),
Enabled: enabled,
})
if err != nil {
return err