Преглед изворни кода

feat(devices): add support for Yuposl dual-band pet feeder

Issue #3310
Jason Rumney пре 7 месеци
родитељ
комит
3e5e58b025
4 измењених фајлова са 179 додато и 1 уклоњено
  1. 1 0
      ACKNOWLEDGEMENTS.md
  2. 1 0
      DEVICES.md
  3. 176 0
      custom_components/tuya_local/devices/yuposl_petfeeder.yaml
  4. 1 1
      pyproject.toml

+ 1 - 0
ACKNOWLEDGEMENTS.md

@@ -961,3 +961,4 @@ Further device support has been made with the assistance of users. Please consid
 - [GianlucaUlivi](https://github.com/GianlucaUlivi) for contributing improvements to Airrobo P20 vacuum.
 - [BevDan](https://github.com/BevDan) for contributing support for EARU EASEM-D multi-circuit power meter.
 - [Felwat](https://github.com/Felwat) for contributing support for TruCool TC1150 air conditioner.
+- [TrustyTristan](https://github.com/TrustyTristan) for assisting with support for Yuposl pet feeder.

+ 1 - 0
DEVICES.md

@@ -901,6 +901,7 @@ port and password.
 - Vevor 76L self-cleaning litter box
 - WellToBe Automatic Pet Feeder (WB S36D)
 - YP pet feeder
+- Yuposl dual-band pet feeder
 
 ### Remote controllers
 

+ 176 - 0
custom_components/tuya_local/devices/yuposl_petfeeder.yaml

@@ -0,0 +1,176 @@
+name: Pet feeder
+products:
+  - id: eb3olqllh0l0hvwz
+    manufacturer: Yuposl
+    model: Dual band
+entities:
+  - entity: text
+    name: Meal plan
+    category: config
+    icon: "mdi:food-drumstick"
+    hidden: true
+    dps:
+      - id: 1
+        type: base64
+        optional: true
+        name: value
+  - entity: number
+    name: Manual feed
+    icon: "mdi:food-drumstick"
+    dps:
+      - id: 3
+        type: integer
+        name: value
+        unit: portions
+        range:
+          min: 1
+          max: 50
+  - entity: sensor
+    class: enum
+    translation_key: status
+    category: diagnostic
+    dps:
+      - id: 4
+        type: string
+        name: sensor
+        mapping:
+          - dps_val: standby
+            value: standby
+          - dps_val: feeding
+            value: feeding
+          - dps_val: done
+            value: feeding_complete
+  - entity: sensor
+    name: Food
+    class: enum
+    translation_key: status
+    category: diagnostic
+    dps:
+      - id: 6
+        type: string
+        name: sensor
+        mapping:
+          - dps_val: enough
+            value: available
+          - dps_val: insufficient
+            value: low
+          - dps_val: run_out
+            value: empty
+  - entity: sensor
+    class: battery
+    category: diagnostic
+    dps:
+      - id: 10
+        type: integer
+        optional: true
+        name: sensor
+        unit: "%"
+        class: measurement
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 13
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+      - id: 13
+        type: bitfield
+        name: fault_code
+      - id: 13
+        type: bitfield
+        name: description
+        mapping:
+          - dps_val: 0
+            value: ok
+          - dps_val: 1
+            value: jammed
+          - dps_val: 2
+            value: food_low
+          - dps_val: 4
+            value: food_empty
+          - dps_val: 8
+            value: dessicant_empty
+          - dps_val: 16
+            value: battery_low
+          - dps_val: 32
+            value: stuck
+          - dps_val: 64
+            value: offline
+  - entity: event
+    name: Feed report
+    dps:
+      - id: 14
+        type: integer
+        optional: true
+        name: event
+        mapping:
+          - dps_val: null
+            value: null
+          - dps_val: 0
+            value: null
+          - value: fed
+      - id: 14
+        type: integer
+        optional: true
+        name: portions
+  - entity: number
+    name: Voice playback count
+    category: config
+    icon: "mdi:account-voice"
+    dps:
+      - id: 16
+        type: integer
+        name: value
+        unit: times
+        range:
+          min: 0
+          max: 5
+  - entity: light
+    translation_key: indicator
+    category: config
+    dps:
+      - id: 17
+        type: boolean
+        name: switch
+  - entity: number
+    name: Button feed amount
+    category: config
+    icon: "mdi:food-drumstick"
+    dps:
+      - id: 101
+        type: integer
+        name: value
+        unit: portions
+        range:
+          min: 0
+          max: 20
+  - entity: event
+    name: Battery
+    dps:
+      - id: 110
+        type: string
+        name: event
+        optional: true
+        mapping:
+          - dps_val: high
+            value: high
+          - dps_val: low
+            value: low
+          - dps_val: "no"
+            value: "none"
+  - entity: event
+    name: Food stuck
+    dps:
+      - id: 130
+        type: string
+        name: event
+        optional: true
+        mapping:
+          - dps_val: normal
+            value: null
+          - dps_val: stuck
+            value: stuck

+ 1 - 1
pyproject.toml

@@ -1,2 +1,2 @@
 [tool.black]
-target-version = ["py312"]
+target-version = ["py313"]