Просмотр исходного кода

fix(powbay_jgqw01_breaker): correct decoding of phase_a packed data

Original implementation was copy paste from another config, but as documented in the
Query Things Data Model for the device, this device uses a V2 format with 18 bytes
(not quite well documented, as the docs say 15 bytes which omits the header and direction bits.

Byte 1: Version (02)
Byte 2: Length following (0F) = 15, seems to be 0 based or omitting the direction flags
Byte 3-4: Voltage (0.1V)
Byte 5-7: Current (0.001A)
Byte 8-10: Active power (0.001kW)
Byte 11-13: Reactive power (0.001kvar)
Byte 14-16: Apparent power (0.001kVA)
Byte 17: Power factor (0.01)
Byte 18: Direction flags (bit 1=current, 2=active power, 3=reactive power, 4=power factor)

Issue #5776
Jason Rumney 2 дней назад
Родитель
Сommit
8b12d78806
1 измененных файлов с 74 добавлено и 3 удалено
  1. 74 3
      custom_components/tuya_local/devices/powbay_jgqw01_breaker.yaml

+ 74 - 3
custom_components/tuya_local/devices/powbay_jgqw01_breaker.yaml

@@ -20,7 +20,7 @@ entities:
       - id: 6
       - id: 6
         type: base64
         type: base64
         optional: true
         optional: true
-        mask: "FFFF000000000000"
+        mask: "0000FFFF0000000000000000000000000000"
         name: sensor
         name: sensor
         unit: V
         unit: V
         class: measurement
         class: measurement
@@ -32,24 +32,95 @@ entities:
       - id: 6
       - id: 6
         type: base64
         type: base64
         optional: true
         optional: true
-        mask: "0000FFFFFF000000"
+        mask: "00000000FFFFFF0000000000000000000000"
         name: sensor
         name: sensor
         unit: A
         unit: A
         class: measurement
         class: measurement
         mapping:
         mapping:
           - scale: 1000
           - scale: 1000
+            constraint: direction
+            conditions:
+              - dps_val: 1
+                scale: -1000
+      - id: 6
+        type: base64
+        optional: true
+        mask: "000000000000000000000000000000000001"
+        name: direction
   - entity: sensor
   - entity: sensor
     class: power
     class: power
     dps:
     dps:
       - id: 6
       - id: 6
         type: base64
         type: base64
         optional: true
         optional: true
-        mask: "0000000000FFFFFF"
+        mask: "00000000000000FFFFFF0000000000000000"
         name: sensor
         name: sensor
         unit: kW
         unit: kW
         class: measurement
         class: measurement
         mapping:
         mapping:
           - scale: 1000
           - scale: 1000
+            constraint: direction
+            conditions:
+              - dps_val: 1
+                scale: -1000
+      - id: 6
+        type: base64
+        optional: true
+        mask: "000000000000000000000000000000000002"
+        name: direction
+  - entity: sensor
+    class: reactive_power
+    dps:
+      - id: 6
+        type: base64
+        optional: true
+        mask: "00000000000000000000FFFFFF0000000000"
+        name: sensor
+        unit: kvar
+        class: measurement
+        mapping:
+          - scale: 1000
+            constraint: direction
+            conditions:
+              - dps_val: 1
+                scale: -1000
+      - id: 6
+        type: base64
+        optional: true
+        mask: "000000000000000000000000000000000004"
+        name: direction
+  - entity: sensor
+    class: apparent_power
+    dps:
+      - id: 6
+        type: base64
+        optional: true
+        mask: "00000000000000000000000000FFFFFF0000"
+        name: sensor
+        unit: kVA
+        class: measurement
+        mapping:
+          - scale: 1000
+  - entity: sensor
+    class: power_factor
+    dps:
+      - id: 6
+        type: base64
+        optional: true
+        mask: "00000000000000000000000000000000FF00"
+        name: sensor
+        class: measurement
+        mapping:
+          - scale: 100
+            constraint: direction
+            conditions:
+              - dps_val: 1
+                scale: -100
+      - id: 6
+        type: base64
+        optional: true
+        mask: "000000000000000000000000000000000008"
+        name: direction
   - entity: binary_sensor
   - entity: binary_sensor
     class: problem
     class: problem
     category: diagnostic
     category: diagnostic