Sfoglia il codice sorgente

feat (devices): add support for Ipengen GO-E31-16A EV charger

Issue #3847
Jason Rumney 3 mesi fa
parent
commit
5c08b8c8cf

+ 1 - 0
ACKNOWLEDGEMENTS.md

@@ -1086,3 +1086,4 @@ Further device support has been made with the assistance of users. Please consid
 - [jeppesens](https://github.com/jeppesens) for contributing support for Woods MRD25GW.
 - [slowrie23](https://github.com/slowrie23) for assisting with support for RecTeq RT-B380X Bullseye Deluxe grill.
 - [cihancelikkk](https://github.com/cihancelikkk) for assisting with support for Moes WHT-S01 thermostat.
+- [Macrisu](https://github.com/Macrisu) for assisting with support for Ipengen GO-E31-15A EV charger.

+ 1 - 0
DEVICES.md

@@ -560,6 +560,7 @@
 - EcoPoint EV charger
 - EVSun EV charger
 - Feyree EV charger (several models)
+- Ipengen GO-E31-16A EV charger
 - Kolanky 3.6kW EV charger
 - MakeSkyBlue MPPT solar battery charger
 - Nine 32A EV charger

+ 495 - 0
custom_components/tuya_local/devices/ipengen_goe3116a_evcharger.yaml

@@ -0,0 +1,495 @@
+name: EV charger
+products:
+  - id: 8yxnucwmjpt9jr16
+    manufacturer: Ipengen
+    model: GO-E31-16A
+entities:
+  - entity: sensor
+    class: energy
+    dps:
+      - id: 1
+        type: integer
+        optional: true
+        name: sensor
+        unit: kWh
+        class: total_increasing
+        mapping:
+          - scale: 100
+  - entity: number
+    name: Charging current
+    class: current
+    dps:
+      - id: 4
+        type: integer
+        optional: true
+        name: value
+        unit: A
+        range:
+          min: 8
+          max: 16
+  - entity: sensor
+    translation_key: voltage_x
+    translation_placeholders:
+      x: A
+    class: voltage
+    category: diagnostic
+    dps:
+      - id: 6
+        type: base64
+        optional: true
+        mask: "FFFF000000000000"
+        name: sensor
+        unit: V
+        class: measurement
+        mapping:
+          - scale: 10
+      - id: 109
+        type: integer
+        optional: true
+        name: volt_a
+  - entity: sensor
+    class: current
+    translation_key: current_x
+    translation_placeholders:
+      x: A
+    category: diagnostic
+    dps:
+      - id: 6
+        type: base64
+        optional: true
+        mask: "0000FFFFFF000000"
+        name: sensor
+        unit: A
+        class: measurement
+        mapping:
+          - scale: 1000
+      - id: 103
+        type: integer
+        optional: true
+        name: a_current
+        mapping:
+          - scale: 10
+  - entity: sensor
+    class: power
+    translation_key: power_x
+    translation_placeholders:
+      x: A
+    category: diagnostic
+    dps:
+      - id: 6
+        type: base64
+        optional: true
+        mask: "0000000000FFFFFF"
+        name: sensor
+        unit: kW
+        class: measurement
+        mapping:
+          - scale: 1000
+  - entity: sensor
+    translation_key: voltage_x
+    translation_placeholders:
+      x: B
+    class: voltage
+    category: diagnostic
+    dps:
+      - id: 7
+        type: base64
+        optional: true
+        mask: "FFFF000000000000"
+        name: sensor
+        unit: V
+        class: measurement
+        mapping:
+          - scale: 10
+      - id: 104
+        type: integer
+        optional: true
+        name: voltb
+  - entity: sensor
+    class: current
+    translation_key: current_x
+    translation_placeholders:
+      x: B
+    category: diagnostic
+    dps:
+      - id: 7
+        type: base64
+        optional: true
+        mask: "0000FFFFFF000000"
+        name: sensor
+        unit: A
+        class: measurement
+        mapping:
+          - scale: 1000
+      - id: 106
+        type: integer
+        optional: true
+        name: b_current
+        mapping:
+          - scale: 10
+  - entity: sensor
+    class: power
+    translation_key: power_x
+    translation_placeholders:
+      x: B
+    category: diagnostic
+    dps:
+      - id: 7
+        type: base64
+        optional: true
+        mask: "0000000000FFFFFF"
+        name: sensor
+        unit: kW
+        class: measurement
+        mapping:
+          - scale: 1000
+  - entity: sensor
+    translation_key: voltage_x
+    translation_placeholders:
+      x: C
+    class: voltage
+    category: diagnostic
+    dps:
+      - id: 8
+        type: base64
+        optional: true
+        mask: "FFFF000000000000"
+        name: sensor
+        unit: V
+        class: measurement
+        mapping:
+          - scale: 10
+      - id: 105
+        type: integer
+        optional: true
+        name: cvolt
+  - entity: sensor
+    class: current
+    translation_key: current_x
+    translation_placeholders:
+      x: C
+    category: diagnostic
+    dps:
+      - id: 8
+        type: base64
+        optional: true
+        mask: "0000FFFFFF000000"
+        name: sensor
+        unit: A
+        class: measurement
+        mapping:
+          - scale: 1000
+      - id: 107
+        type: integer
+        optional: true
+        name: c_current
+        mapping:
+          - scale: 10
+  - entity: sensor
+    class: power
+    translation_key: power_x
+    translation_placeholders:
+      x: C
+    category: diagnostic
+    dps:
+      - id: 8
+        type: base64
+        optional: true
+        mask: "0000000000FFFFFF"
+        name: sensor
+        unit: kW
+        class: measurement
+        mapping:
+          - scale: 1000
+  - entity: sensor
+    class: power
+    category: diagnostic
+    dps:
+      - id: 9
+        type: integer
+        optional: true
+        name: sensor
+        unit: kW
+        class: measurement
+        mapping:
+          - scale: 1000
+      - id: 108
+        type: integer
+        optional: true
+        name: abc_power
+        mapping:
+          - scale: 1000
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 10
+        type: bitfield
+        optional: true
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - dps_val: null
+            value: false
+          - value: true
+      - id: 10
+        type: bitfield
+        optional: true
+        name: fault_code
+  - entity: sensor
+    translation_key: status
+    class: enum
+    icon: "mdi:ev-plug-ccs2"
+    category: diagnostic
+    dps:
+      - id: 13
+        type: string
+        optional: true
+        name: sensor
+        mapping:
+          - dps_val: controlpi_12v
+            value: available
+          - dps_val: controlpi_12v_pwm
+            value: monitor
+          - dps_val: controlpi_9v
+            value: starting
+          - dps_val: controlpi_9v_pwm
+            value: plugged_in
+          - dps_val: controlpi_6v
+            value: waiting
+          - dps_val: controlpi_6v_pwm
+            value: charging
+          - dps_val: controlpi_error
+            value: fault
+      - id: 3
+        # may be a better indicator of status, but undocumented numeric
+        type: string
+        optional: true
+        name: work_state
+      - id: 118
+        # another candidate that has undocumented numeric 0-8 values
+        type: string
+        optional: true
+        name: status
+  - entity: number
+    name: Fixed charge
+    category: config
+    class: energy_storage
+    dps:
+      - id: 17
+        type: integer
+        optional: true
+        name: value
+        unit: kWh
+        range:
+          min: 0
+          max: 2000000
+        mapping:
+          - scale: 100
+  - entity: switch
+    icon: "mdi:ev-station"
+    dps:
+      - id: 18
+        type: boolean
+        optional: true
+        name: switch
+  - entity: text
+    name: Schedule
+    category: config
+    icon: "mdi:calendar-clock"
+    hidden: true
+    dps:
+      - id: 19
+        type: base64
+        optional: true
+        name: value
+  - entity: sensor
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 24
+        type: integer
+        optional: true
+        name: sensor
+        unit: C
+        class: measurement
+  - entity: sensor
+    name: Last charge
+    icon: "mdi:car-electric"
+    category: diagnostic
+    dps:
+      - id: 25
+        type: integer
+        optional: true
+        name: sensor
+        unit: kWh
+        class: measurement
+        mapping:
+          - scale: 100
+  - entity: number
+    name: Delayed charge
+    class: duration
+    translation_key: timer
+    category: config
+    dps:
+      - id: 28
+        type: integer
+        optional: true
+        name: value
+        unit: h
+        range:
+          min: 0
+          max: 15
+  - entity: text
+    name: Preset settings
+    category: config
+    icon: "mdi:cogs"
+    hidden: true
+    dps:
+      - id: 33
+        type: base64
+        optional: true
+        name: value
+  - entity: select
+    name: Preset
+    icon: "mdi:ev-station"
+    category: config
+    dps:
+      - id: 101
+        type: string
+        optional: true
+        name: option
+        mapping:
+          - dps_val: mode_1
+            value: Mode 1
+          - dps_val: mode_2
+            value: Mode 2
+          - dps_val: mode_3
+            value: Mode 3
+          - dps_val: mode_4
+            value: Mode 4
+          - dps_val: mode_5
+            value: Mode 5
+          - dps_val: mode_6
+            value: Mode 6
+          - dps_val: mode_7
+            value: Mode 7
+          - dps_val: mode_8
+            value: Mode 8
+  - entity: sensor
+    class: voltage
+    category: diagnostic
+    dps:
+      - id: 102
+        type: integer
+        optional: true
+        name: sensor
+        unit: V
+        class: measurement
+        mapping:
+          - scale: 10
+  - entity: sensor
+    name: Runtime
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 110
+        type: integer
+        optional: true
+        name: sensor
+        unit: s
+        class: measurement
+  - entity: number
+    name: Charging duration
+    category: config
+    class: duration
+    dps:
+      - id: 111
+        type: integer
+        optional: true
+        name: value
+        unit: h
+        range:
+          min: 0
+          max: 12
+  - entity: number
+    name: Connection duration
+    category: config
+    class: duration
+    dps:
+      - id: 112
+        type: integer
+        optional: true
+        name: value
+        unit: h
+        range:
+          min: 0
+          max: 15
+  - entity: text
+    name: Timer synchronization
+    category: config
+    icon: "mdi:wrench-clock"
+    hidden: true
+    dps:
+      - id: 113
+        type: string
+        optional: true
+        name: value
+  - entity: sensor
+    translation_key: time_remaining
+    class: duration
+    category: diagnostic
+    dps:
+      - id: 114
+        type: integer
+        name: sensor
+        unit: s
+        class: measurement
+  - entity: number
+    name: Ready time
+    category: config
+    class: duration
+    dps:
+      - id: 115
+        type: integer
+        optional: true
+        name: value
+        unit: min
+        range:
+          min: 0
+          max: 9999
+  - entity: switch
+    name: Charge
+    category: config
+    dps:
+      - id: 116
+        type: string
+        optional: true
+        name: switch
+        mapping:
+          - dps_val: "0"
+            value: false
+          - dps_val: "1"
+            value: true
+  - entity: number
+    name: Appointment
+    category: config
+    class: duration
+    dps:
+      - id: 117
+        type: integer
+        optional: true
+        name: value
+        unit: h
+        range:
+          min: 0
+          max: 15
+  - entity: switch
+    name: Swipe enable
+    category: config
+    dps:
+      - id: 119
+        type: boolean
+        optional: true
+        name: switch