Pārlūkot izejas kodu

docs: for PR #4423 and further improvements

- additional humidity for every probe
- remove `persist: false` from sensors, this isn't generally needed
- use newer available attribute rather than invalid marking, and hide
  unavailable entities.
Jason Rumney 1 nedēļu atpakaļ
vecāks
revīzija
587b185cc1

+ 1 - 0
ACKNOWLEDGEMENTS.md

@@ -1240,3 +1240,4 @@ Further device support has been made with the assistance of users. Please consid
 - [RedstoneGithub](https://github.com/RedstoneGithub) for contributing improvements to Petlibro PLAF103 pet feeder.
 - [cinek193](https://github.com/cinek193) for assisting with improvements to Clofte 400 Duo humidifier.
 - [nathan-gs](https://github.com/nathan-gs) for contributing support for Andalung EV charger, which was merged into EV Sun. EV charger config.
+- [gaxkalik](https://github.com/gaxkalik) for contributing improvements to Inkbird IBS M1S temperature humidity sensors.

+ 230 - 77
custom_components/tuya_local/devices/inkbird_ibs_m1s.yaml

@@ -17,10 +17,13 @@ entities:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: "FF"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -32,13 +35,10 @@ entities:
         mask_signed: true
         mapping:
           - scale: 10
-            constraint: type
-            conditions:
-              - dps_val: 0
-                invalid: true
   - entity: sensor
     name: Humidity probe 1
     class: humidity
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
@@ -50,22 +50,36 @@ entities:
         mask: "FFFF000000"
         mapping:
           - scale: 10
-            constraint: type
+      - id: 114
+        optional: true
+        type: base64
+        name: available
+        endianness: little
+        mask: "FF"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+            constraint: sensor
             conditions:
-              - dps_val: 0
-                invalid: true
+              - dps_val: 65535
+                value: false
   - entity: sensor
     name: Battery 1
     class: battery
     category: diagnostic
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: "FF"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -73,22 +87,21 @@ entities:
         unit: "%"
         endianness: little
         mask: "FF000000000000000000"
-        mapping:
-          - constraint: type
-            conditions:
-              - dps_val: 0
-                invalid: true
   - entity: sensor
     name: Temperature probe 2
     class: temperature
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: "FF00000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -100,23 +113,51 @@ entities:
         mask_signed: true
         mapping:
           - scale: 10
-            constraint: type
+  - entity: sensor
+    name: Humidity probe 2
+    class: humidity
+    hidden: unavailable
+    dps:
+      - id: 114
+        optional: true
+        type: base64
+        name: sensor
+        unit: "%"
+        class: measurement
+        endianness: little
+        mask: "FFFF000000000000000000000000"
+        mapping:
+          - scale: 10
+      - id: 114
+        optional: true
+        type: base64
+        name: available
+        endianness: little
+        mask: "FF00000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+            constraint: sensor
             conditions:
-              - dps_val: 0
-                invalid: true
-
+              - dps_val: 65535
+                value: false
   - entity: sensor
     name: Battery 2
     class: battery
     category: diagnostic
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: "FF00000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -124,22 +165,21 @@ entities:
         unit: "%"
         endianness: little
         mask: "FF00000000000000000000000000000000000000"
-        mapping:
-          - constraint: type
-            conditions:
-              - dps_val: 0
-                invalid: true
   - entity: sensor
     name: Temperature probe 3
     class: temperature
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: "FF0000000000000000000000000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -151,22 +191,51 @@ entities:
         mask_signed: true
         mapping:
           - scale: 10
-            constraint: type
+  - entity: sensor
+    name: Humidity probe 3
+    class: humidity
+    hidden: unavailable
+    dps:
+      - id: 114
+        optional: true
+        type: base64
+        name: sensor
+        unit: "%"
+        class: measurement
+        endianness: little
+        mask: "FFFF00000000000000000000000000000000000000000000"
+        mapping:
+          - scale: 10
+      - id: 114
+        optional: true
+        type: base64
+        name: available
+        endianness: little
+        mask: "FF0000000000000000000000000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+            constraint: sensor
             conditions:
-              - dps_val: 0
-                invalid: true
+              - dps_val: 65535
+                value: false
   - entity: sensor
     name: Battery 3
     class: battery
     category: diagnostic
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: "FF0000000000000000000000000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -174,22 +243,21 @@ entities:
         unit: "%"
         endianness: little
         mask: "FF0000000000000000000000000000000000000000000000000000000000"
-        mapping:
-          - constraint: type
-            conditions:
-              - dps_val: 0
-                invalid: true
   - entity: sensor
     name: Temperature probe 4
     class: temperature
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: FF000000000000000000000000000000000000000000000000000000000000
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -202,22 +270,52 @@ entities:
         mask_signed: true
         mapping:
           - scale: 10
-            constraint: type
+  - entity: sensor
+    name: Humidity probe 4
+    class: humidity
+    hidden: unavailable
+    dps:
+      - id: 114
+        optional: true
+        type: base64
+        name: sensor
+        unit: "%"
+        class: measurement
+        endianness: little
+        mask: "FFFF0000000000000000000000000000000000000000000000000000\
+          00000000"
+        mapping:
+          - scale: 10
+      - id: 114
+        optional: true
+        type: base64
+        name: available
+        endianness: little
+        mask: "FF00000000000000000000000000000000000000000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+            constraint: sensor
             conditions:
-              - dps_val: 0
-                invalid: true
+              - dps_val: 65535
+                value: false
   - entity: sensor
     name: Battery 4
     class: battery
     category: diagnostic
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: FF000000000000000000000000000000000000000000000000000000000000
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -226,23 +324,22 @@ entities:
         endianness: little
         mask: "FF000000000000000000000000000000000000000\
           000000000000000000000000000000000000000"
-        mapping:
-          - constraint: type
-            conditions:
-              - dps_val: 0
-                invalid: true
   - entity: sensor
     name: Temperature probe 5
     class: temperature
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: "FF00000000000000000000000000000000000000000000\
           000000000000000000000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -255,23 +352,54 @@ entities:
         mask_signed: true
         mapping:
           - scale: 10
-            constraint: type
+  - entity: sensor
+    name: Humidity probe 5
+    class: humidity
+    hidden: unavailable
+    dps:
+      - id: 114
+        optional: true
+        type: base64
+        name: sensor
+        unit: "%"
+        class: measurement
+        endianness: little
+        mask: "FFFF0000000000000000000000000000000000000000000000000000\
+          0000000000000000000000000000"
+        mapping:
+          - scale: 10
+      - id: 114
+        optional: true
+        type: base64
+        name: available
+        endianness: little
+        mask: "FF00000000000000000000000000000000000000000000000000000000\
+          00000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+            constraint: sensor
             conditions:
-              - dps_val: 0
-                invalid: true
+              - dps_val: 65535
+                value: false
   - entity: sensor
     name: Battery 5
     class: battery
     category: diagnostic
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: "FF000000000000000000000000000000000000000000000\
           00000000000000000000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -280,23 +408,22 @@ entities:
         endianness: little
         mask: "FF000000000000000000000000000000000000000000000\
           00000000000000000000000000000000000000000000000000000"
-        mapping:
-          - constraint: type
-            conditions:
-              - dps_val: 0
-                invalid: true
   - entity: sensor
     name: Temperature probe 6
     class: temperature
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: "FF000000000000000000000000000000000000000000\
           0000000000000000000000000000000000000000000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -309,23 +436,54 @@ entities:
           0000000000000000000000000000000000000000000000000000000"
         mapping:
           - scale: 10
-            constraint: type
+  - entity: sensor
+    name: Humidity probe 5
+    class: humidity
+    hidden: unavailable
+    dps:
+      - id: 114
+        optional: true
+        type: base64
+        name: sensor
+        unit: "%"
+        class: measurement
+        endianness: little
+        mask: "FFFF0000000000000000000000000000000000000000000000000000\
+          000000000000000000000000000000000000000000000000"
+        mapping:
+          - scale: 10
+      - id: 114
+        optional: true
+        type: base64
+        name: available
+        endianness: little
+        mask: "FF00000000000000000000000000000000000000000000000000000000\
+          0000000000000000000000000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
+            constraint: sensor
             conditions:
-              - dps_val: 0
-                invalid: true
+              - dps_val: 65535
+                value: false
   - entity: sensor
     name: Battery 6
     class: battery
     category: diagnostic
+    hidden: unavailable
     dps:
       - id: 114
         optional: true
         type: base64
-        name: type
-        persist: false
+        name: available
         endianness: little
         mask: "FF00000000000000000000000000000000000000000000000\
           00000000000000000000000000000000000000000000000000000"
+        mapping:
+          - dps_val: 0
+            value: false
+          - value: true
       - id: 114
         optional: true
         type: base64
@@ -334,8 +492,3 @@ entities:
         endianness: little
         mask: "FF00000000000000000000000000000000000000000000000000000000\
           00000000000000000000000000000000000000000000000000000000000000"
-        mapping:
-          - constraint: type
-            conditions:
-              - dps_val: 0
-                invalid: true