Procházet zdrojové kódy

Add support for PJ-1103A Dual Channel Smart Meter (#4454)

* Add support for PJ-1103A Dual Channel Smart Meter

Product: https://www.aliexpress.com/item/1005005000000000000.html

Cloud DPS:
[{"id": 1, "name": "total_forward_energy", "type": "Integer", "format": "{\"unit\":\"kW·h\",\"min\":0,\"max\":99999999,\"scale\":2,\"step\":1}", "enumMap": {}}, {"id": 2, "name": "total_reverse_energy", "type": "Integer", "format": "{\"unit\":\"kW·h\",\"min\":0,\"max\":99999999,\"scale\":2,\"step\":1}", "enumMap": {}}, {"id": 101, "name": "voltage_a", "type": "Integer", "format": "{\"unit\":\"V\",\"min\":0,\"max\":5000,\"scale\":1,\"step\":1}", "enumMap": {}}, {"id": 102, "name": "current_a", "type": "Integer", "format": "{\"unit\":\"A\",\"min\":0,\"max\":1000,\"scale\":2,\"step\":1}", "enumMap": {}}, {"id": 103, "name": "power_a", "type": "Integer", "format": "{\"unit\":\"W\",\"min\":0,\"max\":100000,\"scale\":1,\"step\":1}", "enumMap": {}}, {"id": 104, "name": "power_b", "type": "Integer", "format": "{\"unit\":\"W\",\"min\":-100000,\"max\":100000,\"scale\":1,\"step\":1}", "enumMap": {}}, {"id": 105, "name": "current_b", "type": "Integer", "format": "{\"unit\":\"A\",\"min\":0,\"max\":1000,\"scale\":2,\"step\":1}", "enumMap": {}}, {"id": 106, "name": "voltage_b", "type": "Integer", "format": "{\"unit\":\"V\",\"min\":0,\"max\":5000,\"scale\":1,\"step\":1}", "enumMap": {}}, {"id": 107, "name": "power_factor_a", "type": "Integer", "format": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":2,\"step\":1}", "enumMap": {}}, {"id": 108, "name": "power_factor_b", "type": "Integer", "format": "{\"unit\":\"%\",\"min\":0,\"max\":100,\"scale\":2,\"step\":1}", "enumMap": {}}, {"id": 109, "name": "frequency", "type": "Integer", "format": "{\"unit\":\"Hz\",\"min\":4500,\"max\":6500,\"scale\":2,\"step\":1}", "enumMap": {}}, {"id": 110, "name": "switch_a", "type": "Boolean", "format": "{}", "enumMap": {}}, {"id": 111, "name": "switch_b", "type": "Boolean", "format": "{}", "enumMap": {}}, {"id": 112, "name": "alarm_a", "type": "Integer", "format": "{}", "enumMap": {}}, {"id": 113, "name": "alarm_b", "type": "Integer", "format": "{}", "enumMap": {}}]

Device ID: bff05c08176488ef7d4dst
Protocol: 3.5

* feat (pj1103a_dual_channel_meter): remove product specific name

Name under products is not really recommended unless there is a significant difference, and this one was almost identical to the top level name.

PR #4454

---------

Co-authored-by: thepkc <deathwolf@gmail.com>
Co-authored-by: Jason Rumney <make-all@users.noreply.github.com>
thepkc před 3 dny
rodič
revize
4241fdb698

+ 428 - 0
custom_components/tuya_local/devices/pj1103a_dual_channel_meter.yaml

@@ -0,0 +1,428 @@
+name: Dual channel energy meter
+products:
+  - id: qqb5tzcb1qarf0s3
+    manufacturer: PJ
+    model: PJ-1103A
+entities:
+  - entity: sensor
+    translation_key: energy_consumed
+    class: energy
+    dps:
+      - id: 1
+        type: integer
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: sensor
+    translation_key: energy_produced
+    class: energy
+    dps:
+      - id: 2
+        type: integer
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: sensor
+    class: power
+    name: Total power
+    category: diagnostic
+    dps:
+      - id: 9
+        type: integer
+        name: sensor
+        unit: W
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: sensor
+    translation_key: energy_consumed_x
+    translation_placeholders:
+      x: A
+    class: energy
+    category: diagnostic
+    dps:
+      - id: 56
+        type: integer
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: sensor
+    translation_key: energy_consumed_x
+    translation_placeholders:
+      x: B
+    class: energy
+    category: diagnostic
+    dps:
+      - id: 57
+        type: integer
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: sensor
+    translation_key: energy_produced_x
+    translation_placeholders:
+      x: A
+    class: energy
+    category: diagnostic
+    dps:
+      - id: 59
+        type: integer
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: sensor
+    translation_key: energy_produced_x
+    translation_placeholders:
+      x: B
+    class: energy
+    category: diagnostic
+    dps:
+      - id: 60
+        type: integer
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: sensor
+    class: voltage
+    category: diagnostic
+    dps:
+      - id: 101
+        type: integer
+        name: sensor
+        unit: V
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: sensor
+    class: current
+    translation_key: current_x
+    translation_placeholders:
+      x: A
+    category: diagnostic
+    dps:
+      - id: 102
+        type: integer
+        name: sensor
+        unit: A
+        class: measurement
+        mapping:
+          - scale: 1000
+  - entity: sensor
+    class: current
+    translation_key: current_x
+    translation_placeholders:
+      x: B
+    category: diagnostic
+    dps:
+      - id: 103
+        type: integer
+        name: sensor
+        unit: A
+        class: measurement
+        mapping:
+          - scale: 1000
+  - entity: sensor
+    class: power
+    translation_key: power_x
+    translation_placeholders:
+      x: A
+    category: diagnostic
+    dps:
+      - id: 104
+        type: integer
+        name: sensor
+        unit: W
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: sensor
+    class: power
+    translation_key: power_x
+    translation_placeholders:
+      x: B
+    category: diagnostic
+    dps:
+      - id: 105
+        type: integer
+        name: sensor
+        unit: W
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: sensor
+    class: power_factor
+    name: Power factor A
+    category: diagnostic
+    dps:
+      - id: 106
+        type: integer
+        name: sensor
+        class: measurement
+        mapping:
+          - scale: 100
+  - entity: sensor
+    class: power_factor
+    name: Power factor B
+    category: diagnostic
+    dps:
+      - id: 107
+        type: integer
+        name: sensor
+        class: measurement
+        mapping:
+          - scale: 100
+  - entity: number
+    name: Power setting A
+    category: config
+    class: power
+    dps:
+      - id: 108
+        type: integer
+        name: value
+        unit: W
+        optional: true
+        range:
+          min: 200
+          max: 20000
+        mapping:
+          - step: 100
+  - entity: number
+    name: Power setting B
+    category: config
+    class: power
+    dps:
+      - id: 109
+        type: integer
+        name: value
+        unit: W
+        optional: true
+        range:
+          min: 200
+          max: 20000
+        mapping:
+          - step: 100
+  - entity: binary_sensor
+    name: Power alarm A
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 110
+        type: boolean
+        name: sensor
+  - entity: binary_sensor
+    name: Power alarm B
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 111
+        type: boolean
+        name: sensor
+  - entity: sensor
+    name: Forward energy A hour
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 112
+        type: integer
+        name: sensor
+        unit: kWh
+        class: measurement
+        mapping:
+          - scale: 100
+  - entity: sensor
+    name: Forward energy B hour
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 113
+        type: integer
+        name: sensor
+        unit: kWh
+        class: measurement
+        mapping:
+          - scale: 100
+  - entity: sensor
+    name: Forward energy total hour
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 114
+        type: integer
+        name: sensor
+        unit: kWh
+        class: measurement
+        mapping:
+          - scale: 100
+  - entity: sensor
+    name: Reverse energy A hour
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 115
+        type: integer
+        name: sensor
+        unit: kWh
+        class: measurement
+        mapping:
+          - scale: 100
+  - entity: sensor
+    name: Reverse energy B hour
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 116
+        type: integer
+        name: sensor
+        unit: kWh
+        class: measurement
+        mapping:
+          - scale: 100
+  - entity: sensor
+    name: Reverse energy total hour
+    category: diagnostic
+    hidden: true
+    dps:
+      - id: 117
+        type: integer
+        name: sensor
+        unit: kWh
+        class: measurement
+        mapping:
+          - scale: 100
+  - entity: sensor
+    translation_key: energy_consumed_x
+    translation_placeholders:
+      x: "A total"
+    class: energy
+    category: diagnostic
+    dps:
+      - id: 118
+        type: integer
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: sensor
+    translation_key: energy_produced_x
+    translation_placeholders:
+      x: "A total"
+    class: energy
+    category: diagnostic
+    dps:
+      - id: 119
+        type: integer
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: sensor
+    translation_key: energy_consumed_x
+    translation_placeholders:
+      x: "B total"
+    class: energy
+    category: diagnostic
+    dps:
+      - id: 120
+        type: integer
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: sensor
+    translation_key: energy_produced_x
+    translation_placeholders:
+      x: "B total"
+    class: energy
+    category: diagnostic
+    dps:
+      - id: 121
+        type: integer
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: number
+    name: Voltage calibration
+    category: config
+    class: voltage
+    dps:
+      - id: 122
+        type: integer
+        name: value
+        optional: true
+        unit: V
+        range:
+          min: -50
+          max: 50
+  - entity: number
+    name: Current A calibration
+    category: config
+    class: current
+    dps:
+      - id: 123
+        type: integer
+        name: value
+        optional: true
+        unit: A
+        range:
+          min: -200
+          max: 200
+        mapping:
+          - scale: 1000
+  - entity: number
+    name: Current B calibration
+    category: config
+    class: current
+    dps:
+      - id: 124
+        type: integer
+        name: value
+        optional: true
+        unit: A
+        range:
+          min: -200
+          max: 200
+        mapping:
+          - scale: 1000
+  - entity: number
+    name: Power A calibration
+    category: config
+    class: power
+    dps:
+      - id: 125
+        type: integer
+        name: value
+        optional: true
+        unit: W
+        range:
+          min: -50
+          max: 50
+  - entity: number
+    name: Power B calibration
+    category: config
+    class: power
+    dps:
+      - id: 126
+        type: integer
+        name: value
+        optional: true
+        unit: W
+        range:
+          min: -50
+          max: 50