mirror of
https://github.com/esphome/esphome.git
synced 2025-09-14 09:12:19 +01:00
Add Captive Portal (#624)
* WIP: Captive Portal * Updates * Updates * Lint * Fixes
This commit is contained in:
@@ -64,8 +64,9 @@ WIFI_NETWORK_BASE = cv.Schema({
|
||||
cv.Optional(CONF_MANUAL_IP): STA_MANUAL_IP_SCHEMA,
|
||||
})
|
||||
|
||||
CONF_AP_TIMEOUT = 'ap_timeout'
|
||||
WIFI_NETWORK_AP = WIFI_NETWORK_BASE.extend({
|
||||
|
||||
cv.Optional(CONF_AP_TIMEOUT, default='1min'): cv.positive_time_period_milliseconds,
|
||||
})
|
||||
|
||||
WIFI_NETWORK_STA = WIFI_NETWORK_BASE.extend({
|
||||
@@ -118,7 +119,7 @@ CONFIG_SCHEMA = cv.All(cv.Schema({
|
||||
|
||||
cv.Optional(CONF_AP): WIFI_NETWORK_AP,
|
||||
cv.Optional(CONF_DOMAIN, default='.local'): cv.domain_name,
|
||||
cv.Optional(CONF_REBOOT_TIMEOUT, default='5min'): cv.positive_time_period_milliseconds,
|
||||
cv.Optional(CONF_REBOOT_TIMEOUT, default='15min'): cv.positive_time_period_milliseconds,
|
||||
cv.Optional(CONF_POWER_SAVE_MODE, default='NONE'): cv.enum(WIFI_POWER_SAVE_MODES, upper=True),
|
||||
cv.Optional(CONF_FAST_CONNECT, default=False): cv.boolean,
|
||||
cv.Optional(CONF_USE_ADDRESS): cv.string_strict,
|
||||
@@ -166,19 +167,20 @@ def wifi_network(config, static_ip):
|
||||
|
||||
@coroutine_with_priority(60.0)
|
||||
def to_code(config):
|
||||
rhs = WiFiComponent.new()
|
||||
wifi = cg.Pvariable(config[CONF_ID], rhs)
|
||||
cg.add(wifi.set_use_address(config[CONF_USE_ADDRESS]))
|
||||
var = cg.new_Pvariable(config[CONF_ID])
|
||||
cg.add(var.set_use_address(config[CONF_USE_ADDRESS]))
|
||||
|
||||
for network in config.get(CONF_NETWORKS, []):
|
||||
cg.add(wifi.add_sta(wifi_network(network, config.get(CONF_MANUAL_IP))))
|
||||
cg.add(var.add_sta(wifi_network(network, config.get(CONF_MANUAL_IP))))
|
||||
|
||||
if CONF_AP in config:
|
||||
cg.add(wifi.set_ap(wifi_network(config[CONF_AP], config.get(CONF_MANUAL_IP))))
|
||||
conf = config[CONF_AP]
|
||||
cg.add(var.set_ap(wifi_network(conf, config.get(CONF_MANUAL_IP))))
|
||||
cg.add(var.set_ap_timeout(conf[CONF_AP_TIMEOUT]))
|
||||
|
||||
cg.add(wifi.set_reboot_timeout(config[CONF_REBOOT_TIMEOUT]))
|
||||
cg.add(wifi.set_power_save_mode(config[CONF_POWER_SAVE_MODE]))
|
||||
cg.add(wifi.set_fast_connect(config[CONF_FAST_CONNECT]))
|
||||
cg.add(var.set_reboot_timeout(config[CONF_REBOOT_TIMEOUT]))
|
||||
cg.add(var.set_power_save_mode(config[CONF_POWER_SAVE_MODE]))
|
||||
cg.add(var.set_fast_connect(config[CONF_FAST_CONNECT]))
|
||||
|
||||
if CORE.is_esp8266:
|
||||
cg.add_library('ESP8266WiFi', None)
|
||||
@@ -186,7 +188,7 @@ def to_code(config):
|
||||
cg.add_define('USE_WIFI')
|
||||
|
||||
# Register at end for OTA safe mode
|
||||
yield cg.register_component(wifi, config)
|
||||
yield cg.register_component(var, config)
|
||||
|
||||
|
||||
@automation.register_condition('wifi.connected', WiFiConnectedCondition, cv.Schema({}))
|
||||
|
Reference in New Issue
Block a user