@@ -163,6 +163,7 @@ export enum SwitchBotModel {
163163 PlugMiniJP = 'W2001400/W2001401' ,
164164 Lock = 'W1601700' ,
165165 LockPro = 'W3500000' ,
166+ LockUltra = 'W3600000' ,
166167 Keypad = 'W2500010' ,
167168 KeypadTouch = 'W2500020' ,
168169 K10 = 'K10+' ,
@@ -212,6 +213,7 @@ export enum SwitchBotBLEModel {
212213 PlugMiniJP = 'j' , // Only available in Japan.
213214 Lock = 'o' ,
214215 LockPro = '$' ,
216+ LockUltra = 'U' ,
215217 CeilingLight = 'q' , // Currently only available in Japan.
216218 CeilingLightPro = 'n' , // Currently only available in Japan.
217219 BlindTilt = 'x' ,
@@ -240,6 +242,7 @@ export enum SwitchBotBLEModelName {
240242 MeterProCO2 = 'WoSensorTHPc' ,
241243 Lock = 'WoSmartLock' ,
242244 LockPro = 'WoSmartLockPro' ,
245+ LockUltra = 'WoSmartLockUltra' ,
243246 PresenceSensor = 'WoPresence' ,
244247 PlugMini = 'WoPlugMini' ,
245248 StripLight = 'WoStrip' ,
@@ -271,6 +274,7 @@ export enum SwitchBotBLEModelFriendlyName {
271274 Meter = 'Meter' ,
272275 Lock = 'Lock' ,
273276 LockPro = 'Lock Pro' ,
277+ LockUltra = 'Lock Ultra' ,
274278 PlugMini = 'Plug Mini' ,
275279 StripLight = 'Strip Light' ,
276280 MeterPlus = 'Meter Plus' ,
@@ -1093,6 +1097,8 @@ export class Advertising {
10931097 return WoSmartLock . parseServiceData ( serviceData , manufacturerData , emitLog )
10941098 case SwitchBotBLEModel . LockPro :
10951099 return WoSmartLockPro . parseServiceData ( serviceData , manufacturerData , emitLog )
1100+ case SwitchBotBLEModel . LockUltra :
1101+ return WoSmartLockUltra . parseServiceData ( serviceData , manufacturerData , emitLog )
10961102 case SwitchBotBLEModel . BlindTilt :
10971103 return WoBlindTilt . parseServiceData ( serviceData , manufacturerData , emitLog )
10981104 case SwitchBotBLEModel . Leak :
@@ -3648,6 +3654,30 @@ export class WoSmartLockPro extends SwitchbotDevice {
36483654 }
36493655}
36503656
3657+ /**
3658+ * Class representing a WoSmartLockUltra device.
3659+ * Reuses the LockPro parsing and encrypted command behavior but reports a distinct model.
3660+ */
3661+ export class WoSmartLockUltra extends WoSmartLockPro {
3662+ constructor ( peripheral : NobleTypes [ 'peripheral' ] , noble : NobleTypes [ 'noble' ] ) {
3663+ super ( peripheral , noble )
3664+ }
3665+
3666+ static async parseServiceData (
3667+ serviceData : Buffer ,
3668+ manufacturerData : Buffer ,
3669+ emitLog : ( level : string , message : string ) => void ,
3670+ ) {
3671+ const data = await WoSmartLockPro . parseServiceData ( serviceData , manufacturerData , emitLog )
3672+ if ( ! data ) return null
3673+ const out = data as any
3674+ out . model = SwitchBotBLEModel . LockUltra
3675+ out . modelName = SwitchBotBLEModelName . LockUltra
3676+ out . modelFriendlyName = SwitchBotBLEModelFriendlyName . LockUltra
3677+ return out
3678+ }
3679+ }
3680+
36513681/**
36523682 * Class representing a WoStrip device.
36533683 * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/ledstriplight.md
0 commit comments