Clean up RainMachine config entry data (#32132)

This commit is contained in:
Aaron Bach 2020-02-24 13:07:18 -07:00 committed by GitHub
parent edf44f4158
commit 6b0d7c77f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 11 additions and 29 deletions

View File

@ -34,8 +34,6 @@ from .const import (
DATA_ZONES, DATA_ZONES,
DATA_ZONES_DETAILS, DATA_ZONES_DETAILS,
DEFAULT_PORT, DEFAULT_PORT,
DEFAULT_SCAN_INTERVAL,
DEFAULT_SSL,
DOMAIN, DOMAIN,
PROGRAM_UPDATE_TOPIC, PROGRAM_UPDATE_TOPIC,
SENSOR_UPDATE_TOPIC, SENSOR_UPDATE_TOPIC,
@ -54,6 +52,8 @@ CONF_ZONE_RUN_TIME = "zone_run_time"
DEFAULT_ATTRIBUTION = "Data provided by Green Electronics LLC" DEFAULT_ATTRIBUTION = "Data provided by Green Electronics LLC"
DEFAULT_ICON = "mdi:water" DEFAULT_ICON = "mdi:water"
DEFAULT_SCAN_INTERVAL = timedelta(seconds=60)
DEFAULT_SSL = True
DEFAULT_ZONE_RUN = 60 * 10 DEFAULT_ZONE_RUN = 60 * 10
SERVICE_ALTER_PROGRAM = vol.Schema({vol.Required(CONF_PROGRAM_ID): cv.positive_int}) SERVICE_ALTER_PROGRAM = vol.Schema({vol.Required(CONF_PROGRAM_ID): cv.positive_int})
@ -85,8 +85,10 @@ CONTROLLER_SCHEMA = vol.Schema(
vol.Required(CONF_PASSWORD): cv.string, vol.Required(CONF_PASSWORD): cv.string,
vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
vol.Optional(CONF_SSL, default=DEFAULT_SSL): cv.boolean, vol.Optional(CONF_SSL, default=DEFAULT_SSL): cv.boolean,
vol.Optional(CONF_SCAN_INTERVAL, default=DEFAULT_SCAN_INTERVAL): cv.time_period, vol.Optional(CONF_SCAN_INTERVAL, default=DEFAULT_SCAN_INTERVAL): vol.All(
vol.Optional(CONF_ZONE_RUN_TIME): cv.positive_int, cv.time_period, lambda value: value.total_seconds()
),
vol.Optional(CONF_ZONE_RUN_TIME, default=DEFAULT_ZONE_RUN): cv.positive_int,
} }
) )
@ -153,7 +155,7 @@ async def async_setup_entry(hass, config_entry):
rainmachine = RainMachine( rainmachine = RainMachine(
hass, hass,
controller, controller,
config_entry.data.get(CONF_ZONE_RUN_TIME, DEFAULT_ZONE_RUN), config_entry.data[CONF_ZONE_RUN_TIME],
config_entry.data[CONF_SCAN_INTERVAL], config_entry.data[CONF_SCAN_INTERVAL],
) )

View File

@ -4,17 +4,11 @@ from regenmaschine.errors import RainMachineError
import voluptuous as vol import voluptuous as vol
from homeassistant import config_entries from homeassistant import config_entries
from homeassistant.const import ( from homeassistant.const import CONF_IP_ADDRESS, CONF_PASSWORD, CONF_PORT
CONF_IP_ADDRESS,
CONF_PASSWORD,
CONF_PORT,
CONF_SCAN_INTERVAL,
CONF_SSL,
)
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.helpers import aiohttp_client from homeassistant.helpers import aiohttp_client
from .const import DEFAULT_PORT, DEFAULT_SCAN_INTERVAL, DEFAULT_SSL, DOMAIN from .const import DEFAULT_PORT, DOMAIN
@callback @callback
@ -75,15 +69,6 @@ class RainMachineFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
except RainMachineError: except RainMachineError:
return await self._show_form({CONF_PASSWORD: "invalid_credentials"}) return await self._show_form({CONF_PASSWORD: "invalid_credentials"})
# Since the config entry doesn't allow for configuration of SSL, make
# sure it's set:
if user_input.get(CONF_SSL) is None:
user_input[CONF_SSL] = DEFAULT_SSL
# Timedeltas are easily serializable, so store the seconds instead:
scan_interval = user_input.get(CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL)
user_input[CONF_SCAN_INTERVAL] = scan_interval.seconds
# Unfortunately, RainMachine doesn't provide a way to refresh the # Unfortunately, RainMachine doesn't provide a way to refresh the
# access token without using the IP address and password, so we have to # access token without using the IP address and password, so we have to
# store it: # store it:

View File

@ -1,9 +1,4 @@
"""Define constants for the SimpliSafe component.""" """Define constants for the SimpliSafe component."""
from datetime import timedelta
import logging
LOGGER = logging.getLogger(__package__)
DOMAIN = "rainmachine" DOMAIN = "rainmachine"
DATA_CLIENT = "client" DATA_CLIENT = "client"
@ -15,8 +10,6 @@ DATA_ZONES = "zones"
DATA_ZONES_DETAILS = "zones_details" DATA_ZONES_DETAILS = "zones_details"
DEFAULT_PORT = 8080 DEFAULT_PORT = 8080
DEFAULT_SCAN_INTERVAL = timedelta(seconds=60)
DEFAULT_SSL = True
PROGRAM_UPDATE_TOPIC = f"{DOMAIN}_program_update" PROGRAM_UPDATE_TOPIC = f"{DOMAIN}_program_update"
SENSOR_UPDATE_TOPIC = f"{DOMAIN}_data_update" SENSOR_UPDATE_TOPIC = f"{DOMAIN}_data_update"

View File

@ -95,6 +95,7 @@ async def test_step_import(hass):
CONF_PASSWORD: "password", CONF_PASSWORD: "password",
CONF_PORT: 8080, CONF_PORT: 8080,
CONF_SSL: True, CONF_SSL: True,
CONF_SCAN_INTERVAL: 60,
} }
flow = config_flow.RainMachineFlowHandler() flow = config_flow.RainMachineFlowHandler()
@ -125,6 +126,7 @@ async def test_step_user(hass):
CONF_PASSWORD: "password", CONF_PASSWORD: "password",
CONF_PORT: 8080, CONF_PORT: 8080,
CONF_SSL: True, CONF_SSL: True,
CONF_SCAN_INTERVAL: 60,
} }
flow = config_flow.RainMachineFlowHandler() flow = config_flow.RainMachineFlowHandler()