File: integration-flow.md

package info (click to toggle)
python-bluecurrent-api 1.2.3-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 596 kB
  • sloc: python: 1,041; makefile: 37; javascript: 1
file content (31 lines) | stat: -rw-r--r-- 1,622 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Integration Flow

## Config Flow

The config flow gets started when a user adds the integration in Home Assistant from the integrations tab and entering their api token.


## Setup
After the config flow in completed the method `async_setup_entry` in \_\_init\_\_.py gets called by Home Assistant.
Here it retrieves the API token from the config_entry. And validates it. If the validation is successful a background task to connect and listen to the websocket is started, then the function waits until `CHARGE_POINTS` is received from the API and tells Home Assistant to start the platform setups with `async_setup_platforms`.

## Platforms

In the platform classes (sensor.py, switch.py, button.py) the method `async_setup_entry` will run, and the entities will be created for each charge point.

## on_data

All relevant data that the API package receives will get routed to the `on_data` method.
This method then routes the message to the correct function based on the object_name of the data.

[](on-data)

The variable `charge_points` in the Connector class holds the data of all the charge points.

## Platform update

All charge point entities listen to the `bluecurrent_value_update_<evse_id>`event and grid entities listen to `bluecurrent_grid_update`. When the event is dispatched the entity checks if its value in the`charge_points` dict in the Connector class is not none. If that is the case the value will be updated in the entity. Otherwise, the entity will be set unavailable.

```{note}
With timestamps the value will not be set to unavailable because the API will not send the timestamp every time.
```