Easee EV charging station

Yes, data is there!
I dont think there is a GUI to setup graphs like the energy dashboard. But the components are there. You can look in Energy Cards - Home Assistant .

1 Like

Hi

I try to integrate my Easee Charge System. For Easee Equalizer it seems to work and i get data.
For the wallboxes (Easee Charge), I only get the status “unavailable”. I tried to remove integration, reboot and re-add the integration. The behavior stays the same.

Any Idea how i can fix this?

Thank you.

In the logs, i find those errors:

2022-03-27 10:40:18 ERROR (MainThread) [pyeasee.easee] Forbidden service (403: {'type': 'https://tools.ietf.org/html/rfc7231#section-6.5.3', 'title': 'Forbidden', 'status': 403, 'traceId': '00-51ce4ae053cf1542a33935948bd4d6da-1160905d81753546-00'} https://api.easee.cloud/api/chargers/None/basic_charge_plan)
2022-03-27 10:40:18 ERROR (MainThread) [pyeasee.easee] Forbidden service (403: {'type': 'https://tools.ietf.org/html/rfc7231#section-6.5.3', 'title': 'Forbidden', 'status': 403, 'traceId': '00-6e86e4ca608d3b44b8f8f5fd8a3396b6-d46af7b6fc36f14f-00'} https://api.easee.cloud/api/chargers/None/basic_charge_plan)
2022-03-27 10:40:18 ERROR (MainThread) [pyeasee.easee] Forbidden service (403: {'type': 'https://tools.ietf.org/html/rfc7231#section-6.5.3', 'title': 'Forbidden', 'status': 403, 'traceId': '00-9ee347742c1d6e488376a75dfa8b3cdd-4fce65c0715ae74f-00'} https://api.easee.cloud/api/chargers/None/basic_charge_plan)
2022-03-27 10:40:18 ERROR (MainThread) [pyeasee.easee] Forbidden service (403: {'type': 'https://tools.ietf.org/html/rfc7231#section-6.5.3', 'title': 'Forbidden', 'status': 403, 'traceId': '00-12d45720afbdca4bae0709f9dd4e2809-ac891ee5747e1041-00'} https://api.easee.cloud/api/chargers/None/weekly_charge_plan)
2022-03-27 10:40:18 ERROR (MainThread) [pyeasee.easee] Forbidden service (403: {'type': 'https://tools.ietf.org/html/rfc7231#section-6.5.3', 'title': 'Forbidden', 'status': 403, 'traceId': '00-797cc19193a6a440a8f128eea080eab8-66d1a640fbb88041-00'} https://api.easee.cloud/api/chargers/None/weekly_charge_plan)
2022-03-27 10:40:18 ERROR (MainThread) [pyeasee.easee] Forbidden service (403: {'type': 'https://tools.ietf.org/html/rfc7231#section-6.5.3', 'title': 'Forbidden', 'status': 403, 'traceId': '00-d50d3b0835214748b3af3445030ae60c-eac774968432774e-00'} https://api.easee.cloud/api/chargers/None/weekly_charge_plan)

2022-03-27 10:46:18 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/config/custom_components/easee/controller.py", line 405, in refresh_sites_state
    charger_data.state = site_state.get_charger_state(charger_id, raw=True)
  File "/usr/local/lib/python3.9/site-packages/pyeasee/site.py", line 128, in get_charger_state
    return ChargerState(charger_data["chargerState"], raw)
  File "/usr/local/lib/python3.9/site-packages/pyeasee/charger.py", line 56, in __init__
    data = {
TypeError: 'NoneType' object is not a mapping

I also find a “None” entities:

“none” in entity names should be the name of your charger. Have you assigned a name in the Easee app?

Yes, I have two charge robots and an equalizer. Those are showing up:

any hint how to get my circuit-id? :slight_smile:

It is displayed as an attribute on the status sensor

1 Like

I’ve just managed to get my Easee system upp and running, having an Easee Charger robot and an Equalizer. They are paired and the Equalizer seems to doing it’s job pretty good.

I’ve configured the integration, thanks alot @astrandb and @fondberg. But the Export and Import sensors for the Equalizer does not show any data, any ideas what might be wrong?

Also, would it be possible to set low power times, i.e. not charge at full speed until say 22:30?

Are other Equalizer sensors working as expected? All data items that are pushed from the Easee cloud should be available in the sensors.

The service set_circuit_dynamic_limit can be used by automations to throttle your charging.

1 Like

Yes all other sensors works as expected.

Cool, then I’ll update my automation that I used before I got my Equalizer.

alias: Easee charging limit
description: >-
  Limit charging of Easee to not use more than 6 Amps in peak hours (normally
  16:30 - 21:00)
mode: single
trigger:
  - platform: state
    entity_id: sensor.eh7cr2vq_status
    to: charging
condition:
  - condition: time
    before: '22:30:00'
action:
  - service: easee.set_charger_dynamic_limit
    data:
      charger_id: EH7CR2VQ
      current: 6
alias: Easee charging unlimit
description: 'Remove charging restrictions and put the Equalizer to work'
mode: single
trigger:
  - platform: time
    at: '22:30:01'
action:
  - service: easee.set_charger_dynamic_limit
    data:
      charger_id: EH7CR2VQ
      current: 32

@olalid Can you have a look at this. You have more experience in the Equalizer and it’s intricacies.

That kind of display in HA usually indicates that there is something wrong and that the sensor returns no value, typically due to a code problem in the integration.
So I think it would be great help for us if you could enable logging for the integration and see if you can find any place where the code seems to crash or return any kind of error.

logging is enabled by adding the following to configuration.yaml:

logger:
  default: info
  logs:
    pyeasee.easee: debug
    custom_components.easee: debug

Ok here we go.

2022-05-23 21:37:33 DEBUG (MainThread) [custom_components.easee] Setting up Easee component version 0.9.43
2022-05-23 21:37:33 INFO (MainThread) [pyeasee.easee] Easee python library version: 0.7.44
2022-05-23 21:37:33 DEBUG (MainThread) [pyeasee.easee] getting token for user: [email protected]
2022-05-23 21:37:43 DEBUG (MainThread) [pyeasee.easee] TOKEN: {'accessToken': '..', 'expiresIn': 86400, 'accessClaims': ['User'], 'tokenType': 'Bearer', 'refreshToken': '='}
2022-05-23 21:37:43 DEBUG (MainThread) [pyeasee.easee] GET: /api/sites ({})
2022-05-23 21:37:43 DEBUG (MainThread) [pyeasee.easee] verify_updated_token: 2022-05-24 21:36:43.580157, 2022-05-23 21:37:43.580460, False
2022-05-23 21:37:43 DEBUG (MainThread) [pyeasee.easee] Sites:  [{'id': 311473, 'siteKey': '', 'name': '', 'levelOfAccess': None, 'address': {'street': '', 'buildingNumber': None, 'zip': '', 'area': '', 'country': None, 'latitude': None, 'longitude': None, 'altitude': None}}]
2022-05-23 21:37:43 DEBUG (MainThread) [pyeasee.easee] GET: /api/sites/311473?detailed=true ({})
2022-05-23 21:37:43 DEBUG (MainThread) [pyeasee.easee] verify_updated_token: 2022-05-24 21:36:43.580157, 2022-05-23 21:37:43.867386, False
2022-05-23 21:37:44 DEBUG (MainThread) [pyeasee.easee] Site:  {'id': 311473, 'siteKey': '', 'name': '', 'levelOfAccess': 1, 'address': {'street': '', 'buildingNumber': '', 'zip': '', 'area': '', 'country': None, 'latitude': None, 'longitude': None, 'altitude': None}, 'contactInfo': {}, 'costPerKWh': 2.0, 'costPerKwhExcludeVat': 2.0, 'currencyId': 'SEK', 'siteType': 1, 'ratedCurrent': 16.0, 'vat': 0.0, 'partnerId': 20, 'useDynamicMaster': False, 'circuits': [{'id': 297408, 'siteId': 311473, 'circuitPanelId': 1, 'panelName': '1', 'ratedCurrent': 16.0, 'chargers': [{'id': 'EH7CR2VQ', 'name': 'EH7CR2VQ', 'color': None, 'createdOn': '2022-01-12T12:40:25.978758', 'updatedOn': '2022-04-11T12:09:46.833443', 'backPlate': {'id': '8172D6928F1004', 'masterBackPlateId': '8172D6928F1004', 'name': 'EH7CR2VQ'}, 'levelOfAccess': 1, 'productCode': 1, 'userRole': 1, 'isTemporary': False}], 'masterBackplate': None, 'useDynamicMaster': False, 'parentCircuitId': None}], 'equalizers': [{'id': 'QPYJYYWB', 'name': 'QPYJYYWB', 'siteId': 311473, 'circuitId': None}], 'createdOn': '2022-04-11T12:15:21.8033', 'updatedOn': '2022-05-23T06:29:44.625774', 'userRole': 1, 'allowedSiteActions': ['AllowToConfigureLevelOfAccess']}
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Found site (monitored): 311473 Resénsväg 16
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Found equalizer: QPYJYYWB QPYJYYWB
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Found circuit: 297408 1
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Found charger: EH7CR2VQ EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: status (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: smart_charging (switch) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: cable_locked (binary_sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: cable_locked_permanently (switch) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: power (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: session_energy (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: lifetime_energy (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: energy_per_hour (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: online (binary_sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: output_limit (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: current (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: circuit_current (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: dynamic_circuit_limit (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: max_circuit_limit (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: dynamic_charger_limit (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: offline_circuit_limit (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: max_charger_limit (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: voltage (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: reason_for_no_current (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: is_enabled (switch) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: enable_idle_current (switch) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: update_available (binary_sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: basic_schedule (binary_sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: weekly_schedule (binary_sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: cost_per_kwh (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: online (eq_binary_sensor) for product QPYJYYWB
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: cost_per_kwh (sensor) for product EH7CR2VQ
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: online (eq_binary_sensor) for product QPYJYYWB
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: import_power (eq_sensor) for product QPYJYYWB
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: export_power (eq_sensor) for product QPYJYYWB
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: voltage (eq_sensor) for product QPYJYYWB
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: current (eq_sensor) for product QPYJYYWB
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: import_energy (eq_sensor) for product QPYJYYWB
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Adding entity: export_energy (eq_sensor) for product QPYJYYWB
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Entities binary_sensor setup done
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Entities sensor setup done
2022-05-23 21:37:45 DEBUG (MainThread) [custom_components.easee.controller] Entities switch setup done
2022-05-23 21:37:46 DEBUG (MainThread) [pyeasee.easee] GET: /api/chargers/EH7CR2VQ/basic_charge_plan ({})
2022-05-23 21:37:46 DEBUG (MainThread) [pyeasee.easee] verify_updated_token: 2022-05-24 21:36:43.580157, 2022-05-23 21:37:46.382530, False
2022-05-23 21:37:47 DEBUG (MainThread) [pyeasee.easee] GET: /api/chargers/EH7CR2VQ/weekly_charge_plan ({})
2022-05-23 21:37:47 DEBUG (MainThread) [pyeasee.easee] verify_updated_token: 2022-05-24 21:36:43.580157, 2022-05-23 21:37:47.227181, False
2022-05-23 21:37:47 DEBUG (MainThread) [pyeasee.easee] Not found (404: {'type': 'https://tools.ietf.org/html/rfc7231#section-6.5.4', 'title': 'Not Found', 'status': 404, 'traceId': '00-526f389a29f52b409984a2c7fee80162-949b77ce8ac31a4a-00'} https://api.easee.cloud/api/chargers/EH7CR2VQ/weekly_charge_plan)
2022-05-23 21:37:47 DEBUG (MainThread) [pyeasee.easee] Got other exception from status: NotFoundException
2022-05-23 21:37:47 DEBUG (MainThread) [custom_components.easee.controller] Schedule: <pyeasee.charger.ChargerSchedule object at 0x7f005d5d7250> None
2022-05-23 21:37:48 DEBUG (MainThread) [pyeasee.easee] GET: /api/sites/311473/state ({})
2022-05-23 21:37:48 DEBUG (MainThread) [pyeasee.easee] verify_updated_token: 2022-05-24 21:36:43.580157, 2022-05-23 21:37:48.038658, False
2022-05-23 21:37:48 DEBUG (MainThread) [pyeasee.easee] GET: /api/equalizers/QPYJYYWB/state ({})
2022-05-23 21:37:48 DEBUG (MainThread) [pyeasee.easee] verify_updated_token: 2022-05-24 21:36:43.580157, 2022-05-23 21:37:48.041986, False
2022-05-23 21:37:48 DEBUG (MainThread) [pyeasee.easee] Subscribing to QPYJYYWB
2022-05-23 21:37:48 DEBUG (MainThread) [pyeasee.easee] SR connect sleep 0
2022-05-23 21:37:48 DEBUG (MainThread) [pyeasee.easee] Subscribing to EH7CR2VQ
2022-05-23 21:37:48 DEBUG (MainThread) [pyeasee.easee] Already connecting
2022-05-23 21:37:48 DEBUG (MainThread) [pyeasee.easee] SR connect loop
2022-05-23 21:37:48 DEBUG (MainThread) [pyeasee.easee] verify_updated_token: 2022-05-24 21:36:43.580157, 2022-05-23 21:37:48.446708, False
2022-05-23 21:37:48 DEBUG (MainThread) [custom_components.easee.controller] Charger state: EH7CR2VQ 
2022-05-23 21:37:50 DEBUG (MainThread) [custom_components.easee.controller] Unsupported data id 219 0
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Callback QPYJYYWB 31 state_currentL1 16.0
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Scheduling update
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Callback QPYJYYWB 31 state_currentL1 16.0
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Callback QPYJYYWB 32 state_currentL2 16.0
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Scheduling update
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Callback QPYJYYWB 32 state_currentL2 16.0
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB import_power
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB export_power
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB voltage
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB current
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB import_energy
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB export_energy
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB online
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.binary_sensor] Getting state of online
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.binary_sensor] Getting state of online
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Callback QPYJYYWB 35 state_voltageNL2 231.10000610351562
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Callback QPYJYYWB 35 state_voltageNL2 231.10000610351562
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Callback QPYJYYWB 40 state_activePowerImport 10.00100040435791
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Scheduling update
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Callback QPYJYYWB 40 state_activePowerImport 10.00100040435791
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB import_power
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB export_power
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB voltage
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB current
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB import_energy
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB export_energy
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.entity] Entity async_update : QPYJYYWB online
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.binary_sensor] Getting state of online
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Callback QPYJYYWB 34 state_voltageNL1 229.39999389648438
2022-05-23 21:38:10 DEBUG (MainThread) [custom_components.easee.controller] Callback QPYJYYWB 34 state_voltageNL1 229.39999389648438
2022-05-23 21:38:20 DEBUG (MainThread) [custom_components.easee.controller] Callback EH7CR2VQ 120 state_totalPower 6.604000091552734

I don’t seem to get a callback for energy… Nothing strange in the logs…

Is this really all lines of the log?
I am asking because there seems to be a lot of things missing, there should for instance before you get any callbacks be a line stating “SignalR stream connected”.
And then there should be a big bunch of callbacks with all the data that is currently stored in the cloud, I am not seeing that first batch here.
The energy callbacks are actually called state_cumulativeActivePowerImport and state_cumulativeActivePowerExport which may be confusing…

I do not know if this matters, but the username is supposed to be your phone number (including country code) and your log says: “getting token for user: [email protected]
Could you try logging in using your phone number instead?

I think the issue is my installation, perhaps my E360 from EON doesn’t send that data.

Ok, if you do not see the values on easee.cloud or in the app, then the problem for sure is not the HA integration.
I would suspect some kind of incompatibility between your electricity meter and the equalizer rather than that the meter does not output the values.
If you do not mind I can forward your equalizer serial number to Easee to let them know that there is some issue with your meter, maybe they can fix it sometime in the future.

yes, that would be very kind of you. Thanks!

Hey guys loving the thread I’ve been looking at getting a wall box but my supplier has fallen through and recommend an easee system instead can you still dictate via home assiant what max current to charge at and if so how many times a minute can you change it?

I have solar pannels on my roof and don’t get paid for any power bank to the grid so my plan was to make automation when generating x power set that to y on charger and charge car for free?

Just need to know if you can set max power through HA and am sold ill get one ordered
Thansk
Jkhs112

Yes, as mentioned here: Easee EV charging station - #175 by astrandb

Hi,
Thanks for the great work you have done here!

I have just installed the HACS integration Easee EV Charger and started to test it out.
I have read the whole thread here and read with interest that there seamed to be some sort of integration also for Equalizer to get data about the current power consumption.
Unfortunately I bought my Easee not with Equalizer but togheter with a smartmeter called Enegic. (This smartmeter is configured as operator in my Easee app).

Easee and Enegic works great so this is just a question if anyone would know about a way to get the data from Enegic into home assistant?
Anyone who have tried?
I have tried to debug the network traffic from my app through my router but with very little success. Any suggestions how I should progress? (I’m a programmer, but mostly backend, not much experience by app-development.)
Thanks
Sundman