English | 🇺🇦 Українська
Full local control and monitoring for Eveus EV chargers: charging controls, current electrical measurements, charging costs, EV battery SOC estimates, schedules, safety notices, and automation-ready entities — no template sensors needed.
- Documentation: https://abovsh.github.io/eveus/
- Discussion: Home Assistant Community thread
- Issues: github.com/ABovsh/eveus/issues
The integration talks to the charger directly over your LAN via its HTTP API — it works even when the internet is down. Everything the charger knows becomes a native Home Assistant entity.
Jump to: Highlights · Installation · Setup · Safety notices · Entity IDs · Events & Device Triggers · Dashboard · Energy Dashboard · Troubleshooting
Everything the charger measures, updated on every poll:
- Voltage, current, power and the active current-limit setpoint
- Per-phase voltage and current on 3-phase setups
- Box and plug temperatures, ground status, backup-battery voltage
Session Energy, Total Energy, and two resettable counters (A/B), each with a running cost. Costs come from the charger's own meter, so Session Cost stays correct even when the tariff switches mid-session (e.g. night→day at 07:00). All tariff rates are exposed as sensors.
Pick Advanced mode and get battery SOC as native sensors — no helpers to create by hand:
- SOC % and SOC energy (kWh) — estimated battery level while charging
- Time to Target SOC and Charging Finish Time — when charging will be done
- Energy / Cost to Target SOC — what's left to deliver and what it will cost
- Inputs (initial SOC, target SOC, battery capacity, efficiency loss) are plain
numberentities you can set from any dashboard or automation - Optionally point the integration at your car's own SOC sensor and Initial SOC fills itself in once per plug-in
Pick Basic if you only want charging control. Switch modes anytime via Configure.
Stop a session automatically — every limit the charger supports, set straight from Home Assistant, each with its own enable switch plus a master Limit: disable all:
- Time, Energy and Cost limits — stop by session duration, delivered kWh, or session cost
- Stop at Target SOC (Advanced mode) — Limit: SOC enabled halts charging when the car reaches your target battery level
- Per-schedule caps — each schedule slot gets its own current and energy limit
- One master switch suspends every limit at once without losing the values
The charger can protect weak house wiring by lowering the charging current when mains voltage sags. The integration exposes this fully:
- Adaptive Mode selector — pick Off / Voltage / Auto / Power to match the charger's own modes
- Adaptive Charging sensor — see which adaptive mode is active
- Adaptive Current Limit sensor — the cap the charger chose
- Undervoltage threshold — set the Voltage-mode trigger voltage (210–220 V) from HA
- Two on-device schedule slots — enable switches, native HH:MM time pickers, and summary sensors; charging windows live on the charger, so they survive HA restarts
The signals automations actually need, as first-class entities:
Car ConnectedandSession Activebinary sensors for triggersCharging Finish Timeas a realtimestamp— works with countdown cards and time-based automationsSession Cost, schedule controls,Connection Quality— no template sensors to maintain- Device triggers for charging started/finished, error, and car connected/disconnected — pick them straight from the automation UI, no YAML needed
- Bus events (
eveus_charging_started,eveus_charging_finished,eveus_error,eveus_car_connected,eveus_car_disconnected) for automations that need the full event payload — see Events & Device Triggers
A single switch connects the charger to its OCPP backend (used by the Grizzl-E Connect mobile app), and a binary sensor shows the live connection state. While OCPP is on, a Repairs notice reminds you that the backend may override Charging Current, limits, and schedules — and how to switch back to full local control.
English and Ukrainian translations ship in the box; Home Assistant picks the user's language automatically.
Add as many Eveus chargers as you have; each gets its own device and entities.
- Adaptive polling — fast while charging, relaxed when idle, and a quick follow-up burst whenever the charger changes state on its own (a schedule kicks in, a session starts from the charger UI or OCPP)
- Quiet offline handling — a powered-off charger doesn't spam your logs, and it reappears in HA within a minute of being switched back on
- Honest controls — every command is confirmed against the charger; failures raise a visible HA error instead of silently pretending
- Guided recovery — a changed password opens a re-authentication flow (and isn't mislabeled as "charger offline"); broken connection settings surface as a fixable Repairs issue
- Safe diagnostics — downloads redact credentials and identifying fields, so they're safe to attach to a GitHub issue
Your charger already protects itself — this integration makes those protections visible and actionable in Home Assistant. Each condition raises a clear Repairs notice (English and Ukrainian):
- Missing ground, or ground protection turned off
- Overheating — early warning at 80 °C, before the charger shuts down at 85 °C
- Current leakage above 30 mA
- Charger protection faults (relay, pilot, overcurrent, voltage, GFCI self-test, …)
- Low backup battery (CR2032)
A dedicated Ground Protection switch manages the charger's missing-ground shutdown from HA. Confirmation counting and recovery hysteresis make sure one glitchy reading never raises a false alarm.
See Safety notices for the full list of conditions and recommended actions.
| Requirement | Details |
|---|---|
| Home Assistant | 2025.1 or newer |
| Charger | Eveus 16A, 32A, 40A, or 48A charger reachable from Home Assistant |
| Charger firmware | Verified on R3.05.x; older firmware (R3.01.x, and firmware 1.x with some fields unavailable) is supported — updating to the latest firmware is still recommended, see Older charger firmware |
| Network | Local LAN access to the charger HTTP API |
| Setup details | Charger IP/hostname or URL, username, password, model |
The integration is in the HACS default store — no custom repository needed.
Or manually:
- Open HACS and search for Eveus EV Charger.
- Install it.
- Restart Home Assistant.
- Copy
custom_components/eveusinto your Home Assistantcustom_components/directory. - Restart Home Assistant.
- Go to Settings → Devices & Services → Add Integration and search for Eveus EV Charger.
- Enter the charger address — IP, hostname, or full URL (custom port,
http://, andhttps://all work). - Enter the username and password. These are the charger's own web-interface credentials, not your Home Assistant login.
- Pick the charger model: 16A, 32A, 40A, or 48A. Pick the one that matches your hardware — a mismatch stops the charger from reporting.
- Pick the integration mode:
- Basic — charging control and monitoring only.
- Advanced — adds the SOC inputs and SOC/ETA sensors.
- Advanced only: a second screen asks for your EV's battery capacity (kWh) and charging efficiency loss (%). Both can be changed later from the entities themselves.
Changing things later:
- Configure — switch between Basic and Advanced, and optionally pick a car SOC sensor (see Filling Initial SOC from your car). Switching to Advanced for the first time shows the same battery-capacity screen as setup.
- Reconfigure — change host, credentials, model, or phase count without reinstalling.
Dangerous and configuration conditions surface through Home Assistant Settings → Devices & Services → Repairs, each with a plain-language message (English and Ukrainian). Recoverable safety notices clear themselves automatically once the condition is resolved; serious incidents stay visible until you press Ignore, then reset after recovery so a future separate incident can alert again.
| Notice | When it appears | What to do |
|---|---|---|
| Ground is missing | The charger reports a grounding fault or repeatedly reports no ground, independently of the Ground Protection switch | Stop charging and have the grounding checked by a qualified electrician; clears automatically after stable grounding returns |
| Ground protection is disabled | The charger repeatedly reports that ground protection is turned off, independently of whether ground is currently connected | Turn on the Ground Protection switch — the charger is allowed to charge without a confirmed ground while it is off |
| Box or plug overheating | The charger reports an overheat fault, or a sustained temperature at/above 80 °C (early warning before the charger stops at 85 °C) | Stop using the charger, let it cool, and contact the charger manufacturer's support if it repeats |
| Current leakage (GFCI) | The charger reports a leakage fault or sustained leakage above its 30 mA threshold | Stop using the charger and contact the charger manufacturer's support |
| Charger protection fault | Relay, pilot, diode, overcurrent, low/high voltage, GFCI self-test, interface-timeout, or software fault reported by the charger | Stop or avoid charging and contact the charger manufacturer's support |
| Charger error with unknown cause | The charger is in the Error state but the fault code is missing or not recognized, for several consecutive polls | Check the fault on the charger's own display or app, power-cycle the charger, and update its firmware if the error keeps recurring; clears once the fault ends and you press Ignore |
| Charger backup battery is low | The charger's internal CR2032 coin-cell reads low for several polls | Replace it with a fresh, good-quality CR2032 cell |
| Notice | When it appears | What to do |
|---|---|---|
| Charger setup needs attention | Stored connection details are incomplete or invalid | Open the repair and re-enter the charger details (fixable in place) |
| OCPP is enabled | OCPP is on, so the OCPP server or mobile app may override HA controls | Turn off the Connect to OCPP switch to restore full HA control |
| Charger clock is off | The charger clock differs from Home Assistant by more than 10 minutes for several polls, so schedules and tariff windows may mistime | Check the Time Zone select, then press the Sync Time button; the notice clears once the clocks agree |
| Update SOC cards and automations | Legacy input_number.ev_* helpers are still present |
Switch dashboards/automations to the native number.eveus_ev_charger_* entities |
The tables below show default entity IDs for the first charger named Eveus EV Charger. Home Assistant may add suffixes if you rename entities or add multiple chargers. Unique IDs are stable, so your history and dashboard cards survive normal updates.
Show entities
| Entity ID | Type | What it gives you |
|---|---|---|
sensor.eveus_ev_charger_state |
Sensor | Main charger state, such as standby, charging, complete, or error. enum device class — automation state triggers offer a dropdown of all possible values |
sensor.eveus_ev_charger_substate |
Sensor | Detailed charger substate or error label. enum device class — same dropdown behavior |
sensor.eveus_ev_charger_not_charging_reason |
Sensor | Why charging is not running right now, in one value — cable not connected, waiting for the car, a limit reached, waiting for a schedule, and so on. Reads Controlled by OCPP while the OCPP switch is on, since the backend or mobile app decides when a session starts. enum device class; in the error state the fault name is in the error attribute (modern firmware) |
binary_sensor.eveus_ev_charger_car_connected |
Binary sensor | Vehicle is electrically connected |
binary_sensor.eveus_ev_charger_session_active |
Binary sensor | Charging session is active or paused |
binary_sensor.eveus_ev_charger_ocpp_connected |
Binary sensor | Reported OCPP connection state (diagnostic) |
number.eveus_ev_charger_charging_current |
Number | Current limit slider with model-aware bounds |
number.eveus_ev_charger_limit_time |
Number | Limit: Time session limit (min) |
number.eveus_ev_charger_limit_energy |
Number | Limit: Energy session limit (kWh) |
number.eveus_ev_charger_limit_cost |
Number | Limit: Cost session limit (UAH) |
select.eveus_ev_charger_minimum_voltage |
Select | Minimum voltage undervoltage threshold (150–200 V) |
switch.eveus_ev_charger_stop_charging |
Switch | Stop/allow charging from the charger side |
switch.eveus_ev_charger_one_charge |
Switch | Enable one-charge mode |
switch.eveus_ev_charger_ground_protection |
Switch | Enable or disable the charger's missing-ground shutdown protection. Turning it off lets charging continue without a detected ground |
switch.eveus_ev_charger_connect_to_ocpp |
Switch | Connect the charger to the OCPP backend (used by the Grizzl-E Connect mobile app). While on, a Repairs warning explains that Charging Current, limits, and schedule may be overridden by the backend, and how to turn OCPP back off |
switch.eveus_ev_charger_limit_time_enabled |
Switch | Limit: Time enabled |
switch.eveus_ev_charger_limit_energy_enabled |
Switch | Limit: Energy enabled |
switch.eveus_ev_charger_limit_cost_enabled |
Switch | Limit: Cost enabled |
switch.eveus_ev_charger_limit_disable_all |
Switch | Limit: disable all |
switch.eveus_ev_charger_limit_soc_enabled |
Switch | Limit: SOC enabled (Advanced mode only) |
button.eveus_ev_charger_force_refresh |
Button | Poll the charger immediately |
The charger natively enforces the Time, Energy, and Cost session limits: set a value, then turn on its enabled switch. Limit: disable all is the master switch that suspends all of them. Limit: SOC enabled is enforced by the integration in Advanced mode: when the car reaches Target SOC, the integration issues the normal Stop Charging command and fires the eveus_soc_limit_reached event with device_number, soc, and target_soc in its payload.
You can route that event to your own notification automation:
automation:
- alias: Eveus SOC limit reached
triggers:
- trigger: event
event_type: eveus_soc_limit_reached
actions:
- action: notify.notify
data:
message: "Eveus reached target SOC: {{ trigger.event.data.soc }}%"Show entities
| Entity ID | Unit | What it gives you |
|---|---|---|
sensor.eveus_ev_charger_voltage |
V | Line voltage |
sensor.eveus_ev_charger_current |
A | Charging current |
sensor.eveus_ev_charger_power |
W | Charging power |
sensor.eveus_ev_charger_current_set |
A | Charger current setpoint |
sensor.eveus_ev_charger_current_phase_2 |
A | Phase 2 current when Phases = 3 |
sensor.eveus_ev_charger_current_phase_3 |
A | Phase 3 current when Phases = 3 |
sensor.eveus_ev_charger_voltage_phase_2 |
V | Phase 2 voltage when Phases = 3 |
sensor.eveus_ev_charger_voltage_phase_3 |
V | Phase 3 voltage when Phases = 3 |
Show entities
| Entity ID | Unit | What it gives you |
|---|---|---|
sensor.eveus_ev_charger_session_time |
Sensor | Elapsed duration of the current charging session |
sensor.eveus_ev_charger_session_energy |
kWh | Energy delivered in the current session |
sensor.eveus_ev_charger_total_energy |
kWh | Lifetime energy counter |
sensor.eveus_ev_charger_counter_a_energy |
kWh | Resettable energy counter A |
sensor.eveus_ev_charger_counter_b_energy |
kWh | Resettable energy counter B |
sensor.eveus_ev_charger_session_cost |
UAH | Current session cost from the charger |
sensor.eveus_ev_charger_counter_a_cost |
UAH | Cost accumulated on counter A |
sensor.eveus_ev_charger_counter_b_cost |
UAH | Cost accumulated on counter B |
sensor.eveus_ev_charger_primary_rate_cost |
UAH/kWh | Primary tariff |
sensor.eveus_ev_charger_active_rate_cost |
UAH/kWh | Currently active tariff |
sensor.eveus_ev_charger_rate_2_cost |
UAH/kWh | Rate 2 price |
sensor.eveus_ev_charger_rate_3_cost |
UAH/kWh | Rate 3 price |
sensor.eveus_ev_charger_rate_2_status |
Sensor | Whether Rate 2 schedule is enabled |
sensor.eveus_ev_charger_rate_3_status |
Sensor | Whether Rate 3 schedule is enabled |
sensor.eveus_ev_charger_last_session_energy |
kWh | Energy delivered by the most recently finished session; keeps its value across restarts and while the charger is offline |
sensor.eveus_ev_charger_last_session_cost |
UAH | Cost of the most recently finished session |
sensor.eveus_ev_charger_last_session_duration |
Sensor | Duration of the most recently finished session |
Each Last Session sensor is populated when a session finishes and carries reason and finished_at attributes.
Advanced mode creates four native input numbers. Older input_number.ev_* helpers are no longer read.
Show entities
| Entity ID | Unit | Range | Default | What it gives you |
|---|---|---|---|---|
number.eveus_ev_charger_initial_soc |
% | 0-100, step 1 | 20 | Battery SOC at the start of the current charging session |
number.eveus_ev_charger_target_soc |
% | 0-100, step 5 | 80 | Target SOC for ETA calculations |
number.eveus_ev_charger_battery_capacity |
kWh | 10-160, step 1 | 50 | EV battery capacity |
number.eveus_ev_charger_soc_correction |
% | 0-20, step 0.5 | 7.5 | Charging loss correction |
sensor.eveus_ev_charger_soc_energy |
kWh | - | - | Estimated energy currently in the EV battery |
sensor.eveus_ev_charger_soc_percent |
% | - | - | Estimated battery percentage |
sensor.eveus_ev_charger_time_to_target_soc |
Sensor | - | - | Human-readable ETA to target SOC |
sensor.eveus_ev_charger_charging_finish_time |
Timestamp | - | - | Absolute finish time for automations and timestamp cards |
sensor.eveus_ev_charger_energy_to_target_soc |
kWh | - | - | Grid energy still needed to reach Target SOC (charging losses included) |
sensor.eveus_ev_charger_cost_to_target_soc |
UAH | - | - | Forecast cost of reaching Target SOC at the active tariff rate |
Migration from old helpers is intentionally simple: replace the prefix input_number.ev_ with number.eveus_ev_charger_ in cards and automations. For example, input_number.ev_initial_soc becomes number.eveus_ev_charger_initial_soc.
SOC uses the charger's native sessionEnergy value. The charger resets this value on every new plug-in, so continuous charging sessions survive Home Assistant restarts without a synthetic baseline. If you unplug and later resume charging, update number.eveus_ev_charger_initial_soc to the current battery percentage before the next session starts.
If another integration exposes your car's battery level, Eveus can read it instead of you moving the Initial SOC slider before every charge. Nothing else changes: SOC Percent, SOC Energy and the target/ETA sensors are still calculated from Initial SOC plus the charger's own energy meter.
Setting it up
Pick the sensor during setup on the SOC Monitoring Setup screen, or later under Settings → Devices & Services → Eveus EV Charger → Configure. It has to be a sensor with device class battery and unit % — the picker only lists those, so if yours is missing, it lacks that device class. Advanced mode only. Leave it empty (the default) and nothing changes.
When it reads the car
Once per plug-in, at the start of charging. If the car is asleep then — normal with a departure timer or a cheap-tariff window — it keeps trying on every poll until a reading arrives, subtracting whatever energy has already gone into the car so a late reading gives the same result as an immediate one. Once a reading lands, the sensor is not consulted again until you unplug.
A plug-in is not a charge. Pause and resume, stop and restart, let the car finish and top up again, ride out a fault the charger recovers from — to the charger that is all one session and its energy meter keeps running through it. Initial SOC stays put and every SOC figure stays right. Only unplugging starts a new one.
Your own value always wins. Move the slider by hand and it stays until the next plug-in — including across a Home Assistant restart, or saving the integration's options mid-charge.
Seeing which value is in use. SOC Percent carries a soc_anchor attribute naming how Initial SOC was last set — the reading and sensor it was seeded from, why a seed could not be taken, or set manually. A stale anchor is what silently skews every SOC figure, so this makes it visible.
If nothing gets filled in
Check the log. One line per plug-in names the sensor and the reason (the sensor reads 'unavailable', the charger did not report session energy, …). Download diagnostics shows the same under soc, plus what the car sensor reads right now. With no sensor configured, none of this runs and nothing is logged.
Show entities
| Entity ID | Type | What it gives you |
|---|---|---|
select.eveus_ev_charger_adaptive_mode |
Select | Adaptive mode: Off / Voltage / Auto / Power |
sensor.eveus_ev_charger_adaptive_charging |
Sensor | Active adaptive mode (Off / Voltage / Auto / Power) |
sensor.eveus_ev_charger_adaptive_current_limit |
A | Current cap selected by adaptive mode |
number.eveus_ev_charger_undervoltage_threshold |
V | Undervoltage threshold — Voltage-mode trigger (210–220 V) |
switch.eveus_ev_charger_schedule_1_enabled |
Switch | Enable or disable schedule slot 1 |
time.eveus_ev_charger_schedule_1_start |
Time | Schedule 1 start time |
time.eveus_ev_charger_schedule_1_stop |
Time | Schedule 1 stop time |
number.eveus_ev_charger_schedule_1_current_limit |
A | Schedule 1 Current limit |
switch.eveus_ev_charger_schedule_1_current_limit_enabled |
Switch | Schedule 1 Current limit enabled |
number.eveus_ev_charger_schedule_1_energy_limit |
kWh | Schedule 1 Energy limit |
switch.eveus_ev_charger_schedule_1_energy_limit_enabled |
Switch | Schedule 1 Energy limit enabled |
sensor.eveus_ev_charger_schedule_1 |
Sensor | Schedule 1 summary and attributes |
switch.eveus_ev_charger_schedule_2_enabled |
Switch | Enable or disable schedule slot 2 |
time.eveus_ev_charger_schedule_2_start |
Time | Schedule 2 start time |
time.eveus_ev_charger_schedule_2_stop |
Time | Schedule 2 stop time |
number.eveus_ev_charger_schedule_2_current_limit |
A | Schedule 2 Current limit |
switch.eveus_ev_charger_schedule_2_current_limit_enabled |
Switch | Schedule 2 Current limit enabled |
number.eveus_ev_charger_schedule_2_energy_limit |
kWh | Schedule 2 Energy limit |
switch.eveus_ev_charger_schedule_2_energy_limit_enabled |
Switch | Schedule 2 Energy limit enabled |
sensor.eveus_ev_charger_schedule_2 |
Sensor | Schedule 2 summary and attributes |
Each schedule has its own current and energy caps with separate enable switches.
Show entities
| Entity ID | Unit | What it gives you |
|---|---|---|
sensor.eveus_ev_charger_connection_quality |
% | Recent polling success, latency, and health attributes |
sensor.eveus_ev_charger_ground |
Sensor | Ground status |
sensor.eveus_ev_charger_time_drift |
s | Charger local clock vs Home Assistant local time (0 = in sync; a steady ±3600 means a wrong Time Zone or DST mismatch) |
sensor.eveus_ev_charger_box_temperature |
°C | Charger body temperature |
sensor.eveus_ev_charger_plug_temperature |
°C | Plug temperature |
sensor.eveus_ev_charger_battery_voltage |
V | Charger backup battery voltage |
sensor.eveus_ev_charger_leakage_current |
mA | Current leakage reading |
sensor.eveus_ev_charger_leakage_current_peak |
mA | Peak leakage reading |
sensor.eveus_ev_charger_wifi_signal |
dBm | Charger Wi-Fi signal |
select.eveus_ev_charger_time_zone |
Select | Charger time-zone offset, -12 to +14 |
button.eveus_ev_charger_sync_time |
Button | Push Home Assistant time to the charger |
button.eveus_ev_charger_reset_counter_a |
Button | Reset counter A |
button.eveus_ev_charger_reset_counter_b |
Button | Reset counter B |
The integration fires events on the Home Assistant event bus for charger state transitions. Every payload includes device_number:
| Event | Fires when | Extra payload fields |
|---|---|---|
eveus_charging_started |
A charging session begins | — |
eveus_charging_finished |
A charging session ends | reason (complete, unplugged, stopped, or paused), session_energy_kwh, session_cost, session_duration_s |
eveus_error |
The charger enters the error state | error_code, error_text |
eveus_car_connected |
The car is electrically connected | — |
eveus_car_disconnected |
The car is disconnected | — |
eveus_charging_finished's energy/cost/duration fields are a snapshot taken from the last poll while the session was still alive, so the values survive the charger resetting its own counters at session end — they can lag the true final value by up to one poll interval. Transitions that happen while the charger is unreachable, or while Home Assistant is down, are deliberately silent — you won't see a false event after reconnecting or restarting.
Each event also has a matching device trigger: in the automation UI, choosing the Eveus device offers "Charging started", "Charging finished", "Error occurred", "Car connected", and "Car disconnected" as ready-made triggers — no YAML needed.
For automations that need the event payload, trigger on the event directly:
automation:
- alias: Eveus session summary
triggers:
- trigger: event
event_type: eveus_charging_finished
actions:
- action: notify.notify
data:
message: >-
Session finished ({{ trigger.event.data.reason }}):
{{ trigger.event.data.session_energy_kwh }} kWh,
{{ trigger.event.data.session_cost }} UAHA complete, ready-to-paste Lovelace Sections view that exposes every Eveus entity ships at docs/dashboard.yaml (v1.2).
Requirements: the mini-graph-card HACS frontend plugin (for the two graph cards). Every other card is built-in.
Language: the view ships in two interchangeable files — docs/dashboard.yaml (English) and docs/dashboard-uk.yaml (Ukrainian, identical layout). Home Assistant does not translate dashboard labels automatically, so each file carries its own labels; the entity IDs are identical, so you can switch files anytime without touching history or automations.
3-phase setups: add sensor.eveus_ev_charger_current_phase_2/_3 and …_voltage_phase_2/_3 to the Status section — those sensors exist only when Phases = 3.
Important
docs/dashboard.yaml is a whole dashboard view, not a single card. Don't try to add it through "Add Card → Manual" — that expects one card and will error on this file. It must go into a dashboard's raw configuration under views:, as described below.
Install (step by step):
-
Go to Settings → Dashboards. Either open an existing dashboard or click + Add Dashboard → New dashboard from scratch to create a fresh one (recommended, so it lives on its own).
-
Open the dashboard, then click the pencil / ✏️ Edit button (top right).
-
Click the ⋮ (three dots) → Raw configuration editor.
-
You'll see YAML that starts with
views:. Copy the entire contents ofdocs/dashboard.yaml(ordocs/dashboard-uk.yamlfor the Ukrainian version) and paste it as a new list item underviews:, like this:views: - title: Eveus # ← the whole docs/dashboard.yaml goes here, indented under views: path: eveus type: sections sections: - ...
If the dashboard is brand new and empty, you can replace everything in the editor with:
views: - <paste docs/dashboard.yaml here, indented two spaces under the "- ">
-
Click Save, then close the editor. The Eveus view appears as a new tab.
If your device slug differs from eveus_ev_charger (e.g. you renamed the charger or have several), find-and-replace eveus_ev_charger with your slug, or fix each entity with Home Assistant's entity picker after pasting.
Track EV charging in Home Assistant's Energy Dashboard in two minutes:
- Go to Settings → Dashboards → Energy.
- Under Individual devices, click Add device.
- Pick
sensor.eveus_ev_charger_total_energyand save.
Charging now shows up as its own bar in the energy views, including
per-day/month history. Costs are already tracked by the integration itself —
see sensor.eveus_ev_charger_session_cost and the Counter A/B cost sensors,
which use the tariff configured on the charger (including night rates).
Two ready-made automations ship with the integration. Import either one from Settings → Automations & Scenes → Blueprints → Import Blueprint, paste the URL, then fill in the two or three fields it asks for — no YAML.
| Blueprint | What it does | URL |
|---|---|---|
| Charging session notification | Notifies on start and finish, with the session's energy, cost and duration, through the action of your choice | notify_session.yaml |
| Stop charging on low house battery | Stops the car with the charger's own Stop command — not by cutting its power — when your inverter's battery drops below a threshold. Fully local | stop_on_low_house_battery.yaml |
| Problem | What to check |
|---|---|
| Setup cannot connect | The setup dialog shows the reason in parentheses — e.g. Failed to connect to charger (HTTP 404) or (Connection error: TimeoutError). Check the charger is powered on, HA can reach the charger IP/hostname, credentials are correct, and the selected model matches the charger |
| Controls do not respond | Connection Quality, charger online state, credentials via Reconfigure, then wait one coordinator refresh |
| SOC sensors are missing | Set the integration mode to Advanced under Configure, then restart/reload the integration if just changed |
| SOC looks wrong after unplug/replug | Update number.eveus_ev_charger_initial_soc to the real battery percentage before starting the next session |
| Charger is powered off | This is normal. Polling backs off and the integration avoids log spam |
| A Repairs notice appeared | See Safety notices for what each one means and what to do |
| The charger is nowhere in Devices | See The charger does not appear after installing |
Work through these in order — all three are far more common than an actual fault:
- Installing from HACS does not add the integration. HACS only downloads the files, and it creates its own entry named Eveus EV Charger holding a single update entity — that entry is HACS, not your charger. After installing, restart Home Assistant, then go to Settings → Devices & Services → Add Integration and add Eveus EV Charger separately.
- Check the disabled integrations. A disabled entry vanishes from the device list entirely. On Settings → Devices & Services, scroll to the bottom of the Integrations tab and expand Disabled; re-enable the entry from there.
- Check the Integrations tab, not Devices. If setup fails, the entry exists but no device or entities are created yet — so it is invisible under Devices while the Eveus card on the Integrations tab shows Retrying setup. Open that card to see the reason, which also appears once in Settings → System → Logs.
A working charger creates roughly 85 entities. If you see a single update entity, you are looking at the HACS entry, not the integration.
Older firmware (R3.01.x has been reported) now sets up and works normally — setup accepts any responding charger, and chargers with an unset serial number that return garbage bytes are handled tolerantly. Updating is still recommended: message @energy_star on Telegram for the firmware files, then flash the update from the charger's web interface.
Firmware 1.x (EnergyStar V-series) also sets up and works, with some fields degraded: the firmware version is read from the charger's boot info instead of the usual field, and this firmware's own state codes are translated to the standard names (idle shows as Standby; Charging is detected while power is actually flowing). A code the integration doesn't recognize shows as Unknown, with the numeric code kept in the State sensor's raw_state attribute. Fields the firmware doesn't report at all (such as serial number, Substate, or OCPP status) stay unavailable rather than showing stale or wrong data.
If a charger still fails to set up, note the error shown in the setup dialog, find the integration's warning in the Home Assistant log (Settings → System → Logs — it contains the HTTP status, content type, and the first bytes of the charger's reply; no debug logging needed), and open a GitHub issue with your firmware version, the dialog error text, and that warning line. Hide anything sensitive first (your IP addresses, serial numbers).
The integration stores only the charger connection details needed by Home Assistant. Diagnostics downloads redact credentials and identifying fields before export. Charger communication stays on your LAN.
If this integration is useful to you, please ⭐ the repo — it helps others find it.
MIT.