Home Assistant integration for local control of Duosida EV wall chargers. This integration communicates directly with your charger over your local network, without requiring cloud services.
- Local Control: Direct TCP communication with your charger (no cloud dependency)
- Auto-Discovery: Automatically finds chargers on your network
- Real-time Monitoring: Voltage, current, power, temperature, energy consumption
- Charging Control: Start/stop charging, set max current (6-32A)
- Configuration: LED brightness, direct mode (plug and charge)
- 3-Phase Support: Monitor all phases (L1, L2, L3)
All sensors update every 10 seconds (configurable).
| Sensor | Unit | Device Class | State Class | Description |
|---|---|---|---|---|
| Status | - | - | - | Current charger state (Available, Preparing, Charging, Cooling, SuspendedEV, Finished, Holiday) |
| CP Voltage | V | voltage | measurement | Control Pilot voltage (indicates connection state) |
| Voltage (L1) | V | voltage | measurement | Line 1 voltage |
| Voltage L2* | V | voltage | measurement | Line 2 voltage (3-phase chargers) |
| Voltage L3* | V | voltage | measurement | Line 3 voltage (3-phase chargers) |
| Current (L1) | A | current | measurement | Line 1 charging current |
| Current L2* | A | current | measurement | Line 2 charging current (3-phase chargers) |
| Current L3* | A | current | measurement | Line 3 charging current (3-phase chargers) |
| Power | W | power | measurement | Instantaneous power consumption |
| Temperature | °C | temperature | measurement | Charger station temperature |
| Session Energy | kWh | energy | total_increasing | Energy consumed in current charging session |
| Session Time | h | duration | measurement | Duration of current charging session |
| Total Energy | kWh | energy | total_increasing | Total lifetime energy consumption (integrated from power readings) |
| Model* | - | - | - | Charger model name |
| Manufacturer* | - | - | - | Manufacturer name |
| Firmware* | - | - | - | Firmware version |
*Disabled by default (enable in entity settings if needed)
| Entity | Description | Default State |
|---|---|---|
| Charging | Start/stop charging (reads actual charging state) | Off |
| Direct Mode | Plug-and-charge mode (auto-start when vehicle connected) | Unknown until set |
| Stop on Disconnect | Automatically stop session when vehicle disconnects | Unknown until set |
| Entity | Range | Step | Description | Default |
|---|---|---|---|---|
| Max Charging Current | 6-32 A | 1 A | Maximum allowed charging current | Unknown until set |
| LED Brightness* | 0, 1, 3 | - | Screen/LED brightness (0=off, 1=low, 3=high) | Unknown until set |
| Max Voltage* | 265-290 V | 1 V | Maximum voltage protection threshold | Unknown until set |
| Min Voltage* | 70-110 V | 1 V | Minimum voltage protection threshold | Unknown until set |
*Disabled by default (enable in entity settings if needed)
| Entity | Action | Description |
|---|---|---|
| Reset Total Energy | Resets counter | Reset the total energy counter to zero |
| Start Charging* | Sends start command | Start charging (alternative to switch) |
| Stop Charging* | Sends stop command | Stop charging (alternative to switch) |
*Disabled by default (enable in entity settings if needed)
- Open HACS in Home Assistant
- Click the three dots in the top right corner
- Select "Custom repositories"
- Add this repository URL:
https://github.com/americodias/duosida-ha - Select "Integration" as the category
- Click "Add"
- Search for "Duosida" and install
- Restart Home Assistant
- Copy the
custom_components/duosida_evfolder to your Home Assistant'scustom_componentsdirectory - Restart Home Assistant
- Go to Settings → Devices & Services
- Click Add Integration
- Search for "Duosida"
- Choose auto-discovery or manual configuration
- If manual, enter your charger's IP address
- Duosida EV wall charger on your local network
- Network access to TCP port 9988 on the charger
- Home Assistant 2023.1 or newer
- Duosida SmartChargePI single-phase 7.2 kW
| Feature | This Integration | Cloud Integration |
|---|---|---|
| Connection | Local TCP | Cloud API |
| Latency | Low (~10ms) | High (1-2s) |
| Internet Required | No | Yes |
| Privacy | Full control | Data in cloud |
| Reliability | High | Depends on cloud |
Automatically adjust charging current based on solar production:
automation:
- alias: "EV - Adjust charging to solar production"
trigger:
- platform: state
entity_id: sensor.solar_power
condition:
- condition: state
entity_id: switch.duosida_ev_charger_charging
state: "on"
action:
- service: number.set_value
target:
entity_id: number.duosida_ev_charger_max_charging_current
data:
value: >
{% set solar = states('sensor.solar_power') | float(0) %}
{% set current = (solar / 230) | round(0, 'floor') %}
{{ [6, [current, 32] | min] | max }}Start charging automatically during cheap electricity hours:
automation:
- alias: "EV - Start charging at off-peak"
trigger:
- platform: time
at: "23:00:00"
condition:
- condition: state
entity_id: binary_sensor.car_connected
state: "on"
action:
- service: switch.turn_on
target:
entity_id: switch.duosida_ev_charger_charging
- service: number.set_value
target:
entity_id: number.duosida_ev_charger_max_charging_current
data:
value: 32
- alias: "EV - Stop charging at peak hours"
trigger:
- platform: time
at: "07:00:00"
action:
- service: switch.turn_off
target:
entity_id: switch.duosida_ev_charger_chargingReduce charging current if charger gets too hot:
automation:
- alias: "EV - Reduce current on high temperature"
trigger:
- platform: numeric_state
entity_id: sensor.duosida_ev_charger_temperature
above: 60
action:
- service: number.set_value
target:
entity_id: number.duosida_ev_charger_max_charging_current
data:
value: 16
- service: notify.mobile_app
data:
title: "EV Charger Temperature Warning"
message: "Charging current reduced due to high temperature"
- alias: "EV - Restore current on normal temperature"
trigger:
- platform: numeric_state
entity_id: sensor.duosida_ev_charger_temperature
below: 50
action:
- service: number.set_value
target:
entity_id: number.duosida_ev_charger_max_charging_current
data:
value: 32The Total Energy sensor is automatically compatible with Home Assistant's Energy Dashboard. To add it:
- Go to Settings → Dashboards → Energy
- Click Add Consumption
- Select Duosida EV Charger Total Energy
- Save
The integration uses an "unknown-first" approach. Settings like LED brightness, direct mode, and voltage thresholds cannot be read from the charger, so they start as "Unknown" until you explicitly set them. Once set, the values are stored and persist across Home Assistant restarts.
- Session Energy: Reported by the charger, resets when you start a new charging session
- Total Energy: Calculated by integrating power over time, never resets automatically (like an odometer)
Use Total Energy for the Energy Dashboard and lifetime tracking. Use Session Energy to see how much a single charge consumed.
The charger hardware only supports brightness values of 0 (off), 1 (low), and 3 (high). Value 2 is not accepted by the charger's firmware.
- Use the auto-discovery feature when adding the integration
- Check your router's DHCP client list for "SmartChargePI"
- Use a network scanner app on your phone
Tip: Set a DHCP reservation in your router to keep the IP address stable.
Yes! This integration communicates directly with your charger over your local network. No internet connection is required.
Yes, both can control the charger simultaneously. However, settings changed in the app won't be reflected in Home Assistant (since the charger doesn't report them back).
Direct mode (also called plug-and-charge) automatically starts charging when you plug in your vehicle, without needing to start it manually via the app or Home Assistant.
Like other configuration settings, the charger doesn't report the current state. Once you set it via Home Assistant, the integration will remember and display the value you set.
Symptoms: Auto-discovery doesn't find your charger
Solutions:
- Ensure your charger and Home Assistant are on the same network (same subnet)
- Check that UDP ports 48890 and 48899 are not blocked by firewall
- Some routers block UDP broadcast - check router settings
- Try manual configuration with the charger's IP address instead
- Restart the charger and try discovery again
Symptoms: "Failed to connect" error during setup
Solutions:
- Verify the charger is powered on and connected to network
- Check that TCP port 9988 is accessible from Home Assistant
- Try pinging the charger IP from Home Assistant host:
ping <charger_ip> - Check firewall rules on your network
- Verify the device ID is correct (19 digits starting with "03")
- Try restarting the charger by power cycling it
Symptoms: All entities become unavailable
Solutions:
- Check the Home Assistant logs: Settings → System → Logs, filter for "duosida"
- Verify network connectivity to charger
- Check if charger is responding:
telnet <charger_ip> 9988 - Restart the integration: Settings → Devices & Services → Duosida → ⋮ → Reload
- If problem persists, restart Home Assistant
Symptoms: Sensor values frozen or not changing
Solutions:
- Check the scan interval setting (default is 10 seconds)
- Enable debug logging to see communication details:
logger: logs: custom_components.duosida_ev: debug
- Check Home Assistant logs for connection errors
- Verify charger is actually changing state (e.g., actually charging)
- Try reducing scan interval if network is slow
Symptoms: LED brightness, direct mode, etc. reset after HA restart
Solutions:
- Check that
.storage/duosida_ev.*file exists in your HA config directory - Ensure Home Assistant has write permissions to the
.storage/directory - Check logs for storage-related errors
- Try setting the value again and verify it persists
Symptoms: Integration fails to load after updating
Solutions:
- Clear browser cache (Ctrl+F5 or Cmd+Shift+R)
- Restart Home Assistant completely
- Check logs for errors
- Remove and re-add the integration if necessary (settings will be preserved if using same device ID)
Symptoms: Temperature sensor shows >60°C
Solutions:
- Ensure adequate ventilation around the charger
- Check if charger is in direct sunlight
- Reduce max charging current temporarily
- Consider using the temperature-based automation example above
- If temperature exceeds 80°C, stop charging and contact support
To enable detailed debug logging:
logger:
default: warning
logs:
custom_components.duosida_ev: debug
custom_components.duosida_ev.coordinator: debugThis will log all communication with the charger, helpful for troubleshooting connection issues.
If you can't resolve the issue:
- Enable debug logging (see above)
- Reproduce the problem
- Check logs: Settings → System → Logs
- Open an issue on GitHub with:
- Home Assistant version
- Integration version
- Charger model
- Relevant log entries
- Steps to reproduce
- Based on the duosida-ev Python library
- Inspired by jello1974/duosidaEV-home-assistant
MIT License - see LICENSE file