-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathconfig_schema.py
More file actions
148 lines (140 loc) · 7.61 KB
/
Copy pathconfig_schema.py
File metadata and controls
148 lines (140 loc) · 7.61 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
""" Alls constants for the Solar Optimizer integration. """
import voluptuous as vol
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers import selector
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
from homeassistant.components.input_number import DOMAIN as INPUT_NUMBER_DOMAIN
from homeassistant.components.input_boolean import DOMAIN as INPUT_BOOLEAN_DOMAIN
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN
from homeassistant.components.humidifier import DOMAIN as HUMIDIFIER_DOMAIN
from homeassistant.components.climate import DOMAIN as CLIMATE_DOMAIN
from homeassistant.components.number import DOMAIN as NUMBER_DOMAIN
from homeassistant.components.fan import DOMAIN as FAN_DOMAIN
from homeassistant.components.light import DOMAIN as LIGHT_DOMAIN
from homeassistant.components.select import DOMAIN as SELECT_DOMAIN
from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN
from .const import * # pylint: disable=wildcard-import, unused-wildcard-import
types_schema_devices = vol.Schema(
{
vol.Required(
CONF_DEVICE_TYPE, default=CONF_DEVICE
): selector.SelectSelector(
selector.SelectSelectorConfig(
options=CONF_DEVICE_TYPES,
translation_key="device_type",
mode="list",
)
)
}
)
central_config_schema = vol.Schema(
{
vol.Required(CONF_REFRESH_PERIOD_SEC, default=300): int,
vol.Required(CONF_POWER_CONSUMPTION_ENTITY_ID): selector.EntitySelector(
selector.EntitySelectorConfig(domain=[SENSOR_DOMAIN, INPUT_NUMBER_DOMAIN])
),
vol.Required(CONF_POWER_PRODUCTION_ENTITY_ID): selector.EntitySelector(
selector.EntitySelectorConfig(domain=[SENSOR_DOMAIN, INPUT_NUMBER_DOMAIN])
),
vol.Optional(CONF_SUBSCRIBE_TO_EVENTS, default=False): cv.boolean,
vol.Required(CONF_SELL_COST_ENTITY_ID): selector.EntitySelector(
selector.EntitySelectorConfig(domain=[SENSOR_DOMAIN, INPUT_NUMBER_DOMAIN])
),
vol.Required(CONF_BUY_COST_ENTITY_ID): selector.EntitySelector(
selector.EntitySelectorConfig(domain=[SENSOR_DOMAIN, INPUT_NUMBER_DOMAIN])
),
vol.Required(CONF_SELL_TAX_PERCENT_ENTITY_ID): selector.EntitySelector(
selector.EntitySelectorConfig(domain=[SENSOR_DOMAIN, INPUT_NUMBER_DOMAIN])
),
vol.Optional(CONF_SMOOTH_PRODUCTION, default=True): cv.boolean,
vol.Optional(CONF_SMOOTHING_PRODUCTION_WINDOW_MIN, default=DEFAULT_SMOOTHING_PRODUCTION_WINDOW_MIN): vol.Coerce(int),
vol.Optional(CONF_SMOOTHING_CONSUMPTION_WINDOW_MIN, default=DEFAULT_SMOOTHING_CONSUMPTION_WINDOW_MIN): vol.Coerce(int),
vol.Optional(CONF_SMOOTHING_HOUSEHOLD_WINDOW_MIN, default=DEFAULT_SMOOTHING_HOUSEHOLD_WINDOW_MIN): vol.Coerce(int),
vol.Optional(CONF_BATTERY_RECHARGE_RESERVE_W, default=DEFAULT_BATTERY_RECHARGE_RESERVE_W): vol.Coerce(float),
vol.Optional(CONF_BATTERY_RECHARGE_RESERVE_BEFORE_SMOOTHING, default=DEFAULT_BATTERY_RECHARGE_RESERVE_BEFORE_SMOOTHING): cv.boolean,
vol.Optional(CONF_MIN_EXPORT_MARGIN_W, default=DEFAULT_MIN_EXPORT_MARGIN_W): vol.Coerce(float),
vol.Optional(CONF_BATTERY_SOC_ENTITY_ID): selector.EntitySelector(
selector.EntitySelectorConfig(domain=[SENSOR_DOMAIN, INPUT_NUMBER_DOMAIN])
),
vol.Optional(CONF_BATTERY_CHARGE_POWER_ENTITY_ID): selector.EntitySelector(
selector.EntitySelectorConfig(domain=[SENSOR_DOMAIN, INPUT_NUMBER_DOMAIN])
),
vol.Optional(CONF_RAZ_TIME, default=DEFAULT_RAZ_TIME): str,
}
)
managed_device_schema = vol.Schema(
{
vol.Required(CONF_NAME): str,
vol.Required(CONF_ENTITY_ID): selector.EntitySelector(
selector.EntitySelectorConfig(domain=[INPUT_BOOLEAN_DOMAIN, SWITCH_DOMAIN, HUMIDIFIER_DOMAIN, CLIMATE_DOMAIN, FAN_DOMAIN, LIGHT_DOMAIN, SELECT_DOMAIN, BUTTON_DOMAIN])
),
vol.Required(CONF_POWER_MAX): str,
vol.Optional(CONF_CHECK_USABLE_TEMPLATE, default="{{ True }}"): str,
vol.Optional(CONF_CHECK_ACTIVE_TEMPLATE): str,
vol.Optional(CONF_DURATION_MIN, default="60"): selector.NumberSelector(selector.NumberSelectorConfig(min=0.0, max=1440, step=0.1, mode=selector.NumberSelectorMode.BOX)),
vol.Optional(CONF_DURATION_STOP_MIN): selector.NumberSelector(selector.NumberSelectorConfig(min=0.0, max=1440, step=0.1, mode=selector.NumberSelectorMode.BOX)),
vol.Optional(CONF_ACTION_MODE, default=CONF_ACTION_MODE_ACTION): selector.SelectSelector(
selector.SelectSelectorConfig(
options=CONF_ACTION_MODES,
translation_key="action_mode",
mode="dropdown",
)
),
vol.Required(CONF_ACTIVATION_SERVICE, default="switch/turn_on"): str,
vol.Optional(CONF_DEACTIVATION_SERVICE, default="switch/turn_off"): str,
vol.Optional(CONF_BATTERY_SOC_THRESHOLD, default=0): str,
vol.Optional(CONF_MAX_ON_TIME_PER_DAY_MIN): str,
vol.Optional(CONF_MIN_ON_TIME_PER_DAY_MIN): str,
vol.Optional(CONF_OFFPEAK_TIME): str,
}
)
power_managed_device_schema = vol.Schema(
{
vol.Required(CONF_NAME): str,
vol.Required(CONF_ENTITY_ID): selector.EntitySelector(
selector.EntitySelectorConfig(
domain=[
INPUT_BOOLEAN_DOMAIN,
SWITCH_DOMAIN,
HUMIDIFIER_DOMAIN,
CLIMATE_DOMAIN,
FAN_DOMAIN,
LIGHT_DOMAIN,
]
)
),
vol.Optional(CONF_POWER_ENTITY_ID): selector.EntitySelector(selector.EntitySelectorConfig(
domain=[
INPUT_NUMBER_DOMAIN,
NUMBER_DOMAIN,
FAN_DOMAIN,
LIGHT_DOMAIN,
]
)),
vol.Optional(CONF_POWER_MIN, default=220): vol.Coerce(float),
vol.Required(CONF_POWER_MAX): str,
vol.Optional(CONF_POWER_STEP, default=220): vol.Coerce(float),
vol.Optional(CONF_CHECK_USABLE_TEMPLATE, default="{{ True }}"): str,
vol.Optional(CONF_CHECK_ACTIVE_TEMPLATE): str,
vol.Optional(CONF_DURATION_MIN, default="60"): selector.NumberSelector(selector.NumberSelectorConfig(min=0.0, max=1440, step=0.1, mode=selector.NumberSelectorMode.BOX)),
vol.Optional(CONF_DURATION_STOP_MIN): selector.NumberSelector(selector.NumberSelectorConfig(min=0.0, max=1440, step=0.1, mode=selector.NumberSelectorMode.BOX)),
vol.Optional(CONF_DURATION_POWER_MIN): selector.NumberSelector(selector.NumberSelectorConfig(min=0.0, max=1440, step=0.1, mode=selector.NumberSelectorMode.BOX)),
vol.Optional(CONF_ACTION_MODE, default=CONF_ACTION_MODE_ACTION): selector.SelectSelector(
selector.SelectSelectorConfig(
options=CONF_ACTION_MODES,
translation_key="action_mode",
mode="dropdown",
)
),
vol.Required(CONF_ACTIVATION_SERVICE, default="switch/turn_on"): str,
vol.Required(CONF_DEACTIVATION_SERVICE, default="switch/turn_off"): str,
vol.Optional(CONF_CHANGE_POWER_SERVICE, default="number/set_value"): str,
vol.Optional(CONF_CONVERT_POWER_DIVIDE_FACTOR, default=220): selector.NumberSelector(
selector.NumberSelectorConfig(min=1.0, max=9999, step=0.1, mode=selector.NumberSelectorMode.BOX)
),
vol.Optional(CONF_BATTERY_SOC_THRESHOLD, default=0): str,
vol.Optional(CONF_MAX_ON_TIME_PER_DAY_MIN): str,
vol.Optional(CONF_MIN_ON_TIME_PER_DAY_MIN): str,
vol.Optional(CONF_OFFPEAK_TIME): str,
}
)