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

Add support for Voldt 8-13A EV charger (#4968)

* Copy `junsun_ev_charger` to `voldt_ev_charger`, add manufacturer and model

* Adjust Voldt YAML to match recorded DPs

* Add product ID to Voldt device config

* Fix power scale, remove duplicate measurement

* Changes based on data model

* Fix scale

* Suggested changes

* Revert incorrect heading change

* Revert addition of non-version controlled file

Adding uv.lock to git will only force frequent updates of the repository for no reason other than updates to dependencies of dependencies.

* Add refresh button

* fix(DEVICES.md): typo in reverted heading

- fix device details of added device

---------

Co-authored-by: Jason Rumney <make-all@users.noreply.github.com>
Ferdia McKeogh 2 дней назад
Родитель
Сommit
26db803ed2
2 измененных файлов с 263 добавлено и 3 удалено
  1. 4 3
      DEVICES.md
  2. 259 0
      custom_components/tuya_local/devices/voldt_ev_charger.yaml

+ 4 - 3
DEVICES.md

@@ -227,7 +227,7 @@
 - Powerworld PW040, PWS58330, PWS58410 air+water heat pumps
 - Rinnai Enviroflo heat pump water heater
 - Sanden GAU-A45HPD WiFi heat pump controller
-- Shuangri SR223 solar water heating controller 
+- Shuangri SR223 solar water heating controller
 - Sime EcoMaxi VB200 heat pump water heater
 - SolarEast (Adlar Castra) Aurora II heat pump
 - Tauclima DGN-250 heat pump water heater
@@ -678,7 +678,7 @@
 - Zemismart ZMAi-90 smart switch energy meter
 - ZM-Wi-Fi smart meter
 
-### Battery Charger
+### Battery Chargers
 
 - Absina Wallbox EV charger (also sold as Dé Wallbox and supporting 16, 32, 40 and 50A single and 3-phase variants)
 - ADPOW GO-B6 Pro-32A EV charger
@@ -707,6 +707,7 @@
 - Tary TA-AC380/22 EV charger
 - Tera W01 EV charger
 - Vevor Level 2, portable 7kW and 3.7kW EV chargers
+- Voldt 8-13A EV charger
 - Wada Power Q8 EV charger
 - WOUEJ 22kW EV charger
 
@@ -944,7 +945,7 @@ of device.
 - Avatto curtain switch
 - Avatto roller blind controller
 - Benexmart blind motor
-- BobYun Tech gatePro gate opener 
+- BobYun Tech gatePro gate opener
 - CCB-11 blind controller
 - CC curtain controller 1
 - CST WB V1 cover switch with backlight

+ 259 - 0
custom_components/tuya_local/devices/voldt_ev_charger.yaml

@@ -0,0 +1,259 @@
+name: EV charger
+products:
+  - id: skbzo8y3ud2htya4
+    manufacturer: Voldt
+    model: 8-13A
+
+entities:
+  - entity: sensor
+    class: energy
+    dps:
+      - id: 1
+        type: integer
+        name: sensor
+        force: true
+        unit: kWh
+        class: total
+        mapping:
+          - scale: 100
+
+  - entity: sensor
+    class: enum
+    translation_key: status
+    icon: "mdi:ev-station"
+    dps:
+      - id: 3
+        type: string
+        name: sensor
+        mapping:
+          - dps_val: charger_free
+            value: available
+          - dps_val: charger_insert
+            value: plugged_in
+          - dps_val: charger_free_fault
+            value: fault_unplugged
+          - dps_val: charger_wait
+            value: waiting
+          - dps_val: charger_charging
+            value: charging
+          - dps_val: charger_pause
+            value: paused
+          - dps_val: charger_end
+            value: charged
+          - dps_val: charger_fault
+            value: fault
+      - id: 22
+        type: string
+        optional: true
+        name: software_version
+      - id: 23
+        type: string
+        optional: true
+        name: hardware_version
+
+  - entity: number
+    name: Set current
+    category: config
+    icon: "mdi:ev-plug-type2"
+    dps:
+      - id: 4
+        type: integer
+        name: value
+        unit: A
+        # only accepted values are 8, 10, and 13 amps
+        range:
+          min: 8
+          max: 13
+
+  - entity: sensor
+    class: voltage
+    dps:
+      - id: 6
+        type: base64
+        name: sensor
+        optional: true
+        unit: V
+        mask: "FFFF000000000000"
+        mapping:
+          - scale: 10
+  - entity: sensor
+    class: current
+    dps:
+      - id: 6
+        type: base64
+        name: sensor
+        optional: true
+        unit: A
+        mask: "000000FFFF000000"
+        mapping:
+          - scale: 1000
+  # Better to use the public power DP?
+  # - entity: sensor
+  #   class: power
+  #   dps:
+  #     - id: 6
+  #       type: base64
+  #       name: sensor
+  #       optional: true
+  #       unit: kW
+  #       mask: "000000000000FFFF"
+  #       mapping:
+  #         - scale: 1000
+
+  - entity: sensor
+    class: power
+    dps:
+      - id: 9
+        type: integer
+        name: sensor
+        unit: kW
+        class: measurement
+        mapping:
+          - scale: 1000
+
+  - entity: binary_sensor
+    class: problem
+    category: diagnostic
+    dps:
+      - id: 10
+        type: bitfield
+        name: sensor
+        mapping:
+          - dps_val: 0
+            value: false
+          - dps_val: null
+            value: false
+          - value: true
+      - id: 10
+        type: bitfield
+        name: fault_code
+      - id: 10
+        type: bitfield
+        name: description
+        mapping:
+          - dps_val: null
+            value: "No data"
+          - dps_val: 0
+            value: "Ready"
+          - dps_val: 1
+            value: "Overcurrent fault"
+          - dps_val: 2
+            value: "Secondary overcurrent fault"
+          - dps_val: 4
+            value: "Overvoltage fault"
+          - dps_val: 8
+            value: "Undervoltage alarm"
+          - dps_val: 16
+            value: "Contactor adhesion"
+          - dps_val: 32
+            value: "Contactor fault"
+          - dps_val: 64
+            value: "Earth fault"
+          - dps_val: 128
+            value: "Meter hardware alarm"
+          - dps_val: 256
+            value: "Scram fault"
+          - dps_val: 512
+            value: "CP fault"
+          - dps_val: 1024
+            value: "Meter communication fault"
+          - dps_val: 2048
+            value: "Card reader fault"
+          - dps_val: 4096
+            value: "Short circuit fault"
+          - dps_val: 8192
+            value: "Adhesion fault"
+          - dps_val: 16384
+            value: "Self test alarm"
+          - dps_val: 32768
+            value: "Leakage current fault"
+          - dps_val: 65536
+            value: "PCB over temperature"
+
+  - entity: select
+    translation_key: charging_mode
+    icon: "mdi:ev-station"
+    dps:
+      - id: 14
+        type: string
+        name: option
+        mapping:
+          - dps_val: charge_now
+            value: immediate
+          - dps_val: charge_pct
+            value: charge_to_percent
+          - dps_val: charge_energy
+            value: fixed_charge
+          - dps_val: charge_schedule
+            value: scheduled_charge
+          - dps_val: charge_delay
+            value: delayed_charge
+  # "Remaining available power"
+  # - entity: sensor
+  #   name: Balance energy
+  #   dps:
+  #     - id: 15
+  #       type: integer
+  #       optional: true
+  #       name: sensor
+  #       unit: kWh
+  #       class: total_increasing
+  #       mapping:
+  #         - scale: 100
+  # - entity: switch
+  #   icon: "mdi:ev-station"
+  #   name: Clear energy
+  #   dps:
+  #     - id: 16
+  #       type: boolean
+  #       name: switch
+  # - entity: sensor
+  #   name: Charge energy
+  #   dps:
+  #     - id: 17
+  #       type: integer
+  #       optional: true
+  #       name: sensor
+  #       unit: kWh
+  #       class: total_increasing
+  #       mapping:
+  #         - scale: 100
+  - entity: switch
+    icon: "mdi:ev-station"
+    dps:
+      - id: 18
+        type: boolean
+        name: switch
+  - entity: sensor
+    class: temperature
+    category: diagnostic
+    dps:
+      - id: 24
+        type: integer
+        name: sensor
+        unit: C
+        class: measurement
+  - entity: sensor
+    name: Last charge
+    dps:
+      - id: 25
+        type: integer
+        name: sensor
+        unit: kWh
+        class: measurement
+        mapping:
+          - scale: 100
+  - entity: button
+    name: Refresh
+    icon: "mdi:refresh"
+    category: config
+    dps:
+      - id: 27
+        type: string
+        optional: true
+        name: button
+        mapping:
+          - dps_val: offline
+            value: false
+          - dps_val: online
+            value: true