Explorar el Código

Yieri pH meter: add pH-W3988

RC Yago pH-W3988 seems to have the same sensors in the same dps with same
scaling, and also the cosmetic design matches Yieryi branded devices, so
likely a compatible model from the same underlying manufacturer.

There are a couple of extra sensors, and a set of availability flags.
Curiously, the availability flags are missing the extra sensors.

- CF seems to be a duplicate EC reading on a different (non-standard) unit scale
- RH = Relative Humidity, a bit strange for water readings, so maybe not really included? Added as optional, hidden if missing.

As well as the sensors, this also defines minimum and maximum alarm thresholds for each value. Use the flags to make these hidden if not supported.

Issue #2976
Jason Rumney hace 10 meses
padre
commit
0d0e946df5
Se han modificado 1 ficheros con 438 adiciones y 3 borrados
  1. 438 3
      custom_components/tuya_local/devices/yieryi_ph_meter.yaml

+ 438 - 3
custom_components/tuya_local/devices/yieryi_ph_meter.yaml

@@ -3,20 +3,29 @@ products:
   - id: 5ok0wq7drlqyo2hb
   - id: 5ok0wq7drlqyo2hb
     manufacturer: Yieryi
     manufacturer: Yieryi
     model: YY-9909
     model: YY-9909
+  - id: kyzep93ngjs4up3b
+    manufacturer: RC Yago
+    model: PH-W3988
 entities:
 entities:
   - entity: sensor
   - entity: sensor
-    name: pH
-    icon: "mdi:ph"
+    class: ph
     dps:
     dps:
       - id: 102
       - id: 102
         type: integer
         type: integer
         name: sensor
         name: sensor
-        unit: pH
         class: measurement
         class: measurement
         mapping:
         mapping:
           - scale: 100
           - scale: 100
           - dps_val: 1500
           - dps_val: 1500
             value: null
             value: null
+      - id: 101
+        type: string
+        optional: true
+        mask: "01000000000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: true
   - entity: sensor
   - entity: sensor
     class: temperature
     class: temperature
     dps:
     dps:
@@ -27,6 +36,14 @@ entities:
         class: measurement
         class: measurement
         mapping:
         mapping:
           - scale: 10
           - scale: 10
+      - id: 101
+        type: string
+        optional: true
+        mask: "00010000000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: true
   - entity: sensor
   - entity: sensor
     name: Total disolved solids
     name: Total disolved solids
     dps:
     dps:
@@ -35,7 +52,16 @@ entities:
         name: sensor
         name: sensor
         unit: ppm
         unit: ppm
         class: measurement
         class: measurement
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000100000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: true
   - entity: sensor
   - entity: sensor
+    class: conductivity
     name: Electrical conductivity
     name: Electrical conductivity
     dps:
     dps:
       - id: 110
       - id: 110
@@ -43,6 +69,18 @@ entities:
         name: sensor
         name: sensor
         unit: µS/cm
         unit: µS/cm
         class: measurement
         class: measurement
+      - id: 136
+        type: integer
+        optional: true
+        name: cf
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000001000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: true
   - entity: sensor
   - entity: sensor
     name: Salinity
     name: Salinity
     dps:
     dps:
@@ -51,6 +89,14 @@ entities:
         name: sensor
         name: sensor
         unit: ppm
         unit: ppm
         class: measurement
         class: measurement
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000000010000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: true
   - entity: sensor
   - entity: sensor
     name: Specific gravity
     name: Specific gravity
     dps:
     dps:
@@ -61,6 +107,14 @@ entities:
         unit: g/ml
         unit: g/ml
         mapping:
         mapping:
           - scale: 1000
           - scale: 1000
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000000000100"
+        name: available
+        mapping:
+          - dps_val: null
+            value: true
   - entity: sensor
   - entity: sensor
     name: Oxidation reduction potential
     name: Oxidation reduction potential
     dps:
     dps:
@@ -69,3 +123,384 @@ entities:
         name: sensor
         name: sensor
         unit: mV
         unit: mV
         class: measurement
         class: measurement
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000000000001"
+        name: available
+        mapping:
+          - dps_val: null
+            value: true
+  - entity: sensor
+    class: humidity
+    category: diagnostic
+    hidden: unavailable
+    dps:
+      - id: 139
+        type: integer
+        optional: true
+        name: sensor
+        unit: "%"
+        class: measurement
+      - id: 139
+        type: integer
+        optional: true
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+          - value: true
+  - entity: number
+    name: Maximum pH
+    class: ph
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 103
+        type: integer
+        optional: true
+        name: value
+        range:
+          min: 0
+          max: 1500
+        mapping:
+          - scale: 100
+      - id: 101
+        type: string
+        optional: true
+        mask: "01000000000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    name: Minimum pH
+    class: ph
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 104
+        type: integer
+        optional: true
+        name: value
+        range:
+          min: 0
+          max: 1500
+        mapping:
+          - scale: 100
+      - id: 101
+        type: string
+        optional: true
+        mask: "01000000000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    name: Maximum temperature
+    class: temperature
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 105
+        type: integer
+        optional: true
+        name: value
+        unit: C
+        range:
+          min: -100
+          max: 1100
+        mapping:
+          - scale: 10
+      - id: 101
+        type: string
+        optional: true
+        mask: "00010000000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    name: Minimum temperature
+    class: temperature
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 106
+        type: integer
+        optional: true
+        name: value
+        unit: C
+        range:
+          min: -100
+          max: 1100
+        mapping:
+          - scale: 10
+      - id: 101
+        type: string
+        optional: true
+        mask: "00010000000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    name: Maximum TDS
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 108
+        type: integer
+        optional: true
+        name: value
+        unit: ppm
+        range:
+          min: 0
+          max: 199999
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000100000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    name: Minimum TDS
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 109
+        type: integer
+        optional: true
+        name: value
+        unit: ppm
+        range:
+          min: 0
+          max: 199999
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000100000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    class: conductivity
+    name: Maximum EC
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 111
+        type: integer
+        optional: true
+        name: value
+        unit: µS/cm
+        range:
+          min: 0
+          max: 199999
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000001000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    class: conductivity
+    name: Minimum EC
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 112
+        type: integer
+        optional: true
+        name: value
+        unit: µS/cm
+        range:
+          min: 0
+          max: 199999
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000001000000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    name: Maximum salinity
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 114
+        type: integer
+        optional: true
+        name: value
+        unit: ppm
+        range:
+          min: 0
+          max: 199999
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000000010000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    name: Minimum salinity
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 115
+        type: integer
+        optional: true
+        name: value
+        unit: ppm
+        range:
+          min: 0
+          max: 199999
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000000010000"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    name: Maximum specific gravity
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 117
+        type: integer
+        optional: true
+        name: value
+        range:
+          min: 500
+          max: 2000
+        unit: g/ml
+        mapping:
+          - scale: 1000
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000000000100"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    name: Minimum specific gravity
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 118
+        type: integer
+        optional: true
+        name: value
+        range:
+          min: 500
+          max: 2000
+        unit: g/ml
+        mapping:
+          - scale: 1000
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000000000100"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: number
+    name: Maximum ORP
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 120
+        type: integer
+        optional: true
+        name: value
+        unit: mV
+        range:
+          min: -2000
+          max: 2000
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000000000001"
+        name: available
+        mapping:
+          - dps_val: null
+            value: true
+  - entity: number
+    name: Minimum ORP
+    category: config
+    hidden: unavailable
+    dps:
+      - id: 121
+        type: integer
+        optional: true
+        name: value
+        unit: mV
+        range:
+          min: -2000
+          max: 2000
+      - id: 101
+        type: string
+        optional: true
+        mask: "00000000000001"
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+  - entity: sensor
+    name: Maximum humidity
+    class: humidity
+    category: diagnostic
+    hidden: unavailable
+    dps:
+      - id: 140
+        type: integer
+        optional: true
+        name: sensor
+        unit: "%"
+        range:
+          min: 0
+          max: 100
+      - id: 139
+        type: integer
+        optional: true
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+          - value: true
+  - entity: sensor
+    name: Minimum humidity
+    class: humidity
+    category: diagnostic
+    hidden: unavailable
+    dps:
+      - id: 141
+        type: integer
+        optional: true
+        name: sensor
+        unit: "%"
+        range:
+          min: 0
+          max: 100
+      - id: 139
+        type: integer
+        optional: true
+        name: available
+        mapping:
+          - dps_val: null
+            value: false
+          - value: true