tmjo / charger-card

A lovelace card for electrical vehicle (EV) home chargers and charging robots.
MIT License
88 stars 57 forks source link

wallbox charger #36

Open avico78 opened 1 year ago

avico78 commented 1 year ago

It would be really awesome if can add some for wallbox charging station it has build in integration : https://www.home-assistant.io/integrations/wallbox/

tmjo commented 1 year ago

Hi,

Would be great! Shouldn't be a problem to implement it, but I won't personally spend time on studying the documentation. If you could give an overview of the sensors (and services if applicable), I may assist in creating a 'proof-of-concept' that you could further work on.

avico78 commented 1 year ago

Hi,

Would be great! Shouldn't be a problem to implement it, but I won't personally spend time on studying the documentation. If you could give an overview of the sensors (and services if applicable), I may assist in creating a 'proof-of-concept' that you could further work on.

@tmjo - great news, appreciate your help below are all wallbox entities couldn't find services

{% for state in states if (state.entity_id.find("wallbox") | int>=0) %}
{{state.entity_id }}
{% endfor %}

lock.wallbox_portal_locked_unlocked
number.wallbox_portal_max_charging_current
sensor.wallbox_portal_added_energy
sensor.wallbox_portal_added_range
sensor.wallbox_portal_charging_power
sensor.wallbox_portal_charging_speed
sensor.wallbox_portal_cost
sensor.wallbox_portal_current_mode
sensor.wallbox_portal_depot_price
sensor.wallbox_portal_discharged_energy
sensor.wallbox_portal_max_available_power
sensor.wallbox_portal_max_charging_current
sensor.wallbox_portal_state_of_charge
sensor.wallbox_portal_status_description
switch.wallbox_portal_pause_resume

please let me know if anything else is needed

AlteVerwischteZiege commented 1 year ago

Please allow me to second the request.

AlteVerwischteZiege commented 1 year ago

@avico78 After playing with the configuration posted with the Card, I have come to the conclusion that the most difficult part is deciding what data to display where - there is so much flexibility here. I am displaying a blend of information from the WallBox Pulsar Plus, the car and other sources - but my configuration is very much a work in process - I still have a ton of place holder " sensor.CHARGERNAME_' or "evsee" entries.


entity: sensor.wallbox_portal_status_description
customCardTheme: theme_custom
brand: WallBox
show_leds: true
details:
  name:
    entity_id: sensor.eva_plugged_in_to_evse
  status:
    entity_id: sensor.wallbox_portal_status_description
  currentlimits:
    - 0
    - 6
    - 10
    - 16
    - 20
    - 25
    - 32
    - 40
  statetext:
    Unplugged: Unplugged
    Scheduled: Scheduled
    Charging: Charging
    Waiting for car demand: Waiting for car demand
    error: error
    Ready: Ready
  collapsiblebuttons:
    group1:
      text: click_for_group1
      icon: mdi:speedometer
    group2:
      text: Click for Information
      icon: mdi:information
    group3:
      text: Click for Settings
      icon: mdi:cog
  info_left:
    - entity_id: switch.wallbox_portal_pause_resumee
      text: Pause/Resume
  info_right:
    - entity_id: sensor.wallbox_portal_depot_price
      text: Price per kWh
      unit_show: true
    - entity_id: number.wallbox_portal_max_charging_current
      text: Power (Amps)
      unit_show: true
  group1:
    - entity_id: sensor.wallbox_portal_charging_power
      text: dyn_charger_limit
      service: null
      service_data:
        charger_id: CHARGERID
        current: '#SERVICEVAL#'
    - entity_id: sensor.CHARGERNAME_dynamic_circuit_limit
      text: dyn_circuit_limit
      service: sensor.wallbox_portal_max_charging_current
      service_data:
        charger_id: CHARGERID
        currentP1: '#SERVICEVAL#'
    - entity_id: sensor.CHARGERNAME_max_charger_limit
      text: max_charger_limit
      service: number.wallbox_portal_max_charging_current
      service_data:
        charger_id: CHARGERID
        current: '#SERVICEVAL#'
    - entity_id: sensor.CHARGERNAME_max_circuit_limit
      text: max_circuit_limit
      service: sensor.wallbox_portal_max_available_power
      service_data:
        charger_id: CHARGERID
        currentP1: '#SERVICEVAL#'
    - entity_id: sensor.CHARGERNAME_offline_circuit_limit
      text: offline_circuit_limit
      service: null
      service_data:
        charger_id: CHARGERID
        currentP1: '#SERVICEVAL#'
  group2:
    - entity_id: sensor.CHARGERNAME_voltage
      text: voltage
      unit_show: true
    - entity_id: sensor.wallbox_portal_charging_power
      text: power
      unit_show: true
    - entity_id: sensor.wallbox_portal_charging_speed
      text: charger_current
      unit_show: true
    - entity_id: sensor.wallbox_portal_max_charging_current
      text: circuit_current
      unit_show: true
    - entity_id: sensor.CHARGERNAME_energy_per_hour
      text: energy_per_hour
      unit_show: true
    - entity_id: sensor.wallbox_portal_discharged_energy
      text: session_energy
      unit_show: true
  group3:
    - entity_id: lock.wallbox_portal_locked_unlocked
      text: enabled
    - entity_id: switch.CHARGERNAME_enable_idle_current
      text: idle_current
    - entity_id: binary_sensor.CHARGERNAME_cable_locked
      text: cable_locked
    - entity_id: switch.CHARGERNAME_cable_locked_permanently
      text: perm_cable_locked
    - entity_id: switch.CHARGERNAME_smart_charging
      text: smart_charging
    - entity_id: sensor.CHARGERNAME_cost_per_kwh
      text: cost_per_kwh
    - entity_id: binary_sensor.CHARGERNAME_update_available
      text: update_available
    - entity_id: binary_sensor.CHARGERNAME_basic_schedule
      text: schedule
  stats:
    default:
      - entity_id: sensor.wallbox_portal_charging_power
        text: Charge Draw
        unit_show: true
      - entity_id: sensor.wallbox_est_added_range_mi
        text: Added Range
      - entity_id: sensor.fordpass_elveh
        text: Range
    disconnected:
      - entity_id: sensor.wallbox_portal_max_available_power
        text: output_limit
        unit_show: true
      - entity_id: sensor.wallbox_portal_discharged_energy
        text: session_energy
        unit_show: true
      - entity_id: lock.wallbox_portal_locked_unlocked
        text: cable_locked
      - entity_id: calculated
        text: used_limit
        unit: A
        unit_show: true
        calc_function: min
        calc_entities:
          - entity_id: sensor.CHARGERNAME_dynamic_charger_limit
          - entity_id: sensor.CHARGERNAME_dynamic_circuit_limit
          - entity_id: sensor.CHARGERNAME_max_charger_limit
          - entity_id: sensor.CHARGERNAME_max_circuit_limit
          - entity_id: sensor.CHARGERNAME_offline_circuit_limit
    awaiting_start:
      - entity_id: sensor.wallbox_portal_discharged_energy
        text: session_energy
        unit_show: true
      - entity_id: binary_sensor.CHARGERNAME_basic_schedule
        text: schedule
      - entity_id: switch.wallbox_portal_pause_resume
        text: smart_charging
      - entity_id: calculated
        text: used_limit
        unit: A
        unit_show: true
        calc_function: min
        calc_entities:
          - entity_id: sensor.wallbox_portal_charging_power
          - entity_id: sensor.wallbox_portal_charging_speed
          - entity_id: number.wallbox_portal_max_charging_current
          - entity_id: sensor.wallbox_portal_max_charging_current
          - entity_id: number.wallbox_portal_max_charging_current
    Charging:
      - entity_id: sensor.eva_charge_complete
        text: Session End
        unit_show: true
      - entity_id: number.wallbox_portal_max_charging_current
        text: Charge Speed
        unit: A
        unit_show: true
      - entity_id: sensor.wallbox_portal_charging_power
        text: Charge Draw
        unit_show: true
      - entity_id: sensor.wallbox_est_added_range_mi
        text: session_energy
        unit_show: true
      - entity_id: sensor.wallbox_portal_added_energy
        text: Charged
        unit_show: true
    Waiting for car demand:
      - entity_id: sensor.wallbox_portal_added_energy
        text: Session energy
        unit_show: true
      - entity_id: sensor.eva_cost_last_charge
        text: CostLast Charge
        unit: $
        unit_show: true
      - entity_id: sensor.fordpass_elveh
        text: Currnt Range
        unit: mi
        unit_show: true
    error:
      - entity_id: sensor.wallbox_portal_added_energy
        text: session_energy
        unit_show: true
    Scheduled:
      - entity_id: sensor.wallbox_portal_status_description
        text: Charger Status
      - entity_id: input_number.ev_charge_target
      - entity_id: sensor.eva_hv_state_of_charge
      - entity_id: calculated
        text: Charging Power
        unit: A
        unit_show: true
        calc_function: min
        calc_entities:
          - entity_id: sensor.wallbox_portal_max_available_power
          - entity_id: number.wallbox_portal_max_charging_current
      - entity_id: sensor.eva_charge_start
        text: Start Time
        unit_show: true
      - entity_id: sensor.eva_charge_complete
        text: Finished
        unit_show: true
  toolbar_left:
    default:
      - {}
    disconnected:
      - {}
    awaiting_start:
      - service: easee.stop
        service_data:
          charger_id: CHARGERID
        text: stop
        icon: hass:stop
      - service: easee.resume
        service_data:
          charger_id: CHARGERID
        text: resume
        icon: hass:play
      - service: easee.override_schedule
        service_data:
          charger_id: CHARGERID
        text: override
        icon: hass:motion-play
    charging:
      - service: easee.stop
        service_data:
          charger_id: CHARGERID
        text: stop
        icon: hass:stop
      - service: easee.pause
        service_data:
          charger_id: CHARGERID
        text: pause
        icon: hass:pause
    completed:
      - service: easee.stop
        service_data:
          charger_id: CHARGERID
        text: stop
        icon: hass:stop
      - service: easee.override_schedule
        service_data:
          charger_id: CHARGERID
        text: override
        icon: hass:motion-play
    error:
      - service: easee.reboot
        service_data:
          charger_id: CHARGERID
        text: reboot
        icon: hass:restart
    ready_to_charge:
      - service: easee.stop
        service_data:
          charger_id: CHARGERID
        text: stop
        icon: hass:stop
      - service: easee.override_schedule
        service_data:
          charger_id: CHARGERID
        text: override
        icon: hass:motion-play
  toolbar_right:
    default:
      - service: persistent_notification.create
        service_data:
          message: Firmware update is available, but only possible when disconnected!
          title: Update
        text: update
        icon: mdi:file-download
        conditional_entity: binary_sensor.CHARGERNAME_update_available
    disconnected:
      - service: easee.update_firmware
        service_data:
          charger_id: CHARGERID
        text: update
        icon: mdi:file-download
        conditional_entity: binary_sensor.CHARGERNAME_update_available
avico78 commented 1 year ago

wow looking absolutely great , thanks appreciate your help! is there an option to change the size/color of the led that indicate the station status? specifically between ideal mode ("Disconnected/Ready") to "Charging"? is possible to customize and change the charger picture to other model?

If u have plans to make this (great!) card more versatile and support more charger stations it could be really great if the card will be able to use different charger satiation templates ,

again thanks much for your efforts!

tmjo commented 1 year ago

Great, I will implement this as a template later (right now I need to fix the UI configurator for it to make sense).

Image can be changed by adding the customImageattribute (see readme for example), but there is currently no feature to adjust size of leds. They can be disabled though, by adding show_leds: false. Perhaps I can add something like a customLedImage in the future, but I won't promise anything :)

tmjo commented 1 year ago

Hi, working on a simple template for this to make it easy to set up. I see you have some sensors named eva_xxxx as opposed to the majority which are called wallbox_portal_xxxx. Is this something you've made yourself?

Reason for asking is that my idea is that the default templates works 'out-of-the-box' with the integrations, so in case there is something custom that's great, but not something we would want in the templates.

I see eva_xxxx is used for name, charging stat for session end, waiting for carm demand stat for cost_last_charge, scheduled stats for hv_state_of_carge + start time and charge complete.

Don't misunderstand me, if this is custom, I would do the same as you and it is indeed the purpose of having the card fully customizable, but I just want to keep the templates 'clean' so need to understand what is done.

tmjo commented 1 year ago

Also, there seems to be something fishy about the service calls. Does Wallbox provide services that you can call to, for instance, reduce max current and stuff? I see some of the config in your example seems to be from the Easee template, so I assume they will not work properly.

avico78 commented 1 year ago

@tmjo - the ev_ sensor i added us something can be ignore , it just predefine sensor that automatically setting up the charging station amperage . it is transparent so can be ignore .

But it would be great to have sliders where possible to adjust the station amperage .

One more thing i do think would be very useful is the visibility of some statistics of station connectivity , it just unbelievable how many time the station is getting disconnected .

Thanks much for working on this - I do believe such solution would become quite handy for EV car users. btw - do u know what is most popular charging station for Tesla? asking cause of the popularity of Tesla ...it might worth including a template for it .

of the statics for the charging station connectivity , it just unbelievable how many time the station get disconnected .

tmjo commented 1 year ago

Great, I'll make something based on the list you added in previous post. Let's see if it works, if not let's adjust. I note that there are some entities you did not include in your example, are they not interesting?

I agree on your comment about stability for disconnection. I, for one, am a strong believer in local communication and not depending on cloud which most chargers seem to do. The same with my Easee charger. But to add any statistic on it, we need a sensor that shows connected or disonnected. The Easee-integration has something, but it is really quite hacky and not very reliable.

tmjo commented 1 year ago

As for Tesla, I don't have a clue. I believe there are as many combinations as there are chargers more or less, but I know that the Tesla integration itself gives quite useful info that would leave the charger info less useful perhaps. See #37 for instance.

AlteVerwischteZiege commented 1 year ago

@tmjo 'I see you have some sensors named eva_xxxx as opposed to the majority which are called wallbox_portal_xxxx. Is this something you've made yourself?'

The sensors eva_xxxx are templated sensors from my FordPass integration - there are just some data points that I don't see as available thru the WallBox data set.

tmjo commented 1 year ago

@tmjo 'I see you have some sensors named eva_xxxx as opposed to the majority which are called wallbox_portal_xxxx. Is this something you've made yourself?'

The sensors eva_xxxx are templated sensors from my FordPass integration - there are just some data points that I don't see as available thru the WallBox data set.

Right, thanks! I saw now that it was your example.

avico78 commented 1 year ago

please ignore my comment for :

@tmjo - the ev_ sensor i added us something can be ignore ,
it just predefine sensor that automatically setting up the charging station amperage .
it is transparent so can be ignor

(I actually added similar entity and confused with the question )

@tmjo - are u planning to have one "generic" card which can adbot different templates ? I think this approach could be interested as it future proof for support different charging stations and people can reuse the other templates.

for customization - maybe worth thinking how this solution could be flexible for adding personal customizations of course with the limitation of the functionalities provided, but for adding some more informative sensor or button to trigger some automation could be useful.

tmjo commented 1 year ago

please ignore my comment for :

@tmjo - the ev_ sensor i added us something can be ignore ,
it just predefine sensor that automatically setting up the charging station amperage .
it is transparent so can be ignor

(I actually added similar entity and confused with the question )

@tmjo - are u planning to have one "generic" card which can adbot different templates ? I think this approach could be interested as it future proof for support different charging stations and people can reuse the other templates.

for customization - maybe worth thinking how this solution could be flexible for adding personal customizations of course with the limitation of the functionalities provided, but for adding some more informative sensor or button to trigger some automation could be useful.

No worries!

The card is already fully customizable for people who has YAML-skills and some knowledge of HA and the integration they use, of course within the functionality provided by the card. Personally I am using the card for my charger, my e-Golf car, a weather integration and an integration showing details of tidal conditions. So it is very flexible as it is today, and the plan is to continue developing the flexibility.

However, "most" people find this very complex, so my intention with templates/brand is to simplify it so they only add a "main" sensor and the rest is taken care of by the template. Obviously, I will rely heavily (if not solely) on the community to maintain the templates as it is impossible for me to test it (without having the devices) and also extremely time-consuming to have to read up on every integration. So the idea is to help get people started with some templates, and let a few persons be key-person for maintaining that template for the card.

I am doing some work right now to convert all code into Typescript instead of pure Javascript, mainly as this gives more concise code and I believe TS is the future, but also because I need to do some work to fix the UI-config after some breaking changes in HA. I've got it almost ready, and that will (hopefully) make it easier for skilled people to contribute easier than before to the templates.

tmjo commented 1 year ago

Hi!

I'd love to add support for this charger, but kindly read the wiki on how-to. Let me know if anything is unclear and I'll update it or try to explain.

Cheers!