Jelajahi Sumber

Add support for Vevor self-cleaning litter box

Issue #2842
Jason Rumney 1 tahun lalu
induk
melakukan
9a5c1e516c

+ 1 - 1
ACKNOWLEDGEMENTS.md

@@ -840,7 +840,7 @@ Further device support has been made with the assistance of users. Please consid
 - [qvqn](https://github.com/qvqn) for assisting with support for Inkbird ISC-007BW smoker fan controller.
 - [smue86](https://github.com/smue86) for contributing support for Recteq RT700 grill.
 - [K900](https://github.com/K900) for contributing support for Petoneer Fresco EzGo pet fountain and Petoneer Nutri pet feeder.
-- [eisenschmid23](https://github.com/eisenschmid23) for assisting with support for Papifeed pet feeder.
+- [eisenschmid23](https://github.com/eisenschmid23) for assisting with support for Papifeed pet feeder and Vevor self-cleaning litter box.
 - [AndrewJ1990](https://github.com/AndrewJ1990) for assisting with support for Orion smart fingerprint entrance lock and Arlec 5L pet feeder.
 - [enyineer](https://github.com/enyineer) for contributing improvements to Aygrochy fan controller.
 - [ulliohura](https://github.com/ulliohura) for contributing support for Create fan with dimmable light.

+ 1 - 0
DEVICES.md

@@ -888,6 +888,7 @@ port and password.
 - Tesla Smart pet feeder
 - Tonepie T1PRO automatic cat litter box
 - V330L pet feeder
+- Vevor 76L self-cleaning litter box
 - WellToBe Automatic Pet Feeder (WB S36D)
 - YP pet feeder
 

+ 230 - 0
custom_components/tuya_local/devices/vevor_selfcleaning_litterbox.yaml

@@ -0,0 +1,230 @@
+name: Litter box
+products:
+  - id: djxo7tynpa1aocaa
+    manufacturer: Vevor
+    model: 76L
+entities:
+  - entity: switch
+    dps:
+      - id: 1
+        type: boolean
+        name: switch
+  - entity: select
+    name: Cleaning
+    icon: "mdi:broom"
+    category: config
+    dps:
+      - id: 2
+        type: string
+        name: option
+        mapping:
+          - dps_val: auto_clean
+            value: Auto
+          - dps_val: manual_clean
+            value: Manual
+  - entity: button
+    name: Start
+    icon: "mdi:play"
+    dps:
+      - id: 3
+        type: boolean
+        name: button
+  - entity: lock
+    translation_key: child_lock
+    category: config
+    dps:
+      - id: 4
+        type: boolean
+        name: lock
+  - entity: number
+    name: Cleaning delay
+    category: config
+    icon: "mdi:timer-pause"
+    dps:
+      - id: 5
+        type: integer
+        name: value
+        range:
+          min: 1
+          max: 60
+  - entity: sensor
+    class: weight
+    dps:
+      - id: 6
+        type: integer
+        name: sensor
+        unit: kg
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: sensor
+    name: Daily usage
+    category: diagnostic
+    dps:
+      - id: 7
+        type: integer
+        name: sensor
+        unit: times
+  - entity: sensor
+    name: Last usage
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 8
+        type: integer
+        name: sensor
+        unit: s
+  - entity: button
+    name: Clean
+    icon: "mdi:broom"
+    dps:
+      - id: 9
+        type: boolean
+        name: button
+  - entity: button
+    translation_key: factory_reset
+    category: config
+    dps:
+      - id: 23
+        type: boolean
+        optional: true
+        name: button
+  - entity: sensor
+    name: Visit count
+    category: diagnostic
+    dps:
+      - id: 101
+        type: integer
+        name: sensor
+        unit: times
+  - entity: light
+    dps:
+      - id: 107
+        type: integer
+        name: brightness
+        range:
+          min: 0
+          max: 255
+      - id: 102
+        type: string
+        name: named_color
+        mapping:
+          - dps_val: red
+            value: red
+          - dps_val: green
+            value: green
+          - dps_val: blue
+            value: blue
+          - dps_val: yellow
+            value: yellow
+          - dps_val: purple
+            value: purple
+          - dps_val: white
+            value: white
+  - entity: sensor
+    name: Cleans in bin
+    category: diagnostic
+    dps:
+      - id: 103
+        type: integer
+        name: sensor
+  - entity: event
+    name: Notification
+    dps:
+      - id: 104
+        type: integer
+        name: event
+        optional: true
+        mapping:
+          - dps_val: 0
+            value: null
+          - dps_val: null
+            value: null
+          - value: toilet
+      - id: 104
+        type: integer
+        optional: true
+        name: value
+        mapping:
+          - scale: 10
+      - id: 108
+        type: string
+        name: log
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 105
+        type: string
+        name: sensor
+        mapping:
+          - dps_val: "0"
+            value: false
+          - value: true
+      - id: 105
+        type: string
+        name: fault_code
+      - id: 105
+        type: string
+        name: description
+        mapping:
+          - dps_val: "0"
+            value: ok
+          - dps_val: "1"
+            value: door
+          - dps_val: "2"
+            value: bin
+          - dps_val: "3"
+            value: pressure
+  - entity: light
+    translation_key: backlight
+    category: config
+    dps:
+      - id: 106
+        name: brightness
+        type: integer
+        range:
+          min: 0
+          max: 255
+  - entity: sensor
+    translation_key: status
+    class: enum
+    category: diagnostic
+    dps:
+      - id: 110
+        type: string
+        name: sensor
+        mapping:
+          - dps_val: Standby
+            value: standby
+          - dps_val: Wait_Cluster
+            value: caking
+          - dps_val: Clean_Pause
+            value: paused
+          - dps_val: Clean_Start
+            value: starting
+          - dps_val: Cleaning
+            value: cleaning
+          - dps_val: Empty_Pause
+            value: paused
+          - dps_val: Empty_Start
+            value: starting
+          - dps_val: Emptying
+            value: emptying
+          - dps_val: Reset_Pause
+            value: paused
+          - dps_val: Reset_Start
+            value: starting
+          - dps_val: Resetting
+            value: resetting
+          - dps_val: Abnormal
+            value: fault
+          - dps_val: Reverse_rotation
+            value: reverse
+          - dps_val: Drawers_open
+            value: door_open
+          - dps_val: Cat_into
+            value: occupied
+      - id: 109
+        type: string
+        name: trigger

+ 5 - 1
custom_components/tuya_local/translations/bg.json

@@ -647,7 +647,11 @@
                     "close": "Затвори",
                     "monitor": "Монитор",
                     "working": "Работи",
-                    "warning": "Предупреждение"
+                    "warning": "Предупреждение",
+                    "starting": "Стартиране",
+                    "emptying": "Изтощаване",
+                    "resetting": "Нулиране",
+                    "reverse": "Обратно"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/cz.json

@@ -646,7 +646,11 @@
                     "close": "Zavřeno",
                     "monitor": "Monitor",
                     "working": "Pracuje",
-                    "warning": "Varování"
+                    "warning": "Varování",
+                    "starting": "Začíná",
+                    "emptying": "Vyprazdňování",
+                    "resetting": "Resetování",
+                    "reverse": "Obrácený"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/de.json

@@ -646,7 +646,11 @@
                     "close": "Schließen",
                     "monitor": "Überwachen",
                     "working": "Arbeiten",
-                    "warning": "Warnung"
+                    "warning": "Warnung",
+                    "starting": "Starten",
+                    "emptying": "Leeren",
+                    "resetting": "Zurücksetzen",
+                    "reverse": "Rückwärts"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/el.json

@@ -646,7 +646,11 @@
                     "close": "Κλείσιμο",
                     "monitor": "Παρακολούθηση",
                     "working": "Λειτουργία",
-                    "warning": "Προειδοποίηση"
+                    "warning": "Προειδοποίηση",
+                    "starting": "Εκκίνηση",
+                    "emptying": "Αδειάζει",
+                    "resetting": "Επαναφορά",
+                    "reverse": "Αντίστροφο"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/en.json

@@ -646,7 +646,11 @@
                     "close": "Close",
                     "monitor": "Monitor",
                     "working": "Working",
-                    "warning": "Warning"
+                    "warning": "Warning",
+                    "starting": "Starting",
+                    "emptying": "Emptying",
+                    "resetting": "Resetting",
+                    "reverse": "Reverse"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/es.json

@@ -646,7 +646,11 @@
                     "close": "Cerrado",
                     "monitor": "Monitor",
                     "working": "Trabajando",
-                    "warning": "Advertencia"
+                    "warning": "Advertencia",
+                    "starting": "Iniciando",
+                    "emptying": "Vaciando",
+                    "resetting": "Restableciendo",
+                    "reverse": "Reversa"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/fr.json

@@ -646,7 +646,11 @@
                     "close": "Fermé",
                     "monitor": "Surveillance",
                     "working": "Travail",
-                    "warning": "Avertissement"
+                    "warning": "Avertissement",
+                    "starting": "Démarrage",
+                    "emptying": "Vidange",
+                    "resetting": "Réinitialisation",
+                    "reverse": "Inverser"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/hu.json

@@ -647,7 +647,11 @@
                     "close": "Bezárás",
                     "monitor": "Figyelés",
                     "working": "Működés",
-                    "warning": "Figyelmeztetés"
+                    "warning": "Figyelmeztetés",
+                    "starting": "Indítás",
+                    "emptying": "Ürítés",
+                    "resetting": "Visszaállítás",
+                    "reverse": "Visszafelé"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/id.json

@@ -646,7 +646,11 @@
                     "close": "Tutup",
                     "monitor": "Pemantauan",
                     "working": "Bekerja",
-                    "warning": "Peringatan"
+                    "warning": "Peringatan",
+                    "starting": "Memulai",
+                    "emptying": "Mengosongkan",
+                    "resetting": "Merestart",
+                    "reverse": "Mundur"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/it.json

@@ -647,7 +647,11 @@
                     "close": "Chiudi",
                     "monitor": "Monitor",
                     "working": "Lavorando",
-                    "warning": "Attenzione"
+                    "warning": "Attenzione",
+                    "starting": "Inizio",
+                    "emptying": "Svuotamento",
+                    "resetting": "Ripristino",
+                    "reverse": "Inversione"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/ja.json

@@ -646,7 +646,11 @@
                     "close": "閉じる",
                     "monitor": "モニター",
                     "working": "作業中",
-                    "warning": "警告"
+                    "warning": "警告",
+                    "starting": "開始中",
+                    "emptying": "排出中",
+                    "resetting": "リセット中",
+                    "reverse": "逆"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/no-NB.json

@@ -647,7 +647,11 @@
                     "close": "Lukk",
                     "monitor": "Overvåk",
                     "working": "Arbeider",
-                    "warning": "Advarsel"
+                    "warning": "Advarsel",
+                    "starting": "Starter",
+                    "emptying": "Tømming",
+                    "resetting": "Tilbakestilling",
+                    "reverse": "Revers"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/pl.json

@@ -647,7 +647,11 @@
                     "close": "Zamknięty",
                     "monitor": "Monitorowanie",
                     "working": "Pracuje",
-                    "warning": "Ostrzeżenie"
+                    "warning": "Ostrzeżenie",
+                    "starting": "Uruchamianie",
+                    "emptying": "Opróżnianie",
+                    "resetting": "Resetowanie",
+                    "reverse": "Odwrócone"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/pt-BR.json

@@ -646,7 +646,11 @@
                     "close": "Fechar",
                     "monitor": "Monitora",
                     "working": "Trabalhando",
-                    "warning": "Aviso"
+                    "warning": "Aviso",
+                    "starting": "Iniciando",
+                    "emptying": "Esvaziando",
+                    "resetting": "Redefinindo",
+                    "reverse": "Reverso"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/ru.json

@@ -646,7 +646,11 @@
                     "close": "Закрыто",
                     "monitor": "Мониторинг",
                     "working": "Работает",
-                    "warning": "Предупреждение"
+                    "warning": "Предупреждение",
+                    "starting": "Запуск",
+                    "emptying": "Опорожнение",
+                    "resetting": "Сброс",
+                    "reverse": "Реверс"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/uk.json

@@ -649,7 +649,11 @@
                     "close": "Закрито",
                     "monitor": "Монітор",
                     "working": "Працює",
-                    "warning": "Попередження"
+                    "warning": "Попередження",
+                    "starting": "Початок",
+                    "emptying": "Опорожнення",
+                    "resetting": "Скидання",
+                    "reverse": "Реверс"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/ur.json

@@ -649,7 +649,11 @@
                     "close": "بند",
                     "monitor": "مانیٹر",
                     "working": "کام کر رہا ہے",
-                    "warning": "انتباہ"
+                    "warning": "انتباہ",
+                    "starting": "شروع ہو رہا ہے",
+                    "emptying": "خالی کرنا",
+                    "resetting": "ری سیٹ کرنا",
+                    "reverse": "الٹا"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/zh-Hans.json

@@ -646,7 +646,11 @@
                     "close": "关闭",
                     "monitor": "监控中",
                     "working": "工作中",
-                    "warning": "警告"
+                    "warning": "警告",
+                    "starting": "启动中",
+                    "emptying": "排空中",
+                    "resetting": "重置中",
+                    "reverse": "反转中"
                 }
             },
             "time_remaining": {

+ 5 - 1
custom_components/tuya_local/translations/zh-Hant.json

@@ -647,7 +647,11 @@
                     "close": "關閉",
                     "monitor": "監控",
                     "working": "運行中",
-                    "warning": "警告"
+                    "warning": "警告",
+                    "starting": "啟動中",
+                    "emptying": "排空中",
+                    "resetting": "重置中",
+                    "reverse": "反轉中"
                 }
             },
             "time_remaining": {