diff --git a/homeassistant/components/v2c/strings.json b/homeassistant/components/v2c/strings.json index bf19fe5188e..a60b61831fd 100644 --- a/homeassistant/components/v2c/strings.json +++ b/homeassistant/components/v2c/strings.json @@ -52,6 +52,18 @@ "switch": { "paused": { "name": "Pause session" + }, + "locked": { + "name": "Lock EVSE" + }, + "timer": { + "name": "Charge point timer" + }, + "dynamic": { + "name": "Dynamic intensity modulation" + }, + "pause_dynamic": { + "name": "Pause dynamic control modulation" } } } diff --git a/homeassistant/components/v2c/switch.py b/homeassistant/components/v2c/switch.py index a876af75d86..a8b4728c66d 100644 --- a/homeassistant/components/v2c/switch.py +++ b/homeassistant/components/v2c/switch.py @@ -7,7 +7,13 @@ import logging from typing import Any from pytrydan import Trydan, TrydanData -from pytrydan.models.trydan import PauseState +from pytrydan.models.trydan import ( + ChargePointTimerState, + DynamicState, + LockState, + PauseDynamicState, + PauseState, +) from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription from homeassistant.config_entries import ConfigEntry @@ -44,6 +50,39 @@ TRYDAN_SWITCHES = ( turn_on_fn=lambda evse: evse.pause(), turn_off_fn=lambda evse: evse.resume(), ), + V2CSwitchEntityDescription( + key="locked", + translation_key="locked", + icon="mdi:lock", + value_fn=lambda evse_data: evse_data.locked == LockState.ENABLED, + turn_on_fn=lambda evse: evse.lock(), + turn_off_fn=lambda evse: evse.unlock(), + ), + V2CSwitchEntityDescription( + key="timer", + translation_key="timer", + icon="mdi:timer", + value_fn=lambda evse_data: evse_data.timer == ChargePointTimerState.TIMER_ON, + turn_on_fn=lambda evse: evse.timer(), + turn_off_fn=lambda evse: evse.timer_disable(), + ), + V2CSwitchEntityDescription( + key="dynamic", + translation_key="dynamic", + icon="mdi:gauge", + value_fn=lambda evse_data: evse_data.dynamic == DynamicState.ENABLED, + turn_on_fn=lambda evse: evse.dynamic(), + turn_off_fn=lambda evse: evse.dynamic_disable(), + ), + V2CSwitchEntityDescription( + key="pause_dynamic", + translation_key="pause_dynamic", + icon="mdi:pause", + value_fn=lambda evse_data: evse_data.pause_dynamic + == PauseDynamicState.NOT_MODULATING, + turn_on_fn=lambda evse: evse.pause_dynamic(), + turn_off_fn=lambda evse: evse.resume_dynamic(), + ), )