Explorar o código

Update support for PlantsIO Ivy smart planter

- fix most enums to use integer instead of bitfield
- use volume_storage class for water level
- add absorbing state to water status
- add initilizing states from missing enums
- use binary_sensor entity and battery_charging class for charging status
- convert plant in pot to binary_sensor
- add not selected enum for plant type
- add config options for weather and weather location
Wade Penner hai 1 ano
pai
achega
b9c894b7c8

+ 59 - 26
custom_components/tuya_local/devices/plantsio_ivy_smart_planter.yaml

@@ -8,6 +8,7 @@ products:
 primary_entity:
   entity: sensor
   name: Water level
+  class: volume_storage
   dps:
     - id: 108
       type: integer
@@ -22,7 +23,7 @@ primary_entity:
       type: string
       name: version
 secondary_entities:
-  # Sensor entities
+  # Sensor entities raw
   - entity: sensor
     name: Ambient light
     class: illuminance
@@ -61,19 +62,22 @@ secondary_entities:
         type: integer
         optional: true
         unit: "%"
+  # Sensor entities intelligent
   - entity: sensor
     name: Water status
     icon: "mdi:watering-can"
     class: enum
     dps:
       - id: 106
-        type: bitfield
+        type: integer
         name: sensor
         mapping:
           - dps_val: 0
             value: "Initializing"
           - dps_val: 2
             value: "Drinking"
+          - dps_val: 3
+            value: "Absorbing from soil"
           - value: "Unknown state"
   - entity: sensor
     name: Light status
@@ -81,9 +85,11 @@ secondary_entities:
     class: enum
     dps:
       - id: 138
-        type: bitfield
+        type: integer
         name: sensor
         mapping:
+          - dps_val: 0
+            value: "Initializing"
           - dps_val: 1
             value: "Acceptable"
           - dps_val: 2
@@ -101,9 +107,11 @@ secondary_entities:
     class: enum
     dps:
       - id: 139
-        type: bitfield
+        type: integer
         name: sensor
         mapping:
+          - dps_val: 0
+            value: "Initializing"
           - dps_val: 1
             value: "Good"
           - dps_val: 2
@@ -115,13 +123,15 @@ secondary_entities:
           - value: "Unknown state"
   - entity: sensor
     name: Humidity status
-    class: enum
     icon: "mdi:water-percent"
+    class: enum
     dps:
       - id: 140
-        type: bitfield
+        type: integer
         name: sensor
         mapping:
+          - dps_val: 0
+            value: "Initializing"
           - dps_val: 1
             value: "Good"
           - value: "Unknown state"
@@ -135,44 +145,31 @@ secondary_entities:
         type: integer
         name: sensor
         unit: "%"
-  - entity: sensor
+  - entity: binary_sensor
     name: Charge state
-    class: enum
+    class: battery_charging
     category: diagnostic
     dps:
       - id: 109
         type: boolean
         name: sensor
-        mapping:
-          - dps_val: false
-            value: "Battery"
-            icon: "mdi:battery"
-          - dps_val: true
-            value: "Charging"
-            icon: "mdi:battery-charging"
   - entity: sensor
-    name: Pot state
-    class: enum
+    name: Plant in pot
+    class: problem
     category: diagnostic
     dps:
       - id: 102
         type: boolean
         name: sensor
-        mapping:
-          - dps_val: false
-            value: "Empty"
-            icon: "mdi:cup-off-outline"
-          - dps_val: true
-            value: "Plant in pot"
-            icon: "mdi:sprout"
   - entity: sensor
     name: Touching
-    category: diagnostic
     icon: "mdi:gesture-tap"
+    category: diagnostic
     dps:
       - id: 111
         type: string
         name: sensor
+        optional: true
   # Config entities
   - entity: select
     translation_key: temperature_unit
@@ -192,7 +189,7 @@ secondary_entities:
     category: config
     dps:
       - id: 113
-        type: bitfield
+        type: integer
         name: option
         mapping:
           - dps_val: 0
@@ -214,6 +211,8 @@ secondary_entities:
         type: integer
         name: option
         mapping:
+          - dps_val: 0
+            value: "Not selected"
           - dps_val: 1
             value: "Devil's Ivy"
           - dps_val: 2
@@ -429,3 +428,37 @@ secondary_entities:
             value: "Japanese"
           - dps_val: 3
             value: "French"
+  - entity: switch
+    name: Location weather
+    icon: "mdi:weather-pouring"
+    category: config
+    dps:
+      - id: 141
+        type: boolean
+        name: switch
+  - entity: number
+    name: Latitude
+    category: config
+    icon: "mdi:latitude"
+    dps:
+      - id: 143
+        type: integer
+        name: value
+        range:
+          min: -900000
+          max: 900000
+        mapping:
+          - scale: 10000
+  - entity: number
+    name: Longitude
+    category: config
+    icon: "mdi:longitude"
+    dps:
+      - id: 142
+        type: integer
+        name: value
+        range:
+          min: -1800000
+          max: 1800000
+        mapping:
+          - scale: 10000