-
Notifications
You must be signed in to change notification settings - Fork 0
/
slxevse.py
65 lines (51 loc) · 1.68 KB
/
slxevse.py
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
""" slxmodule for connecting with OpenEVSE"""
from homeassistant.helpers.event import async_track_state_change_event
from homeassistant.helpers import entity_registry, device_registry
from homeassistant.helpers.entity_registry import EntityRegistry
from homeassistant.util import slugify
import logging
from typing import Any
from enum import Enum
from homeassistant.core import (
HomeAssistant,
Event,
Callable,
State,
callback,
)
from .const import (
CHARGER_MODES,
CHR_MODE_UNKNOWN,
CHR_MODE_STOPPED,
CHR_MODE_PVCHARGE,
CHR_MODE_NORMAL,
)
_LOGGER = logging.getLogger(__name__)
class SLXEvse:
"""base class for any EVSE connection"""
def __init__(
self,
hass: HomeAssistant,
):
self.hass = hass
self.charge_mode: str = CHR_MODE_UNKNOWN
self.unsub_dict: dict[str, Callable[[Event], Any]] = {}
self.connected: bool = False
def set_charger_mode(self, mode: str) -> None:
_LOGGER.error("Setting charger mode is not defined")
def _subscribe_entity(
self, entity_name: str, external_calback: Callable[[Event], Any]
) -> None:
self.unsub_dict[entity_name] = async_track_state_change_event(
self.hass, entity_name, external_calback
)
def connect(self) -> bool:
# method to connect with external intergration
self.connected = True
async def disconnect(self) -> bool:
# method to disconnect from external integration
if self.connected is False:
return True
for entity_name, cancel in self.unsub_dict.items():
_LOGGER.debug("Unsubscribing entity %s", entity_name)
cancel()