mirror of
https://github.com/home-assistant/core.git
synced 2026-08-28 10:16:02 -05:00
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""The Blue Current integration."""
|
|
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.const import CONF_DEVICE_ID
|
|
from homeassistant.core import HomeAssistant, ServiceCall, callback
|
|
from homeassistant.helpers import config_validation as cv, service
|
|
|
|
from .const import BCU_APP, CHARGING_CARD_ID, DOMAIN, SERVICE_START_CHARGE_SESSION
|
|
|
|
SERVICE_START_CHARGE_SESSION_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(CONF_DEVICE_ID): cv.string,
|
|
# When no charging card is provided, use no charging card
|
|
# (BCU_APP = no charging card).
|
|
vol.Optional(CHARGING_CARD_ID, default=BCU_APP): cv.string,
|
|
}
|
|
)
|
|
|
|
|
|
async def start_charge_session(service_call: ServiceCall) -> None:
|
|
"""Start a charge session with the provided device and charge card ID."""
|
|
# When no charge card is provided, use the default charge card
|
|
# set in the config flow.
|
|
charging_card_id = service_call.data[CHARGING_CARD_ID]
|
|
|
|
device, config_entry = service.async_get_device_and_config_entry(
|
|
service_call.hass, DOMAIN, service_call.data[CONF_DEVICE_ID]
|
|
)
|
|
|
|
connector = config_entry.runtime_data
|
|
|
|
# Get the evse_id from the identifier of the device.
|
|
evse_id = next(
|
|
identifier[1] for identifier in device.identifiers if identifier[0] == DOMAIN
|
|
)
|
|
|
|
await connector.client.start_session(evse_id, charging_card_id)
|
|
|
|
|
|
@callback
|
|
def async_setup_services(hass: HomeAssistant) -> None:
|
|
"""Register the services."""
|
|
|
|
hass.services.async_register(
|
|
DOMAIN,
|
|
SERVICE_START_CHARGE_SESSION,
|
|
start_charge_session,
|
|
SERVICE_START_CHARGE_SESSION_SCHEMA,
|
|
)
|