Quellcode durchsuchen

SmartSMB SMR006: add second variant with 8 byte phase info.

- add full fault code as extra attribute
- remove the unknown dps, as there appear to be multiple variants,
  which might not report these, or have incompatible types which we
  don't care about if they are unknown.
- make breaker_number optional
- dp 103 is Temperature
- add optional dp 15 as leakage current (maybe only some variants
  report this)

Split into two configs - one with the original 10 byte phase data, but
with correct decoding based on
https://github.com/tuya/tuya-home-assistant/issues/495
second with 8 byte phase data, also mentioned at that link.

Based on linked config from discussion #779
Jason Rumney vor 2 Jahren
Ursprung
Commit
eb28481d6d

+ 3 - 0
ACKNOWLEDGEMENTS.md

@@ -275,3 +275,6 @@ Further device support has been made with the assistance of users.  Please consi
 - [itn3rd77](https://github.com/itn3rd77) for contributing support for Stadler Form Karl/Karl Big humidifiers.
 - [itn3rd77](https://github.com/itn3rd77) for contributing support for Stadler Form Karl/Karl Big humidifiers.
 - [Mikey887](https://github.com/Mikey887) for contributing support for Catit Pixi Smart feeder.
 - [Mikey887](https://github.com/Mikey887) for contributing support for Catit Pixi Smart feeder.
 - [fcrozat](https://github.com/fcrozat) for contributing support for BLE connected Johgee water timers.
 - [fcrozat](https://github.com/fcrozat) for contributing support for BLE connected Johgee water timers.
+- [Doudou14](https://github.com/Doudou14) for contributing support for PC311-TY power meter, and French translation.
+- [ntrits](https://github.com/ntrits) for contributing support for 8 byte phase info variant of SmartSMB SMT-006 energy meter.
+

+ 2 - 1
DEVICES.md

@@ -202,10 +202,11 @@
 - CBI Astute smart controller breaker switch
 - CBI Astute smart controller breaker switch
 - Compteur digital electric (single phase)
 - Compteur digital electric (single phase)
 - eMylo EAI-90 smart meter
 - eMylo EAI-90 smart meter
+- PC311-TY 2 phase power clamp meter
 - PC321-TY 3 phase power clamp meter
 - PC321-TY 3 phase power clamp meter
 - PJ-1103 power clamp meter
 - PJ-1103 power clamp meter
 - SG600MD Smart Solar Inverter (also SG700MD, other SGxx0MD and SGxx0W models) sold under various brands
 - SG600MD Smart Solar Inverter (also SG700MD, other SGxx0MD and SGxx0W models) sold under various brands
-- SmartMCB SMT006 energy meter
+- SmartMCB SMT006 energy meter (10 byte and 8 byte phase info variants)
 - Taxnele circuit breaker and energy meter
 - Taxnele circuit breaker and energy meter
 - TOMPD-63LW energy meter circuit breaker
 - TOMPD-63LW energy meter circuit breaker
 - WDYK 2P63A energy meter
 - WDYK 2P63A energy meter

+ 31 - 27
custom_components/tuya_local/devices/smartmcb_smt006_energymeter.yaml

@@ -1,38 +1,21 @@
-name: SmartMCB SMT006 energy meter
+name: SmartMCB SMT006-10 energy meter
 products:
 products:
   - id: ntwmuj82anq1l92i
   - id: ntwmuj82anq1l92i
 primary_entity:
 primary_entity:
   entity: switch
   entity: switch
+  icon: "mdi:fuse"
+  name: Breaker
   dps:
   dps:
     - id: 16
     - id: 16
       type: boolean
       type: boolean
       name: switch
       name: switch
-    - id: 6
-      name: phase_a
-      type: base64
-      optional: true
-      force: true
+    - id: 9
+      type: bitfield
+      name: fault_code
     - id: 19
     - id: 19
       type: string
       type: string
       name: breaker_number
       name: breaker_number
-    - id: 101
-      type: integer
-      name: unknown_101
-    - id: 102
-      type: integer
-      name: unknown_102
-    - id: 103
-      type: integer
-      name: unknown_103
-    - id: 104
-      type: integer
-      name: unknown_104
-    - id: 105
-      type: boolean
-      name: unknown_105
-    - id: 106
-      type: boolean
-      name: unknown_106
+      optional: true
 secondary_entities:
 secondary_entities:
   - entity: sensor
   - entity: sensor
     name: Energy
     name: Energy
@@ -287,7 +270,7 @@ secondary_entities:
         optional: true
         optional: true
         unit: V
         unit: V
         mapping:
         mapping:
-          - mask: "FFFFFF0000000000000000"
+          - mask: "FFFF0000000000000000"
             scale: 10
             scale: 10
   - entity: sensor
   - entity: sensor
     name: Current A
     name: Current A
@@ -300,7 +283,7 @@ secondary_entities:
         optional: true
         optional: true
         unit: A
         unit: A
         mapping:
         mapping:
-          - mask: "000000FFFFFF0000000000"
+          - mask: "0000FFFFFF0000000000"
             scale: 1000
             scale: 1000
   - entity: sensor
   - entity: sensor
     name: Power A
     name: Power A
@@ -313,5 +296,26 @@ secondary_entities:
         optional: true
         optional: true
         unit: kW
         unit: kW
         mapping:
         mapping:
-          - mask: "000000000000FFFFFF0000"
+          - mask: "0000000000FFFFFF0000"
             scale: 1000
             scale: 1000
+  - entity: sensor
+    name: Temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 103
+        type: integer
+        name: sensor
+        unit: C
+        class: measurement
+  - entity: sensor
+    name: Leakage current
+    class: current
+    category: diagnostic
+    dps:
+      - id: 15
+        type: integer
+        name: sensor
+        unit: mA
+        class: measurement
+        optional: true

+ 322 - 0
custom_components/tuya_local/devices/smartmcb_smt006_energymeterv2.yaml

@@ -0,0 +1,322 @@
+name: SmartMCB SMT006-8 energy meter
+products:
+  - id: 3xhdofmeo6lgpvd5
+  - id: i5mqmxkho1vahdt2
+primary_entity:
+  entity: switch
+  icon: "mdi:fuse"
+  name: Breaker
+  dps:
+    - id: 16
+      type: boolean
+      name: switch
+    - id: 9
+      type: bitfield
+      name: fault_code
+    - id: 19
+      type: string
+      name: breaker_number
+      optional: true
+secondary_entities:
+  - entity: sensor
+    name: Energy
+    class: energy
+    dps:
+      - id: 1
+        type: integer
+        name: sensor
+        class: total_increasing
+        unit: kWh
+        mapping:
+          - scale: 100
+  - entity: binary_sensor
+    name: Short circuit
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 1
+            value: true
+  - entity: binary_sensor
+    name: Surge
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 2
+            value: true
+  - entity: binary_sensor
+    name: Overload
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 4
+            value: true
+  - entity: binary_sensor
+    name: Leakage current
+    class: safety
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 8
+            value: true
+  - entity: binary_sensor
+    name: High temperature
+    class: heat
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 16
+            value: True
+  - entity: binary_sensor
+    name: Fire
+    class: smoke
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 32
+            value: true
+  - entity: binary_sensor
+    name: High power
+    class: power
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 64
+            value: true
+  - entity: binary_sensor
+    name: Self test
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 128
+            value: true
+  - entity: binary_sensor
+    name: Overcurrent
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 256
+            value: true
+  - entity: binary_sensor
+    name: Unbalanced
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 512
+            value: true
+  - entity: binary_sensor
+    name: Overvoltage
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 1024
+            value: true
+  - entity: binary_sensor
+    name: Undervoltage
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 2048
+            value: true
+  - entity: binary_sensor
+    name: Phase fault
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 4096
+            value: true
+  - entity: binary_sensor
+    name: Outage
+    class: power
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: true
+          - dps_val: 8192
+            value: false
+  - entity: binary_sensor
+    name: Magnetism
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 16384
+            value: true
+  - entity: binary_sensor
+    name: Low credit
+    class: battery
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: false
+          - dps_val: 32768
+            value: true
+  - entity: binary_sensor
+    name: Credit
+    class: plug
+    category: diagnostic
+    dps:
+      - id: 9
+        type: bitfield
+        name: sensor
+        mapping:
+          - value: true
+          - dps_val: 65536
+            value: false
+  - entity: switch
+    name: Prepay
+    category: config
+    icon: "mdi:hand-coin"
+    dps:
+      - id: 11
+        type: boolean
+        name: switch
+  - entity: button
+    name: Energy reset
+    category: config
+    class: restart
+    dps:
+      - id: 12
+        type: boolean
+        name: button
+  - entity: sensor
+    name: Balance energy
+    category: diagnostic
+    icon: "mdi:home-lightning-bolt"
+    dps:
+      - id: 13
+        type: integer
+        name: sensor
+        unit: kWh
+        mapping:
+          - scale: 100
+  - entity: sensor
+    name: Voltage A
+    class: voltage
+    category: diagnostic
+    dps:
+      - id: 6
+        type: base64
+        name: sensor
+        optional: true
+        unit: V
+        mapping:
+          - mask: "FFFF000000000000"
+            scale: 10
+  - entity: sensor
+    name: Current A
+    class: current
+    category: diagnostic
+    dps:
+      - id: 6
+        type: base64
+        name: sensor
+        optional: true
+        unit: A
+        mapping:
+          - mask: "0000FFFFFF000000"
+            scale: 1000
+  - entity: sensor
+    name: Power A
+    class: power
+    category: diagnostic
+    dps:
+      - id: 6
+        type: base64
+        name: sensor
+        optional: true
+        unit: kW
+        mapping:
+          - mask: "0000000000FFFFFF"
+            scale: 1000
+  - entity: sensor
+    name: Temperature
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 103
+        type: integer
+        name: sensor
+        unit: C
+        class: measurement
+  - entity: sensor
+    name: Leakage current
+    class: current
+    category: diagnostic
+    dps:
+      - id: 15
+        type: integer
+        name: sensor
+        unit: mA
+        class: measurement
+        optional: true