optimizations
split out sucks constants to their own file, no need to define verify ssl. if bumper is true then verify ssl false
This commit is contained in:
@@ -1,12 +1,11 @@
|
|||||||
"""Support for Ecovacs Deebot vacuums."""
|
"""Support for Ecovacs Deebot vacuums."""
|
||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
##import asyncio ## to do will need to convert to slixmpp to do this i believe
|
#import asyncio ## to do will need to convert to slixmpp to do this i believe
|
||||||
|
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_PASSWORD,
|
CONF_PASSWORD,
|
||||||
CONF_USERNAME,
|
CONF_USERNAME,
|
||||||
CONF_VERIFY_SSL, # added
|
|
||||||
EVENT_HOMEASSISTANT_STOP,
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
Platform,
|
Platform,
|
||||||
)
|
)
|
||||||
@@ -25,6 +24,7 @@ from .const import (
|
|||||||
CONF_BUMPER,
|
CONF_BUMPER,
|
||||||
CONF_BUMPER_SERVER,
|
CONF_BUMPER_SERVER,
|
||||||
SERVER_ADDRESS,
|
SERVER_ADDRESS,
|
||||||
|
VERIFY_SSL,
|
||||||
LOGGER
|
LOGGER
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -37,8 +37,7 @@ CONFIG_SCHEMA = vol.Schema(
|
|||||||
vol.Required(CONF_COUNTRY): vol.All(vol.Lower, cv.string),
|
vol.Required(CONF_COUNTRY): vol.All(vol.Lower, cv.string),
|
||||||
vol.Required(CONF_CONTINENT): vol.All(vol.Lower, cv.string),
|
vol.Required(CONF_CONTINENT): vol.All(vol.Lower, cv.string),
|
||||||
vol.Optional(CONF_BUMPER, default=False): cv.boolean,
|
vol.Optional(CONF_BUMPER, default=False): cv.boolean,
|
||||||
vol.Optional(CONF_BUMPER_SERVER): cv.string,
|
vol.Optional(CONF_BUMPER_SERVER): cv.string
|
||||||
vol.Optional(CONF_VERIFY_SSL, default=True): cv.boolean, # can probably get rid of this and set verify ssl false if bumper true
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
@@ -58,9 +57,8 @@ def setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
# if we're using bumper then define the server address
|
# if we're using bumper then define the server address
|
||||||
if CONF_BUMPER == True:
|
if CONF_BUMPER == True:
|
||||||
SERVER_ADDRESS = (config[DOMAIN].get(CONF_BUMPER_SERVER), 5223)
|
SERVER_ADDRESS = (config[DOMAIN].get(CONF_BUMPER_SERVER), 5223)
|
||||||
# if not make sure it's null
|
VERIFY_SSL = False
|
||||||
else:
|
# if not server address is null and verify ssl true from const
|
||||||
SERVER_ADDRESS = None
|
|
||||||
|
|
||||||
ecovacs_api = EcoVacsAPI(
|
ecovacs_api = EcoVacsAPI(
|
||||||
ECOVACS_API_DEVICEID,
|
ECOVACS_API_DEVICEID,
|
||||||
@@ -68,7 +66,7 @@ def setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
EcoVacsAPI.md5(config[DOMAIN].get(CONF_PASSWORD)),
|
EcoVacsAPI.md5(config[DOMAIN].get(CONF_PASSWORD)),
|
||||||
config[DOMAIN].get(CONF_COUNTRY),
|
config[DOMAIN].get(CONF_COUNTRY),
|
||||||
config[DOMAIN].get(CONF_CONTINENT),
|
config[DOMAIN].get(CONF_CONTINENT),
|
||||||
config[DOMAIN].get(CONF_VERIFY_SSL), # add to class call
|
VERIFY_SSL # add to class call
|
||||||
)
|
)
|
||||||
|
|
||||||
devices = ecovacs_api.devices()
|
devices = ecovacs_api.devices()
|
||||||
@@ -88,8 +86,8 @@ def setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
device,
|
device,
|
||||||
config[DOMAIN].get(CONF_CONTINENT).lower(),
|
config[DOMAIN].get(CONF_CONTINENT).lower(),
|
||||||
SERVER_ADDRESS, # include server address in class, if it's null shoul be no effect
|
SERVER_ADDRESS, # include server address in class, if it's null shoul be no effect
|
||||||
config[DOMAIN].get(CONF_VERIFY_SSL), # verify ssl or not
|
VERIFY_SSL, # verify ssl or not
|
||||||
monitor=True,
|
monitor=True
|
||||||
)
|
)
|
||||||
hass.data[ECOVACS_DEVICES].append(vacbot)
|
hass.data[ECOVACS_DEVICES].append(vacbot)
|
||||||
|
|
||||||
|
|||||||
@@ -11,113 +11,4 @@ CONF_CONTINENT = "continent"
|
|||||||
CONF_BUMPER = "bumper"
|
CONF_BUMPER = "bumper"
|
||||||
CONF_BUMPER_SERVER = "bumper_server"
|
CONF_BUMPER_SERVER = "bumper_server"
|
||||||
SERVER_ADDRESS = None
|
SERVER_ADDRESS = None
|
||||||
|
VERIFY_SSL = True
|
||||||
#sucks constants
|
|
||||||
# These consts define all of the vocabulary used by this library when presenting various states and components.
|
|
||||||
# Applications implementing this library should import these rather than hard-code the strings, for future-proofing.
|
|
||||||
|
|
||||||
CLEAN_MODE_AUTO = 'auto'
|
|
||||||
CLEAN_MODE_EDGE = 'edge'
|
|
||||||
CLEAN_MODE_SPOT = 'spot'
|
|
||||||
CLEAN_MODE_SPOT_AREA = 'spot_area'
|
|
||||||
CLEAN_MODE_SINGLE_ROOM = 'single_room'
|
|
||||||
CLEAN_MODE_STOP = 'stop'
|
|
||||||
|
|
||||||
CLEAN_ACTION_START = 'start'
|
|
||||||
CLEAN_ACTION_PAUSE = 'pause'
|
|
||||||
CLEAN_ACTION_RESUME = 'resume'
|
|
||||||
CLEAN_ACTION_STOP = 'stop'
|
|
||||||
|
|
||||||
FAN_SPEED_NORMAL = 'normal'
|
|
||||||
FAN_SPEED_HIGH = 'high'
|
|
||||||
|
|
||||||
CHARGE_MODE_RETURN = 'return'
|
|
||||||
CHARGE_MODE_RETURNING = 'returning'
|
|
||||||
CHARGE_MODE_CHARGING = 'charging'
|
|
||||||
CHARGE_MODE_IDLE = 'idle'
|
|
||||||
|
|
||||||
COMPONENT_SIDE_BRUSH = 'side_brush'
|
|
||||||
COMPONENT_MAIN_BRUSH = 'main_brush'
|
|
||||||
COMPONENT_FILTER = 'filter'
|
|
||||||
|
|
||||||
VACUUM_STATUS_OFFLINE = 'offline'
|
|
||||||
|
|
||||||
CLEANING_STATES = {CLEAN_MODE_AUTO, CLEAN_MODE_EDGE, CLEAN_MODE_SPOT, CLEAN_MODE_SPOT_AREA, CLEAN_MODE_SINGLE_ROOM}
|
|
||||||
CHARGING_STATES = {CHARGE_MODE_CHARGING}
|
|
||||||
|
|
||||||
# These dictionaries convert to and from Sucks's consts (which closely match what the UI and manuals use)
|
|
||||||
# to and from what the Ecovacs API uses (which are sometimes very oddly named and have random capitalization.)
|
|
||||||
CLEAN_MODE_TO_ECOVACS = {
|
|
||||||
CLEAN_MODE_AUTO: 'auto',
|
|
||||||
CLEAN_MODE_EDGE: 'border',
|
|
||||||
CLEAN_MODE_SPOT: 'spot',
|
|
||||||
CLEAN_MODE_SPOT_AREA: 'SpotArea',
|
|
||||||
CLEAN_MODE_SINGLE_ROOM: 'singleroom',
|
|
||||||
CLEAN_MODE_STOP: 'stop'
|
|
||||||
}
|
|
||||||
|
|
||||||
CLEAN_ACTION_TO_ECOVACS = {
|
|
||||||
CLEAN_ACTION_START: 's',
|
|
||||||
CLEAN_ACTION_PAUSE: 'p',
|
|
||||||
CLEAN_ACTION_RESUME: 'r',
|
|
||||||
CLEAN_ACTION_STOP: 'h',
|
|
||||||
}
|
|
||||||
|
|
||||||
CLEAN_ACTION_FROM_ECOVACS = {
|
|
||||||
's': CLEAN_ACTION_START,
|
|
||||||
'p': CLEAN_ACTION_PAUSE,
|
|
||||||
'r': CLEAN_ACTION_RESUME,
|
|
||||||
'h': CLEAN_ACTION_STOP,
|
|
||||||
}
|
|
||||||
|
|
||||||
CLEAN_MODE_FROM_ECOVACS = {
|
|
||||||
'auto': CLEAN_MODE_AUTO,
|
|
||||||
'border': CLEAN_MODE_EDGE,
|
|
||||||
'spot': CLEAN_MODE_SPOT,
|
|
||||||
'spot_area': CLEAN_MODE_SPOT_AREA,
|
|
||||||
'SpotArea': CLEAN_MODE_SPOT_AREA,
|
|
||||||
'singleroom': CLEAN_MODE_SINGLE_ROOM,
|
|
||||||
'stop': CLEAN_MODE_STOP,
|
|
||||||
'going': CHARGE_MODE_RETURNING,
|
|
||||||
}
|
|
||||||
|
|
||||||
FAN_SPEED_TO_ECOVACS = {
|
|
||||||
FAN_SPEED_NORMAL: 'standard',
|
|
||||||
FAN_SPEED_HIGH: 'strong'
|
|
||||||
}
|
|
||||||
|
|
||||||
FAN_SPEED_FROM_ECOVACS = {
|
|
||||||
'standard': FAN_SPEED_NORMAL,
|
|
||||||
'strong': FAN_SPEED_HIGH,
|
|
||||||
}
|
|
||||||
|
|
||||||
CHARGE_MODE_TO_ECOVACS = {
|
|
||||||
CHARGE_MODE_RETURN: 'go',
|
|
||||||
CHARGE_MODE_RETURNING: 'Going',
|
|
||||||
CHARGE_MODE_CHARGING: 'SlotCharging',
|
|
||||||
CHARGE_MODE_IDLE: 'Idle',
|
|
||||||
}
|
|
||||||
|
|
||||||
CHARGE_MODE_FROM_ECOVACS = {
|
|
||||||
'going': CHARGE_MODE_RETURNING,
|
|
||||||
# 'Going': CHARGE_MODE_RETURNING,
|
|
||||||
'slot_charging': CHARGE_MODE_CHARGING,
|
|
||||||
# 'SlotCharging': CHARGE_MODE_CHARGING,
|
|
||||||
'idle': CHARGE_MODE_IDLE,
|
|
||||||
# 'Idle': CHARGE_MODE_IDLE,
|
|
||||||
}
|
|
||||||
|
|
||||||
COMPONENT_TO_ECOVACS = {
|
|
||||||
COMPONENT_MAIN_BRUSH: 'Brush',
|
|
||||||
COMPONENT_SIDE_BRUSH: 'SideBrush',
|
|
||||||
COMPONENT_FILTER: 'DustCaseHeap',
|
|
||||||
}
|
|
||||||
|
|
||||||
COMPONENT_FROM_ECOVACS = {
|
|
||||||
'brush': COMPONENT_MAIN_BRUSH,
|
|
||||||
# 'Brush': COMPONENT_MAIN_BRUSH,
|
|
||||||
'side_brush': COMPONENT_SIDE_BRUSH,
|
|
||||||
# 'SideBrush': COMPONENT_SIDE_BRUSH,
|
|
||||||
'dust_case_heap': COMPONENT_FILTER,
|
|
||||||
# 'DustCaseHeap': COMPONENT_FILTER,
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
#sucks constants
|
||||||
|
# These consts define all of the vocabulary used by this library when presenting various states and components.
|
||||||
|
# Applications implementing this library should import these rather than hard-code the strings, for future-proofing.
|
||||||
|
|
||||||
|
CLEAN_MODE_AUTO = 'auto'
|
||||||
|
CLEAN_MODE_EDGE = 'edge'
|
||||||
|
CLEAN_MODE_SPOT = 'spot'
|
||||||
|
CLEAN_MODE_SPOT_AREA = 'spot_area'
|
||||||
|
CLEAN_MODE_SINGLE_ROOM = 'single_room'
|
||||||
|
CLEAN_MODE_STOP = 'stop'
|
||||||
|
|
||||||
|
CLEAN_ACTION_START = 'start'
|
||||||
|
CLEAN_ACTION_PAUSE = 'pause'
|
||||||
|
CLEAN_ACTION_RESUME = 'resume'
|
||||||
|
CLEAN_ACTION_STOP = 'stop'
|
||||||
|
|
||||||
|
FAN_SPEED_NORMAL = 'normal'
|
||||||
|
FAN_SPEED_HIGH = 'high'
|
||||||
|
|
||||||
|
CHARGE_MODE_RETURN = 'return'
|
||||||
|
CHARGE_MODE_RETURNING = 'returning'
|
||||||
|
CHARGE_MODE_CHARGING = 'charging'
|
||||||
|
CHARGE_MODE_IDLE = 'idle'
|
||||||
|
|
||||||
|
COMPONENT_SIDE_BRUSH = 'side_brush'
|
||||||
|
COMPONENT_MAIN_BRUSH = 'main_brush'
|
||||||
|
COMPONENT_FILTER = 'filter'
|
||||||
|
|
||||||
|
VACUUM_STATUS_OFFLINE = 'offline'
|
||||||
|
|
||||||
|
CLEANING_STATES = {CLEAN_MODE_AUTO, CLEAN_MODE_EDGE, CLEAN_MODE_SPOT, CLEAN_MODE_SPOT_AREA, CLEAN_MODE_SINGLE_ROOM}
|
||||||
|
CHARGING_STATES = {CHARGE_MODE_CHARGING}
|
||||||
|
|
||||||
|
# These dictionaries convert to and from Sucks's consts (which closely match what the UI and manuals use)
|
||||||
|
# to and from what the Ecovacs API uses (which are sometimes very oddly named and have random capitalization.)
|
||||||
|
CLEAN_MODE_TO_ECOVACS = {
|
||||||
|
CLEAN_MODE_AUTO: 'auto',
|
||||||
|
CLEAN_MODE_EDGE: 'border',
|
||||||
|
CLEAN_MODE_SPOT: 'spot',
|
||||||
|
CLEAN_MODE_SPOT_AREA: 'SpotArea',
|
||||||
|
CLEAN_MODE_SINGLE_ROOM: 'singleroom',
|
||||||
|
CLEAN_MODE_STOP: 'stop'
|
||||||
|
}
|
||||||
|
|
||||||
|
CLEAN_ACTION_TO_ECOVACS = {
|
||||||
|
CLEAN_ACTION_START: 's',
|
||||||
|
CLEAN_ACTION_PAUSE: 'p',
|
||||||
|
CLEAN_ACTION_RESUME: 'r',
|
||||||
|
CLEAN_ACTION_STOP: 'h',
|
||||||
|
}
|
||||||
|
|
||||||
|
CLEAN_ACTION_FROM_ECOVACS = {
|
||||||
|
's': CLEAN_ACTION_START,
|
||||||
|
'p': CLEAN_ACTION_PAUSE,
|
||||||
|
'r': CLEAN_ACTION_RESUME,
|
||||||
|
'h': CLEAN_ACTION_STOP,
|
||||||
|
}
|
||||||
|
|
||||||
|
CLEAN_MODE_FROM_ECOVACS = {
|
||||||
|
'auto': CLEAN_MODE_AUTO,
|
||||||
|
'border': CLEAN_MODE_EDGE,
|
||||||
|
'spot': CLEAN_MODE_SPOT,
|
||||||
|
'spot_area': CLEAN_MODE_SPOT_AREA,
|
||||||
|
'SpotArea': CLEAN_MODE_SPOT_AREA,
|
||||||
|
'singleroom': CLEAN_MODE_SINGLE_ROOM,
|
||||||
|
'stop': CLEAN_MODE_STOP,
|
||||||
|
'going': CHARGE_MODE_RETURNING,
|
||||||
|
}
|
||||||
|
|
||||||
|
FAN_SPEED_TO_ECOVACS = {
|
||||||
|
FAN_SPEED_NORMAL: 'standard',
|
||||||
|
FAN_SPEED_HIGH: 'strong'
|
||||||
|
}
|
||||||
|
|
||||||
|
FAN_SPEED_FROM_ECOVACS = {
|
||||||
|
'standard': FAN_SPEED_NORMAL,
|
||||||
|
'strong': FAN_SPEED_HIGH,
|
||||||
|
}
|
||||||
|
|
||||||
|
CHARGE_MODE_TO_ECOVACS = {
|
||||||
|
CHARGE_MODE_RETURN: 'go',
|
||||||
|
CHARGE_MODE_RETURNING: 'Going',
|
||||||
|
CHARGE_MODE_CHARGING: 'SlotCharging',
|
||||||
|
CHARGE_MODE_IDLE: 'Idle',
|
||||||
|
}
|
||||||
|
|
||||||
|
CHARGE_MODE_FROM_ECOVACS = {
|
||||||
|
'going': CHARGE_MODE_RETURNING,
|
||||||
|
# 'Going': CHARGE_MODE_RETURNING,
|
||||||
|
'slot_charging': CHARGE_MODE_CHARGING,
|
||||||
|
# 'SlotCharging': CHARGE_MODE_CHARGING,
|
||||||
|
'idle': CHARGE_MODE_IDLE,
|
||||||
|
# 'Idle': CHARGE_MODE_IDLE,
|
||||||
|
}
|
||||||
|
|
||||||
|
COMPONENT_TO_ECOVACS = {
|
||||||
|
COMPONENT_MAIN_BRUSH: 'Brush',
|
||||||
|
COMPONENT_SIDE_BRUSH: 'SideBrush',
|
||||||
|
COMPONENT_FILTER: 'DustCaseHeap',
|
||||||
|
}
|
||||||
|
|
||||||
|
COMPONENT_FROM_ECOVACS = {
|
||||||
|
'brush': COMPONENT_MAIN_BRUSH,
|
||||||
|
# 'Brush': COMPONENT_MAIN_BRUSH,
|
||||||
|
'side_brush': COMPONENT_SIDE_BRUSH,
|
||||||
|
# 'SideBrush': COMPONENT_SIDE_BRUSH,
|
||||||
|
'dust_case_heap': COMPONENT_FILTER,
|
||||||
|
# 'DustCaseHeap': COMPONENT_FILTER,
|
||||||
|
}
|
||||||
@@ -10,7 +10,8 @@ from sleekxmppfs.exceptions import XMPPError
|
|||||||
from .mqtt_ecovacs import EcoVacsIOTMQ
|
from .mqtt_ecovacs import EcoVacsIOTMQ
|
||||||
from .xmpp_ecovacs import EcoVacsXMPP
|
from .xmpp_ecovacs import EcoVacsXMPP
|
||||||
|
|
||||||
from .const import *
|
from .const import LOGGER
|
||||||
|
from .sucks_const import *
|
||||||
|
|
||||||
def str_to_bool_or_cert(s):
|
def str_to_bool_or_cert(s):
|
||||||
if s == 'True' or s == True:
|
if s == 'True' or s == True:
|
||||||
|
|||||||
Reference in New Issue
Block a user