Просмотр исходного кода

Add support for Gainsborough Liberty entrance lock

Issue #1536
Jason Rumney 1 год назад
Родитель
Сommit
267491d75d

+ 2 - 0
ACKNOWLEDGEMENTS.md

@@ -554,3 +554,5 @@ Further device support has been made with the assistance of users. Please consid
 - [simplelnx](https://github.com/simplelnx) for contributing support for OPK K2 vacuums.
 - [kimhartlev](https://github.com/kimhartlev) for contributing support for Semptec ZX7007 infrared heaters.
 - [ebarriosjr](https://github.com/ebarriosjr) for assisting with support for LSC PTZ cameras.
+- [AdrianGarside](https://github.com/AdrianGarside) for contributing support for cloud account linking and device detail lookup.
+- [Netjuggernaut](https://github.com/Netjuggernaut) for assisting with support for Gainsborough Liberty entrance locks.

+ 1 - 0
DEVICES.md

@@ -711,6 +711,7 @@ port and password.
 - Adaprox Fingerbot plus
 - Arlec smart button
 - Diivoo WT05 dual water timer
+- Gainsborough Liberty entrance lock
 - HCT-611 water timer
 - HU06 smart lock
 - Ironzon fingerprint lock

+ 330 - 0
custom_components/tuya_local/devices/gainsboroughliberty_entrance_lock.yaml

@@ -0,0 +1,330 @@
+name: Door lock
+products:
+  - id: yfqp0shy
+    name: Gainsborough Liberty entrance lock
+primary_entity:
+  entity: lock
+  dps:
+    - id: 1
+      type: string
+      name: create_unlock_method
+      optional: true
+    - id: 2
+      type: string
+      name: delete_unlock_method
+      optional: true
+    - id: 3
+      type: string
+      name: modify_unlock_method
+      optional: true
+    - id: 12
+      type: integer
+      name: unlock_fingerprint
+      optional: true
+      persist: false
+    - id: 13
+      name: unlock_password
+      type: integer
+      optional: true
+      persist: false
+    - id: 14
+      name: unlock_dynamic_pwd
+      type: integer
+      optional: true
+      persist: false
+    - id: 15
+      name: unlock_card
+      type: integer
+      optional: true
+      persist: false
+    - id: 16
+      name: unlock_key
+      type: integer
+      optional: true
+      persist: false
+    - id: 19
+      name: unlock_ble
+      type: integer
+      optional: true
+      persist: false
+    - id: 21
+      name: jammed
+      type: string
+      optional: true
+      persist: false
+      mapping:
+        - dps_val: tongue_bad
+          value: true
+        - dps_val: tongue_not_out
+          value: true
+        - dps_val: null
+          value: false
+        - value: false
+    - id: 47  # Lock motor state
+      name: lock
+      type: boolean
+      readonly: true
+      optional: true
+      mapping:
+        - dps_val: true  # Unlocked
+          value: false
+        - dps_val: false  # Locked
+          value: true
+    - id: 51
+      type: string
+      optional: true
+      name: temp_pwd_create
+    - id: 52
+      type: string
+      optional: true
+      name: temp_pwd_delete
+    - id: 53
+      type: string
+      optional: true
+      name: temp_pwd_modify
+    - id: 54
+      type: string
+      optional: true
+      name: sync_method
+    - id: 55
+      type: integer
+      name: unlock_temp_pwd
+      optional: true
+      persist: false
+    - id: 61
+      type: string
+      optional: true
+      name: remote_no_dp_key
+    - id: 62
+      type: integer
+      name: unlock_app
+      optional: true
+      persist: false
+    - id: 63
+      name: unlock_voice
+      type: integer
+      optional: true
+      persist: false
+    - id: 64
+      type: string
+      optional: true
+      name: pwd_offline_time
+    - id: 65
+      type: string
+      optional: true
+      name: offline_pwd_cleared
+    - id: 66
+      type: string
+      optional: true
+      name: offline_pwd_clear_all
+    - id: 67
+      type: string
+      optional: true
+      persist: false
+      name: unlock_offline_pwd
+      mapping:
+        - dps_val: null
+          value: null
+        - value: 1
+    - id: 67
+      type: string
+      optional: true
+      name: offline_pwd_details
+    - id: 69
+      type: string
+      optional: true
+      name: log
+    - id: 70
+      type: string
+      optional: true
+      name: check_code_set
+    - id: 71
+      type: string
+      optional: true
+      name: ble_unlock_check
+    - id: 72
+      type: string
+      optional: true
+      name: remote_pd_setkey_check
+secondary_entities:
+  - entity: sensor
+    class: battery
+    dps:
+      - id: 8
+        type: integer
+        name: sensor
+        unit: "%"
+  - entity: sensor
+    name: Alert
+    class: enum
+    category: diagnostic
+    dps:
+      - id: 21
+        type: string
+        name: sensor
+        optional: true
+        persist: false
+        mapping:
+          - dps_val: null
+            value: ok
+          - dps_val: wrong_finger
+            value: Wrong Finger
+          - dps_val: wrong_password
+            value: Wrong Password
+          - dps_val: wrong_card
+            value: Wrong Card
+          - dps_val: wrong_face
+            value: Wrong Face
+          - dps_val: tongue_bad
+            value: Tongue Bad
+          - dps_val: too_hot
+            value: Too Hot
+          - dps_val: unclosed_time
+            value: Unclosed Time
+          - dps_val: tongue_not_out
+            value: Tongue Not Out
+          - dps_val: pry
+            value: Pry
+          - dps_val: key_in
+            value: Key In
+          - dps_val: low_battery
+            value: Low Battery
+          - dps_val: power_off
+            value: Power Off
+          - dps_val: shock
+            value: Shock
+          - dps_val: defense
+            value: Defense
+          - dps_val: wrong_unlock
+            value: Wrong Unlock
+  - entity: event
+    name: Hijack
+    dps:
+      - id: 22
+        type: boolean
+        name: event
+        optional: true
+        mapping:
+          - dps_val: true
+            value: hijack
+          - dps_val: false
+            value: null
+  - entity: event
+    class: doorbell
+    dps:
+      - id: 24
+        type: boolean
+        name: event
+        optional: true
+        mapping:
+          - dps_val: true
+            value: ring
+          - dps_val: false
+            value: null
+  - entity: number
+    name: Lock volume
+    category: config
+    dps:
+      - id: 31
+        type: string
+        name: value
+        optional: true
+        unit: "%"
+        range:
+          min: 0
+          max: 100
+        mapping:
+          - dps_val: mute
+            step: 33
+            value: 0
+            icon: "mdi:volume-mute"
+          - dps_val: low
+            step: 33
+            value: 33
+            icon: "mdi:volume-low"
+          - dps_val: mid
+            step: 33
+            value: 66
+            icon: "mdi:volume-medium"
+          - dps_val: high
+            step: 33
+            value: 100
+            icon: "mdi:volume-high"
+  - entity: lock
+    name: Snib
+    icon: "mdi:lock-remove"
+    category: diagnostic
+    dps:
+      - id: 32
+        type: boolean
+        optional: true
+        name: lock
+        mapping:
+          - dps_val: null
+            value: false
+            hidden: true
+  - entity: switch
+    name: Auto lock
+    category: config
+    icon: "mdi:lock-reset"
+    dps:
+      - id: 33
+        type: boolean
+        name: switch
+        optional: true
+        mapping:
+          - dps_val: true
+            value: false
+          - dps_val: false
+            value: true
+  - entity: switch
+    name: Multifactor
+    category: config
+    icon: "mdi:lock-check"
+    dps:
+      - id: 34
+        type: string
+        name: switch
+        optional: true
+        mapping:
+          - dps_val: combination
+            value: true
+          - dps_val: single_unlock
+            value: false
+          - dps_val: null
+            value: false
+            hidden: true
+  - entity: number
+    name: Auto lock delay
+    icon: "mdi:lock-clock"
+    category: config
+    dps:
+      - id: 36
+        type: integer
+        name: value
+        optional: true
+        range:
+          min: 0
+          max: 1800
+        unit: s
+  - entity: switch
+    name: Local clock
+    category: config
+    dps:
+      - id: 44
+        type: boolean
+        name: switch
+        optional: true
+        mapping:
+          - dps_val: null
+            value: false
+            hidden: true
+  - entity: lock
+    name: Lockdown
+    icon: "mdi:key-alert"
+    category: config
+    dps:
+      - id: 46
+        type: boolean
+        name: lock
+        optional: true